作家
登录

如何打造安全的以太坊智能合约

作者: 来源: 2018-03-15 10:06:27 阅读 我要评论

有奖调研 | 人脸辨认功能在互联网行业认知度情况


http://s2.51cto.com/oss/201803/15/0e911ad6f8b1211ce7704b6aecc71f58.png-wh_651x-s_384424836.png

大年夜约 75% 的以太坊节点都在运行 Geth,这个马脚可能会使那些运行兼容拜占庭的版本的节点在硬分叉之后加倍轻易遭受 DoS 进击。

14 荡子合约马脚 交易资金因为马脚返还给所有者、交易者以前发送给以太网的地址,以及特定地址。这种马脚就像是白手套白狼,买家获得商品,而卖家无法获得加密泉币。 15 自杀合约马脚 智能合约的拥有者可以在以太坊产生故障时选择退回,类似于微信中的撤回选项。然则这个指令也可以被其他人履行,使得交易掉败。 16 贪婪合约马脚

以太坊Ethereum是一个开源的有智能合约功能的公共区块链婢歙。区块链上的所有效户都可以看到基于区块链的智能合约。然则,这会导致包含安然马脚在内的所有马脚都可见。智能合约说话 Solidity 自身与合约设计都可能存在马脚。如不雅智能合约开辟者忽视或者测试不充分,而造成智能合约的代码有马脚的话,就异常轻易被黑客应用处进击。并且越是功能强大年夜的智能合约,就越是逻辑复杂,也越轻易出现逻辑上的马脚。

以太坊的安然马脚

2016 年 6 月 17 日,区块链竽暌箍现了汗青上沉重的一次进击事宜。因为以太坊的智能合约存在侧重大年夜缺点,区块链业界最大年夜的众筹项目 TheDAO(被进击前拥有约 1 亿美元的资产)遭到进击,导致 300 多万以太币资产被分别出 TheDAO 资产池。

2017 年 7 月 21 日,智能合约编码公司 Parity 警告其 1.5 版本及之后的钱包软件存在马脚,据 Etherscan.io 的数据确认,有价值 3000 万美元的 15 万以太币被盗。2017 年 11 月 8 日,Parity 钱包再出现重大年夜 bug,多重签名马脚被黑客应用,导致上亿美元资金被冻结。

以太坊开源软件主如果由社区的极客合营编写的,今朝已知存在 Solidity 说话马脚、短地址马脚、交易次序依附、时光戳依附、可重入进击等马脚,在调用合约时马脚可能被应用,而智能合约安排后难以更新的特点也让马脚的影响加倍广泛持久。

据有关查询拜访统计,以太坊重要马脚情况描述如下表:

如不雅说区块链也有 315,那么以太坊想必榜上有名。以太坊自运行以来多次爆出过因为马脚造成的重大年夜安然事宜。

< 如显示不全,请阁下滑动 >
序号 马脚名称 马脚描述 1 The DAO 马脚

运行在以太坊公有链上的 TheDAO 智能合约遭受进击,该合约筹集的"大众,"款项赓续被一个函数的递归调用转向它的子合约,涉及总额三百多万以太币。代码中经由过程 addr.call.value() 的方法发送以太币,而不是 send(),这给黑客留下了空间。黑客只须要制造出一个 fallback 函数,在该函数里再次调用 splitDAO() 即可。

2 Parity 多重签名钱包合约马脚 使多重签名的智能合约无法应用,核心问题在于越权的函数调用。黑客借居调用了初始化钱包软件的库函数,让本身成为多个 Parity 钱包的新主人。黑客调用了一个叫做 initWallet() 的函数,它没有检查以防止进击者在合同初始化后调用到 initMultiowned(),这个函数使得这个合约的所有者被改为进击者,相当于大年夜 Unix 中获得了 root 权限。 3 Parity 多重签名钱包提款马脚 钱包的提款功能都掉效,150 多个地址中跨越 50 万个 ETH 被彻底冻结,马脚使得黑客能经由过程库函数成为库的主人,然后调用自杀函数报废全部合约库。 4 太阳风暴

Solidity 是以太坊用于开辟智能合约的类 JavaScript 说话,被发明有一个安然马脚,当以太坊合约进行互相调用时,它们自身的法度榜样控制和状况功能会损掉。因为它能割断以太坊智能合约间的沟通,就像太阳风暴能割断地球的通信设备一样,可以影响全部以太坊。

5 以太坊编程说话 Solidity马脚 影响了智能合约一一些地址以及数据类型,大年夜多半受影响的合约将无法被撤回或更改。 6 智能合约 Fallback 函数 当调用某个智能合约时,如不雅指定的函数找不到,或者根本就没指定调用哪个函数(如发送以太币)时, fallback 函数就会被调用,黑客可以应用 fallback 函数做出很多伤害体系的工作。 7 智能合约递归调用recursive

用户取款的代码存有严重的递归调用马脚,该用户可轻松地将你账户里的以太币全部提走。

8 调用深度限制call depth 以太坊虚拟机 EVM 一一个智能合约可以经由过程 message call 调用其它智能合约,被调用的智能合约可以持续经由过程 message call 再调用其它合约,甚至是再调用回来(recursive)。黑客可以应用嵌套调用的深度被限制 1024 动员进击。 9 以太坊浏览器 Mist 这个马脚来源竽暌冠底层软件框架 Electron,使得加密数字泉币私钥安然受影响。 10 区块节点马脚

  推荐阅读

  2018 年,前端开发人员应该关注哪些新晋技术?

起首我们往返想一下 2017 年新的前端技巧和新的偏向。微信跳一跳信赖大年夜部分的人都玩过,这个用 H5 编写的小游戏,曾经一度刷爆同伙圈,仅是这一款及其简单的小游戏,就带来了不容小觑的流量。这种状况的一个比较>>>详细阅读


本文标题:如何打造安全的以太坊智能合约

地址:http://www.17bianji.com/lsqh/40718.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)