对区块链技术稍有了解的人都知道,区块链存在的基础是系统中参与交易的所有人要对数字资产的归属达成共识。而从整体上看,区块链则是一种将系统内交易进行编码的可附加账本,除了要达成数字资产归属权共识外,基于区块链技术的任何应用要生效,还要满足很重要的两点,一是每次交易必须有效,二是过往交易历史不能篡改。
然而,要保证交易有效,就必须遵循某一事先约定的规则。现实世界中,各类交易都有相关的法律条款甲乙约束。而在计算机世界里,正如美国著名学者劳伦斯·莱斯格当年所提出的“代码即规则”(code is law)——一旦代码被编写出来并开始执行,就永远不能回收了。这多少能解释区块链在某些具体应用场景下面临的情况。
以比特币客户端为例,目前该客户端拥有约 3 万行代码,而目前的工业标准允许每一百行代码中存在一个 bug。理论上说,哪怕比特币客户端存在 300 个 bug 也是符合行业规则的。但事实并非如此,2010 年 8 月那个利用整数溢出漏洞凭空创造出 1840 亿个比特币的黑客(比特币设计之初的限额仅为 2100 万个),差点就彻底毁灭了比特币。
所以,在区块链技术中,由于缺乏统一的外部技术说明文档,“代码即规则”往往会失效,甚至被认为有史以来最安全的以太坊架构,也面临同样的问题。
以太坊虽然仅仅诞生了四年,但是随着人们越来越多地了解区块链技术,以太坊的热度逐渐增加。甚至在 2017 年时,以太坊被认为是区块链 2.0 时代最重要的底层开源系统。然而,最新的研究显示,基于以太坊架构,被称作是“最安全、最可靠、最方便”的智能合约技术却漏洞百出。
最新研究揭露智能合约存在巨大漏洞
众所周知,智能合约被存放于以太坊的区块链上。但这也就意味着,一旦区块链发生问题,智能合约所涉及的交易信息也会受到牵连。区块链本质上是一个共享账本,它使用密码技术以及计算机网络来确保交易信息不会出差错。
然而,在执行智能合约的过程中,如果账户是 NULL(即没有账户),那么智能合约则会为此次交易创建一个账户,并将合约写到该项目下。虚拟机则通过执行合约中的二进制字节码实现合约的执行。也就是说,智能合约可以被用来创建加密货币。比如火币网的 HT,就是用以太坊智能合约创建的。
图丨火币网HT
然而,在伦敦大学学院(University College London,UCL)计算机科学系副教授伊利亚·谢尔盖最新的研究论文《Finding The Greedy , Prodigal , and Suicidal Contractsat Scale》中,通过对将近 100 万份智能合约进行每份合约 10 秒分析时间的分析后发现,这其中有 34200 份智能合约很容易受到黑客攻击。同时他们又对 3759 份智能合约抽样调查,在这之中,3686 份智能合约有 89% 的概率含有漏洞。
此外,研究也证明,以太坊的 Parity 钱包漏洞使得用户电子财产会锁死在以太坊,全以太坊被锁死的财产总额已经达到 2 亿美元。事实上,在 2017 年 11 月时就有媒体爆料,因为一些以太坊智能合约使用者的误操作,导致了 3 亿美元永久被冻结在以太坊之中。
研究人员发现,这些漏洞分别为:
浪子合约:交易资金因为漏洞返还给所有者、交易者过去发送给以太网的地址,以及特定地址。这种漏洞就像是空手套白狼,买家得到商品,而卖家无法得到加密货币。
自杀合约:智能合约的拥有者可以在以太坊发生故障时选择退回,类似于微信中的撤回选项。但是这个指令也可以被其他人执行,使得交易失败。
贪婪合约:这是指那些永远停留在以太坊的智能合约,上述的 Parity 漏洞正是一种贪婪合约,它会把智能合约所涉及的商品以及加密货币锁定在以太坊中,交易双方均无法得到,也不能取消。
遗嘱合约:在那些已完成或者被关闭的智能合约中,虽然他们的代码和全局变量被清楚了,但是其中一部分仍然在继续执行。遗嘱合约和贪婪合约一样,均是由以太坊的错误引起,目前并不能被黑客利用。
图丨 MAIAN 工具
这四种漏洞是最具代表性的,不过他们并不是以太坊智能合约的全部漏洞。研究人员们虽然通过自制的 MAIAN 工具检测出了包含这四种漏洞的智能合约,然而他们并没有找到解决方案。
那么这样看来,即使传统金融交易模式比智能合约要麻烦,但是它能最大程度地避免漏洞,使得交易更加安全可靠。
什么是智能合约?
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。