structure
This commit is contained in:
parent
5ebdff2e5e
commit
1cb795ba73
|
@ -12,9 +12,10 @@ The initial implementation of IBC will include just enough for simple coin trans
|
|||
// User facing API
|
||||
|
||||
type IBCPacket struct {
|
||||
DestAddr sdk.Address
|
||||
Coins sdk.Coins
|
||||
SrcChain string
|
||||
SrcAddr sdk.Address
|
||||
DestAddr sdk.Address
|
||||
Coins sdk.Coins
|
||||
SrcChain string
|
||||
DestChain string
|
||||
}
|
||||
|
||||
|
@ -26,6 +27,8 @@ type IBCTransferMsg struct {
|
|||
// Implements sdk.Msg
|
||||
type IBCReceiveMsg struct {
|
||||
IBCPacket
|
||||
Relayer sdk.Address
|
||||
Sequence int64
|
||||
}
|
||||
|
||||
// Internal API
|
||||
|
|
|
@ -35,6 +35,8 @@ type IBCTransferMsg struct {
|
|||
// Implements sdk.Msg
|
||||
type IBCReceiveMsg struct {
|
||||
Packet
|
||||
Relayer sdk.Address
|
||||
Sequence int64
|
||||
}
|
||||
|
||||
// Internal API
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
package ibc
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
func NewHandler(ibcm IBCMapper) sdk.Handler {
|
||||
return func(ctx sdk.Context, msg sdk.Msg) sdk.Result {
|
||||
switch msg := msg.(type) {
|
||||
case IBCTransferMsg:
|
||||
return handleIBCTransferMsg(ctx, ibcm, msg)
|
||||
case IBCReceiveMsg:
|
||||
return handleIBCReceiveMsg(ctx, ibcm, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func handleIBCTransferMsg(ctx sdk.Context, ibcm IBCMapper, msg IBCTransferMsg) sdk.Result {
|
||||
ibcm.PushPacket(ctx, msg.IBCPacket)
|
||||
return sdk.Result{}
|
||||
}
|
||||
|
||||
func handleIBCReceiveMsg(ctx sdk.Context, ibcm IBCMapper, msg IBCReceiveMsg) sdk.Result {
|
||||
seq := ibc.IngressSequence(packet.SrcChain)
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package ibc
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
|
||||
type IBCMapper struct {
|
||||
ibcKey sdk.StoreKey
|
||||
}
|
||||
|
||||
func NewIBCMapper(ibcKey sdk.StoreKey) IBCMapper {
|
||||
return IBCMapper{
|
||||
ibcKey: ibcKey,
|
||||
}
|
||||
}
|
||||
|
||||
func GetIngressKey(srcChain string) []byte {
|
||||
return []byte(fmt.Sprintf("%s", srcChain))
|
||||
}
|
||||
|
||||
func GetEgressKey(destChain string, index int64) []byte {
|
||||
return []byte(fmt.Sprintf("%s/%d", destChain, index))
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
package ibc
|
||||
|
||||
import (
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
|
||||
wire "github.com/cosmos/cosmos-sdk/wire"
|
||||
)
|
||||
|
||||
type IBCPacket struct {
|
||||
SrcAddr sdk.Address
|
||||
DestAddr sdk.Address
|
||||
Coins sdk.Coins
|
||||
SrcChain string
|
||||
DestChain string
|
||||
}
|
||||
|
||||
func newCodec() *wire.Codec {
|
||||
return wire.NewCodec()
|
||||
}
|
||||
|
||||
type IBCTransferMsg struct {
|
||||
IBCPacket
|
||||
}
|
||||
|
||||
func (msg IBCTransferMsg) Type() string {
|
||||
return "ibctransfer"
|
||||
}
|
||||
|
||||
func (msg IBCTransferMsg) Get(key interface{}) interface{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (msg IBCTransferMsg) GetSignBytes() []byte {
|
||||
cdc := newCodec()
|
||||
bz, err := cdc.MarshalBinary(msg)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return bz
|
||||
}
|
||||
|
||||
func (msg IBCTransferMsg) ValidateBasic() sdk.Error {
|
||||
return msg.Coins.ValidateBasic()
|
||||
}
|
||||
|
||||
// x/bank/tx.go SendMsg.GetSigners()
|
||||
func (msg IBCTransferMsg) GetSigners() []sdk.Address {
|
||||
addrs := []sdk.Address{msg.SrcAddr}
|
||||
}
|
||||
|
||||
type IBCReceiveMsg struct {
|
||||
IBCPacket
|
||||
Relayer sdk.Address
|
||||
}
|
Loading…
Reference in New Issue