向以太坊智能合约发送值时出错

Error sending value to Ethereum smart contract

我有 geth 1.5.2 并使用 Mist-linux64-0-8-7 在测试网上工作。当我尝试通过调用任何函数向我的合约发送一些以太币(价值)时,我遇到了一个简单的问题。 例如,即使这个虚拟函数也不能使用非零值,但可以正常使用零值:

function t() returns (uint){
    return 1;
}

令人惊讶的是,我可以在 Mist 中看到带有消息 "It seems this transaction will fail. If you submit it, it may consume all the gas you send." 的警告 这不取决于我提供的气体量。 即使我投入 500,000 gas 交易似乎也没有完成。

你可以在这里看到它的结果: https://testnet.etherscan.io/tx/0x3206118530079d1b416dc649c6f0a89283f9457e9189f259b3429cf0c6a998d0

有留言

Warning! Error encountered during contract execution [Bad jump destination]

我尝试 运行 不同合约中的不同功能。我什至使用 sendTransaction 功能直接从 geth 控制台执行相同的操作,但我仍然无法使其工作。 我没有找到是否有人有类似的问题。如果您有任何想法,请帮助我。

来自Solidity 0.4 onwards:

Functions that want to receive Ether have to specify the new payable modifier (otherwise they throw).

一个throw consumes all gas,所以用function t() payable returns (uint).