火星链 火星链
Ctrl+D收藏火星链
首页 > Gate.io > 正文

ETH:以太坊技术引介:准无状态下的同步实验

作者:

时间:1900/1/1 0:00:00

本实验用到的原始数据和脚本:https://github.com/mandrigin/ethereum-mainnet-resolver-witness-stats引言有一种办法也许能加速初始同步过程(initial sync process,指从创世块开始的区块链同步),就是使用区块见证数据(witness)预先建构出缓存树(cache trie),来避免速度较慢的状态访问。这样做需要额外占用硬盘空间和网络带宽,但也许可以大幅加速同步过程。

其中的原理是,一般来说,要执行一个区块,我们就需要默克尔树上的一些数据。虽然在某个块执行以前,默克尔树上已经有一些数据了,但这些数据可能不足以执行区块。所以,正常来说,我们还要从状态数据库(state db)中提取出数据并加到默克尔树上,然后才能验证交易。这个过程可能会很慢,因为 硬盘访问/数据库查询 的速度比较慢。

根据这个问题描述,我们可以划分出三种不同的方案:

1)正常流程(也就是当前在以太坊节点中使用的方案)

昨日以太坊销毁量10186ETH,环比上升4.18%:据欧科云链链上大师数据显示,当前以太坊销毁量为135.72万ETH,24小时Base Fee均值104 Gwei;昨日以太坊销毁量10186.6ETH,环比上升4.18%。近24小时销毁量前三的协议分别是OpenSea 1890.29 ETH、Uniswap V3 760.04 ETH以及Erc-20 USDT 500.88 ETH。[2022/1/5 8:26:24]

在区块 B 执行以前,我们有状态树 T1;

在需要执行 B 的时候,我们把 T1 中遗漏的数据添加到 T1 上,形成 T1',T1'',等等。每次遇到 T1 上没有的信息,我们就在数据库中查找(速度慢)。

执行完 B 之后,我们有了状态树 T2,T2 具备执行 B 所需的所有账户状态。

保持 T2,以备后续使用。

2)无状态流程

在区块 B 执行以前,我们并没有状态树;不过,我们可以拿到一个见证数据 W,来重组执行这个区块所需的状态树。

我们执行 W,获得了状态树 T2。

以太坊新路线图:ETH并入新的PoS链不一定要等待第一阶段:根据以太坊开发者的新路线图,目前以太坊合并到新的PoS链中并不一定需要等待Phase 1或数据分片。

以太坊联合创始人V神表示,从本质上说,轻客户端支持、数据分片(Phase 1)与合并(merge)都是以相互独立的方式进行的,因此,无论其他部分处于哪个阶段,每一部分准备就绪后都可进行实施。以太坊2.0协调员Danny Ryan表示,合并测试网可能很快就会推出。他称,“在添加分片数据可用性之前,可以将eth1记录到eth2上,反之亦然。独立性使得这两部分能够同时进行,我们甚至可能会在不久的将来看到eth1/eth2合并的测试网。”

然而,这一合并不应期望在短期内完成。开发者Justin Drake解释道:“Eth1-Eth2的合并是困难的,因为它涉及到Eth1和Eth2之间的协调,需要对抗Eth1的僵化。我不认为Eth1-Eth2合并会在2021年发生。”(Trustnodes)[2020/11/19 21:24:33]

在 T2 上执行区块 B,不需要查找数据库。

区块执行完之后就把 T2 丢掉。

3)准无状态流程(semi-stateless folw)(即本实验要测试的方案)

以太坊钱包MyCrypto新增对Pocket Network的支持:据官方消息,以太坊钱包MyEtherWallet分叉版本MyCrypto现已将去中心化API基础设施Pocket Network添加到其默认网络提供商列表中。[2020/11/11 12:18:33]

在区块 B 执行之前,我们有状态树 T1,见证数据 W1、W2、……,足以将 T1 转成 T2

依次在 T1 上执行 W1、W2、……,最后获得 T2,也不需要查询数据库。

在 T2 上执行区块 B,也不需要查询数据库。

留着 T2 以备后续使用。

在初始同步中使用准无状态流程可以获得无状态流程的大部分好处 ?,又不需要传输那么多数据,因为我们重用了状态树缓存。

? 在准无状态方案中,区块的并行执行会受到更大的限制

那么,为了测试准无状态方案的性能,我们需要测量两件事:

这一方法需要额外占用多少 硬盘/带宽?与完全富状态的方法相比,它真的更好吗?

其初始同步速度会快多少?

以太坊柏林硬分叉或于明年1月进行:金色财经报道,根据周五举行的核心开发人员电话会议,以太坊“柏林”(Berlin)硬分叉最多还需要几个月,目前已制定了在明年1月份进行的软目标。据悉,“柏林”是当前Eth1.x工作量证明(PoW)区块链的硬分叉。该系统范围的升级原定于7月进行。[2020/10/31 11:17:00]

本文中我们会集中测试硬盘需求。

