http://www.7klian.com

百科全书:以太坊中智能合约进攻和裂痕




假如利用时间戳来实验发生随机性,则矿工可以在区块验证后的15秒钟内宣布时间戳,从而使他们可以或许将时间戳配置为一个值,从而增加利用该成果的几率。

dest.transfer(amount);




最好选择一个编译器版本并僵持利用它。利用浮动编译器时,大概会利用过期或有问题的编译器版本意外地陈设智能合约,这大概会导致错误,从而使智能合约的安详性受到威胁。对付开源项目,该实用措施还会汇报开拓人员在陈设您的智能合约时要利用哪个版本。所选的编译器版本应颠末全面测试,并思量是否存在已知错误。

另一种要领是预先计较智能合约的地点,并在陈设智能合约之前将以太坊发送到该地点。令人惊奇的是,这是大概实现的。

mapping(address => uint) refunds;

pragma solidity >=0.5.0 <0.7.0;



uint256 nextPayeeIndex;



require(refundAddresses[x].send(refunds[refundAddresses[x]]))

跟着时间的流逝,Solidity中的函数已被弃用,并常常被更好的函数所代替。不要利用过期的函数,这很重要,因为它大概导致意外的结果和编译错误。





在这里,我们可以看到余额只有在资金转移后才被修改。这可以让黑客在余额配置为0之前多次挪用该函数,有效地耗尽智能合约。


假如未查抄初级挪用的返回值,则纵然函数挪用抛堕落误,也大概继承执行。这大概导致意外行为并粉碎措施逻辑。失败的挪用甚至大概是由

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读