@@ -16,6 +16,7 @@ import (
1616 secp "github.com/decred/dcrd/dcrec/secp256k1/v4"
1717
1818 signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1"
19+ "cosmossdk.io/core/address"
1920 sdkmath "cosmossdk.io/math"
2021 banktypes "cosmossdk.io/x/bank/types"
2122
@@ -107,9 +108,10 @@ type converter struct {
107108 bytesToSign func (tx authsigning.Tx , signerData authsigning.SignerData ) (b []byte , err error )
108109 ir codectypes.InterfaceRegistry
109110 cdc * codec.ProtoCodec
111+ ac address.Codec
110112}
111113
112- func NewConverter (cdc * codec.ProtoCodec , ir codectypes.InterfaceRegistry , cfg sdkclient.TxConfig ) Converter {
114+ func NewConverter (cdc * codec.ProtoCodec , ir codectypes.InterfaceRegistry , cfg sdkclient.TxConfig , ac address. Codec ) Converter {
113115 return converter {
114116 newTxBuilder : cfg .NewTxBuilder ,
115117 txBuilderFromTx : cfg .WrapTxBuilder ,
@@ -131,6 +133,7 @@ func NewConverter(cdc *codec.ProtoCodec, ir codectypes.InterfaceRegistry, cfg sd
131133 },
132134 ir : ir ,
133135 cdc : cdc ,
136+ ac : ac ,
134137 }
135138}
136139
@@ -677,7 +680,7 @@ func (c converter) SigningComponents(tx authsigning.Tx, metadata *ConstructionMe
677680 return nil , nil , crgerrs .WrapError (crgerrs .ErrConverter , fmt .Sprintf ("getting signers v2 from tx %s" , err .Error ()))
678681 }
679682
680- signers , err := tx .GetSignaturesV2 ()
683+ signers , err := tx .GetSigners ()
681684 if err != nil {
682685 return nil , nil , crgerrs .WrapError (crgerrs .ErrConverter , fmt .Sprintf ("getting signers v2 from tx %s" , err .Error ()))
683686 }
@@ -707,18 +710,23 @@ func (c converter) SigningComponents(tx authsigning.Tx, metadata *ConstructionMe
707710 // by checking if the signer at index i matches the pubkey at index
708711 pubKey , err := c .ToSDK ().PubKey (rosPubKeys [0 ])
709712 if err != nil {
710- return nil , nil , crgerrs .WrapError (crgerrs .ErrConverter , fmt .Sprintf ("while setting signatures %s" , err .Error ()))
713+ return nil , nil , crgerrs .WrapError (crgerrs .ErrConverter , fmt .Sprintf ("while checking pubkey %s" , err .Error ()))
711714 }
712- if ! bytes .Equal (pubKey .Address ().Bytes (), signer . PubKey . Address () ) {
715+ if ! bytes .Equal (pubKey .Address ().Bytes (), signer ) {
713716 return nil , nil , crgerrs .WrapError (
714717 crgerrs .ErrBadArgument ,
715718 fmt .Sprintf ("public key at index %d does not match the expected transaction signer: %X <-> %X" , i , rosPubKeys [i ].Bytes , signer ),
716719 )
717720 }
718721
722+ addr , err := c .ac .BytesToString (signer )
723+ if err != nil {
724+ return nil , nil , crgerrs .WrapError (crgerrs .ErrConverter , fmt .Sprintf ("while converting to bech32 address: %s" , err .Error ()))
725+ }
726+
719727 // set the signer data
720728 signerData := authsigning.SignerData {
721- Address : string ( signer . PubKey . Address ()) ,
729+ Address : addr ,
722730 ChainID : metadata .ChainID ,
723731 AccountNumber : metadata .SignersData [i ].AccountNumber ,
724732 Sequence : metadata .SignersData [i ].Sequence ,
@@ -731,11 +739,8 @@ func (c converter) SigningComponents(tx authsigning.Tx, metadata *ConstructionMe
731739 return nil , nil , crgerrs .WrapError (crgerrs .ErrUnknown , fmt .Sprintf ("unable to sign tx: %s" , err .Error ()))
732740 }
733741
734- // set payload
735- signerAddress := sdk .AccAddress (signer .PubKey .Address ()).String ()
736-
737742 payloadsToSign [i ] = & rosettatypes.SigningPayload {
738- AccountIdentifier : & rosettatypes.AccountIdentifier {Address : signerAddress },
743+ AccountIdentifier : & rosettatypes.AccountIdentifier {Address : addr },
739744 Bytes : signBytes ,
740745 SignatureType : rosettatypes .Ecdsa ,
741746 }
0 commit comments