作者:?IgorMandrigin
翻译:?阿剑
来源:以太坊爱好者
什么是“无状态以太坊”?
如果您已经了解什么是“无状态以太坊”以及“区块见证数据”,可以跳过这一段。
为执行交易及验证区块,以太坊网络的节点需要了解整条区块链的当前状态——也就是所有账户和合约的余额和存储数据。这些数据一般来说是存储在DB里面的,在需要用于验证时才会加载到一棵默克尔树中。
无状态以太坊客户端的工作思路则稍有区别。顾名思义,无状态客户端就是不使用硬盘DB来执行区块。相反,无状态客户端依赖于“区块见证数据”——就是一段特殊的数据,它会跟相应的区块一起传播;拥有了这段数据,客户端就可以重建出一个默克尔子树,该分支足可用于执行该区块中的所有交易。
你可以在这篇文章中读到关于无状态客户端的更深入的描述:https://blog.ethereum.org/2019/12/30/eth1x-files-state-of-stateless-ethereum/
当然咯,需要传播区块见证数据就意味着无状态客户端的网络要求要比普通节点更高。
-见证数据大小折线图-
现在人们已经提出了很多降低见证数据规模的思路:使用有效性/计算完整性证明、加入更多的压缩手段,等等。其中一种办法是将以太坊的默克尔树从十六进制转为二进制。
这就是本文想要探讨的问题。
观点:日本新的稳定币框架可能会促使美国采取行动:金色财经报道,日本于2022年6月通过了稳定币法律框架,该框架于周四生效。?法律要求稳定币必须与日元或另一种法定货币挂钩,并保证以面值赎回给持有人。它还将稳定币的发行限制在持牌金融机构,例如注册银行、汇款代理人和信托公司。
加密货币基金ProChain Capital的联合创始人David Tawil表示,该国通过这一举措弥合TradFi和DeFi之间差距的步骤从长远来看将使每个人受益。在美国,大多数存款人,无论是个人还是企业,都可以享受免费的国内转账服务。但是,日本的倡议是迈向国际无摩擦、免费汇款的第一步。[2023/6/4 21:15:01]
为什么要使用二进制树
默克尔树的一大优良特性是,验证树根值正确与否并不要求你具有整棵树所有的数据。只需把所有省略的非空路径替代为相应的哈希值就可以可。
那么使用十六进制默克尔树有什么不好呢?
设想整棵树都已填满数据。要验证一个区块,我们只需要一小部分默克尔树节点的数据。那么,我们只需把其他路径的数据替代为哈希值就可以了。
但是,每多加入一条哈希值,区块见证数据就会大一些。
如果我们转变为二进制默克尔树,这个问题就可以得到缓解——因为默克尔树上的每个节点都只有两个子节点,所以至多只有一个字节点需要被替换为哈希值。
这样做也许能大幅降低见证数据的规模。
我们再举例说明一下。
假设执行某个区块只会影响一个账户:3B路径下的Acc1。整棵树是全满的。
观点:以太坊期货ETF获批或早于比特币现货ETF:11月3日消息,彭博行业研究(BI)指出,以太坊期货ETF获批上市或早于比特币现货ETF。BI分析师James Seyffart在周二的报告中写道:虽然多数市场参与者认为现货比特币ETF将优于期货ETF,但美国证券交易委员会(SEC)对前者的批准可能会推迟至2022年底以后。他估计以太坊期货ETF最早有望在明年一季度获批。(彭博社)[2021/11/3 6:28:16]
-二进制状态树与十六进制状态树的比较-
如果说二进制状态树看起来有点吓人,那只是因为二进制树我画全了,但没有把十六进制树的所有代之以哈希值的节点都画出来。
来数个数:
为创建出一棵二进制状态树,见证数据需要包含8个哈希值,7个分支节点和1个账户节点。也就是见证数据中有16个元素。
为创建出一棵十六进制状态树,我们只需1个分支节点,1个账户节点,但需要30个哈希值。也就是有32个元素。
所以,假设哈希值和分支节点在区块见证数据中的所占的空间是一样大的,在我们的例子中,使用二进制树所需的见证数据大小只有十六进制下的一半。看起来不错。
那么,理论上就是这样。
我们来看看实际情况是如何。我们直接拿以太坊主网的数据来看看吧。
开始实验
先说最紧要的:我们怎么知道自己构建出来的区块见证数据是有用的呢?
观点:MicroStrategy背后多数股东对比特币持乐观态度:据Twitter投资分析师EllieFrost的观点,在MicroStrategy宣布使用大幅资金配置加密货币之前许多大股东已经看好比特币。其中,RussellInvestment是MicroStrategy第八大股东,拥有该公司约2%的股份,也是其最看涨的投资者之一,自2018年以来一直在积极推广比特币。MicroStrategy的第十大股东RenaissanceTech也已于今年4月获准进入现金结算的比特币期货市场。BlackRock为MicroStrategy最大股东,尽管其对MicroStrategy的投资总体下降了5%,但该公司仍然看好比特币,其首席执行官曾表示,比特币可以代替黄金。此外,CitronFund也是MicroStrategy比特币投资计划的支持者之一。
此前报道,MicroStrategy已完成2025年到期、年利率为0.75%的可转换优先票据发行,售出的票据本金总额为6.5亿美元。[2020/12/15 15:18:35]
测试方法如下:我们使用区块见证数据来生成一棵默克尔子树,在这棵树上运行相应区块中的所有交易,然后校验结果是否与我们所知的一致。只要交易都能成功执行,等等),我们就可以断定这个见证是足够充分的。
-测试方法:1.执行区块;2.从状态树中抽取出见证数据;3.使用见证数据构造出一棵子树;4.禁用DB访问、使用子树来执行区块(具体可见
github)-
观点:利用区块链账本技术创建高适应性的LEI系统可以解决一系列关键问题:金色财经报道,列支敦斯登加密资产交易平台(LCX)在其官方网站发布了文章《全球法人识别编码对区块链行业的重要性》,文章指出,LEI与生俱有的功能和本质在于其本身是“数字化”的。但是,在当前的基础设施中,LEI数据的存储源不同,各个信息集的控制机构不同,由此可能产生冲突。此外,现有的LEI存储和管理系统面临着数据碎片化、欺诈漏洞、缺乏透明度和数据安全威胁等问题。利用区块链账本技术创建高适应性的LEI系统具有诸多关键优势,可以解决一系列关键问题。将LEI集成到区块链生态系统中,与区块链和数字资产进行整合可谓相得益彰。一方面,在支持区块链的平台上管理LEI,能够确保LEI在理想的基础设施环境中有效运行,并为LEI数据库带来更大透明度和更高安全性。另一方面,使用LEI系统跟踪数字资产类金融工具,使金融机构在监管合规方面更具优势,为金融工具的参与者或使用者带来更高的信任度和安全感。[2020/7/22]
其次,我们需要一些基准数据。因此,我们也使用500万到850万高度的区块、在十六进制默克尔树模式下生成了见证数据,并将见证数据大小的统计数据存在一个超级大的csv文件中。
我们尝试的第一步是执行完一个区块后就组装出一棵十六进制树,然后将它转为二进制树,再从这棵二进制树中提取出见证数据。
这种方法有几个好处:易于实现,而且验证十六进制-二进制的转换也很简单。
不过,我们遇到了两个问题,而且其中一个还不小。
第一个,正如我们上面证明的那样,比起二进制树,十六进制树包含更多的账户节点,如果我们先生成十六进制树再转换,得到的结果就跟在二进制树模式下直接生成所得到的见证数据不一样。
观点:比特币正进入强劲的牛市行情:分析师Nunya Bizinz称,一个在过去几年推动比特币反弹的最重要信号再次被发现。该信号是抛物线状止损反转指标,过去五年被发现六次,每次比特币出现实质性上涨。Cointelegraph进一步运用该理论,使用斐波纳契回溯水平,暗示比特币可能会以类似于2015年的方式反弹,当年比特币增长10000%。福布斯分析师Billy Bambrough称,比特币可能会在减半之前突破1万美元,而他不会对未来做出任何大胆预测。博亘金融科技集团CEO Don Guo称,有几个因素在起作用。政府刺激计划肯定会发挥作用。印制货币以应对危机降低了法币感知价值,而在利率持平情况下,储蓄无法产生回报。由于封锁持续,股票等资产似乎仍具有风险,投资者被迫寻找其他机会。投资者希望对冲传统市场动荡,而由于比特币与政府决策和通膨没有关系,因此,比特币成为不错的选择。但这不仅受新冠肺炎影响,这个时机恰好与5月减半的时间相吻合。由于稀缺性增加,减半不仅使价格上涨,而且媒体额外关注以及历史上对比特币价格的积极影响将推动需求增长。(SiliconAngle)[2020/5/4]
为什么呢?
因为十六进制树数据总是以1/2字节的速度增长,而二进制树总是以1比特的速度增长,因此键的长度可以是奇数位。
实际上,见证数据中还包含一些额外的扩展节点,它们还要稍微大一点。不过即便对内容较多的区块,体现在见证数据大小上的差别也非常之小。
关键的是性能。随着树的规模增长,转换的速度会越来越慢。
用更具体的数字来说明一下:在我们的GoogleComputeEngine虚拟机上,处理速度约为每秒0.16个区块,也就是每分钟处理小于10个区块,处理100万个区块要超过3个月!
所以,我们决定采取更复杂的办法,开发出一个原生使用二进制默克尔树的实验性分支。也就是说,我们要把turbo-geth代码库例地所有十六进制状态树全部替换为二进制树,然后区块就是基于二进制树来执行的了。
这种办法的不利之处在于,部分哈希值的校验只能被忽略掉。
但主要的验证机制还是一样的:我们需要能够使用二进制树来执行区块、从见证数据中创建出默克尔子树。
再来谈谈key。
为简化起见,我们对key的编码方式是非常低效的:1bytepernibble;一个key的每一比特就要占用1字节。这样做大大简化了代码层面的改变,但区块见证数据中的”key“部分会是我们使用bitset时候的8倍大。
因此,在进一步分析中,我会假设key的编码方式是最优的。
Hexvs.Bin:结果
我的分析分为两段,总共分析了以太坊主网上的200万个区块。
区块高度500万到650万
我在这个github库里面提供了使用python脚本来重复这一实验的命令行:
https://github.com/mandrigin/ethereum-mainnet-bin-tries-data
首先我们来分析一下数据集。
pythonpercentile.pyhex-witness-raw.csvbin-stats-5m-6.5m.csv50000006500000adjust
-
一个箱型图,箱体显示上四分位到下四分位之间的数据,左右延伸出去的线条显示上1%到下1%之间的数据
-百分比分析-
现在我们可以生成一些很酷的图表了!
pythonxy-scatter-plot.pyhex-witness-raw.csvbin-stats-5m-6.5m.csv50000006500000adjust
-XY散点图(横轴为Hex下见证数据大小,纵轴为Bin下见证数据大小)-
可以看出,二进制见证数据的大小总是优于十六进制树下的见证数据。
我们再加入另一个参数,用二进制见证数据大小除以十六进制见证数据大小,看看我们得到了怎样的提升。
pythonsize-improvements-plot.pyhex-witness-raw.csvbin-stats-5m-6.5m.csv50000006500000adjust
-二进制见证数据的大小/十六进制见证数据的大小-
为更好地理解这张图标,我们也输出了平均值和百分位值。
平均值=0.51
P95=0.58
P99=0.61
在实际场景中这意味着什么?
对于99%的区块,见证数据的大小可以降低至少39%。
对于95%的区块,见证数据的大小可以降低至少42%。
平均来说,见证数据可节省49%。
我们也要考虑见证数据大小的绝对值。为使数据变得可读,我们每1024个区块取滑动平均值。
pythonabsolute-values-plot.pyhex-witness-raw.csvbin-stats-5m-6.5m.csv50000006500000adjust
-依时间顺序绘制的见证数据大小折线图,纵轴单位为MB-
再来看看最新区块的情况。
区块高度800万到850万
pythonpercentile.pyhex-witness-raw.csvbin-stats-8m-9m.csv80000008500000adjust
-箱型图,箱表示上下四分位以内的数据,线表示上下1%以内的数据-
-800万号到850万号区块的百分位分析-
还有XY散点图。
pythonxy-scatter-plot.pyhex-witness-raw.csvbin-stats-8m-9m.csv80000008500000adjust
还有规模上的节约。
pythonsize-improvements-plot.pyhex-witness-raw.csvbin-stats-8m-9m.csv80000008500000adjust
-XY散点图(横轴为Hex下见证数据大小,纵轴为Bin下见证数据大小)-
平均值=0.53
P95=0.61
P99=0.66
最后,再来看看见证数据的绝对大小。
pythonabsolute-values-plot.pyhex-witness-raw.csvbin-stats-8m-9m.csv80000008500000adjust
-依时间顺序绘制的见证数据大小折线图,纵轴单位为MB-
结论
在使用以太坊主网数据做过测试以后,我们可以看到,切换为二进制树模式可以大幅提升生成见证数据的效率。
另一个结论是,这种提升并没有理论上那么显著。原因可能在于主网区块的实际数据。
也许,通过分析一些例外情况,我们可以知道更多优化见证数据规模的办法。
试着使用别的原始数据来跑跑GitHub中的脚本吧:https://github.com/mandrigin/ethereum-mainnet-bin-tries-data
写在前面:丢失钱包密码或私钥是加密货币用户经常会遇到的问题,那能否有方法可在最小化信任的同时,恢复丢失的密钥呢?这正是以太坊联合创始人vitalik等人正在探索的一个方向.
2020年中国人民银行工作会议1月2日至3日在北京召开。会议以新时代中国特色社会主义思想为指导,深入学习贯彻党的十九届四中全会和中央经济工作会议精神,总结2019年主要工作,分析当前经济金.
出品|零壹智库 作者|?袁婷 2019年,零壹金融科技投融资指数在6月达到全年最高值180,3月为次高点179,此后在160上下波动,12月最新指数为151.
瑞士自动算法交易平台提供商AlgoTraderAG周三宣布结束其A轮融资,获得370万瑞士法郎.
来源:LongHash 编者注:原标题为《2020年比特币价格预测的准确性如何?》比特币的价格会走向哪里?成千上万的投资者都想知道这个问题的答案,而市场上也从来不缺跳出来发表意见的专家名人.
作者|火华 出品|白话区块链 谈到比特币的优点时,很多人都会加上“比特币转账手续费低廉”这一条.