[活动预告] 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中任意值的关系。这两个函数应分别与verifyMembershipverifyNonMembership 这两个函数的验证结果一致。batch方法可能比单一验证方法效率更高。

4. IBC vector commitment属性

IBC vector commitment具有如下属性:

  • 1)完备性
  • 2)可靠性
  • 3)position binding

5. 相关论文参考

相关论文参考有:

参考资料

[1] ics-023-vector-commitment

以上是关于[活动预告] Substrate 中的 IBC 跨链模块技术分享 Substrate-ibc的主要内容,如果未能解决你的问题,请参考以下文章

趣链 BitXHub跨链平台 IBC通信协议

跨链Cosmos同构跨链交易流程

活动预告 | Python:游戏中的图像识别与AI人工智能应用

interlay: IBC bridge BTC to Cosmos

波卡链Substrate Grandpa协议一“概念说明”

活动预告:充满浪漫色彩的极限编程方法(XP)