以太坊曝新漏洞,智能合约被打回原型
一般来说,软件中存在着漏洞是很常见的事,但如果发生在以太坊(ethereum)身上,却是一件非常棘手的事情。
本周,以太坊编程语言Solidity被曝存在漏洞,其已经影响了一些特定的智能合约,而且,大多数受影响的合约将无法被拆除或更改掉。
总之,去中心化智能合约(不能被一个拥有者控制的合约)的拥有者对这种漏洞感到无能无力。
在这一漏洞报告发布后的两天,开发者便推出了0.4.4. 修复版Solidity编程语言,但这一漏洞影响了一些地址及在这些合约中的数据类型,因此导致 合约拥有者无法进行升级。
好消息是,这一漏洞可能不会影响到很多智能合约。
Solidity语言创造者Christian Reitwiessner告诉记者,他对每一个列在etherscan上的程序进行了“半自动”分析,发现在12,000
个合约当中,只有4
个是可用的。
Reitwiessner表示,这些合约当中并没有以太币,因此它们可能是用于测试目的。但值得注意的是,并不是所有的合约都会显示在etherscan上。(当前以太坊共计有20多万
个合约,很难说剩下的合约资金都是安全的)。
总体而言,相比于The DAO项目身上出现的漏洞来说,当前的漏洞只能称的上是一个小的缺陷。然而,它也在加密货币圈内引起了大量的讨论。
例如,一位社交媒体观察家表示,这一漏洞可能是智能合约潜在漏洞问题的冰山一角。
解决这一问题的一个激进的想法,是让以太坊合约在近期内进行升级,好让合约拥有者可停用或更改掉这些出现问题的合约。但令人担心的是,这样做可能意味着剥夺了以太坊的去中心化特性。
新加坡国立大学的博士生Loi Luu说,如果以太坊用户能够学会如何以去中心化的方式,安全地部署智能合约,这将是更好地选择。
Luu说:
“我个人并不认为它是一个好主意,它基本上违背了智能合约的一切设计。如果以太坊是一个测试网络,那就让它的智能合约失败,让人们从中学习到教训。”
但Luu的言论表明,让所有的合约进行升级,可能并不是一个好主意,尤其是以太坊还是一个新的技术。
修复问题
使用以太坊高级语言(例如 Solidity或Serpent)编写的程序,在被添加到区块链之前会被编译成字节代码。而在这里发生的问题,就是发生在编译技术身上。
为了解决这一问题,Reitweissner建议开发者做两件事。一、如果编译一个新合约,开发者需要升级到新版本的Solidity语言,以避免这个漏洞。
而第二种方法则显得更为奇怪,因为它需要升级或重启你已部署的合约,而这种方案,可能没有人会选择在以太坊这类项目身上使用。
Reitwiessner阐述了一个建议,他提出了两种类型的合约:中心化控制的,以及去中心化的,其中没有人拥有“特权”。
第一种可能提供了一些升级机制,或一种方法来从合约中移除资金。
而第二种则是棘手的。另一方面,由于不可靠的以太坊智能合约一旦被部署,就无法被拆除或更改它们,如果开发者从一开始就没有使用一种中心化的智能合约,那么他们能够做的事情其实是很有限的。
然而,Reitwiessner表示,开发者可通过采用一些手段,来防范类似问题(像Solidity这样的)的发生。
“我对这类合约的建议是,要么让它们的运行时间变得短暂,以减少潜在影响的发生,要么对合约的字节码进行适当的分析。我们目前正在开发工具,帮助他们完成这一步工作,”他说。
展望未来
由于,以太坊原链(ETC)与ETH链采用的是同一套规则,其同样也受到了这一漏洞的影响。
但据其主要组织者Arvicco表示,开发者们正在探索开发一种新的编程语言,以避免更多漏洞的出现。
特别对于Solidity语言而言,如果出现另一个无法阻挡的漏洞,可能在今后会影响到其他智能合约。
Reitwiessner指出,在编译器上出现错误总是可能发生的,而Solidity或Serpent (以太坊其他的智能合约语言)还可能存在其他未被发现的漏洞。
然而,他指出,在超过两年的发展中,这是在智能合约语言中发现的首个严重漏洞。
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。
-
比特币和山寨牛市的下一阶段
2024-11-27 -
起底特朗普 2.0 内阁成员 超 5 位都是「炒币玩家」
2024-11-27 -
以太坊重夺USDT供应主导地位 供应量前五大区块链还有谁
2024-11-26 -
Galaxy:Devcon 2024——以太坊的“北极星”
2024-11-26 -
中本聪是“2010年巨鲸”吗?一直在卖出BTC吗?
2024-11-25