主页 > 苹果商城可以直接下载imtoken吗 > 以太坊钱包爆漏洞,但比特币从未出现过类似问题

以太坊钱包爆漏洞,但比特币从未出现过类似问题

比特币初衷_比特币之父能不能随意制造比特币_比特币期货对比特币影响

北京时间2017年7月20日凌晨,以太坊钱包Parity爆发极其严重的漏洞,导致15万枚ETH(价值约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,并试图通过图灵完备的智能合约实现灵活、安全、功能齐全的虚拟机。 计算。

比特币之父能不能随意制造比特币_比特币初衷_比特币期货对比特币影响

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

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

比特币之父能不能随意制造比特币_比特币期货对比特币影响_比特币初衷

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

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

受以太坊的启发,近年来出现了很多类似的项目,如Fabric、QTUM等,从不同角度和层面对以太坊进行了部分优化比特币初衷比特币初衷,但总体思路相似,核心是图灵完备智能。 合同。

如何防范智能合约漏洞?

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

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

比特币期货对比特币影响_比特币之父能不能随意制造比特币_比特币初衷

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

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

1. 简化区块链脚本语言的设计,牺牲部分图灵完备性换取安全性。

由于其在设计上的非图灵完备性和中本聪大量删减了很多脚本指令,安全性极高。 自2009年诞生以来的八年里,平安经历了无数次黑客攻击,从未因为比特币区块链和脚本本身而损失过资金。

然而,功能丰富和安全是一对永恒的矛盾,不可能同时兼顾。 因此,在设计区块链脚本语言时,尽量不要为了功能而使用通用的编程语言。 选择是采用最小可用指令集,同时在智能合约虚拟机的设计中,应采用沙箱等隔离方式,严格限制CALL指令的使用。

2.严格执行智能合约代码审查。

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

3.加强智能合约程序员的培训。

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

4.谨慎应用实践。 在区块链智能合约的实际应用中,应采取循序渐进的策略,从简单到复杂,从小范围试点到全面推广,涉及的资金量也应由小到大,大笔资金不宜贸然介入。 这样一来,即使前期被攻击了漏洞,损失也不会太大。