cosmos-sdk/docs/spec/ibc/mvp3.md

112 lines
1.8 KiB
Markdown
Raw Normal View History

2018-03-13 09:10:26 -07:00
# IBC Spec
## MVP3
2018-03-13 11:05:27 -07:00
`IBCOpenMsg` is added to open the connection between two chains. Also, `IBCUpdateMsg` is added, making it able to prove the header.
2018-03-13 09:10:26 -07:00
### IBC Module
// Implements sdk.Msg
type IBCTransferMsg struct {
Packet
}
// Implements sdk.Msg
type IBCReceiveMsg struct {
Packet
}
// Internal API
2018-03-13 11:05:27 -07:00
```golang
// User facing API
type Packet struct {
2018-03-13 12:28:38 -07:00
Data Payload
SrcChain string
DestChain string
}
2018-03-13 12:28:38 -07:00
type Payload interface {
Type() string
ValidateBasic() sdk.Error
}
2018-03-13 12:28:38 -07:00
type TransferPayload struct {
2018-03-13 11:05:27 -07:00
SrcAddr sdk.Address
DestAddr sdk.Address
Coins sdk.Coins
}
// Implements sdk.Msg
type IBCTransferMsg struct {
Packet
2018-03-13 11:05:27 -07:00
}
// Implements sdk.Msg
type IBCReceiveMsg struct {
Packet
Proof iavl.Proof
FromChainID string
FromChainHeight uint64
2018-03-13 11:05:27 -07:00
}
type RootOfTrust struct {
//
}
// Implements sdk.Msg
type IBCOpenMsg struct {
ROT RootOfTrust
Chain string
}
// Implements sdk.Msg
type IBCUpdateMsg struct {
Header tm.Header
Commit tm.Commit
}
// Internal API
type rule struct {
r string
f func(sdk.Context, IBCPacket) sdk.Result
}
type Dispatcher struct {
rules []rule
}
func NewHandler(dispatcher Dispatcher, ibcm IBCMapper) sdk.Handler
2018-03-13 11:05:27 -07:00
type IBCMapper struct {
2018-03-13 11:55:38 -07:00
ibcKey sdk.StoreKey // IngressKey / EgressKey / HeaderKey => Value
// ChannelID => last income msg's sequence
// (ChannelID, Msg index) => length / indexed msg
// ChannelID => last known header
2018-03-13 11:05:27 -07:00
}
type IngressKey struct {
ChannelID uint64
}
type EgressKey struct {
ChannelID uint64
Index int64
}
type HeaderKey struct {
ChannelID uint64
}
// Used by other modules
2018-03-13 12:28:38 -07:00
func (ibcm IBCMapper) PushPacket(ctx sdk.Context, dest string, payload Payload)
2018-03-13 11:05:27 -07:00
```
2018-03-13 09:10:26 -07:00