跨链Cosmos(11) 消息结构
1. 普通交易Msg
Cosmos的普通交易和以太坊類似,也是一個帳戶模型,有著From,To和Amount關(guān)鍵字段。
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協(xié)議的跨鏈交易數(shù)據(jù)包,包含跨鏈交易、目的鏈的超時高度和時間戳
/ IBC 數(shù)據(jù)包
type MsgPacket struct{ Packet Proof commitmentexported.Proof ProofHeight uint64 Signer sdk.AccAddress}2.2 跨鏈數(shù)據(jù)包
完成上述的一系列握手之后,應(yīng)用層便可以在Channel上發(fā)送自己的數(shù)據(jù)了。Cosmos規(guī)定了發(fā)送跨鏈交易的一些必要字段,如下圖:
TimeoutHeight和TimeoutTimestamp是Cosmos提供的一種超時機(jī)制。如果某個區(qū)塊高度或者某個時間這筆跨鏈交易還沒有完成的話,用戶能夠指定將這筆交易回退(比如是跨鏈轉(zhuǎn)賬的話,可以防止資金長時間凍結(jié))。
2.3 MsgAcknowledgement
定義IBC協(xié)議的響應(yīng)數(shù)據(jù)包,包含跨鏈交易執(zhí)行成功或者失敗的狀態(tài)。
來源鏈通過MsgAcknowledgement數(shù)據(jù)包,可以判斷跨鏈交易是否執(zhí)行成功,如果執(zhí)行失敗來源鏈做出相對的回滾。
// IBC響應(yīng)數(shù)據(jù)包 type MsgAcknowledgement struct {Packet Acknowledgement []byte Proof commitmentexported.Proof ProofHeight uint64 Signer sdk.AccAddress}2.4 MsgTimeout
定義IBC協(xié)議的超時數(shù)據(jù)包,包含下一個接收包的序列號。
來源鏈通過MsgTimeout數(shù)據(jù)包,可以判斷一個跨鏈交易的數(shù)據(jù)包是否超時,如果超時來源鏈做出相對的回滾。
// IBC超時數(shù)據(jù)包 type MsgTimeout struct { Packet NextSequenceRecv uint64 Proof commitmentexported.Proof ProofHeight uint64 Signer sdk.AccAddress}2.5 跨鏈存在性證明
struct { Proof commitmentexported.Proof //Merkle Proof ProofHeight uint64 //區(qū)塊高度 Signer sdk.AccAddress //發(fā)送者的地址,跨鏈雙方維護(hù)對方的輕節(jié)點(diǎn),提供類似SPV證明的機(jī)制 }總結(jié)
以上是生活随笔為你收集整理的跨链Cosmos(11) 消息结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 跨链Cosmos(9)异构跨链交易流程
- 下一篇: 跨链Cosmos(12) Cosmos插