重复执行 ReGenesis 将简化以太坊客户端实现的架构,险些可以免除对较高级快照同步算法的需求。假如我们每隔 100 万个区块(约莫 6 个月)执行一次 ReGenesis,可以将状态快照和区块链文件放到 BitTorrent、Swarm 和 IPFS 上果真。今朝我们无法做到这点(随发生随存),因为状态每隔 15 秒而非 6 个月转换一次。假如客户端实现可以重放 6 个月的区块,我们就不需要很是巨大的快照算法。因此,以太坊实现的巨大性会低落。
此刻,每每想要插手 Cosmos Hub 的人,都需要获取 CosmosHub-3 的创世块,下载 CosmosHub-3 的所有区块并举办重放(不再需要下载 CosmosHub-1 或 CosmosHub-2 的区块了)。
生意业务中的证明存在的缺点
(由于 DSA)用户大概需要重复执行生意业务,直到最后实现预期状态转换。
我还没有对此举办深入摸索,不外我已经看到的三个缺点有:
ReGenesis 的缺点
将以太坊的状态存储在链下,只有默克尔根哈希是链上可见的
我称之为 “重启” reGenesis ,可以按期执行,以便减轻非挖矿节点的承担。ReGenesis 也代表了一个不那么激进的无状态以太坊版本。
ReGenesis 提供的缓解法子
固然 DSA 的隐患很难彻底办理,可是可以尽大概低落其风险,让用户不会感想未便,也不会永远限于无法实现预期状态转换的田地。该缓解法子需要引入特另外法则,即,任何随生意业务提供的证明(已经按照状态根举办过验证,但这并不敷以担保生意业务能乐成)城市成为隐式状态的一部门。因此,跟着用户重复实验执行生意业务,隐式状态会不绝增长,最终生意业务乐成。那些实验给用户 “下套” 的进攻者必需找到更巨大的要领,把用户的状态会见重定向到已有的隐式状态之外,最终以失败了却。
第一次相识这个方案的人会认为特另外证明实际上是由生意业务发送者提供的,是生意业务有效负载的一部门,我们不得不出来表明说并非如此,证明是由区块提议者提供的。可是,我们厥后发明,生意业务也必需包括特另外证明。换言之,生意业务发送方需要证明发送方地点有足够的 ETH 来付出 gas 费,以及其他所有由这个账户提倡的 nonce 值较小的生意业务。另外,生意业务发送方还需证明发送方账户的 nonce 值,以便节点弄清楚 nonce 值之间是否存在缺口,以免有人借机发送一系列不行行的生意业务来举办 DDOS 进攻。我们还可以举办越发严格的查抄,不外对付绝大大都抗 DDOS 进攻的方案来说, ETH 余额和发送方账户 nonce 值是须要信息(或者还不足充实)。
跟着隐式状态从无(刚重启时)到有不绝增长,包括越来越多的主动会见状态,生意业务需要提供的证明将会淘汰。过了一段时间,大大都生意业务甚至不需要附带任何证明,除了那些涉及到好久之前的状态的生意业务。
假设我们想让生意业务发送者将每一个相关状态的证明都添加进生意业务。这样做的长处在于,将简化我们为见证收取特别 gas 费所需的事情量。这样做的主要缺点在于,这凡是需要通过动态状态会见(DSA,与静态状态会见(SSA)相对)实现。假如一个生意业务涉及的智能合约出格巨大,例如说,有大量对其他合约的嵌套挪用,大概很难预先计较出生意业务将涉及的状态项。进攻者甚至可以操作 DSA 来给用户 “下套”,即,抢跑其生意业务(发送内容一样但 Gas 费更高的生意业务,以抢在前面被打包)让用户的生意业务因为证明不充实而失败。
假如你调查过 Cosmos Hub 是如何从 1.0 版本进级到 2.0 版本,再进级到 3.0 版本的,你就会知道 Cosmos Hub 的进级本质上是通过用一个新的创世块重启来实现的。要进级的时候,节点运营者需要封锁节点,然后生成 Cosmos Hub 状态的快照,然后将这一快照打包进新的创世块,建设一条新的区块链。
用户大概需要会见完整的隐式状态来建设生意业务。实际上,,我认为这是公正的妥协。
我们来设想一下同样的要领能不能应用到上。以太坊区块链很是复杂(150-160 Gb),状态也很大(40-100 Gb,详细取决于你存储状态的方法)。“重启” 以太坊区块链的一个明明利益是,新插手的节点需要下载 40Gb 的创世状态,而非一条 150 Gb 的区块链。然而,下载 40 Gb 的创世状态也不是很好的体验。
区块中的证明 vs 生意业务中的证明
我们可以按期执行 ReGenesis
假如你相识无状态以太坊(Stateless Ethereum),你大概会心识到,这正是我们今朝尽力的偏向 —— 保存 “区块提议者可以会见隐式状态” 的假设,去除 “所有验证节点都可以会见隐式状态” 的假设。我们发起的办理方案是,让区块提议者将特另外证明添加到区块中。我们将该证明称为 “区块见证(block witness)”。
这不是无状态以太坊吗?
一些(操作区块链数据来实现数据可用性的)rollup 技能大概会受到影响假定我们可以将这 40 Gb 存储在 “链下”,只将根哈希打包进创世块,这样我们就能从空状态开始了。可是,我们如何让生意业务会见这些隐式的状态?
来自 Cosmos Hub 的履历
我们可以 “重启” ETH 1.0 吗?
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。