这个智能合约有趣的处地址于它配置了最大转账上限是 50 finney,最小转账下限是 2 wei(条件是大于 1 wei,也就是最小 2 wei)。每次转账之后,最大转账上限城市缩小本钱来的一半,当总转账数量大于便是 100 finney,那就可以取出庄家在初始化智能合约时放进的钱。
Github 地点:Solidlity-Vulnerable/honeypots/OpenAddressLottery.sol
按照这个智能合约的内容,只要转高出 0.1 ether 并挪用 Test() ,将会进入轮回最终获得 amountToTransfer 的值,并将 amountToTransfer wei 发送给会见者。在不思量整数溢出的环境下,amountToTransfer 将会是 msg.value*2。这也是这个蜜罐合约吸引人的处所。
翻译成 Solidity 的伪代码大抵是:
4.2 偷梁换柱的地点 (会见节制):firstTest
contract For_Test
固然此时用户 A 的余额仍然存在,但由于合约中已经没有以太币了,所以 A 将无法取出其存入的 50 个以太币
function loggedTransfer(uint amount, bytes32 message, address target, address currentOwner) { Transfer(amount, message, target, currentOwner); } function divest() public { this.loggedTransfer(1, "a", 0x1, 0x2); this.loggedTransfer(1, "", 0x1, 0x2); }
{uint variable = 0;
智能合约地点:0x42dB5 Bfe8828f12F164586AF8A992 B3a7 B038164
uint256 evalue; ====================revert();
}
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。