过厥后看,,这几行代码所揭示的错误很直接了当,可开拓进程中要面临的是成百上千行代码,这样的繁杂就会带来对裂痕的忽略。而传统检测和安详审计处事不只耗时耗力,还容易呈现工钱失误,导致不须要的损失。
require(msg.sender == walletAddress); // 正确 !最后,小编照旧要提醒智能合约要上线的列位,尽早让形式化验证平台为你的合约保驾护航。
为了探求如何能制止这范例的错误再次产生,小编请 CertiK(Certik.org)--形式化验证平台资助做了一个深入检测,相识到 CertiK 如何通过将智能标签运用到源代码中,快速而且全自动化的检测安详裂痕。
附上 ICX 源代码:
怎么担保智能合约代码无裂痕?
韩国国度级区块链项目 ICON (ICX)智能合约代码克日被爆代码存在安详裂痕,使 transfer 成果失效。固然黑客无法操作这次裂痕盗币,但该裂痕会导致包罗转账、生意业务等重要成果无法正常利用。据闻,项目方已努力投入大量资源修复裂痕并担保生意业务不受影响。
require(msg.sender != walletAddress); // 错误 !
让我们来看一下这段代码:
ICON 到底出了什么安详裂痕?
从代码逻辑上来看,「!=」 暗示「不便是」, 「==」 暗示「便是」在 ICX 的合约中,有一个成果可以开启 / 封锁合约的转账成果。最初,此成果的设计是只有 ICX 合约的所有者拥有挪用它的权限;由于代码写错了逻辑运算标记,导致除了合约所有者之外的任何人都能随意开启和封锁该合约的转账成果。
很明明的,这行代码应该写成 :上图就是 CertiK 检测 ICX 裂痕的实际进程,完整的演示了裂痕的验证进程及修复发起。据悉,ICX 智能合约已经在上线做过多轮的安详「审计」,但但是这样的错误照旧成了丧家之犬。假如 ICX 其时能利用 CertiK 的形式化验证处事,这次变乱很大概可以制止。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。