refactor(x/auth): rm double decode of messages (#20698)

This commit is contained in:
Matt Kocubinski 2024-06-18 14:16:12 -05:00 committed by GitHub
parent 3267b0aa13
commit 4bd73b667f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 31 deletions

View File

@ -32,7 +32,9 @@ func newBuilder(addressCodec address.Codec, decoder *decode.Decoder, codec codec
return &builder{addressCodec: addressCodec, decoder: decoder, codec: codec}
}
func newBuilderFromDecodedTx(addrCodec address.Codec, decoder *decode.Decoder, codec codec.BinaryCodec, decoded *gogoTxWrapper) (*builder, error) {
func newBuilderFromDecodedTx(
addrCodec address.Codec, decoder *decode.Decoder, codec codec.BinaryCodec, decoded *gogoTxWrapper,
) (*builder, error) {
signatures := make([][]byte, len(decoded.Tx.Signatures))
copy(signatures, decoded.Tx.Signatures)
@ -56,7 +58,7 @@ func newBuilderFromDecodedTx(addrCodec address.Codec, decoder *decode.Decoder, c
addressCodec: addrCodec,
decoder: decoder,
codec: codec,
msgs: decoded.msgs,
msgs: decoded.Messages,
timeoutHeight: decoded.GetTimeoutHeight(),
granter: decoded.FeeGranter(),
payer: payer,

View File

@ -27,14 +27,13 @@ import (
"github.com/cosmos/cosmos-sdk/types/tx/signing"
)
func newWrapperFromDecodedTx(addrCodec address.Codec, cdc codec.BinaryCodec, decodedTx *decode.DecodedTx) (*gogoTxWrapper, error) {
// set msgsv1
msgs, err := decodeMsgsV1(cdc, decodedTx.Tx.Body.Messages)
if err != nil {
return nil, fmt.Errorf("unable to convert messagev2 to messagev1: %w", err)
}
// set fees
fees := make(sdk.Coins, len(decodedTx.Tx.AuthInfo.Fee.Amount))
func newWrapperFromDecodedTx(
addrCodec address.Codec, cdc codec.BinaryCodec, decodedTx *decode.DecodedTx,
) (*gogoTxWrapper, error) {
var (
fees = make(sdk.Coins, len(decodedTx.Tx.AuthInfo.Fee.Amount))
err error
)
for i, fee := range decodedTx.Tx.AuthInfo.Fee.Amount {
amtInt, ok := math.NewIntFromString(fee.Amount)
if !ok {
@ -73,7 +72,7 @@ func newWrapperFromDecodedTx(addrCodec address.Codec, cdc codec.BinaryCodec, dec
}
// reflectMsgs
reflectMsgs := make([]protoreflect.Message, len(msgs))
reflectMsgs := make([]protoreflect.Message, len(decodedTx.DynamicMessages))
for i, msg := range decodedTx.DynamicMessages {
reflectMsgs[i] = msg.ProtoReflect()
}
@ -82,7 +81,6 @@ func newWrapperFromDecodedTx(addrCodec address.Codec, cdc codec.BinaryCodec, dec
DecodedTx: decodedTx,
cdc: cdc,
reflectMsgs: reflectMsgs,
msgs: msgs,
fees: fees,
feePayer: feePayer,
feeGranter: feeGranter,
@ -96,7 +94,6 @@ type gogoTxWrapper struct {
cdc codec.BinaryCodec
msgs []proto.Message
reflectMsgs []protoreflect.Message
fees sdk.Coins
feePayer []byte
@ -119,10 +116,7 @@ type ExtensionOptionsTxBuilder interface {
}
func (w *gogoTxWrapper) GetMsgs() []sdk.Msg {
if w.msgs == nil {
panic("fill in msgs")
}
return w.msgs
return w.Messages
}
func (w *gogoTxWrapper) GetReflectMessages() ([]protoreflect.Message, error) {
@ -280,20 +274,6 @@ func intoAnyV1(v2s []*anypb.Any) []*codectypes.Any {
return v1s
}
// decodeMsgsV1 will decode the given messages into
func decodeMsgsV1(cdc codec.BinaryCodec, anyPBs []*anypb.Any) ([]proto.Message, error) {
v1s := make([]proto.Message, len(anyPBs))
for i, anyPB := range anyPBs {
v1, err := decodeFromAny(cdc, anyPB)
if err != nil {
return nil, err
}
v1s[i] = v1
}
return v1s, nil
}
func decodeFromAny(cdc codec.BinaryCodec, anyPB *anypb.Any) (proto.Message, error) {
messageName := anyPB.TypeUrl
if i := strings.LastIndexByte(anyPB.TypeUrl, '/'); i >= 0 {