跨链Cosmos(11) 消息结构
1. 普通交易Msg
Cosmos的普通交易和以太坊类似,也是一个帐户模型,有着From,To和Amount关键字段。
type MsgSend struct
{
FromAddress github_com_cosmos_cosmos_sdk_types.AccAddress
ToAddress github_com_cosmos_cosmos_sdk_types.AccAddress
Amount github_com_cosmos_cosmos_sdk_types.Coins}
2. 跨链交易
2.1 MsgPacket
定义了IBC协议的跨链交易数据包,包含跨链交易、目的链的超时高度和时间戳
/ IBC 数据包
type MsgPacket struct{
Packet
Proof commitmentexported.Proof
ProofHeight uint64
Signer sdk.AccAddress}
2.2 跨链数据包
完成上述的一系列握手之后,应用层便可以在Channel上发送自己的数据了。Cosmos规定了发送跨链交易的一些必要字段,如下图:
// 数据包定义了一种通过IBC跨不同链传输数据的类型
type Packet struct{ Data []byte // 跨链交易数据Sequence uint64 // number对应于发送和接收的顺序,必须按序发送和接收 SourcePort string // 标识来源链上的端口 SourceChannel string // 标识来源链上的通道 DestinationPort string // 标识目的链上的端口DestinationChannel string // 标识目的链上的通道 TimeoutHeight uint64 // 标记数据包超时的区块高度TimeoutTimestamp uint64 // 数据包超时的区块时间戳
}
TimeoutHeight和TimeoutTimestamp是Cosmos提供的一种超时机制。如果某个区块高度或者某个时间这笔跨链交易还没有完成的话,用户能够指定将这笔交易回退(比如是跨链转账的话,可以防止资金长时间冻结)。
2.3 MsgAcknowledgement
定义IBC协议的响应数据包,包含跨链交易执行成功或者失败的状态。
来源链通过MsgAcknowledgement数据包,可以判断跨链交易是否执行成功,如果执行失败来源链做出相对的回滚。
// IBC响应数据包
type MsgAcknowledgement struct {Packet
Acknowledgement []byte Proof commitmentexported.Proof ProofHeight uint64 Signer sdk.AccAddress}
2.4 MsgTimeout
定义IBC协议的超时数据包,包含下一个接收包的序列号。
来源链通过MsgTimeout数据包,可以判断一个跨链交易的数据包是否超时,如果超时来源链做出相对的回滚。
// IBC超时数据包
type MsgTimeout struct
{ Packet NextSequenceRecv uint64 Proof commitmentexported.Proof ProofHeight uint64 Signer sdk.AccAddress}
2.5 跨链存在性证明
struct {
Proof commitmentexported.Proof //Merkle Proof
ProofHeight uint64 //区块高度
Signer sdk.AccAddress //发送者的地址,跨链双方维护对方的轻节点,提供类似SPV证明的机制
}
跨链Cosmos(11) 消息结构相关推荐
- 跨链Cosmos(3)IBC协议二
1. IBC协议中设计了两个消息: IBCBlockCommitTx 发送方所在区块链的最新的区块信息. IBCPacketTx 跨链交易本身的信息,及其在发送方链中被打包的区块信息. 两个链建立连接 ...
- 跨链Cosmos(8)同构跨链交易流程
1. 哈希锁定 A链上的Alice发送100个ATOM代币给B链上的Bob step1. Tracking A链上的IBC模块会不断的同步B链上的区块头信息,B链上的IBC同理.通过这种方式,双方能够 ...
- 跨链Cosmos(10) IBC接口
1. 子模块 1.1 IBCRegisterChainTx 注册 在跨链开始用来注册,并发送创世区块,Validator 给对方,这个只能执行一次,多次执行会报错. type IBCRegisterC ...
- 跨链Cosmos(3)IBC协议
1. (Inter-Blockchain Communication Protocol)IBC定义 IBC协议用于Hub与Zone之间消息传递. 通过数据包交换在多个不同的区块链网络之间转移数据和状态 ...
- 跨链Cosmos(2) Cosmos系统框架
1. Cosmos 系统 = Tendermint Core + Cosmos SDK Cosmos是tendermint团队推出的一个支持跨链交互的异构网络, 一个分布式的独立并行区块链公链. 1. ...
- 跨链Cosmos(1) 网络拓扑
1. 拓扑结构 Hub: 用于处理跨链交互的中继链 Zone: 平行链 Cosmos Hub中心 代币可以安全快速地从一个Zone传递到另一个Zone,两者之间无需体现汇兑流动性. Zone内部所有代 ...
- 跨链Cosmos(12) Cosmos插件
Tendermint 有一个插件模块,我们可以实现 plugin 中接口,在 ibc 插件中执行跨链交易. 1. plugin 接口的定义 //与 abci 接口很类似 type Plugin int ...
- 跨链Cosmos(9)异构跨链交易流程
当应用链双方在Hub注册后,彼此发现就可以通过路由进行跨链交易. 1.1 IBC跨链流程 ChainA和ChainB都是基于CosmosSDK搭建的应用链,Relayer作为一个链下中继负责轮询和路由 ...
- 跨链Cosmos(7)普通交易流程
1. 普通交易 Cosmos的普通交易和以太坊类似,也是一个帐户模型,有着From,To和Amount关键字段. 1.1 Msg结构 type MsgSend struct { FromAddress ...
最新文章
- 域密码自助重置系统----绑定私人邮箱信息自助重置(一)
- 使用VIA声卡 运行生化危机5无声音的解决方案 无需卸载旧驱动
- 十一课堂|通过小游戏学习Ethereum DApps编程(4)
- python_模块学习
- touch: cannot touch /usr/local/tomcat/logs/catalina.out: Permission denied解决方法
- II play with GG
- usg6620 查看端口流量_WhatRoute for Mac(互联网流量诊断查询工具)
- mysql查询以文件形式导出_mysql以文件形式导入导出整个数据库
- java spr_Java中的42行代码中的URL缩短器服务(Java(?!)Spring Boot + Redis
- [No0000B0]ReSharper操作指南1/16-入门与简介
- iOS开发之--NSPredicate
- Android——简单模拟银行转账
- 恢复更新--vue源码系列1之如何看源码
- 编程实现英语句子按单词倒叙-C语言
- 阿里巴巴容器技术 Pouch 解析
- 编译原理:什么是编译程序?
- 手持车辆管理的神器插件,移动端车牌识别技术
- python应用程序无法正常启动0xc000007b_应用程序无法正常启动0xc000007b怎么解决
- 用计算机弹的数字,在计算器上弹两只老虎是用那几个数字
- 易语言运行 (c:内部.exe, 假, ),易语言没法运行exe程序,怎么办?
热门文章
- 【Scratch】青少年蓝桥杯_每日一题_3.07_画金字塔
- 前端JS——滑动滑块验证登录(源码及效果)
- matlab复数方程组,【求解】matlab求解非齐次方程组,但是系数矩阵是复数,求帮忙...
- mysql varchar(max)_等价于MySQL中的varchar(max)?
- Python之pandas:将dataframe数据写入到xls表格的多个sheet内(防止写入数据循环覆盖sheet表)
- Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程)
- AI:2020年6月22日北京智源大会演讲分享之10:40-11:30 Zoubin教授《Probabilistic Machine Learning and AI》
- 成功解决tensorflow\contrib\learn\python\learn\datasets\mnist.py: maybe_download (from tensorflow.contri
- Python之pyspark:pyspark的简介、安装、使用方法之详细攻略
- 临时配置网络(ip,网关,dns)+永久配置