区块见闻 区块见闻
Ctrl+D收藏区块见闻

FISH:观点 | 通过 EVM 代码默克尔化缩减见证数据大小_APP

作者:

时间:

作者:SinaMahmoodi

翻译&校对:IANLIU&阿剑

来源:以太坊爱好者

摘要:区块中每发生一次合约调用,无状态客户端都需要完整的合约代码作为区块见证的一部分,而传输合约代码占用无状态客户端带宽的比例,高居其带宽开销的第二位。

人们认为,代码默克尔化方法能够优化带宽开销。本文解释了如何将代码拆分为“块”,默克尔化这些chunk,并只在交易需要的情况下传递这些chunk。实验证明,基于目前的主网情况,我们能看到合约代码传输的开销节省了40%~60%。

巨大的无状态区块

代码默克尔化的概念已经被提出好一阵子了,一开始主要用于代码去重,但其他用途还未被很好地探索。现在它重新进入大众视线,却是因为另一个目的——用于降低无状态客户端所需要的带宽开销。如果你想知道无状态客户端为什么出现,我推荐这篇总结,或是AlexeyAkhunov的推文,里面还附上了他的实验数据。为求简短扼要,我不会深入整个无状态客户端模型的细节,仅提供相关细节的简要总结。

在无状态模式下,节点可以依赖其他节点来取得区块内容并使用相关默克尔证明加以验证,而不必自己存储所有区块状态——这会给网络带宽带来巨大的性能提升。AlexeyAkhunov和turbo-geth团队一直在研究,希望能确定已经产出的主网区块的区块见证大小。下图是对最近50000个区块的测量结果:红线追踪每个无状态区块需要发送的合约代码量。如果以太坊从当前的hexary字典树结构转为二进制trie,则见证数据所包含的哈希值数据大小约能减小3倍,这时候合约代码量就成为构成见证大小的第一大头了。

观点:Web3被认为是气候变化问题的潜在解决方案:金色财经报道,大洋洲地区小岛屿国家基里巴斯和马尔代夫面临残酷的气候变化。Web3被认为是气候变化问题的潜在解决方案。可以肯定的是,它并没有所有的答案,但它可以是一个有用的工具。特别是对岛国而言,Web3为发行可创收的气候资产、为气候项目寻找新的资金来源,以及最终从世界上最大的污染者那里建立一个可持续的财富转移系统提供了机会。(forkast)[2023/7/14 10:54:41]

-图表显示最近50000个主网区块的无状态区块见证大小变化,经过窗口=128个区块的移动平均计算-

不要发送整段代码

我们假设,其实每笔交易只会调用部分的合约代码,所以我们的目标就是拆分这些代码块,每次交易只发送需要的chunk的区块见证。如果这种假设合理,而且每笔交易真的只用到一小部分字节码,那么区块见证的合约代码部分就能大大的减小。

为了更好地理解,想象我们正在部署一份新的合约,我们需要传递代码和并确定basicblock有两种特性:

观点:Web3需要无缝的用户体验和基础设施来推动采用:金色财经报道,Blockdaemon预测,Web3的未来将建立在无缝用户体验的基础上:无缝使用、无缝货币化和无缝治理。任何Web3项目的成功都取决于其向所有用户(包括区块链行业内的开发人员和企业)提供这种无缝体验的能力。

我们相信基于区块链的解决方案是数字基础设施的未来。然而,为了让它们起飞,我们需要确保高质量的用户体验。这意味着用户和开发人员都需要一种简单的方法来访问Web3基础架构和构建在其之上的应用程序。[2022/12/18 21:51:42]

-字节码的basicblocks-

Basicblock要么从索引0开始,要么从?JUMPDEST?开始——这么做能保证每个无状态客户端都能安全地进行JUMPDEST分析。

每个basicblock都无法更改控制流。因此,我们可以确定一旦开始执行代码,只会存在两种情况:正确执行结束,或是gas耗尽。虽然还没有和其他方案进行比较,我们先假设这么执行是相对更有效率的。

观点:加密矿业股可能会继续在“现代数字淘金热”中击败比特币:据CoinDesk消息,根据FundStrata的研究,在过去的一年中,加密货币矿业股票的表现超过了比特币。FundStrat指出,比特币和更广泛的加密市场是“现代数字淘金热”,这意味着加密矿业股票可能会进一步上涨。因为矿工在确保比特币网络正常运行方面发挥着至关重要的作用,所以投资者一直在寻找机会接触矿业公司,矿业公司以挖掘比特币的形式产生收入。另外,FundStrata表示,投资者也需要注意,矿业公司股票可能是比特币的高风险投资。当加密货币进入熊市周期时,预计矿业股票的下行波动性将大于比特币。[2021/3/20 19:02:29]

