ROO:为分片采用扫清障碍,V神提出新的以太坊向后兼容方法

作者:VitalikButerin

原文:https://ethresear.ch/t/future-proof-shard-and-history-access-precompiles/9781

当前以太坊设计中的向后兼容性所面临的挑战之一是区块链历史记录的访问需要对Merkle证明进行EVM验证,这还假设区块链将永远使用相同的格式和相同的密码技术。未来的分片设计更是增加了这一点的重要性,因为Rollup的欺诈证明和有效性证明将需要指向分片数据的指针。

数据:PEPE今日交易额突破4亿美元:金色财经报道,据加密KOL borovik.eth在社交媒体披露数据显示,CoinGecko数据显示5月2日PEPE交易额达到4.34亿美元,超越狗狗币(3.12亿美元)达成新里程碑。Pepe 今年早些时候推出,由于与流行的互联网模因角色Pepe the Frog关联迅速赢得了交易者的青睐,自推出以来PEPE价格已上涨1000%以上,已跻身市值前100的加密资产,目前排名第94位。(U.today)[2023/5/2 14:39:03]

这篇文章提出了一种更加面向未来的方法:我们可以添加执行验证特定类型证明的抽象任务的预编译,而不是要求在EVM中验证历史和分片的证明。如果将来更改格式,预编译逻辑将自动更改。预编译甚至可以具有条件逻辑,用于验证过渡前插槽的一种证明和转换后插槽的另一种证明。

Shopify和Thirdweb联合推出能够构建支持Web3的电子商务应用程序:金色财经报道,电子商务公司Shopify和 Web3 基础设施协议 Thirdweb 将共同推出一个工具包,使开发人员能够构建支持 Web3 的电子商务应用程序。这个工具被称为“CommerceKit”,它使开发人员和商家可以更轻松地将 Web3 功能集成到他们的在线商店和网站中。

因此,店主将能够改进他们的电子商务应用程序。例如,他们可以使用该工具来集成基于 NFT 的数字收藏品,从而获得独家代币门禁项目或链上忠诚度计划。[2023/3/9 12:50:55]

历史区块数据

defverifyHistoricalBlockRoot(slot:uint256,value:bytes32,proof:bytes)

银行应用Step完成3亿美元债务轮融资并启动加密投资服务:金色财经报道,Z世代银行应用Step宣布完成3亿美元债务轮融资,TriplePoint Capital领投,Step银行合作伙伴Evolve Bank&Trust参投。同时,Step推出一项投资服务,允许其应用程序上超350万账户进行加密货币投资。(businessinsider)[2022/10/11 10:31:19]

这种预编译将尝试以两种方式之一解释该proof:

如果这个proof为空,则直接检查该value是否为保存在正确位置的历史区块根。如果slot太旧,它将失败。

如果这个proof是一个Merkle分支,它会根据history_roots中的正确条目将其验证为Merkle分支

V神:“元宇宙”会发生,但不认为现有公司打造的元宇宙有前景:7月31日消息,V神在其社交平台讨论元宇宙话题时表示,“元宇宙”会发生,但他不认为现有公司刻意打造的元宇宙有前景。[2022/7/31 2:49:22]

defverifyHistoricalStateRoot(slot:uint256,value:bytes32,proof:bytes)

验证状态根,使用与该区块根相同的逻辑。

defverifyHistoricalStateValue(slot:uint256,key:bytes32,value:bytes32,proof:bytes)

验证历史状态中的值。这个proof包括三个要素:

状态根表明状态根正确性的证明Patricia或Verkle或其他证明该value实际上位于状态树中的位置key中的证明defverifyHistoricalTransaction(slot:uint256,txindex:uint256,tx:bytes,proof:bytes)

验证tx实际上是否在给定slot的区块的txindex中。证明内容如下:

区块根表明区块根正确性的证明证明给定的tx实际上是给定位置的交易defverifyHistoricalReceipt(slot:uint256,txindex:uint256,receipt:bytes,proof:bytes)

验证receipt实际上是给定slot的txindex处的交易接收。证明内容如下:

区块根证明区块根正确性的证明证明给定收据实际上是给定位置的receipt

分片数据

defverifyShardBlockBody(slot:uint256,shard:uint256,startChunk:uint256,chunks:uint256,data:bytes,proof:bytes)

验证data=body,其中body是给定slot中给定分片的主体。该证明将包括:

证明区块子集的Kate证明如果slot太旧,则在slot+96处的区块根的Merkle证明,然后是从该slot到分片承诺数组中的位置的Merkle证明,显示一个最终性承诺当我们使用BLS-12-381Kate承诺时,预编译还将验证数据是32字节chunk的列表,其中每个chunk都小于曲线子组顺序。如果没有在给定位置保存分片区块,则预编译就像在该位置保存了对零长度数据的承诺一样。如果给定位置的value未确认,则预编译总是失败。

defverifyShardPolynomialEvaluation(slot:uint256,shard:uint256,x:uint256,y:uint256,proof:bytes)

如果我们将给定(slot,shard)处的分片区块视为多项式P,其中字节i*32...i*32+31是w**i处的评估,这将验证P(x)=y。该proof与数据子集proof相同,除了Kate证明正在证明某个点的评估而不是在证明一个位置子集的数据。

如果我们将来不再使用BLS-12-381,则预编译会将SNARK作为输入,验证数据完全由小于该曲线阶数的值组成,并验证对当前字段数据的评估。

这种预编译对于等价协议的跨多项式承诺方案证明?很有用,可用于允许ZKRollup直接对分片数据进行操作。

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

地球链

[0:15ms0-1:565ms