如果我把乙醚从contractB发送到contractA,那么得到错误的“出气体”。
增加汽油的数量是没有帮助的。
在"VM跟踪事务“http://testnet.etherscan.io/vmtrace?txhash=0x24269877942122ea5e022833e2dbd80f543458be2195ad2df222387cff7f5382中,我看到,然后调用”contractA.send(msg.value)“,不要将气体发送到分包。
如何使这些合同发挥作用?
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);
}
}
}发布于 2016-06-24 13:19:30
您需要通过调用msg.sender.call.gas(10000).value(msg.value/10)()向事务添加gas。
小心:这可能容易受到递归调用攻击。在你的情况下,它不是,但只是要知道,当发送天然气给未知的合同。
https://ethereum.stackexchange.com/questions/6494
复制相似问题