Out-of-Gas

轉包中的gas不足

  • June 24, 2016

如果我將乙太幣從合約 B 發送到合約 A,則會出現“氣體不足”錯誤。

增加氣體量無濟於事。

在“VM Trace Transaction” http://testnet.etherscan.io/vmtrace?txhash=0x24269877942122ea5e022833e2dbd80f543458be2195ad2df222387cff7f5382 我看到了,然後呼叫“contractA.send(msg.value);” 不要將gas發送給分包商。

如何使這些契約生效?

contract contractA {
   function() {
       for(uint i = 0;i<10; ++i)
           msg.sender.send(msg.value/10);
   }
}

contract contractB
{
   address contractA = 0x2EA16ad451ca2aA32E06f476691D1529cF11BaC7; // TestNet!!!
   function() {
       if (msg.sender != contractA) {
           contractA.send(msg.value);
       }
   }
}

您需要通過呼叫向交易添加氣體msg.sender.call.gas(10000).value(msg.value/10)()

*小心:*這可能容易受到遞歸呼叫攻擊。在你的情況下,它不是,但在向未知合約發送天然氣時要注意。

引用自:https://ethereum.stackexchange.com/questions/6494