一行代码偷走千万美元,被神话的区块链也不安全

近期,关于区块链智能合约的安全问题似乎是一波未平一波又起。

继USDT发生“假充值”漏洞后,慢雾区再曝以太坊代币的“假充值”漏洞。

据慢雾区消息,以太坊代币“假充值”漏洞影响面非常广,包括相关中心化交易所、中心化钱包、代币合约等。仅代币合约,据不完全统计就有3619份存在“假充值”漏洞风险,其中不乏知名代币。

而在今年4月份,BEC更是遭遇到黑客的毁灭性攻击,天量的BEC从两个地址转出,引发了市场抛售潮。当日,BEC的价值几乎归零。随后,BEC、SMT都爆出安全隐患,导致多家交易所暂停了基于以太坊ERC-20发行的Token的充值提币功能。

正当社区对SMT、BEC的智能合约漏洞心有余悸之时,波澜又起,2018年5月26日,EDU、BAI智能合约被曝存在重大漏洞:攻击者不需要私钥,可转走任意账户的EDU 及BAI 代币。

而影响最大的智能合约安全事件莫过于The DAO事件和Parity事件。

2016年6月17日,区块链行业最大的众筹项目TheDAO遭到攻击,因其智能合约出现“递归调用漏洞”遭黑客攻击,导致价值6000万美元以太坊被盗。这次漏洞是以太坊历史上的最大的安全丑闻之一,此次事件也直接导致了以太坊硬分叉为ETH和ETC。

而在2017年7月19日,多重签名钱包Parity1.5及以上版本出现安全漏洞,导致15万个以太坊ETH被盗,共价值3000万美元。

以上只是黑客攻击智能合约的冰山一角,我们不禁要问:

为何以安全著称的区块链屡屡出现漏洞而被黑客攻击?

智能合约到底是什么?

智能合约和区块链又有什么关系?

这就要从智能合约和区块链的基本概念说起。

1

智能合约的概念

智能合约(smart contract)的概念最早1994年由Nick Szabo提出,是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。

智能合约的关键特点是它的执行不依赖任何信用背书,可以及时客观地执行合约约定的各个事项。

也就是说,既不需要依靠对方对合约履行的言行一致,也不需要在合约执行出现问题时依靠律师和法律来强制执行,而在合约部署之初,当达到约定条件合约就会自动执行。

2

区块链和智能合约

其实在区块链出现之前就已经有了智能合约的概念,但却一直在理论层面停滞不前。直到可充当“信任机器”的区块链技术的出现,才为智能合约提供了可信的的自动化执行环境。

利用区块链技术去中心化、不可篡改和高可用性等特性,可以很好地实现智能合约。同时区块链数据完备可追溯性,还可支持事后审计以追踪合约动态。

而另一方面,将智能合约引入区块链领域也标志着区块链2.0时代的开启。不少人认为,智能合约在区块链中的实现,是区块链能够被称为颠覆性技术的主要原因之一。

这么看来,区块链和智能合约是“天生一对”,相互成全。

3

智能合约的缺陷

当然,部署在区块链上的智能合约也有缺陷,这也是为什么智能合约漏洞频发的原因。

目前全球最主流的智能合约是在以太坊上部署的,而在以太坊设计之初,将智能合约设计成了一旦部署就不能修改的模式。

这种设计虽然提高了智能合约的可信性,但是我们都知道,只要是由人编写的程序,就一定会存在错误和缺陷。

这就导致了在智能合约出现漏洞的时候很难进行及时有效的修复,只能选择重新部署新的合约,而重新部署合约将付出巨大的代价。

其次是因为区块链上的所有用户都可以看到基于区块链的智能合约。但是,这会导致包括安全漏洞在内的所有漏洞都可见。

如果智能合约开发者疏忽或者测试不充分,部署的智能合约的代码有漏洞的话,就非常容易被黑客利用并攻击。

并且越是功能强大的智能合约,逻辑就越复杂,也越容易出现逻辑上的漏洞。所以就导致了智能合约的漏洞频发、数字资产被盗。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180711G1Z01H00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券