本实验用到的原始数据和脚本:https://github.com/mandrigin/ethereum-mainnet-resolver-witness-stats引言有一种办法也许能加速初始同步过程(initial sync process,指从创世块开始的区块链同步),就是使用区块见证数据(witness)预先建构出缓存树(cache trie),来避免速度较慢的状态访问。这样做需要额外占用硬盘空间和网络带宽,但也许可以大幅加速同步过程。
其中的原理是,一般来说,要执行一个区块,我们就需要默克尔树上的一些数据。虽然在某个块执行以前,默克尔树上已经有一些数据了,但这些数据可能不足以执行区块。所以,正常来说,我们还要从状态数据库(state db)中提取出数据并加到默克尔树上,然后才能验证交易。这个过程可能会很慢,因为 硬盘访问/数据库查询 的速度比较慢。
根据这个问题描述,我们可以划分出三种不同的方案:
1)正常流程(也就是当前在以太坊节点中使用的方案)
以太坊混合器Tornado Cash推出重大升级:金色财经报道,作为向备受期待的v3过渡的一部分,基于以太坊的隐私混合器Tornado Cash刚刚进行了重大升级。本周三,Tornado Cash宣布推出升级Nova,将协议带到xDai侧链,允许可变存款和取款,并支持保护隐私的“屏蔽”资金转移到协议池中。该协议目前在其池中拥有超过150,000枚ETH,价值5.8亿美元。[2021/12/16 7:42:16]
在区块 B 执行以前,我们有状态树 T1;
在需要执行 B 的时候,我们把 T1 中遗漏的数据添加到 T1 上,形成 T1',T1'',等等。每次遇到 T1 上没有的信息,我们就在数据库中查找(速度慢)。
执行完 B 之后,我们有了状态树 T2,T2 具备执行 B 所需的所有账户状态。
保持 T2,以备后续使用。
2)无状态流程
在区块 B 执行以前,我们并没有状态树;不过,我们可以拿到一个见证数据 W,来重组执行这个区块所需的状态树。
我们执行 W,获得了状态树 T2。
V神:以太坊可以达到100000 TPS:以太坊联合创始人Vitalik Buterin分享了新的以太坊路线图细节,Vitalik强调,新的以太坊扩容战略将会把区块链生态移至rollups、Plasma、状态通道,此外,其估计,一旦optimistic rollups完全部署,以太坊开始向2.0转移,以太坊每秒钟将能处理100000笔交易(ETH1.5阶段)。在ETH2.0阶段,以太坊有了分片基础设施,网络吞吐量可以达到1000-5000。[2020/10/3]
在 T2 上执行区块 B,不需要查找数据库。
区块执行完之后就把 T2 丢掉。
3)准无状态流程(semi-stateless folw)(即本实验要测试的方案)
在区块 B 执行之前,我们有状态树 T1,见证数据 W1、W2、……,足以将 T1 转成 T2
依次在 T1 上执行 W1、W2、……,最后获得 T2,也不需要查询数据库。
在 T2 上执行区块 B,也不需要查询数据库。
留着 T2 以备后续使用。
在初始同步中使用准无状态流程可以获得无状态流程的大部分好处 ?,又不需要传输那么多数据,因为我们重用了状态树缓存。
以太坊核心开发者Peter Szilagyi反对提高Gas上限至1250万:以太坊核心开发者Peter Szilagyi发声反对“将Gas上限增至1250万”,Peter认为,以太坊的矿工们根本不关心网络的长期健康状况。随着Gas上限的提高,区块链的规模将会变得更大,这使得同步和运行一个完整的节点更加困难、昂贵,同时还会引起一些DoS问题。(Bitcoin Exchange Guide)[2020/6/21]
? 在准无状态方案中,区块的并行执行会受到更大的限制
那么,为了测试准无状态方案的性能,我们需要测量两件事:
这一方法需要额外占用多少 硬盘/带宽?与完全富状态的方法相比,它真的更好吗?
其初始同步速度会快多少?
本文中我们会集中测试硬盘需求。
状态树(默克尔树)的最大规模:100 万个 node。一旦节点数超过这个值,我们就驱逐 LRU 节点,以释放内存。用这种办法,我们就能控制状态树对内存的使用。
部分见证数据会存储在数据库中(我们用的是 boltdb)。每个条目的结构如下:
声音 | ShapeShift首席执行官:以太坊因V神而更好:据bitcoinexchangeguide报道,ShapeShift首席执行官Erik Voorhees最近接受CNBC的采访时谈到了以太坊2.0,V神(Vitalik Buterin)对以太坊生态系统的影响以及以太坊和加密货币的现实采用。Voorhees表示,对于以太坊,V神“显然”是一个集中点,但他不会运行以太坊,无法控制它。V神只是一个重要的影响力,是一个出色的人。因此,有他参与其中使以太坊更好。[2018/11/10]
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。
以太坊社区基金会:推奖励金以支持中国开发者社区建设:3月31日,以太坊社区基金会奖励金计划负责人Cassandra Shi在北京公布了奖励金计划,为基础设施建设、研究和社区建设提供支持。通过设立基金会,可以将这开发者和以太坊联通起来,用非商业化的奖金解决资源调配的问题。以太坊创始人Vitalik也十分重视ECF的发展。此前他向专注区块链报道的CoinDesk发邮件,确认了他太坊社区基金会顾问的身份。对于ECF的成立,他认为“提供与宣传相匹配的价值将会是2018年的目标,像ECF这样能够帮助生态系统发展的项目将有助于实现这一目标。”[2018/4/3]
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。这个值与按区块提供见证数据相比,节约太多,即使算上我们改变状态树模式能够得到的增益相比,也节约非常多(关于十六进制树和二进制树模式下见证数据大小的区块,可见我的上一篇文章)(译者注:中译本见文末超链接)。
如果这个性能还算可以,那么它显然是加速初始同步的好办法;而且它的数据需求比完全无状态方法更小。
近日,央行发布了《金融分布式账本技术安全规范》金融行业标准。这是国内乃至国际金融行业的首个区块链的规范.
1900/1/1 0:00:002月25日,EOS 节点 EOS Nation 发起多签提案setinflation,提议将EOS总通胀率设置为1%,且不再注入eosio.saving账户。该提案参数更改在Jungle 3测试网上测试有效.
1900/1/1 0:00:002月28日凌晨,加密货币交易所OKEx CEO Jay Hao发布微博OKEx遭遇DDoS攻击,已分钟级完成抗D流量切换,另外对于这种大规模的DDoS攻击,报警处理.
1900/1/1 0:00:00交易所钱包余额近7天流出1,212.26枚BTC:金色财经报道,据coinglass数据显示,交易所钱包余额近24小时流出273.76枚BTC,近7天流出1,212.26枚BTC,近30天流入1,442.91枚BTC.
1900/1/1 0:00:00今日上午有鲸鱼账户称自己的加密货币账户被黑客攻击,被盗价值1500万美元的BTC和3000万美元的BCH,且该消息被币印创始人签名验证过属实.
1900/1/1 0:00:00大帝怎么看? BTC: 技术上看,比特币1小时K线图沿布林通道缓慢运行,BOLL呈平口状态。附图指标,成交量处于持续萎缩状态,DMI四线搓揉在一起,RSI数值36.
1900/1/1 0:00:00