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 approve
fuera del contrato y configurado lo suficiente allowance
para A. El allowance
valor se imprime bien dentro del contrato pero transferFrom
falla. Me falta algo en cómo se configuran la propiedad y las firmas. Tengo una solución en la que transferFrom
funciona 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 approve
afuera y quiero que el contrato solo haga transferFrom
. Parece que hay una manera de hacerlo transfer
a 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.transfer
transferFrom
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 allowance
a la dirección del contrato que llama tranferFrom
y luego transferir el valor a la dirección de destino final.
Podría estar sufriendo el error de desbordamiento de lotes. https://medium.com/@TokPie/erc20-tokens-under-attack-from-new-batchoverflow-bug-while-tokpie-remains-safe-b59dd716d469