[活动预告] Substrate 中的 IBC 跨链模块技术分享 Substrate-ibc
Posted MixWeb3
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[活动预告] Substrate 中的 IBC 跨链模块技术分享 Substrate-ibc相关的知识,希望对你有一定的参考价值。
IBC协议是Cosmos社区设计发明的一套通用链间通信协议,而章鱼网络为Substrate实现了IBC协议模块,将Cosmos生态和Substrate生态结合起来,为Substrate生态项目的跨链需求,提供了另一种方案选择。
分享者:DaviRain
讲师简介:DaviRain,章鱼网络研发工程师,最近2年来,一直从事 ibc 和 substrate-ibc 相关工作。
开始时间:11月9日 周三 晚上8:00正
会议室:#TencentMeeting: 720-815-525
这次分享会核心讲解区块链跨链协议,分享的大纲主要从背景到具体项目工程做总结。
1、介绍为什么会有有区块链跨链
2、区块链实现跨链的几种方式
3、重点讲解协议级别(IBC协议)实现跨链
4、工程代码上的ibc协议的实现架构的简单介绍
- Ibc-rs ibc协议rust语言实现
- substrate-ibc 使用substrrate pallet实现ibc协议
5、一些关于ibc协议的参考资料
欢迎小伙伴带着小本本参加学习讨论~!
IBC中的vector commitment
1. 引言
vector commitment为:
- constant-size commitment
- binding commitment to an indexed vector of elements
- short membership and/or non-membership proofs for any indices & elements in the vector
Cosmos IBC中使用的vector commitment还额外要求具有:
- positionally binding属性:必须可证明 existence or nonexistence of values at specific positions (indices)。
IBC中的vector commitment主要用于保证:
- 链A上的特定状态变更可在链B上进行验证,vector commitment可 prove inclusion or non-inclusion of particular values at particular paths in state。
2. IBC中vector commitment相关定义
-
“manager”:a vector commitment的manager,为负责从commitment中增减items的actor。该actor通常为某链的state machine。
-
“prover”:为生成特定element inclusion 或 non-inclusion proof的actor,通常为a relayer。
-
“verifier”:检查proof,以验证该commitment的manager 确实加了 或 确实没加某特定element 的actor。通常为运行在另一条链上的an IBC handler(实现了IBC的module)。
-
“path and value”:commitments以"path and value"类型进行实例化,可为任意可序列化数据。
3. IBC vector commitment技术说明
3.1 数据类型
构建的commitment需遵循如下数据类型,必须为可序列化的:
- 1)Commitment State:为该commitment的full state,由 manager存储。
- 2)Commitment Root:commit to a particular commitment state 且应为constant-size的。
- 3)Commitment Path:为用于验证commitment proof的path,可构建为任意结构对象(由commitment类型决定),单必须使用
applyPrefix
计算。 - 4)Prefix:
CommitmentPrefix
中定义了a store prefix of the commitment proof。在path传送到proof verification函数之前,用于path。
applyPrefix
函数会根据参数构建新的commitment path,会在prefix参数中解析path参数。
对于2个相同的(prefix, path)
tuples,applyPrefix(prefix, path)
必须返回相同的key。
必须为每个Path
实现applyPrefix
,因为Path
具有不同的详细结构。applyPrefix
可接受多个CommitmentPrefix
类型。
applyPrefix
返回的CommitmentPath
不要求可序列化(比如,可为a list of tree node identifiers),但是要求可进行equality比较。 - 5)Proof:
CommitmentProof
表示了membership or non-membership for an element or set of elements,verifiable in conjunction with a known commitment root。 Proofs should be succinct。
3.2 必须实现的函数
commitment构建过程中必须实现以下函数。其中path为可序列化object,value为byte arrays:
type Path = string
type Value = []byte
- 1)初始化:
generate
函数会根据可能为空的初始path->value map 对应的commitment state来初始化。 - 2)计算root:
calculateRoot
函数为commitment state计算a constant-size commitment,用于验证proof。 - 3)增减元素:
set
函数用于设置commitment中某value的path。remove
函数用于从commitment中移除某path和相应的value。 - 4)生成proof:
createMembershipProof
用于生成commitment中某特定path对应为某特定值 的 proof。createNonMembershipProof
函数用于生成commitment中任意值均未设定该commitment path 的proof。 - 5)验证proof:
verifyMembership
用于验证proof 中某特定path对应为commitment内某特定值。verifyNonMembership
用于验证proof中某coMmitment path不对应commitment中任意值。 - 6)可选函数:
batchVerifyMembership
验证多个path 与 多个value之间的关系。batchVerifyNonMembership
验证多个path 均不对应commitment中任意值的关系。这两个函数应分别与verifyMembership
和verifyNonMembership
这两个函数的验证结果一致。batch方法可能比单一验证方法效率更高。
4. IBC vector commitment属性
IBC vector commitment具有如下属性:
- 1)完备性
- 2)可靠性
- 3)position binding
5. 相关论文参考
相关论文参考有:
- Vector Commitments and their Applications
- Commitments with Applications to Anonymity-Preserving Revocation
- Batching Techniques for Commitments with Applications to IOPs and Stateless Blockchains
参考资料
以上是关于[活动预告] Substrate 中的 IBC 跨链模块技术分享 Substrate-ibc的主要内容,如果未能解决你的问题,请参考以下文章
活动预告 | Python:游戏中的图像识别与AI人工智能应用