首页 > 科技 >

治愈以太坊Solidity顽疾的正确姿势

2018-08-02 06:21:15 网络整理 阅读:112 评论:0

近日,Hackernoon 对CyberMiles 虚拟机及Lity进行了报道,文章讲解了以太坊Solidity所面临的问题,而像Lity这样新的编程语言正在解决这种问题。本文源自Hackernoon,版权归Hackernoon所有。

治愈以太坊Solidity顽疾的正确姿势

目前,以太坊网络上有1,700多个去中心化的应用程序(DApps),这一数字预计在未来几年还会继续增加。所有的DApp都依靠智能合约来完成一系列重要任务,但很明显的是,错误、bug甚至灾难性差错经常出现在智能合约里。到目前为止,黑客在智能合约中“窃取”的金额已经超过了10亿美元。

为了编写智能合约,程序员必须学习一种新的编程语言“Solidity”。虽然智能合约会使以太坊上复杂的商业逻辑运营变得简单,但是用Solidity编写智能合约时犯下简单的错误就能导致非常严重的后果,包括安全漏洞以及非常高的交易成本。

智能合约代码很差的案例中,最出名的是去中心化的Decentralized Autonomous Organization (DAO)。最近,在Parity的智能合约中也发现了一个bug,该bug导致了50万个ETH的损失,价值超过了1.69亿美元。Solidity是替罪羊吗?

随着智能合约问题变得越来越普遍,以太坊的Solidity备受关注。不幸的是,许多依靠智能合约的新项目,都缺乏能对智能合约进行适当优化和审核的程序员。

例如,就性能而言,执行复杂的智能合约时,手续费可能是天文数字。手续费是以太坊上用于运行交易的单位,手续费的多少取决于智能合约的复杂性和执行合约时网络的拥堵程度。通过收取高昂的gas费,以太坊可以自动地惩罚缓慢又复杂的合约。但是在许多情况下,应用场景本身就很复杂,高额的手续费阻碍了智能合约在现实社会中的应用。

例如,使用以太坊智能合约来验证单个..交易的header(即scrypt操作)将消耗3.7亿个以太坊gas。这意味着当你把以太坊gas价格设定为3 Gwei时,将花费超过10亿Gwei,也就是1个ETH。这么简单的跨链交易验证就要500美元, 难以置信!

在用Solidity编写的智能合约中,安全性,特别是整数溢出,也是一个严重的问题。黑客们非常勤奋的挖掘智能合约中的漏洞,从而“盗取”大量的加密货币。多个ERC20 代币合约容易受到攻击,导致了高等级的安全警报。

许多黑客攻击的发生,只是因为程序员在Solidity编写代码时犯了错误。例如,Beauty Chain(BEC) 是一个在中国颇有知名度的项目,于2018年2月23日在OKEX上开始交易。它在交易的第一天就狂涨4000%。在巅峰时,它有约700亿美元的市值,但在4月22日,其交易价值突然下降至零,价格也逐渐下降至约20亿美元。随后,OKEX暂停了BEC的交易。

此事件的发生是因为,在BEC的ERC20 智能合约中存在错误。在BEC的案例中,开发人员在合约中添加了一个名为“batchTransfer()”的方法,可以让token能一次性转移给多方(即批量)。

治愈以太坊Solidity顽疾的正确姿势

(图片来自CVE-2018-10299安全警报)

相关文章