主页 > imtoken钱包官网客服 > 2亿美元锁定区块链?以太坊智能合约巨大漏洞自爆

2亿美元锁定区块链?以太坊智能合约巨大漏洞自爆

imtoken钱包官网客服 2023-02-08 05:07:56

对区块链技术稍有了解的人都知道,区块链存在的基础是系统中参与交易的每一个人都必须就数字资产的所有权达成共识。 总的来说,区块链是一个可附加的账本,对系统内的交易进行编码。 任何基于区块链技术的应用,除了要对数字资产的所有权达成共识外,还必须满足两点要求,一是每笔交易必须有效,二是过往交易历史不可篡改.

但是,要使交易有效,必须遵循某些预先商定的规则。 在现实世界中,各种交易都受到相关法律条款A和B的约束。在计算机世界中,正如美国著名学者Lawrence Lessig所提出的“code is law”(代码即法律)——一旦代码被编写出来并执行,它永远不能被回收。 这在一定程度上可以解释区块链在某些特定应用场景中所面临的情况。

以比特币客户端为例,该客户端目前大约有3万行代码,目前的行业标准允许每100行代码出现一个bug。 理论上,即使比特币客户端有300个bug,也是符合行业规则的。 但这种情况并非如此。 2010年8月,黑客利用整数溢出漏洞区块链和以太坊的关系,凭空创造了1840亿枚比特币(比特币设计之初的上限仅为2100万枚),几乎将比特币彻底摧毁。

因此,在区块链技术中,由于缺乏统一的外部技术文档,“代码即规则”往往会失败,甚至被认为是有史以来最安全的以太坊架构也面临着同样的问题。

虽然以太坊诞生只有四年时间,但随着人们对区块链技术的了解越来越多,以太坊的知名度也逐渐提高。 即使在2017年,以太坊也被认为是区块链2.0时代最重要的底层开源系统。 然而,最新研究表明,基于以太坊架构,号称“最安全、最可靠、最便捷”的智能合约技术漏洞百出。

新研究揭示了智能合约中的巨大漏洞

众所周知,智能合约存储在以太坊区块链上。 但这也意味着,一旦区块链出现问题,智能合约中涉及的交易信息也会受到牵连。 区块链本质上是一种共享账本区块链和以太坊的关系,它使用密码学和计算机网络来确保交易信息不会出错。

但是,在执行智能合约的过程中,如果账户为NULL(即没有账户),智能合约会为这笔交易创建一个账户,并在项目下写入合约。 虚拟机通过执行合约中的二进制字节码来实现合约的执行。 也就是说,智能合约可用于创建加密货币。 例如,火币的 HT 就是使用以太坊智能合约创建的。

然而,在伦敦大学学院(UCL)计算机科学副教授 Ilya Sergey 的最新研究论文《Finding The Greedy, Prodigal, and Suicidal Contractsat Scale》中,通过将近 100 万份智能合约进行了 10 秒的分析分析每个合同的时间表明,这些智能合同中有 34,200 个容易受到黑客攻击。 同时,他们对 3759 个智能合约进行了抽样调查。 其中,3686个智能合约存在漏洞的概率为89%。

以太坊是区块链吗_以太坊区块链未来_区块链和以太坊的关系

论文下载地址:

此外,研究还证明,以太坊的Parity钱包漏洞使得用户的电子资产被锁定在以太坊,被锁定在以太坊的资产总额已达2亿美元。 事实上,2017年11月,媒体爆料称,由于部分以太坊智能合约用户误操作,3亿美元被永久冻结在以太坊。

研究人员发现的漏洞是:

浪子合约:交易资金因bug返还给所有者,交易者过去发送给以太坊的地址,具体地址。 这种漏洞就像一只空手而归的白狼,买家拿到了货,卖家却拿不到加密货币。

自杀合约:智能合约的所有者可以在以太坊失败时选择回退,类似于微信中的退出选项。 但是这个指令也可以被其他人执行,使得交易失败。

贪心合约:这是指那些永远留在以太坊中的智能合约。 上面提到的 Parity 漏洞是一种贪心合约。 它将智能合约涉及的商品和加密货币锁定在以太坊中,任何一方都无法获得。 , 也不能取消。

Will contract:在那些已经完成或关闭的智能合约中,虽然它们的代码和全局变量已经被清除,但其中一些仍在执行。 遗嘱合约和贪婪合约一样,是以太坊的错误造成的,目前还不能被黑客利用。

blob.png

以太坊是区块链吗_以太坊区块链未来_区块链和以太坊的关系

图丨MAIAN工具

这四个漏洞最具代表性,但并不是以太坊智能合约的全部漏洞。 虽然研究人员通过自制的MAIAN工具检测到包含这四个漏洞的智能合约,但并没有找到解决方案。

这样一来,即使传统的金融交易模式比智能合约麻烦,也能最大程度避免漏洞,让交易更加安全可靠。

