当前以太坊设计中的向后兼容性所面临的挑战之一是区块链历史记录的访问需要对Merkle证明进行EVM验证,这还假设区块链将永远使用相同的格式和相同的密码技术。未来的分片设计更是增加了这一点的重要性,因为Rollup的欺诈证明和有效性证明将需要指向分片数据的指针。
这篇文章提出了一种更加面向未来的方法:我们可以添加执行验证特定类型证明的抽象任务的预编译,而不是要求在EVM中验证历史和分片的证明。如果将来更改格式,预编译逻辑将自动更改。预编译甚至可以具有条件逻辑,用于验证过渡前插槽的一种证明和转换后插槽的另一种证明。
历史区块数据
defverifyHistoricalBlockRoot(slot:uint256,??value:bytes32,??proof:bytes)
美众议院小组计划于3月29日就SVB、Signature倒闭举行首次听证会:金色财经报道,美国众议院金融服务委员会主席、北卡罗来纳州共和党人Patrick McHenry和来自加利福尼亚州的民主党领袖Maxine Waters周五在一份联合声明中表示,众议院小组计划于3月29日就硅谷银行(Silicon Valley Bank:SVB)、Signature Bank的倒闭举行首次听证会,致力于“查明失败的根源”,出席证人将包括联邦存款保险公司(FDIC)主席Martin Gruenberg和美联储负责监管的副主席Michael Barr。声明表示:“这次听证会将让我们开始了解这些银行失败的原因和方式”。[2023/3/18 13:11:45]
这种预编译将尝试以两种方式之一解释该proof:
调查:60%的加拿大人有兴趣在虚拟世界中购买物品:金色财经报道,一项新的调查发现,60% 的加拿大人有兴趣在虚拟世界中购买真实世界的物品。该研究采访了来自美国和加拿大的 2,000 多名成年人。研究发现,超过一半的加拿大人相信虚拟世界将在未来十年内成为日常生活的一部分。在数字时代长大的年轻一代中,这一数字甚至更高:Z 世代为 60%,千禧一代为 70%。(financialpost)[2022/8/13 12:22:39]
如果这个proof为空,则直接检查该value是否为保存在正确位置的历史区块根。如果slot太旧,它将失败。
如果这个proof是一个Merkle分支,它会根据history_roots中的正确条目将其验证为Merkle分支
英国央行:元宇宙加密货币的使用增加系统风险:8月9日消息,英格兰银行的工作人员表示,在一个完全发达的元宇宙中广泛采用加密资产可能会对金融稳定构成系统性风险,并且需要“强有力的消费者保护”框架。英国央行研究人员Owen Lock和Teresa Cascino在周二发表的一篇博文中表示,一旦建成,去中心化的数字世界和平台可以承载大量通过BTC和ETH等加密代币进行的现实世界经济交易。这些加密交易的数量越大,如果价格暴跌,对现实世界金融稳定的潜在影响就越大。
加密资产在开放元宇宙中的重要性意味着,如果开放和去中心化的元宇宙增长,来自加密资产的现有风险可能会扩大到产生系统性金融稳定后果。因此,重要的一步是监管机构在加密资产达到系统状态之前解决它们在元宇宙中使用的风险。(BNN)[2022/8/10 12:13:53]
defverifyHistoricalStateRoot(??slot:uint256,??value:bytes32,??proof:bytes)
Bifrost已成功续约Kusama平行链槽位:据链上数据显示,Bifrost已于5月2日续拍到租期为21-28 Kusama平行链槽位。Bifrost Kusama平行链将与未来Bifrost Polkadot平行链成功竞拍后被同时保留,服务于两个生态。
待Kusama Polkadot跨链桥成熟后,Bifrost计划将主要协议及治理模块迁移至Bifrost Polkadot平行链,通过XCM跨链治理Bifrost Kusama平行链,支持Kusama生态设施。[2022/5/2 2:45:42]
验证状态根,使用与该区块根相同的逻辑。
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直接对分片数据进行操作。
作者:VitalikButerin
原文:https://ethresear.ch/t/future-proof-shard-and-history-access-precompiles/9781
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。