主页 > imtoken钱包官方网站 > 以太坊软分叉失败,比特币的设计安全漏洞

以太坊软分叉失败,比特币的设计安全漏洞

imtoken钱包官方网站 2023-01-17 13:53:09

0">

本文共有字数,估计阅读时间。

最近,由于 The DAO 智能合约的缺陷,以太坊不得不实施紧急软分叉。然而,在软分叉快要完成的时候以太币被盗,突然发现软分叉本身会导致更多的缺陷,被迫放弃了这个计划。为什么会出现这种荒谬的情况,对比特币的发展有何启示?

什么是软分叉?

软分叉一般是指数字货币系统规则的变化,使一些原本有效的交易失效。

为什么以太坊有软分叉?

由于以太坊中 The DAO 智能合约的设计错误,黑客没收了价值 5000 万美元的以太币,并将其转移到另一个智能合约(称为“Child DAO”)。软分叉的目的是禁止所有与 Child DAO 相关的交易。软分叉虽然不能让其他投资者找回被盗资金,但也将被盗资金永久冻结,至少不会直接让黑客受益。

以太坊软分叉为什么会失败?

软分叉计划已经在进行中,矿池也在陆续升级。然而,当它快完成时,Emin Gun Sirer 指出,软分叉设计缺陷一旦实施,攻击者就可以瘫痪以太坊网络。

以太坊的主要卖点是它可以实现比比特币复杂得多的程序,包括带有循环的程序(所谓的图灵完备)。为防止滥用,用户必须以以太币支付程序每一步的费用;当费用用完时,程序必须停止。与比特币不同的是,即使程序最终被判定失败,矿工仍然可以收取费用,所以不用担心有人会用无效程序消耗矿工的计算资源。

但是,此软分叉禁止与指定的 Child DAO 相关的所有交易。因此,攻击者可以发出计算密集型事务,最后一步涉及 Child DAO。这将导致矿工进行大量计算,最终收不到任何费用。攻击者可以发送大量此类交易,从而导致以太坊网络瘫痪,而且完全免费。

以太坊的设计缺陷是如何导致软分叉失败的?

以太坊的设计野心很大,目标是实现去中心化的计算机,所以它的编程语言 Solidity 远比比特币的 Script 复杂,希望挑战比特币的地位。然而,这也是导致DAO受到攻击,软分叉失败的直接原因。

首先,我们无法对以太坊程序进行静态程序分析。静态程序分析意味着我们可以通过阅读程序来知道程序会做什么,而无需实际运行它。如果可以进行静态程序分析,面对上述攻击,矿工只需先阅读程序,如果看到指定Child DAO相关的代码,就会放弃运行。但是以太坊的设计允许攻击者用代码计算代码,矿工只运行程序以太币被盗,遇到被禁代码就停止,浪费了很多算力。

此外,无法通过阻止传播无效交易的节点来防止攻击。由于程序操作涉及大量资源,非矿工的普通节点不会收到任何手续费,普通节点在传播交易时只会检查交易格式是否正确,而不会实际运行。如果攻击被阻塞节点阻塞,所有普通节点都会因此而被阻塞,同时也会达到瘫痪以太坊网络的效果。

同样的问题,比特币是如何设计的?

非图灵完备:首先,比特币的脚本不是图灵完备的,没有循环,所以可以保证程序的结束,这是中本聪故意设计的。DAO漏洞本身就是攻击者利用程序循环功能反复提取不属于他的钱。

事实上,比特币在 2011 年几乎意外地通过 BIP12 OP_EVAL 成为了图灵完备的,只是在最后一刻才被发现并放弃。

静态程序分析:比特币的脚本必须直接写代码,所以可以通过静态程序分析直接发现无效操作。OP_EVAL 允许在代码之外评估代码,这是另一个被放弃的原因。

此外,除了交易之外,比特币区块本身的一些限制也可以通过静态程序分析直接发现,包括区块大小的限制、签名校验的数量等。除了著名的 1MB 限制之外,区块现在需要不超过 20,000 次签名检查。20,000 的限制包括未执行的签名检查,因此不需要实际验证,只需查看块交易,您就可以查看是否超过了 20,000 的限制。

值得注意的是,大名鼎鼎的BIP109(即比特币经典硬分叉)其实并不是把1MB改成2MB那么简单,它还把签名校验限制改成按实际执行次数来计算,从而使静态程序丢失分析属性。

全节点检查交易:虽然比特币全节点无法获得手续费,但在检查完成后会分散交易。因此,传播无效交易的节点将被禁止。但是,由于运行一个全节点并没有直接的收益,太多的事务会减少全节点的数量,使系统监控不足。

标准交易和软分叉:事实上,比特币交易的功能不如以太坊,但它们仍然非常有弹性。但在这些无限可能中,只有极少数交易被定义为标准交易。只要矿工和节点不修改Bitcoin Core的源代码,就不会传播非标准交易,也不会转移非标准交易。事务包含在块中。但是,当区块中包含非标准交易时,它们仍然被认为是有效的。

过去有很多软分叉,通过重新定义非标准交易来达到增加新特性的目的,比如刚刚完成的相对锁定时间(CSV),以及即将到来的隔离见证。这样做的最大好处是旧节点会将这些交易视为非标准交易并拒绝传播它们。即使在软分叉之后,他们也不会因传播无效交易而被禁止。但是,当这些交易被包含在区块中时,旧节点仍然会被认为是有效的,从而达到软分叉向后兼容的目的。

以太坊事件的教训

以太坊从一开始就因忽视安全而受到批评。比特币一直坚持的非图灵完备、无程序循环、静态程序分析等特性在以太坊被刻意抛弃,将比特币视为保守落后的象征。

以太坊策略确实成功了。DAO 总共筹集了 1.5 亿美元的投资,但这个神话在一个月内就变成了耻辱。作者可以断言,这只是以太坊第一次遭受自己的后果,绝不会是最后一次。一切都是由贪婪和鲁莽造成的。无论如何,在这次事件之后,很难相信还有人愿意在以太坊智能合约上投资 1.5 亿美元。

这一次也是比特币的一个重大危险信号,提醒我们必须小心每一步。在过去几个月的上涨之后,比特币的市值已经超过了 100 亿美元。无论是开发者还是矿工,保护系统的安全是最大的责任,在安全的条件下增加新的功能,保证系统的长期健康。发展,而不是为了一夜暴富而牺牲长远利益。

我们将对以上信息严格保密,感谢您对未央网的信任与支持!

非常感谢您的注册,请扫描下方二维码进入沙龙分享群。

非常感谢您的注册。请点击以下链接保存课件。

点击下载金融科技讲座课件

0">[来源]