Bech32ify msg.GetSignBytes() for x/ibc

This commit is contained in:
Christopher Goes 2018-06-08 01:49:37 +02:00
parent 971e1489b2
commit cbc6989ed6
No known key found for this signature in database
GPG Key ID: E828D98232D328D3
1 changed files with 41 additions and 10 deletions

View File

@ -1,11 +1,20 @@
package ibc package ibc
import ( import (
sdk "github.com/cosmos/cosmos-sdk/types" "encoding/json"
sdk "github.com/cosmos/cosmos-sdk/types"
wire "github.com/cosmos/cosmos-sdk/wire" wire "github.com/cosmos/cosmos-sdk/wire"
) )
var (
msgCdc *wire.Codec
)
func init() {
msgCdc = wire.NewCodec()
}
// ------------------------------ // ------------------------------
// IBCPacket // IBCPacket
@ -32,6 +41,26 @@ func NewIBCPacket(srcAddr sdk.Address, destAddr sdk.Address, coins sdk.Coins,
} }
} }
func (p IBCPacket) GetSignBytes() []byte {
b, err := msgCdc.MarshalJSON(struct {
SrcAddr string
DestAddr string
Coins sdk.Coins
SrcChain string
DestChain string
}{
SrcAddr: sdk.MustBech32ifyAcc(p.SrcAddr),
DestAddr: sdk.MustBech32ifyAcc(p.DestAddr),
Coins: p.Coins,
SrcChain: p.SrcChain,
DestChain: p.DestChain,
})
if err != nil {
panic(err)
}
return b
}
// validator the ibc packey // validator the ibc packey
func (ibcp IBCPacket) ValidateBasic() sdk.Error { func (ibcp IBCPacket) ValidateBasic() sdk.Error {
if ibcp.SrcChain == ibcp.DestChain { if ibcp.SrcChain == ibcp.DestChain {
@ -60,12 +89,7 @@ func (msg IBCTransferMsg) GetSigners() []sdk.Address { return []sdk.Address{msg.
// get the sign bytes for ibc transfer message // get the sign bytes for ibc transfer message
func (msg IBCTransferMsg) GetSignBytes() []byte { func (msg IBCTransferMsg) GetSignBytes() []byte {
cdc := wire.NewCodec() return msg.IBCPacket.GetSignBytes()
bz, err := cdc.MarshalBinary(msg)
if err != nil {
panic(err)
}
return bz
} }
// validate ibc transfer message // validate ibc transfer message
@ -94,10 +118,17 @@ func (msg IBCReceiveMsg) GetSigners() []sdk.Address { return []sdk.Address{msg.R
// get the sign bytes for ibc receive message // get the sign bytes for ibc receive message
func (msg IBCReceiveMsg) GetSignBytes() []byte { func (msg IBCReceiveMsg) GetSignBytes() []byte {
cdc := wire.NewCodec() b, err := msgCdc.MarshalJSON(struct {
bz, err := cdc.MarshalBinary(msg) IBCPacket json.RawMessage
Relayer string
Sequence int64
}{
IBCPacket: json.RawMessage(msg.IBCPacket.GetSignBytes()),
Relayer: sdk.MustBech32ifyAcc(msg.Relayer),
Sequence: msg.Sequence,
})
if err != nil { if err != nil {
panic(err) panic(err)
} }
return bz return b
} }