专栏首页>黄志龙
以太坊钱包爆严重漏洞,为何比特币从无类似问题?
2017-07-21 12:54:53 来源:苏宁财富资讯

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

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

1、简化区块链脚本语言设计,牺牲一部分图灵完备性换取安全性。比特币由于其设计上的非图灵完备性,加上中本聪大幅删减了许多脚本指令,所以其安全性是极高的,从2009年诞生至今8年多的时间里,平安经历了无数次的黑客攻击,从未因比特币区块链和脚本本身的原因出现过资金损失。然而,功能上的丰富性和安全性是一对永恒的矛盾,不可能兼顾,因此在设计区块链脚本语言时,尽量不要为了功能而使用通用的编程语言,要在语言的功能上有所取舍,采用最小可用指令集,同时在智能合约虚拟机的设计上要采用沙盒等隔离手段,并严格限制CALL指令的使用方式。

2、严格执行智能合约代码审查。和现实中的合同文本一样,智能合约代码也要经过多层次的严格的代码审查,包括业务流程/逻辑审查、代码走查、详尽的测试流程、安全性检测、专家评审等。对逻辑复杂且涉及较大资金的智能合约,要尽可能通过代码形式化验证,通过数学证明的方式验证智能合约的确定性。

3、强化对智能合约程序员的培训。虽然智能合约编程语言表面上看与传统的编程语言极其相似,但其属于一个全新的编程范式,思维方式也与传统的面向过程、面向对象、面向函数的编程范式有很大差异,需要将公平交易、诚信和其他主观概念加入智能合约的设计和编码中。为此,要加强智能合约程序员的培训工作,在实践中提炼出智能合约编程和设计模式,尤其是安全方面的模式,减少程序员出现差错的可能。

4、在应用实践中要谨慎渐行。在实际应用区块链智能合约时,应采用分步推进的策略,从简单到复杂,从小范围试点到全面推广,涉及的资金量也应从少到多,不贸然涉及大量的资金。如此,即便在前期出现漏洞被攻击,也不会损失过于巨大。

*文章为作者独立观点,不代表中国经营网立场。