作者:VitalikButerin
原文:https://ethresear.ch/t/future-proof-shard-and-history-access-precompiles/9781
当前以太坊设计中的向后兼容性所面临的挑战之一是区块链历史记录的访问需要对Merkle证明进行EVM验证,这还假设区块链将永远使用相同的格式和相同的密码技术。未来的分片设计更是增加了这一点的重要性,因为Rollup的欺诈证明和有效性证明将需要指向分片数据的指针。
Funko将推出数字流行音乐NFT:金色财经报道,Funko将发布一个迷人的新数字流行音乐系列NFT,其中包括《怪奇物语》中的受人喜爱的角色。[2023/7/2 22:12:42]
这篇文章提出了一种更加面向未来的方法:我们可以添加执行验证特定类型证明的抽象任务的预编译,而不是要求在EVM中验证历史和分片的证明。如果将来更改格式,预编译逻辑将自动更改。预编译甚至可以具有条件逻辑,用于验证过渡前插槽的一种证明和转换后插槽的另一种证明。
历史区块数据
defverifyHistoricalBlockRoot(slot:uint256,value:bytes32,proof:bytes)
CNBC:硅谷银行正在进行自我出售的谈判:金色财经报道,硅谷银行(SIVB.O)筹集资金的尝试已经失败,正在进行自我出售的谈判。刚刚硅谷银行(SIVB.O)盘前停牌,等待刊发消息。停牌前一度从跌 60% 拉升至涨 50%。此前美国白宫经济顾问 Ramamurti 称,财政部正在非常仔细地监控硅谷银行。[2023/3/10 12:54:52]
这种预编译将尝试以两种方式之一解释该proof:
如果这个proof为空,则直接检查该value是否为保存在正确位置的历史区块根。如果slot太旧,它将失败。
如果这个proof是一个Merkle分支,它会根据history_roots中的正确条目将其验证为Merkle分支
摩根大通:将美国国债或货币市场基金股票通证化,意味着所有股票都可能被用作DeFi池的抵押品:6月12日消息,摩根大通Onyx Digital资产主管Tyrone Lobban在CoinDesk共识2022年会议上对表示,他详细描述了该行机构级的DVI计划,并强调了代用资产的价值。
Lobban表示:随着时间的推移,我们认为将美国国债或货币市场基金股票通证化,意味着所有这些股票都有可能被用作DeFi池的抵押品。其总体目标是将这些数万亿美元的资产纳入债务抵押贷款体系,这样我们就可以利用这些新机制来进行交易、借贷和放贷,但要具备机构资产的规模。[2022/6/12 4:19:33]
defverifyHistoricalStateRoot(slot:uint256,value:bytes32,proof:bytes)
SWIFT确认正在与Capgemini合作进行CBDC相关跨境支付测试:5月19日消息,根据SWIFT 5月19日发布的一份关于其与国际清算银行(BIS)进行试验的报告,全球十分之九的央行正在探索央行数字货币(CBDC)。这些CBDC涉及的经济体占全球GDP 90%以上。
报告指出,越来越多的央行对CBDC的调查已进入高级阶段,有9个国家已经在使用自己的数字货币,例如尼日利亚和巴哈马。
SWIFT首席创新官Thomas Zschach表示:“如果我们要充分发挥它们的潜力,促进世界各地正在开发的不同CBDC之间的互操作性和互联性将是至关重要的。如今,随着众多央行基于不同的技术、标准和协议开发自己的数字货币,全球CBDC生态系统面临分裂的风险。”
同时,SWIFT创新主管Nick Kerigan表示,如果不采取补救措施,这种分裂可能会导致世界各地形成“数字孤岛”,不同的系统和不同的CBDC需要能够有效地合作,否则将妨碍企业和消费者使用CBDC进行无障碍跨境支付的能力。
通过使用基于DLT的CBDC网络和经过验证的实时总结算(RTGS)系统,SWIFT在2021年证明,它可以有效地安排两个实体之间的跨境交易。
目前,SWIFT正在与Capgemini合作,研究如何将全球不断增长的众多基于国内的CBDC网络互联起来,以使跨境支付使用更顺畅。(Finbold)[2022/5/20 3:29:08]
验证状态根,使用与该区块根相同的逻辑。
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直接对分片数据进行操作。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。