引介 | 代码默克尔化的最优分块大小
摘要: 我们将在本文探索最简单的分块策略:固定大小分块。
摘要
本文将介绍以下内容:
-
一个基于 TurboGeth 的操作码追踪器能够以每秒 28 个区块的速度处理并导出 EVM 层面的事务详情。 -
一个脚本可以根据事务执行的基本块计算出固定大小分块的默克尔化结果。
默克尔化:问题陈述
结果
-
现实世界交易的基本块(basic block)的平均长度约为 16,统计分布严重偏向小型基本块。 -
分块之间的距离越近,证明哈希的分摊程度越高/构建多重证明(multiproof)所必需的哈希值就越少。N 个连续的分块所需的哈希值数量 <= 一个分块所需的哈希值数量。 -
以下开销数据都是在 50 万个区块上运行默克尔化流程得出的结果,但是在 1000 个区块上运行下来的结果相同,并且稳定在 ±1% 的范围内。
工具
基于 TurboGeth 的操作码追踪器
实现主网交易痕迹默克尔化的脚本
Block 9904995: segs=816 median=14 2▁▃▁▃▅▄▆█▂▂▄▂▄26 (+29% more)
Block 9904995: overhead=42.4% exec=12K merklization= 16.6 K = 15.6 + 1.0 K
Block 9904996: segs=8177 median=18 2▁▂▁▄█▄▆▄▃▅▃▃▄▁▂▂▂34 (+24% more)
Block 9904996: overhead=34.1% exec=101K merklization= 136.0 K = 135.1 + 0.9 K
Block 9904997: segs=14765 median=14 2▁▂▂▄█▃▆▄▃▃▂▄▂26 (+25% more)
Block 9904997: overhead=31.5% exec=106K merklization= 139.8 K = 139.0 + 0.8 K
Block 9904998: segs=20107 median=14 2▁▁▂▄▅▄█▃▃▄▂▂▃26 (+27% more)
Block 9904998: overhead=36.4% exec=76K merklization= 103.8 K = 103.0 + 0.8 K
Block 9904999: segs=10617 median=12 2▁▂▃▅▆▅█▄▃▃▂22 (+29% more)
Block 9904999: overhead=37.4% exec=59K merklization= 81.4 K = 80.8 + 0.7 K
file /data/traces2/segments-9904000.json.gz: overhead=32.1% exec=74493K merklization=98368.4K = 97481.3 K chunks + 887.1 K hashes segment sizes:median=14 2▁▁▂▆█▆█▆▄▄▃▃▃26 (+28% more)
running total: blocks=905000 overhead=30.8% exec=65191590K merklization=85278335.0K = 84535640.5 K chunks + 742694.5 K hashes estimated median:15.0
致谢
(完)
原文链接:
https://ethresear.ch/t/optimal-chunking-size-for-code-merklization/8185
作者: Horacio Mijail
作者:以太坊爱好者;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请发送至邮箱:linggeqi@chaindd.com
链得得仅提供相关信息展示,不构成任何投资建议
评论(0)
Oh! no
您是否确认要删除该条评论吗?