南昌旅游攻略

欧博亚洲手机版下载:为降低节点的肩负 我们可以 “重启” ETH 1.0 吗?

来源:南昌新闻网 发布时间:2020-06-30 浏览次数:

来自 Cosmos Hub 的履历

若是你考察过 Cosmos Hub 是若何从 1.0 版本升级到 2.0 版本,再升级到 3.0 版本的,你就会知道 Cosmos Hub 的升级本质上是通过用一个新的创世块重启区块链来实现的。要升级的时刻,节点运营者需要关闭节点,然后天生 Cosmos Hub 状态的快照,然后将这一快照打包进新的创世块,建立一条新的区块链。

现在,通常想要加入 Cosmos Hub 的人,都需要获取 CosmosHub-3 的创世块,下载 CosmosHub-3 的所有区块并举行重放(不再需要下载 CosmosHub-1 或 CosmosHub-2 的区块了)。

我们可以 “重启” ETH 1.0 吗?

我们来设想一下同样的方式能不能应用到以太坊上。以太坊区块链异常重大(150-160 Gb),状态也很大(40-100 Gb,详细取决于你存储状态的方式)。“重启” 以太坊区块链的一个显著优点是,新加入的节点需要下载 40Gb 的创世状态,而非一条 150 Gb 的区块链。然而,下载 40 Gb 的创世状态也不是很好的体验。

将以太坊的状态存储在链下,只有默克尔根哈希是链上可见的

假定我们可以将这 40 Gb 存储在 “链下”,只将根哈希打包进创世块,这样我们就能从空状态最先了。然则,我们若何让买卖接见这些隐式的状态?

请记着,只管这 40 Gb 的状态是隐式的,而且若何获取这些状态属于实现细节,你可以运行所有 1000 万个区块来盘算这些状态,或者通过快速同步、warp 同步来下载其快照,或者从其他人的外部磁盘复制过来再举行验证。虽然状态是隐式的,然则我们假设区块提议者(通常是矿池)可以接见这部门隐式数据,而且能够处置所有买卖。只不外我们要放弃一个假设:所有其他验证节点都可以接见隐式状态,来验证区块中的买卖是有用的,且区块头中的状态根哈希相符区块的执行效果(译者注:在当前的以太坊协议中,由于所有状态都是显式的,以是这个假设是合理的)。

这不是无状态以太坊吗?

若是你领会无状态以太坊(Stateless Ethereum),你可能会意识到,这正是我们现在起劲的偏向 —— 保留 “区块提议者可以接见隐式状态” 的假设,去除 “所有验证节点都可以接见隐式状态” 的假设。我们建议的解决方案是,让区块提议者将分外的证实添加到区块中。我们将该证实称为 “区块见证(block witness)”。

区块中的证实 vs 买卖中的证实

第一次领会这个方案的人会以为分外的证实实际上是由买卖发送者提供的,是买卖有用负载的一部门,我们不得不出来注释说并非如此,证实是由区块提议者提供的。然则,我们厥后发现,买卖也必须包罗分外的证实。换言之,买卖发送方需要证实发送方地址有足够的 ETH 来支付 gas 费,以及其他所有由这个账户提议的 nonce 值较小的买卖。此外,买卖发送方还需证实发送方账户的 nonce 值,以便节点弄清楚 nonce 值之间是否存在缺口,以免有人借机发送一系列不可行的买卖来举行 DDOS 攻击。我们还可以举行加倍严酷的检查,不外对于绝大多数抗 DDOS 攻击的方案来说, ETH 余额和发送方账户 nonce 值是需要信息(或许还不够充实)。

买卖中的证实存在的瑕玷

假设我们想让买卖发送者将每一个相关状态的证实都添加进买卖。这样做的利益在于,将简化我们为见证收取分外 gas 费所需的工作量。这样做的主要瑕玷在于,这通常需要通过动态状态接见(DSA,与静态状态接见(SSA)相对)实现。若是一个买卖涉及的智能合约稀奇庞大,比方说,有大量对其他合约的嵌套挪用,可能很难预先盘算出买卖将涉及的状态项。攻击者甚至可以行使 DSA 来给用户 “下套”,即,抢跑其买卖(发送内容一样但 Gas 费更高的买卖,以抢在前面被打包)让用户的买卖由于证实不充实而失败。

ReGenesis 提供的缓解措施

虽然 DSA 的隐患很难彻底解决,然则可以尽可能降低其风险,让用户不会感应未便,也不会永远限于无法实现预期状态转换的田地。该缓解措施需要引入分外的规则,即,任何随买卖提供的证实(已经凭据状态根举行过验证,但这并不足以保证买卖能乐成)都市成为隐式状态的一部门。因此,随着用户频频实验执行买卖,隐式状态会不停增进,最终买卖乐成。那些实验给用户 “下套” 的攻击者必须找到更庞大的方式,把用户的状态接见重定向到已有的隐式状态之外,最终以失败了结。

随着隐式状态从无(刚重启时)到有不停增进,包罗越来越多的自动接见状态,买卖需要提供的证实将会削减。过了一段时间,大多数买卖甚至不需要附带任何证实,除了那些涉及到良久之前的状态的买卖。

我们可以定期执行 ReGenesis

我称之为 “重启” reGenesis ,可以定期执行,以便减轻非挖矿节点的肩负。ReGenesis 也代表了一个不那么激进的无状态以太坊版本。

频频执行 ReGenesis 将简化以太坊客户端实现的架构,险些可以免去对较高级快照同步算法的需求。若是我们每隔 100 万个区块(约莫 6 个月)执行一次 ReGenesis,可以将状态快照和区块链文件放到 BitTorrent、Swarm 和 IPFS 上公然。现在我们无法做到这点(随发生随存),由于状态每隔 15 秒而非 6 个月转换一次。若是客户端实现可以重放 6 个月的区块,我们就不需要异常庞大的快照算法。因此,以太坊实现的庞大性会降低。

ReGenesis 的瑕玷

我还没有对此举行深入探索,不外我已经看到的三个瑕玷有:

  1. 用户可能需要接见完整的隐式状态来建立买卖。实际上,我以为这是公正的妥协。

  2. (由于 DSA)用户可能需要频频执行买卖,直到最后实现预期状态转换。

  3. 一些(行使区块链数据来实现数据可用性的)rollup 手艺可能会受到影响

原文链接:

https://ethresear.ch/t/regenesis-resetting-ethereum-to-reduce-the-burden-of-large-blockchain-and-state/7582

作者:  Alexey Akhunov

翻译&校对: 闵敏 & 阿剑

,

欧博亚洲

欢迎进入欧博亚洲(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片