La transacción usando Metamask funciona. Falla con web3.py

Tengo dos transacciones, la primera de MetaMask (todo está bien)

https://etherscan.io/tx/0x1ab684f4875f8cc28043d9f3c3536a5e4f8a565cadda7a29bc6a96db5f1d0f8f

el segundo usando web3.py (parece ser idéntico pero falla)

https://etherscan.io/tx/0xc019007895cb7340f65c3bd80df5561c1b1a98d8eac6dc2babf776ab000de067

Aquí está mi parte del código: (espero que quede claro lo que está pasando, se copia de una clase)

# same as in the working one
abidata = '0x338b5dea000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f49800000000000000000000000000000000000000000000000000002d79883d2000'
trans = {
                        'to': self.address,
                        'from': self.ethapi.address,
                        'data': abidata,
                        'value': 0,
                        'chainId': 1}
# transaction gas data [pseudocode]
trans_new = trans.copy()
nonce = w3.eth.getTransactionCount(self.address)
gas_price = self.get_gas_price()
gas_price_wei = self.w3.toWei(gas_price,"Gwei")
trans_new["gas"] = 250000
trans_new["nonce"] = nonce
trans_new["gasPrice"] = gas_price_wei
signed_transaction = account.signTransaction(trans)
w3.eth.sendRawTransaction(signed_transaction.rawTransaction)

¡Gracias por cualquier pista!

Desde el vmtrace está fallando en el contrato del token. ¿Llamó approve()para permitir que ED haga una transferencia desde su dirección?
En realidad no. Aprobé a radarrelay.com . Estaba jugando. Tal vez esa es la razón. Es extraño que parezca funcionar con MetaMask, así que supongo que hay algún tipo de diferencia en ambas transacciones.
Eliminé la aprobación pero sigo recibiendo el mismo mensaje: etherscan.io/tx/…
Debe enviar a ZrxToken una aprobación para que EtherDelta realice una transferencia desde su cuenta. Si desea realizar un depósito en EtherDelta, debe realizar dos transacciones 1) ZrxToken.approve(EtherDelta.address, amount, { from: "YourAccount" }), 2) EtherDelta.depositToken(ZrxToken.address, amount, { from: "YourAccount" }).
¡Muchas gracias! Lo pruebo y publico! Es extraño que con MetaMask solo vea una transacción enviada desde mi cuenta.
¡¡¡Eso lo resolvió!!! Muchas gracias de nuevo. Me he perdido que MetaMask hizo dos transacciones. ¡Funciona muy bien!

Respuestas (1)

Como sugirió Ismael en los comentarios anteriores, mi error fue que MetaMask hizo dos transacciones. Así que el primero fue una aprobación que faltaba.