什么是智能合约?

接下来DT君就给读者来个科普。 以太坊是一个基于公链的分布式计算平台。 同时,它还提供了去中心化的虚拟主机。 以太坊分为五层:

数据层:顾名思义,数据层包含了以太坊中最基本的数据结构和账户加密算法,这一层也是以太坊的基本组成部分。

网络层:用于验证以太坊中各个节点的数据传输。

共识层:用于保存基于数量的共识机制。

区块链和以太坊的关系_以太坊是区块链吗_以太坊区块链未来

激励层:用于保存激励机制,主要负责激励节点自主挖矿,维护以太坊运行。

合约层:以太坊独特的结构是一个封装了图灵完备脚本语言的虚拟机,可以通过编写脚本语言作为智能合约部署到以太坊区块链上,实现应用的去中心化。

智能合约是一种代码,具有可以在合约层自动运行的业务逻辑,并运行在以太坊虚拟机上。 智能合约代码基于堆栈的字节码低级语言,每个字节代表不同的操作。 一般来说,代码的执行过程是一个死循环,只有当代码执行完毕、中断指令等时,才能停止工作。

blob.png

图丨去中心化架构

以太坊虚拟机是执行交易代码的引擎,这是以太坊区块链与其他区块链最大的区别。 它不像沙箱那样完全独立,这意味着智能合约代码在虚拟机中运行时,不需要网络和文件系统。

此外,在智能合约的执行过程中,合约账户的作用也非常关键。 账户地址取决于合约成立的时间。 以太坊虚拟机运行时,可以通过block_state、transaction等元组来定义账户的计算状态。 通过在程序执行过程中修改元组数据(block_state包含所有账户的全局信息),实现智能合约的执行过程。

从应用的角度来看,智能合约是一种可以改进传统金融模型的技术。 它通过上述网络架构和虚拟电子货币简化了价值转移的过程。 大致可以理解为三个步骤:

区块链和以太坊的关系_以太坊是区块链吗_以太坊区块链未来

1、A向区块链发送消息,并在消息中定义一个交易;

2、B通过网络广播接受交易信息;

3. 区块链网络验证并完成交易。

也就是说,智能合约的原理类似于“把大象放进冰箱”。 在传统的金融模型中,交易双方需要经过监管中心,而智能合约可以利用区块链的分布式账本跳过金融监管,达到便捷交易的目的,也叫“去中心化”。

在以太坊中,智能合约由二进制字节码组成,使用的编程语言是Solidity。 以太坊编译智能合约并将其存储在区块链中,从而实现上述信息中定义的交易。

智能合约可以实现吗?

事实上,以太坊也在一天天进步。 开发一个完美的智能合约需要时间。

以太坊去中心化的核心是可以运行图灵完备的脚本语言,开发以太坊智能合约的语言有四种:Serpent、Solidity、Mutan、LLL。 这些语言都是面向低级设计的语言。 目前,Solidity 是首选语言,因为它内置了 Serpent 语言的所有功能,语法类似于广泛使用的 JavaScript。 再加上 Solidity 的语言特性较少,该语言更容易实现完整的智能合约系统。

以太坊区块链未来_以太坊是区块链吗_区块链和以太坊的关系

区块链去中心化应用通常是 DApp,由智能合约和后端代码组成。 在DApp中,所有的服务和逻辑都运行在区块链上,这意味着DApp不仅需要设计前端应用,还需要开发基于以太坊的智能合约代码。

blob.png

图丨DApp与智能合约的关系

这些智能合约代码以JsonPRC的形式提供给应用程序调用。 此时智能合约就像以太坊中的转账操作一样被广播到所有节点,通知这些节点运行被调用的智能合约ABI,然后这些被调用的ABI将各自运行在节点的虚拟机中。 最后通过区块链的生成将运行过程和结果打包到区块链中,通过区块链的同步实现全网统一。

换句话说,开发步骤是实现无错误智能合约的关键。 截至2018年3月4日,开源社区比较流行的DApp开发工具是browser-solidity。 从名字就可以看出它是一个基于浏览器的工具。 用户可以在线编写智能合约代码,同时编译成二进制字节码部署到用户所属的区块链上。

blob.png

图丨浏览器-solidity开发界面

目前Solidity的版本是0.4.21,看版本号还处于测试阶段。 这也意味着其开发工具browser-solidity也不成熟,导致DApp出现漏洞,最终影响到智能合约。 但是Solidity的更新速度还不如追逐区块链的资本。 如果智能合约过早投入使用,势必会造成大量的经济损失。

此外,区块链的问题不仅仅是合约层。 以共识层为例,以太坊采用PoW共识机制,需要大量的哈希运算来保证全网的共识。 会造成算力的浪费,而且在联盟链中,这种机制的可信度不是很高。

如果有一天区块链能应用到现实中,它需要的不是化妆,而是整容手术。