状态树(默克尔树)的最大规模:100 万个 node。一旦节点数超过这个值,我们就驱逐 LRU 节点,以释放内存。用这种办法,我们就能控制状态树对内存的使用。

部分见证数据会存储在数据库中(我们用的是 boltdb)。每个条目的结构如下:

key: byte // 区块号 + 状态树上节点的最大数量value: []byte // 见证数据,按文档中的描述予以序列化我们不会在见证数据里存储合约代码(这是我们当前架构的不足)。

数据按下述方法得到(需要一个同步好的 turbo-geth 节点)

(in the turbo-geth repository)make state./build/bin/state stateless \     — chaindata ~/nvme1/mainnet/mainnet/geth/chaindata \     — statefile semi_stateless.statefile \     — snapshotInterval 1000000 \     — snapshotFrom 10000000 \     — statsfile new_witness.stats.compressed.2.csv \     — witnessDbFile semi_stateless_witnesses.db \     — statelessResolver \     — triesize 1000000 \实验结果存储从创世块开始同步 6, 169, 246 (619 万)区块,见证数据的数据库(bolt db)达到了 99GB。

动态 | 以太坊主网已正式开始进行缪尔冰川升级:据Ethernodes最新数据,以太坊主网已正式开始进行缪尔冰川升级。截至目前,大约80.8%的节点已准备就绪;19.2%的节点尚未做好准备。此外,据火币数据显示,ETH暂报129.76美元,日内下跌1.73%。

注:本次以太坊缪尔冰川硬分叉升级将包含 EIP 2384 提议,该提议将把难度炸弹再延迟 400万个块(换算成时间单位,约为 611 天)。[2020/1/2]

python quantile-analysis.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv

平均值     0.038 MB中值       0.028 MB90 分位值    0.085 MB95 分位值    0.102 MB99 分位值    0.146 MB最大值       2.350 MB数据大小python absolute_values_plot.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv从创世块到 610 万区块高度的阶段的见证数据大小,图表在 1MB 处截顶了。按 1024 个块取滑动平均值。

absolute_values_plot.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv 3000000解决上海 DDoS 攻击之后的见证数据大小,按 1024 个区块取滑动平均值。

python ddos_zoom.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv放大看 DDoS 攻击对见证数据大小的影响(原始数据)。

可以看到,在 230 万高度到 250 万高度,以及 265 万高度到 275 万高度期间,见证数据的大小显著增大。

python full_vs_semi.py cache_1_000_000/semi_stateless_witnesses.db.stats.1.csv

完全无状态下的见证数据大小是根据准无状态下的见证数据加上缺失的合约代码部分调整得来的.

从这张图可以看出,使用准无状态方法,可以节约大量数据(与完全无状态方法相比)。

加上一个无状态解析器会让每个区块需要 传输/存储 的数据量增加 0.4 MB。这个值与按区块提供见证数据相比,节约太多,即使算上我们改变状态树模式能够得到的增益相比,也节约非常多(关于十六进制树和二进制树模式下见证数据大小的区块,可见我的上一篇文章)(译者注:中译本见文末超链接)。

如果这个性能还算可以,那么它显然是加速初始同步的好办法;而且它的数据需求比完全无状态方法更小。

标签:NBSBSPETHSTATnbs币最新消息BSPT价格EETH价格Real Estate Token

Gate.io热门资讯
数字货币:浅谈疫情对数字货币的影响:如何推动社会协作和价值交换

著者说近期数字经济表现比较抢眼,不仅比特币终于又过万了,而且在很多加密数字货币都在上涨。这篇文章就是对在疫情如何影响数字货币的本质的分析,以及如何理解比特币的长期价值的构建,最后我们还会讨论央行.

1900/1/1 0:00:00
TEL:金色前哨丨美国商品期货交易委员会对“SEC vs. Telegram”案件表态

金色财经 区块链2月23日讯  最近美国证券交易委员会(SEC)和Telegram正“打的不可开交”.

1900/1/1 0:00:00
区块链:朱嘉明:现代化的脆弱和现代性的反思

2月14日,零壹财经·零壹智库与数字资产研究院、苇草智酷联合举办了以“现代化的脆弱和现代性的反思”为主题的线上沙龙活动.

1900/1/1 0:00:00
区块链:首发 | OKEX投研:比特币看涨金叉并不支持梭哈 以太坊后市更被市场看好

要点:1.比特币日线形成看涨金叉,但历史数据并不支持直接梭哈2.ETH/BTC隐含波动率持续上升.

1900/1/1 0:00:00
ITM:BitMEX交易所XRP/USD插针一度闪跌至0.13美元

市值第三的加密货币XRP周四在主要加密货币交易所BitMEX发生闪跌,价格一度跌至0.13美元.

1900/1/1 0:00:00
区块链:区块链技术发展史上的一大突破 BDC打造全球首个大数据生态链

大数据所能带来的巨大商业价值,被认为将引领一场足以与20世纪计算机革命匹敌的巨大变革。大数据正在促生新的蓝海,催生新的经济增长点,正在成为企业竞争的新焦点.

1900/1/1 0:00:00