ReGenesis:重启以太坊以降低节点的负担

2020-06-30 11:21 栏目:经验之谈 来源:网络整理 查看()

来自宇宙中心的体验

如果你已经观察了宇宙中枢是如何从1.0版升级到2.0版,然后再升级到3.0版的,你就会知道宇宙中枢的升级本质上是通过用一个新的创建块重新启动区块链来实现的。要升级,节点操作员需要关闭节点,然后生成宇宙中枢状态的快照,然后将该快照打包到新的创建块中以创建新的区块链。

现在,任何想加入宇宙中心的人都需要获得宇宙书b-3的创建块,下载宇宙书b-3的所有块并重放它们(不需要下载宇宙书b-1或宇宙书b-2的块)。

我们能“重启”ETH 1.0吗?

让我们想象一下同样的方法是否可以应用于以太网。区块链以太网非常大(150-160千兆字节),它的状态也非常大(40-100千兆字节,取决于你如何存储你的状态)。“重启”区块链以太网的一个明显优势是,新添加的节点需要下载40Gb的创建状态,而不是150 Gb的区块链。然而,下载40 Gb的创建状态不是一个好的体验。

它将被存储在邰方的链下,只有默克尔的根散列在链上可见

假设我们可以将40 Gb存储在链下,并且只将根哈希打包到创建块中,这样我们就可以从空状态开始。但是我们如何让事务访问这些隐式状态呢?

请记住,尽管40 Gb状态是隐式的,如何获得这些状态是一个实现细节,但您可以运行所有1000万个块来计算这些状态,或者通过快速同步和扭曲同步下载它们的快照,或者从其他人的外部磁盘复制它们以进行验证。尽管状态是隐式的,但我们假设块提议者(通常是矿井池)可以访问这些隐式数据,并且可以处理所有事务。然而,我们必须放弃这样的假设,即所有其他验证节点都可以访问隐式状态来验证块中的事务是有效的,并且块头中的状态根散列符合块的执行结果(翻译器注意:在当前的以太网协议中,这个假设是合理的,因为所有状态都是显式的)。

这不是无状态以太网吗?

如果你知道无状态以太网,你可能会意识到这正是我们目前努力的方向。——保留了“块提议者可以访问隐式状态”的假设,并删除了“所有验证节点都可以访问隐式状态”的假设。我们建议的解决方案是让块支持者向块中添加额外的证明。我们称这个证据为“集体证人”。

批量证明与交易证明

第一次知道这个方案的人会认为额外的证明实际上是由交易发送者提供的,并且是交易有效载荷的一部分。我们必须解释,事实并非如此,证据是由集团支持者提供的。然而,我们后来发现,交易还必须包含额外的证据。换句话说,交易的发送者需要证明发送者的地址有足够的以太网支付燃气费,以及由该账户发起的具有较小现时价值的所有其他交易。此外,事务发送者还需要证明发送者账户的随机数值,这样节点就可以发现随机数值之间是否存在差距,从而避免有人利用这个机会发送一系列不可行的事务进行DDOS攻击。我们还可以进行更严格的检查,但对于大多数反DDOS攻击,发送方账户的ETH余额和现时值是必要的信息(可能还不够)。

交易证明的弊端

假设我们希望交易的发送者为交易添加每个相关状态的证明。这样做的好处是可以简化我们为证人收取额外的汽油费的工作量。这样做的主要缺点是,它通常需要通过动态状态访问(DSA,而不是静态状态访问(SSA))来实现。如果事务中涉及的智能合同特别复杂,例如,有大量对其他合同的嵌套调用,则可能很难预先计算事务中涉及的状态项。攻击者甚至可以使用DSA为用户“设置陷阱”,即窃取他们的交易(将内容相同但燃气成本更高的交易发送到他们面前),从而使用户的交易因证据不足而失败。

新生提供的缓解措施

虽然很难彻底解决DSA的隐患,但可以尽可能降低其风险,使用户不会感到不便,也不会局限于无法永远实现预期状态转换的情况。缓解措施需要引入额外的规则,也就是说,与交易一起提供的任何认证(已经根据状态根进行了验证,但这不足以保证交易的成功)将成为隐含状态的一部分。因此,当用户反复尝试执行事务时,隐式状态将持续增长,最终事务成功。试图“诱捕”用户的攻击者必须找到一种更复杂的方法,将用户的状态访问重定向到现有的隐式状态,最终失败。

随着隐式状态从无(仅在重启后)增长到有,并且包含越来越多的活动访问状态,事务所需的证明将会减少。一段时间后,大多数交易甚至不需要任何证据,除了那些涉及很久以前。

我们可以定期执行再生

我称之为“重启”再生,它可以定期执行以减少非挖掘节点的负担。重生也代表了无状态以太网的一个不太激进的版本。

重复执行ReGenesis将简化以太网客户端实现的架构,并且几乎避免了对更高级快照同步算法的需求。如果我们每100万个块(大约6个月)执行一次再生,我们可以在BitTorrent、Swarm和IPFS上发布状态快照和区块链文件。目前,我们不能这样做,因为状态每15秒改变一次,而不是每6个月。如果客户端实现可以重放块6个月,我们不需要非常复杂的快照算法。因此,以太网实现的复杂性将会降低。

重生的缺点

我还没有深入探讨这个问题,但是我已经看到了三个缺点:

用户可能需要访问完整的隐式状态来创建事务。事实上,我认为这是一个公平的妥协。

(由于DSA)用户可能需要重复执行事务,直到最终实现预期的状态转换。

一些汇总技术(使用区块链数据实现数据可用性)可能会受到影响

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发