主页 > imtoken安卓版下载官网 > 以太坊钱包爆出严重漏洞,为什么比特币从来没有类似问题?

以太坊钱包爆出严重漏洞,为什么比特币从来没有类似问题?

imtoken安卓版下载官网 2023-03-23 05:34:32

以太坊钱包爆严重漏洞,为何比特币从无类似问题?

北京时间2017年7月20日凌晨,以太坊钱包Parity爆出一个极其严重的漏洞,导致15万以太币(价值约3200万美元)被盗。

该漏洞是由 Parity 钱包的多重签名智能合约代码引起的,其他钱包尚未发现该漏洞。黑客在 Parity 钱包的 Enhanced-wallet.sol 文件中反复调用了两个智能合约 initMultiowned 和 initDayLimit。这两个初始化代码本应只调用一次,但代码执行无限制,导致资金非法转移。

在撰写本文时,Parity 正在正式处理此漏洞,但尚未正式修复。因此,建议所有使用多重签名协议的客户将资金全部转出,待漏洞修复后再转回。

Parity 钱包被盗对以太坊的影响有多大?

Parity 是目前以太坊中使用最广泛的钱包之一,此次盗窃事件与 2016 年 6 月发生的 DAO 事件类似。DAO 事件还导致 350 万以太币(当时价值 5000 万美元,或由于智能合约代码中的错误,按当前价格计算超过 7 亿美元。

中本聪 比特币论文原文_比特币之父中本聪_比特币本地账本破坏

The DAO 事件后,以太坊创始人 Vitalik Buterin 提出修改以太坊代码,在以太坊区块链上实施硬分叉,回滚被黑客窃取资金的交易记录,得到了社区大部分矿工的支持。也遭到了少数人的强烈反对。最终坚持不同意回滚的少数矿工将他们挖的区块链命名为以太经典(Ethereum Classic,简称 ETC),导致以太坊社区出现分裂。

以太坊钱包爆严重漏洞,为何比特币从无类似问题?

不过在 Parity 事件发生后,Vitalik Buterin 迅速表示,由于被盗资金并不大,他不会像上次那样考虑实施硬分叉来回滚交易。结果,以太坊的价格在事件发生后并没有大幅下跌,目前 ETH 的交易价格为 213 美元,以太坊经典 ETC 的交易价格为 15 美元。

什么是智能合约?

中本聪 比特币论文原文_比特币本地账本破坏_比特币之父中本聪

以太坊诞生于 2014 年,是继比特币之后又一个成功的区块链项目。它目前的市值约为 200 亿美元,仅次于比特币(约 400 亿美元)。

以太坊在比特币的基础上开发区块链技术,维护全球共享的计算平台,实现图灵完备的虚拟机EVM。计算。

以太坊钱包爆严重漏洞,为何比特币从无类似问题?

比特币最初的设计是一个电子现金系统,其内置的脚本语言是专门为资金转账交易而设计的。为了保证安全,故意放弃图灵完备性(无跳转、循环指令),所以它只是一个全球共享账本,而不是一个计算平台。

比特币之父中本聪_中本聪 比特币论文原文_比特币本地账本破坏

以太坊实现了区块链协议,内置多种编程语言。这些编程语言是图灵完备的,可以支持条件分支、循环、跳转、函数调用等复杂的操作逻辑。在 Square 区块链上运行任意应用程序。

以太坊钱包爆严重漏洞,为何比特币从无类似问题?

具体来说,作为运行在以太坊区块链上的应用程序,程序员可以根据业务需要使用以太坊支持的编程语言设计和编写代码,而不是为应用程序运行单独的区块。链。基于以太坊区块链协议,应用开发者可以高效、快速地开发各种应用。这样的程序称为智能合约。智能合约代码在区块链上发布后,无需中介参与,即可在以太坊区块链上自动执行,无人能阻止其运行。

目前有数百个智能合约在以太坊上运行,Parity 和 DAO 就是其中之一。

比特币本地账本破坏_中本聪 比特币论文原文_比特币之父中本聪

受以太坊启发,近几年出现了很多类似的项目比特币本地账本破坏,比如Fabric、QTUM等,从不同角度、不同层次对以太坊进行局部优化比特币本地账本破坏,但大体思路大同小异,核心是图灵完备的智能合约。

如何预防智能合约漏洞的发生?

值得注意的是,虽然这次 Parity 事件的损失比 DAO 事件的损失要小,但问题的根源是相同的。

随着智能合约开始获得越来越多的使用,智能合约的流程和代码变得越来越复杂,人们也发现,和现实世界的合约一样,如果不仔细审查,设计和编码过程是难以避免的人为错误的发生,一旦漏洞被黑客发现,损失往往是巨大的。

比特币之父中本聪_比特币本地账本破坏_中本聪 比特币论文原文

以太坊钱包爆严重漏洞,为何比特币从无类似问题?

但需要强调的是,这种漏洞并不是以太坊区块链本身的漏洞,人们不应该对以太坊和区块链的安全性产生不必要的怀疑。该事件不会对区块链的应用产生严重的负面影响,未来还会发生类似事件,并不意味着区块链技术的终结。

当然,区块链从业者应该吸取教训,尽量减少类似的安全事件。在笔者看来,在区块链和智能合约的设计和编码实践中,需要做到以下几点:

1、简化区块链脚本语言的设计,牺牲一些图灵完备性来换取安全性。由于比特币在设计上的非图灵完备性,以及中本聪大幅删减了很多脚本指令,其安全性极高。自2009年诞生以来的8年多时间里,平安经历了无数次黑客攻击,从未出现过因比特币区块链和脚本本身造成的资金损失。但是,功能丰富性和安全性是一对永恒的矛盾,不可能同时兼顾。因此,在设计区块链脚本语言时,尽量不要使用通用的编程语言进行功能,而要在语言中有一些功能。选择是使用最小的可用指令集,同时,

2、严格执行智能合约代码审查。与真实的合约文本一样,智能合约代码也经过多级严格的代码审查,包括业务流程/逻辑审查、代码排查、详细测试流程、安全测试、专家审查等。对于逻辑复杂、资金量大的智能合约,尽量使用形式化的代码验证,智能合约的确定性要通过数学证明来验证。

3、智能合约程序员的强化培训。智能合约编程语言虽然表面上与传统编程语言很相似,但属于一种新的编程范式,思维方式也与传统的面向过程、面向对象、面向函数的编程语言有很大不同编程范式。交易、完整性和其他主观概念被纳入智能合约的设计和编码中。为此,需要加强对智能合约程序员的培训,在实践中提炼智能合约的编程和设计模式,特别是在安全方面,减少程序员出错的可能性。

4、在实践中要谨慎。在区块链智能合约的实际应用中,应该采取循序渐进的策略,从简单到复杂,从小规模试点到全面推广,涉及的资金量也应该是从小到大,大量资金不可轻举妄动。这样一来,即使早期攻击一个漏洞,损失也不会太大。