Out-of-Gas
轉包中的gas不足
如果我將乙太幣從合約 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)()
。*小心:*這可能容易受到遞歸呼叫攻擊。在你的情況下,它不是,但在向未知合約發送天然氣時要注意。