宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > Gate.io > 正文

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

作者:

时间:1900/1/1 0:00:00

作者:SinaMahmoodi

翻译&校对:IANLIU&阿剑

来源:以太坊爱好者

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

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

巨大的无状态区块

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

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

观点:Web3投资者面临巨大挑战,发展中国家仍需监管Web3:金色财经现场报道,由Coinlive、Beosin和FOMO Pay主办在新加坡举行的“在动荡的行业中讨论数字资产的未来”活动中,FOMO Pay联合创始人Zack Yang、经纬投资公司Web3投资人Zixi Zhu、Beosin董事总经理Tommy Deng和Web3SG创始人Goh Ying Hao组成小组讨论。Zack指出,Web3的投资者面临着巨大的挑战,因为投资期限真的很短;这个周期只有两到三年。此外,他还表示,Web3不是他们的目标,因为还会出现Web4甚至Web5;他们目前在Web2.5。另一方面,Ying Hao是Web3生态系统的忠实信徒,他认为我们不需要监管。他解释说,数字空间是下一个阶段,为什么要由监管来控制,因此不需要国家监管。Zixi表示,分散的跨链流动性池太小;最好是自己做流动性提供者,因为你永远不知道这个池是否肮脏。另外,最好自己做KYC和跨链,使流动性池更大。最后,Tommy总结说,如果没有监管,这对一些发展中国家来说并不理想,比如菲律宾、迪拜等。他还谈到了FTX,因为它目前还挂在每个人的嘴边;他认为,从长远来看,FTX对大众市场没有太大影响。[2022/11/25 20:45:57]

观点:中国的法律环境中基于公链的数字藏品有四大潜在风险:3月26日消息,数字藏品的全球趋势与中国创新的直播中,星图比特创始人张炯在《国产公链数字藏品的合规发展》主题分享中称,基于公链的数字藏品有三个优势,用户对数字藏品的真实处置权、真实可交割及透明真实感。而基于联盟链的数字藏品有两大优势,包括容易获得政府监管部门的理解,更容易形成企业与企业之间合作的信任。目前,中国的法律合规环境中公链数字藏品有一些潜在风险。第一,如何让国内用户在没有数字货币的前提下,通过人民币购买数字藏品NFT。第二,用户用人民币购买数字藏品后,可能再卖成数字货币,因而数字藏品需要完成与数字货币的切割,否则可能沦为OTC渠道。第三,人为操作会造成数字藏品市场波动带给普通用户的经济风险。第四,数字资产的托管问题。此外,张炯认为,基于联盟链的数字藏品存在停止运营的风险等。(8btc)[2022/3/26 14:19:31]

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

不要发送整段代码

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

观点:15项政策加码区块链人才建设,人才难题还需企业一起破:浙江大学区块链研究中心常务副主任蔡亮表示,今年地方政府和央企也落地了很多区块链的应用场景,对于区块链研究型人才、底层开发人才、应用复合型人才的需求明显上涨。但是目前合格的存量区块链人才仅占需求量的不到10%。另据国际权威咨询机构Gartner预测,中国区块链人才缺口将达75万以上。

不仅企业在抢人,全国各地也在落实区块链发展举措,加速人才争夺。据统计,仅从2019年10月24日后至今,国内从教育部等部委,到各省市,共出台了15项区块链人才相关的政策,从科研补贴到住房补贴,海南、泉州、成都等地更是开出了百万元的人才扶持计划,全国各地都在“筑巢引凤”。

据不完全统计,截至目前全国约有35所高校开设区块链课程或专业,仅占全国近3000所院校数量的1%左右。远水解不了近渴,当下市场现存的迫切需求或许只能靠企业来助力促进产学研结合。在人才培养上,标准问题十分重要,这样就能确保区块链人才与社会需求相匹配,也能在源头上避免产生人才泡沫。区块链的大潮伴着政策的强力支持奔涌而来,区块链人才站上潮头,未来,填补几十万的人才空缺,企业的参与为人才发展搭上云梯,帮助区块链更多更快的产业落地。(PANews)[2020/7/31]

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

