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

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

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

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

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

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

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

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

Decentraland安全报告:已修复LAND智能合约严重漏洞,将持续打击IP侵权行为:5月4日消息,元宇宙项目Decentraland发布安全报告,报告显示一名安全研究人员曾于3月发现了LAND智能合约的一个严重漏洞,该漏洞允许任何人在未经LAND所有者许可的情况下转让LAND,Decentraland在确认后的两小时内修复了漏洞并对LAND智能合约进行了两次额外的审计。

此外,Decentraland基金会表示其在过去的几个月中分析了881个网站页面、400个域名、399个移动和桌面应用程序以及1187个社交媒体列表,成功删除了侵权的2个网站、24个域名和5个社交媒体帐户。[2022/5/4 2:48:57]

保持 T2,以备后续使用。

2)无状态流程

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

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

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

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

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

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

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

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

AssangeDAO出价 1.7 万个ETH竞拍“Clock”NFT:2月9日消息,加密艺术家Pak与维基解密合作推出动态NFT作品“Clock”为阿桑奇的法律辩护筹集资金,AssangeDAO今日晚间发布最新出价16,593 ETH,为该组织所筹资金,扣去众筹平台手续费后的全部资金。

截至发稿前,AssangeDAO出价暂时排名第一。此前,加密货币交易所Karken联合创始人Jesse Powell曾以4,242.42 ETH 领先该竞拍。该拍卖将于北京时间今日晚10点结束。

2月8日,AssangeDAO完成全部募资,共筹集17422 ETH。据AssangeDAO称,众筹平台Juicebox会对所筹资金收取5%的费用。据AssangeDAO团队公布,0x7BE99ca4E6893ef57cf349ab56307628100feA00为该团队多重签名钱包的地址。[2022/2/9 9:40:49]

留着 T2 以备后续使用。

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

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

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

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

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

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

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

广发银行接入数字人民币互联互通平台:8月18日晚间,广发银行在其微信公众号中透露,近日,在人民银行数字货币研究所的统一部署和指导下,广发银行以直通模式接入数字人民币互联互通平台,用户可在人民银行数字人民币APP上使用任意运营机构个人钱包,绑定广发银行卡并办理数字人民币钱包充值、存回银行卡账户等业务。目前广发银行正在与工行等其他机构共同推进数字人民币体系建设,后续将在央行的统一部署下,加快数字人民币应用场景研究探索的步伐,创建有广发特色的数字人民币创新支付生态圈。

注:数字人民币是中国人民银行发行的数字形式的法定货币。由指定运营商参与运营并向公众兑换,以广义账户体系为基础,支持银行账户松耦合功能,与纸钞和硬币等价,具有价值特征和法偿性,支持可控匿名。(上海证券报)[2021/8/19 22:23:42]

部分见证数据会存储在数据库中(我们用的是 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。

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。这个值与按区块提供见证数据相比,节约太多,即使算上我们改变状态树模式能够得到的增益相比,也节约非常多(关于十六进制树和二进制树模式下见证数据大小的区块,可见我的上一篇文章)(译者注:中译本见文末超链接)。

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

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

Luna美SEC委员Hester Peirce详述“安全港”提案想法并寻求反馈

美SEC委员Hester Peirce在本月初提出了为合法的加密项目提供3年宽限期的“安全港”提案的想法。周二她在加密媒体Coindesk撰文详述了自己的想法并寻求业内的反馈。 她认为,安全港旨在平衡保护代币购买者的目标和提供使创新蓬勃发展的监管灵活性。

Ethereum慢雾:详解 DeFi 协议 bZx 二次被黑

本文作者:yudan@慢雾安全团队 前言 今早,bZx 疑似遭遇第二次攻击,不同的是本次的对象是 ETH/sUSD 交易对,但也许有人会有疑问,sUSD 不是对标 USD 的稳定币吗?这都能被攻击?攻击手法具体是怎样的?带着这样的疑问,针对此次事件,慢雾安全团队接下来将复盘这两次攻击过程。

MATIC看商业化DAO如何引领VC新浪潮

根据我得到的可靠消息,包括 The LAO 在内的几个营利性 DAO 项目均将于本月底前正式推出,这是自2月14号 Moloch V2 智能合约部署完成之后,第一批实例化的项目落地。这是 DAO 的一次蜕变,能否华丽,是否能像 Moloch 诞生之时那般赢得包括 Vitalik 在内的极高赞誉,需要我们拭目以待。

ICP比特币能否永久征服1万美元?这里有两件事要考虑

市场分析 比特币(BTC)的多头们正在庆祝这个数字资产在进入20年代来的首次飙升至1万美元以上,但由于比特币未能在足够长的时间内维持在1万美元以上,人们的微笑是短暂的。 是不是又是一次像2019年比特币曾7次突破1万美元所带来的短命牛市?还是说这次有所不同? 每日加密货币市场表现。来源:Coin360.com BTC美元每日图表。

[0:0ms0-0:484ms