La transacción del contrato se quedó sin gas, pero el límite de gas es mucho más alto que la cantidad requerida

Tenemos un contrato inteligente que envía ETH a alguna dirección, pero cada vez que llamamos a esa función, la función falla.

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

Como puede ver en el enlace, sin embargo, especificamos un límite de GAS mucho más alto que el necesario, pero aún así se queda sin gasolina...

¿Qué está yendo mal?

Respuestas (1)

Parece ser un problema con una de las direcciones a las que está reenviando ether.

Si observa las transacciones internas, verá lo siguiente:

ingrese la descripción de la imagen aquí

call_49está fallando debido a "fuera de gas". Si inspecciona la dirección de destino, verá que es un contrato.

Al inspeccionar el código que tiene el contrato, tiene una función de respaldo que tiene el siguiente código:

function() payable {
    if (!parentAddress.call.value(msg.value)(msg.data))
      throw;
    // Fire off the deposited event if we can forward it  
    ForwarderDeposited(msg.sender, msg.value, msg.data);
  }

Esto sugiere que el problema es que el contrato está recibiendo éter e intentando enviarlo de regreso a su dirección principal y esta llamada está lanzando o se está quedando sin gas, lo que hace que toda la transacción falle.

¿Cómo se puede arreglar esto? Si inspecciona la dirección principal, obtuvo muchos ether etherscan.io/address/0x1522900b6dafac587d499a862861c0869be6e428 . ¿Es necesario que el contrato original (el de V. Rutten) envíe valor en su invocación o el dueño del forward necesita agregar dinero a su contrato forward?
Si la cuenta receptora falla al intentar enviarle ether, no hay mucho que puedas hacer. Una forma de solucionarlo sería no enviar ether a esa cuenta.