出于效率考量,我们合并相邻块,直到每个代码块都至少有128字节为止。接着以第一个字节作为key,将这些合并后的代码块插进Trie。最后,客户端将此Trie的根作为该合约账户的新记录存储下来。如下图所示,记录代码的Trie会成为状态树的子树。

-代码默克尔化之后,会成为状态树的子树。为了简化,上图我用了二进制树,同时树的路径也不准确,不能完整表示真实的key-

动态 | 观点:将区块链技术引入政府部门是一个不可逆转的趋势:Cointelegraph今日发表分析师文章称,在中国,区块链技术已经找到了应用沃土。现有基础设施的缺乏会刺激新技术的更快采用。政府对数字经济的重视,以及对区块链技术的谨慎但有希望的认可,是投资者应认真对待的重要信号。在其他国家,政府和金融机构也在考虑是否可以将区块链应用于各种系统,以降低成本并促进公民对数据的访问。2019年7月,七家大型韩国公司合作开发基于区块链的移动识别系统,该系统计划于2020年启动,区块链网络已被命名为Initial DID Association。欧盟最近几年也开始公开承认区块链技术。将区块链技术引入全球政府部门是一个不可逆转的趋势。值得回顾的是几年前各国对区块链的态度,以及现在正在发生的变化。[2019/11/25]

为了测试部署的合约,我们试着发起一笔调用该合约的交易。矿工会执行这笔交易,并标记执行过程中触及的每个chunk。当要发布区块的时候,矿工会将合约状态的证明,以及触及哪些代码chunk的turboproof证明,一起打包在区块内。

声音 | Ripple首席技术官回应“GlobalCoin将消灭XRP”:该观点对XRP没有任何了解:Ripple首席技术官David Schwartz针对“Facebook的GlobalCoin将消灭XRP等山寨币”一事回应表示:我喜欢那些没有任何证据表明其对XRP有任何了解的观点。这只是比特币极简主义(minimalist)思想,即认为只有比特币和其他。 金色此前报道,比特币专家Max Keiser预测,Facebook的GlobalCoin将彻底消灭XRP和其他山寨币,同时提振BTC。[2019/6/8]

-交易所触及的所有chunk和验证codeRoot所需的哈希值,都会以turboproof证明的形式发送出去-

收到这个区块后,无状态客户端就能验证合约是否属于区块状态的一部分,也能验证合约的余额、nonce、状态根、codeRoot等其他参数。这些信息足以让客户端从chunk中重构部分字节码,同时清空其他不需要的chunk。因为chunk算法的设计,所以客户端知道所有的chunk都是从?JUMPDEST?开始,因此能够安全地进行jump操作。

-我们可以通过turboproof重构字节码;对于交易不需要的chunk则设为0-

实验

为了验证,我们编写了一份测试原型,该原型可以从Geth客户端的RPC端口获取主网的区块和过去的状态,然后模拟执行交易。每当执行过程中遇到新的合约,就将合约拆分为多个chunk,并标记执行交易时触及的chunk。当区块中的交易全部执行完毕后,会为所触及的chunk生成证明——turboproof。

接着重置状态,用turboproof重构出来的代码,替换掉原本的合约代码,然后再次执行刚才的交易。为了检查执行的正确性,我们比较前后两次消耗的gas量和区块的bloom过滤器。

对最近的50个区块执行此过程,我们可以看到合约代码量减少了40%~60%。

提醒:上图的数据结果似乎令人充满希望,但请记住,我们还需要成千上万个区块中的数据,才能得出令人信服的实验结论;目前原型处于早期阶段,一切结论都还为时尚早!

后续发展

你应该还记得,每个代码块的最小长度是可设置的参数,修改这个参数会在截然不同的两个方面影响见证的大小。假设我们将参数设为32字节,则chunk的粒度变得更小,要传递的代码量也就变得更少。但是这样一来,Trie的深度就必须增加;换句话说,为了生成chunks的证明,我们需要进行更多次哈希运算。

所以下一步,我们将会深入分析——究竟要将区块最小长度设为多少,才能获得最优解。当然不论如何,只要将hexary字典树结构二进制Trie,我们就能减少3/4的哈希运算,从而降低见证数据的大小。

