主页 > imtoken授权管理系统 > 治愈以太坊Solidity顽疾的正确姿势

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

imtoken授权管理系统 2023-07-19 05:07:33

近日,Hackernoon 报道了 Cyber​​Miles 虚拟机和 Lity。 文章解释了以太坊 Solidity 面临的问题,像 Lity 这样的新编程语言正在解决这个问题。 本文来自Hackernoon,版权归Hackernoon所有。

近日,Hackernoon 报道了 Cyber​​Miles 虚拟机和 Lity。 文章解释了以太坊 Solidity 面临的问题,像 Lity 这样的新编程语言正在解决这个问题。 本文来自Hackernoon,版权归Hackernoon所有。

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

为了编写智能合约,程序员必须学习一种新的编程语言“Solidity”。 虽然智能合约会简化以太坊上复杂的业务逻辑操作,但在 Solidity 中编写智能合约时的简单错误可能会导致非常严重的后果,包括安全漏洞和非常高的交易成本。

编码不当的智能合约最著名的例子是去中心化自治组织(DAO)。 近日,Parity 的智能合约也发现了一个漏洞,导致价值超过 1.69 亿美元的 500,000 ETH 损失。

01 Solidity是替罪羊吗?

随着智能合约问题变得越来越普遍,以太坊的 Solidity 成为人们关注的焦点。 不幸的是,许多依赖智能合约的新项目缺乏能够适当优化和审计智能合约的程序员。

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

例如,使用以太坊智能合约来验证单个比特币交易的头部(即 scrypt 操作)将消耗 3.7 亿以太坊 gas。 这意味着当你将以太坊 gas 价格设置为 3 Gwei 时,它将花费超过 10 亿 Gwei,或 1 ETH。 这么简单的跨链交易验证竟然要500美金,难以置信!

安全性,尤其是整数溢出,也是用 Solidity 编写的智能合约中的一个严重问题。 黑客非常勤于寻找智能合约中的漏洞,从而“窃取”大量加密货币。 多个 ERC20 代币合约存在漏洞,导致高级别安全警报。

许多黑客攻击的发生仅仅是因为程序员在用 Solidity 编写代码时犯了错误。 例如,国内知名项目美妆链(BEC)于2018年2月23日登陆OKEX,首日涨幅达4000%。 巅峰时期,其市值约为700亿美元,但4月22日以太坊POW会不会重启,其成交额突然跌至零,股价逐渐跌至20亿美元左右。 随后,OKEX暂停了BEC的交易。

这个事件的发生是因为BEC的ERC20智能合约出现了错误。 以 BEC 为例,开发者在合约中添加了一个名为“batchTransfer()”的方法,该方法允许将代币一次性(即分批)转移给多方。

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

然而,开发者在下面这行代码中犯了一个致命的错误:

uint256 金额 = uint256(cnt) * _value。

那么,什么是正确的姿势呢?

02 Solidity的解决方案

为了解决用Solidity语言编写的智能合约所面临的实际问题,我们来看看最近发布的一种高级语言Lity。 在 Cyber​​Miles 区块链、DApp 和其他自定义区块链上,Lity 可用于开发智能合约。 特别是,Lity 旨在解决 Solidity 面临的性能和安全问题。

Lity 由动态可扩展语言、编译器和虚拟机运行时组成,是 Solidity 语言的进化版。 这意味着所有用 Solidity 编写的程序都可以在 Cyber​​Miles 虚拟机 (CVM) 上运行,而无需更改任何代码。

使用 Lity 语言的另一个好处是 Lity 比 Solidity 更灵活、更强大、更安全。 例如,Lity 支持 OTA 添加新的语言特性。

至于性能,Lity 的插件是针对特定的计算任务量身定制的,可以进行高度优化。 libENI 函数由 Cyber​​Miles 虚拟机调用并作为本地代码在区块链节点上执行。

例如,以太坊上的公钥和私钥算法非常缓慢且成本高得令人望而却步。 很多真实的应用,比如数据市场,基本上是不可能在以太坊上实现的。 但是,使用 LibENI,这些计算可以在毫秒内完成(快 10,000 倍),而且交易费用也很低,只有几美分,而使用 Solidity 进行跨链交易则需要 500 美元的交易费用。

Lity 的改进对于跨区块链资产交换以及将链下数据纳入区块链交易具有重要意义。

最后,Lity 编译器可以检查 ERC 20 和 ERC 721 合约中的代码合规性和已知错误,并可以在 ERC 20 合约中提供对 ERC 223 标准的支持,以防止代币被意外转移到不接受转账地址的合约中。

在虚拟机层面,Lity 会自动防止整数溢出和将合约所有者设置为 none 等常见问题。

03 智能合约的未来

不幸的是,如今以太坊POW会不会重启,Solidity 已成为智能合约漏洞的罪魁祸首。 为了确保智能合约的未来,正在开发像 Lity 这样的新编程语言。

毫无疑问,以太坊基金会也在积极寻找创新的方式。 其中最重要的是“Casper”和原生合约的实施。 经过一定的过渡期后,以太坊最终会转向 PoS 共识机制。 这种转变是解决 PoW 机制产生的各种问题的关键。 对于这部分,Cyber​​Miles 基金会声称他们已经找到了解决方案:高效的 DPoS 机制及其虚拟机 CVM,如 litylang.org 所述。

比赛开始了。

这种修改将改变以太坊的核心技术,其实施可能会对以太坊产生重大影响,尤其是其核心组件——智能合约。