From cbc6989ed60036e99ec74b02333a891bbabc50fc Mon Sep 17 00:00:00 2001 From: Christopher Goes Date: Fri, 8 Jun 2018 01:49:37 +0200 Subject: [PATCH] Bech32ify msg.GetSignBytes() for x/ibc --- x/ibc/types.go | 51 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/x/ibc/types.go b/x/ibc/types.go index 09a853b20..76239102a 100644 --- a/x/ibc/types.go +++ b/x/ibc/types.go @@ -1,11 +1,20 @@ package ibc import ( - sdk "github.com/cosmos/cosmos-sdk/types" + "encoding/json" + sdk "github.com/cosmos/cosmos-sdk/types" wire "github.com/cosmos/cosmos-sdk/wire" ) +var ( + msgCdc *wire.Codec +) + +func init() { + msgCdc = wire.NewCodec() +} + // ------------------------------ // 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 func (ibcp IBCPacket) ValidateBasic() sdk.Error { 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 func (msg IBCTransferMsg) GetSignBytes() []byte { - cdc := wire.NewCodec() - bz, err := cdc.MarshalBinary(msg) - if err != nil { - panic(err) - } - return bz + return msg.IBCPacket.GetSignBytes() } // 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 func (msg IBCReceiveMsg) GetSignBytes() []byte { - cdc := wire.NewCodec() - bz, err := cdc.MarshalBinary(msg) + b, err := msgCdc.MarshalJSON(struct { + IBCPacket json.RawMessage + Relayer string + Sequence int64 + }{ + IBCPacket: json.RawMessage(msg.IBCPacket.GetSignBytes()), + Relayer: sdk.MustBech32ifyAcc(msg.Relayer), + Sequence: msg.Sequence, + }) if err != nil { panic(err) } - return bz + return b }