在测试原型中,我们将合约代码拆分为basicblock;而可选的代码拆分算法当然有很多,有的简单有的复杂。最简单的一种就是拆分为固定大小的chunk,从目前来看,这种方法只会有push和jumpdest分析的问题。

更进一步地说,如果我们任意设置字节码的最小值,则客户端在收到chunk之后,可能会因为?PUSH?操作或任何多字节码的操作,而碰上?JUMPDEST(0x5b)?报错的情况。如下图所示,有完整代码的客户端会发现这里的jump操作是非法的,因为?0x5b?属于?PUSH1?的操作数,执行到这里应该终止。但如果客户端只收到chunks#6和#8,而没有收到#7,则他会跳到位置41继续执行,就产生了对同一份合约代码的不同解释。后面我们会扼要地说明怎么在任意设置字节码的情况下,避免这种错误。

为了解决这个问题,MartinHolstSwende建议向每个chunk添加一个元数据,该元数据记录了有多少个chunk的首字节是push操作;然后,验证者就能在jumpdest分析过程中跳过那些字节。Alexey正在探索的另一种方法是“不允许在EVM中进行动态跳转操作”,这使我们只需在部署合约时做一次静态的跳转分析,而不需要在每次执行代码时进行。AlexBeregszaszi建议使用合约控制流程图,以更好地规范默克尔化流程;与之类似,ChristianReitweissner提出了一种执行证明方法,从合约的控制流程图创建默克尔DAG。我不会在本文中评价这些想法,希望之后能披露更多信息。

最终结果可能表明,不同的chunk拆分算法之间的效率提升可以忽略不计,这么一来选择的算法就越简单越好。而好消息是,基于早期数据实验,我们至少有一种算法可以显著减少无状态区块中需要传输的代码量。

本文着重讨论如何默克尔化EVM字节码,但总体思路并不局限于EVM。实际上,Ewasm团队的其他成员也在尝试默克尔化Wasm代码,也遇到了相应的挑战。这些挑战主要是因为Wasm代码由多个部分组成,并且在执行之前需要经过严格的验证——这意味着重构的字节码也必须通过验证。

敬请期待后续更多信息!

原文链接:?https://medium.com/ewasm/evm-bytecode-merklization-2a8366ab0c90

标签:区块链APPBCHFISH区块链币排名imtoken官网正版appBCHKIFISH价格

火必交易所热门资讯
ETH2:BitMEX研报:全面探究以太坊 2.0_CDP

作者?|?BitMEXResearch摘要:本文我们重点研究最早将于2020年7月份推出的以太坊2.0。然而,以太坊2.0的推出也许并不能算是一个极为重大的事件.

区块链:我在DeFi里亏光又回本的两天_sETH2

一说来神奇,三十多年来,在钱上踩坑,我还没碰到过。投资有输赢,但是因为意外事件把本金丢了,我总觉得,“没这么背吧?”直到上周日的上午,我的投资生涯翻开了新的一章。我现在还记得刚知道被盗时的情景.

RON:观察 | 医疗数据是基石,区块链能否抓住医疗健康的命脉?_玩区块链挣的钱合法吗

4月9日,重庆市急救医疗中心的互联网医院挂牌成立后,开出重庆市首张在线医保报销结算电子处方。据了解,患者可在重庆市急救医疗中心互联网医院APP通过视频方式接受医生远程诊断,进行线上医保支付,并且.

区块链游戏:观点 | 从传统游戏看“区块链游戏”的发展_LIBRA

来源:万向区块链,本文有删减4月23日,万向区块链蜂巢学院线上公开课直播间邀请了PlatON社区负责人余凯做客,为大家带来《从传统游戏看“区块链游戏”的发展》.

USDT:研报 | 稳定币系列报告(三):去中心化的稳定币DAI_AUSDC价格

DAI的历史 Dai是以太坊上发行的第一个去中心化稳定币,发行时间2017年年底,和其他的稳定币相比,DAI是最独特,最具有去中心化性质的一支.

加密货币:央行数字货币(DC/EP)技术猜想:架构、匿名性、钱包、双离线支付等_LIBRA

作者:任之劼,荷兰代尔夫特理工大学博士、博士后,唯链高级区块链技术研究员最近,央行数字货币正在农行内测,并将很快试点推广的新闻让「数字货币」以及「区块链」又火了一把.