No se pueden transferir tokens ERC20 de un contrato

Tengo problemas para obtener un método de contrato de solidez para transferir tokens ERC20 de la dirección A a la B, suponiendo que B haya llamado approvefuera del contrato y configurado lo suficiente allowancepara A. El allowancevalor se imprime bien dentro del contrato pero transferFromfalla. Me falta algo en cómo se configuran la propiedad y las firmas. Tengo una solución en la que transferFromfunciona lo mismo fuera del contrato, pero me gustaría hacerlo por dentro.

Configuré un repositorio de muestra con pruebas de trufas y un problema para describir el problema con más detalle:

https://github.com/PulseBlockchain/oz-sample-app/issues/1

Este es un extracto de un proyecto más grande donde tengo un problema similar.

Se ve similar a esta pregunta, ERC20 aprueba y transfiere de un contrato , excepto que estoy haciendo approveafuera y quiero que el contrato solo haga transferFrom. Parece que hay una manera de hacerlo transfera partir de un contrato como lo haceCrowdSale este contrato Open Zeppelin y que tengo trabajando en mi proyecto. Me gusta poder hacer cualquiera o desde mi propio contrato y me gusta comprender mejor las reglas de propiedad y firma al respecto.transfertransferFrom

Respuestas (2)

Problema resuelto gracias a la asistencia de depuración de Gonçalo Sá . Aquí está el compromiso deapprove corrección tl; dr: primero debe ir allowancea la dirección del contrato que llama tranferFromy luego transferir el valor a la dirección de destino final.