时间:2023-08-10|浏览:189
用戶喜愛的交易所
已有账号登陆后会弹出下载
在以太坊已经成功运行了多年之后,重置以太坊听起来确实令人担忧。对于一个加密货币网络来说,重置是一个需要技术和经济上重视的过程。
这个提议在以太坊社区中已经讨论了很长时间,主要涉及到以太坊1.0链的状态。在未来的以太坊2.0进程中,需要将1.0和2.0进行合并,以及了解未来以太坊将面临的升级任务。
以太坊社区开始研究这个问题是由以太坊ledgerwatch的开发者AlexeyAkhunov提出的。他基于COSMOS的问题和解决方案,提出了重置以太坊的推论。通过阅读他的文章,可以初步了解重置以太坊的概念。
CosmosHub的经验教训
如果你观察过CosmosHub如何从版本1升级到版本2,然后再从版本2升级到版本3,你就会知道这实际上是通过重新启动区块链来完成的。升级后,节点运营商必须关闭他们的节点,并生成CosmosHub状态的快照,然后使用该快照任何想要加入Cosmos的人都需要获取CosmosHub-3的起点,下载CosmosHub-3的所有块(而不是CosmosHub-1或CosmosHub-2),然后重播它们。
我们可以“重新启动”以太坊1吗?
让我们看看这种方法在以太坊中是否适用。假设我们有一个非常大的区块链(150-160Gb),以及相当大的状态(40-100Gb,取决于你的存储方式)。这种“重新启动”的明显好处是,新连接的节点将从40Gb的初始状态开始,而不是从价值150Gb的块开始。但下载40Gb的创世块仍然不是一个好的体验。以太坊中的状态是隐式的,只有状态的默克尔根哈希是显式的。
现在假设我们可以使用这些隐式存储的40Gb状态,只使用根哈希作为起点。那么我们如何让事务能够访问隐式状态的一部分呢?
请记住,即使现在40Gb的状态也是隐式的,它的获取方式是实现细节。你可以运行所有一千万个块来计算它,或者通过快速同步或扭曲同步下载它的快照,甚至可以从别人的外部磁盘复制它并重新验证。尽管状态是隐式的,但我们假设区块生成者(通常是矿池)可以访问该隐式状态,并且始终能够处理所有的事务。我们要取消的假设是,所有其他验证节点都可以访问该隐式状态,以检查块中的事务是否有效,并确保块头中显示的状态根哈希与该块的执行结果匹配。
是无状态的以太坊吗?
如果你对无状态以太坊完全熟悉,你可能会意识到这正是我们在尝试做的事情-保留块生成者对隐式状态的访问权,但删除其他验证节点具有相同访问权的假设。我们建议通过让打包者在区块中添加额外的证明来实现这一点,我们将这些证明称为“区块见证”。
区块中的证明与交易中的证明?
当人们第一次了解这一点时,他们可能认为这些额外的证明确实是由交易发送者提供的,并成为交易有效负载的一部分,但我们必须向他们解释,这不是打包者的责任。但后来我们发现交易将不得不包含一些额外的证据。也就是说,他们将需要证明发送地址有足够的ETH来购买交易的gas,并且该账户中的所有其他交易的随机数,但随机数较小。他们可能还需要证明发送帐户的随机数,以便节点可以检查是否存在随机数的间隙,并通过一系列不可行的交易发现潜在的DDOS攻击,并进行更严格的检查。
ReGenesis提供缓解
对于DSA的担忧无法轻松完全解决,但可以有效缓解,以至于用户很少会遇到不便,并且永远不会陷入“无法实现所需状态转换”的境地。缓解措施依赖于额外的规则,即与交易一起提供的任何证据(根据状态根进行检查,但不一定足以使交易成功)成为隐式状态的一部分。因此,用户重复尝试执行事务时,隐式状态将不断增长,并最终成功。任何试图“诱捕”用户的攻击者,都必须想出更复杂的方法来重定向事务对状态的访问,而不是隐式状态。最终,攻击者将会失败。
随着隐式状态从无到有(仅在“重新启动”之后)的增长,涉及到事务的证据将减少。经过一段时间,大多数交易甚至不需要附加任何证明,只需涉及到状态中一些非常古老且“尘土飞扬”的部分。
我们可以继续下去吗?
我将这称为“重新启动”再生,可以定期进行以减轻非挖矿节点的负担。它还代表着无状态以太坊的戏剧性版本。
重复执行ReGenesis将简化以太坊客户端的实现架构。它几乎可以消除对更高级快照同步算法的需求。如果我们每1m个块(大约6个月)执行一次ReGenesis,那么就可以在BitTorrent、Swarm、IPFS上使用状态快照以及区块链文件。目前我们做不到这一点,因为状态每15秒钟发生变化,而不是每6个月。如果客户端实现可以处理6个月的数据块回放,那么我们就不需要频繁重置状态。