分析师观点:比特币S2F模型核心要素是“人类心理”:比特币分析师,BTConometrics公司S2F(存量-流量比率)模型研究员Nick Emblow强调了S2F模型中容易被遗忘的一个方面。根据Emblow的观点,人们普遍认为S2F对比特币价格的影响。这种看法变成了市场情绪,导致比特币的价格波动。话虽如此,这一流行的模型更多的是“社会学”而不是“计量经济学”。为了进一步解释他的观点,Emblow说,人们主要是着迷于BTC日益增加的稀缺性。这反过来又增加了个人购买比特币(BTC)的可能性。即使没有计量经济学背景,“S2F”模型作为长期预测也是正确的。然而,正如这位分析师所说,它的核心要素是“人类心理”。(U.Today)[2020/5/10]

-字节码的basicblocks-

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

声音 | 观点:发展区块链技术务必去伪存真:第一财经发布社论文章称,就在这次中央局集体学习区块链技术见诸报端后,此前一些“炒币”者和借区块链之名行事者弹冠相庆,以为又可以借此重整旗鼓。但这事实上是一种误解,此番中央局学习、习总书记强调的区块链,是基于其背后真正的技术,去伪存真。从长期看,区块链的广泛应用将在未来形成全新的社会治理架构,有效赋能国家治理体系和治理能力现代化建设。当然,对于一些打着区块链技术名义、行金融欺诈之实的平台和组织,务必加大打击力度,既防范后者对区块链技术的污名化,也能借此激浊扬清、去伪存真。[2019/10/27]

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

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

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

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

-交易所触及的所有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

标签:区块链WEBBLOWEB3币换天下区块链web3币价格blockchainsWeb3 ALL BEST ICO

Gate.io热门资讯
Willy Woo:减半后比特币最大抛售压力或来自交易所

撰文:WillyWoo,比特币NVT模型提出者 翻译:卢江飞 来源:链闻 比特币NVT估值模型提出者WillyWoo认为此次比特币减半后,交易所将替代矿工成为比特币最大卖家.

1900/1/1 0:00:00
为什么说比特币无法在高通胀国家流行?

币圈有一个很常见的观点:那些正在遭受严重的通货膨胀、法币超额贬值的国家,对比特币有着巨大的需求。很多人对此深信不疑,委内瑞拉、阿根廷、尼日利亚、津巴布韦等国的变化常常被用来佐证这个观点.

1900/1/1 0:00:00
Coinbase报告:比特币正在充当山寨币的门户

根据Coinbase的最新研究,比特币正在充当山寨币的门户。研究发现,60%的客户选择购买比特币作为第一种加密货币,但只有24%的投资者只购买比特币.

1900/1/1 0:00:00
2020数字中国创新大赛—区块链赛道等你来战!

数字中国是十九大提出的新时代国家信息化发展的新战略。数字中国创新大赛一直以“培育数字经济新动能,助推数字中国新发展”为主题,汇聚政、产、学、研多方面优势力量,推动技术创新和产业应用,为数字经济发展提供有力支撑.

1900/1/1 0:00:00
巴比特专栏 | BCH今天有重大升级,但关心的人好像很少

在2020年3月,我和几个一起研究投资的朋友说,我打算换一些ETH。原因很简单,加密数字货币社区公开讨论的技术类和应用类文章,ETH已经超过一半了。我每天的阅读任务,被ETH占去了一半。在吸引注意力上,ETH2.0确实优秀.

1900/1/1 0:00:00
北上广深区块链政策比较:深圳为何这么不重视

文丨互链脉搏·金走车 未经授权,不得转载! 区块链公司注册量,深圳仅次于广州排名全国第二;区块链申请专利数,深圳仅次于北京排名全国第二;区块链用人需求量,深圳在北上之后排名全国第三;区块链人才平均薪资,深圳超越所有地区排名全国第一.

1900/1/1 0:00:00