fix: collect all responses from authz/MsgExec (#9538)

## Description

Closes: #9536

### Author Checklist

*All items are required. Please add a note to the item if the item is not applicable and
please add links to any relevant follow up issues.*

I have...

- [x] included the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] added `!` to the type prefix if API or client breaking change
- [x] targeted the correct branch (see [PR Targeting](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#pr-targeting))
- [x] provided a link to the relevant issue or specification
- [x] followed the guidelines for [building modules](https://github.com/cosmos/cosmos-sdk/blob/master/docs/building-modules)
- [ ] included the necessary unit and integration [tests](https://github.com/cosmos/cosmos-sdk/blob/master/CONTRIBUTING.md#testing)
- [ ] added a changelog entry to `CHANGELOG.md`
- [ ] included comments for [documenting Go code](https://blog.golang.org/godoc)
- [ ] updated the relevant documentation or specification
- [ ] reviewed "Files changed" and left comments if necessary
- [ ] confirmed all CI checks have passed

### Reviewers Checklist

*All items are required. Please add a note if the item is not applicable and please add
your handle next to the items reviewed if you only reviewed selected items.*

I have...

- [ ] confirmed the correct [type prefix](https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json) in the PR title
- [ ] confirmed `!` in the type prefix if API or client breaking change
- [ ] confirmed all author checklist items have been addressed 
- [ ] reviewed state machine logic
- [ ] reviewed API design and naming
- [ ] reviewed documentation is accurate
- [ ] reviewed tests and test coverage
- [ ] manually tested (if applicable)
This commit is contained in:
Robert Zaremba 2021-06-18 21:06:10 +02:00 committed by GitHub
parent 105ad99a8e
commit 6a5a2de798
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 67 additions and 73 deletions

View File

@ -1308,7 +1308,7 @@ MsgExecResponse defines the Msg/MsgExecResponse response type.
| Field | Type | Label | Description | | Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- | | ----- | ---- | ----- | ----------- |
| `result` | [cosmos.base.abci.v1beta1.Result](#cosmos.base.abci.v1beta1.Result) | | | | `results` | [bytes](#bytes) | repeated | |

View File

@ -40,7 +40,7 @@ message MsgGrant {
// MsgExecResponse defines the Msg/MsgExecResponse response type. // MsgExecResponse defines the Msg/MsgExecResponse response type.
message MsgExecResponse { message MsgExecResponse {
cosmos.base.abci.v1beta1.Result result = 1; repeated bytes results = 1;
} }
// MsgExec attempts to execute the provided messages using // MsgExec attempts to execute the provided messages using

View File

@ -72,10 +72,9 @@ func (k Keeper) update(ctx sdk.Context, grantee sdk.AccAddress, granter sdk.AccA
// DispatchActions attempts to execute the provided messages via authorization // DispatchActions attempts to execute the provided messages via authorization
// grants from the message signer to the grantee. // grants from the message signer to the grantee.
func (k Keeper) DispatchActions(ctx sdk.Context, grantee sdk.AccAddress, msgs []sdk.Msg) (*sdk.Result, error) { func (k Keeper) DispatchActions(ctx sdk.Context, grantee sdk.AccAddress, msgs []sdk.Msg) ([][]byte, error) {
var msgResult *sdk.Result var results = make([][]byte, len(msgs))
var err error for i, msg := range msgs {
for _, msg := range msgs {
signers := msg.GetSigners() signers := msg.GetSigners()
if len(signers) != 1 { if len(signers) != 1 {
return nil, sdkerrors.ErrInvalidRequest.Wrap("authorization can be given to msg with only one signer") return nil, sdkerrors.ErrInvalidRequest.Wrap("authorization can be given to msg with only one signer")
@ -103,19 +102,20 @@ func (k Keeper) DispatchActions(ctx sdk.Context, grantee sdk.AccAddress, msgs []
return nil, sdkerrors.ErrUnauthorized return nil, sdkerrors.ErrUnauthorized
} }
} }
handler := k.router.Handler(msg)
handler := k.router.Handler(msg)
if handler == nil { if handler == nil {
return nil, sdkerrors.ErrUnknownRequest.Wrapf("unrecognized message route: %s", sdk.MsgTypeURL(msg)) return nil, sdkerrors.ErrUnknownRequest.Wrapf("unrecognized message route: %s", sdk.MsgTypeURL(msg))
} }
msgResult, err = handler(ctx, msg) msgResp, err := handler(ctx, msg)
if err != nil { if err != nil {
return nil, sdkerrors.Wrapf(err, "failed to execute message; message %v", msg) return nil, sdkerrors.Wrapf(err, "failed to execute message; message %v", msg)
} }
results[i] = msgResp.Data
} }
return msgResult, nil return results, nil
} }
// SaveGrant method grants the provided authorization to the grantee on the granter's account // SaveGrant method grants the provided authorization to the grantee on the granter's account

View File

@ -70,9 +70,9 @@ func (k Keeper) Exec(goCtx context.Context, msg *authz.MsgExec) (*authz.MsgExecR
if err != nil { if err != nil {
return nil, err return nil, err
} }
result, err := k.DispatchActions(ctx, grantee, msgs) results, err := k.DispatchActions(ctx, grantee, msgs)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return &authz.MsgExecResponse{Result: result}, nil return &authz.MsgExecResponse{Results: results}, nil
} }

View File

@ -6,8 +6,8 @@ package authz
import ( import (
context "context" context "context"
fmt "fmt" fmt "fmt"
types1 "github.com/cosmos/cosmos-sdk/codec/types" types "github.com/cosmos/cosmos-sdk/codec/types"
types "github.com/cosmos/cosmos-sdk/types" _ "github.com/cosmos/cosmos-sdk/types"
_ "github.com/gogo/protobuf/gogoproto" _ "github.com/gogo/protobuf/gogoproto"
grpc1 "github.com/gogo/protobuf/grpc" grpc1 "github.com/gogo/protobuf/grpc"
proto "github.com/gogo/protobuf/proto" proto "github.com/gogo/protobuf/proto"
@ -75,7 +75,7 @@ var xxx_messageInfo_MsgGrant proto.InternalMessageInfo
// MsgExecResponse defines the Msg/MsgExecResponse response type. // MsgExecResponse defines the Msg/MsgExecResponse response type.
type MsgExecResponse struct { type MsgExecResponse struct {
Result *types.Result `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` Results [][]byte `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
} }
func (m *MsgExecResponse) Reset() { *m = MsgExecResponse{} } func (m *MsgExecResponse) Reset() { *m = MsgExecResponse{} }
@ -119,7 +119,7 @@ type MsgExec struct {
// Authorization Msg requests to execute. Each msg must implement Authorization interface // Authorization Msg requests to execute. Each msg must implement Authorization interface
// The x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg)) // The x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))
// triple and validate it. // triple and validate it.
Msgs []*types1.Any `protobuf:"bytes,2,rep,name=msgs,proto3" json:"msgs,omitempty"` Msgs []*types.Any `protobuf:"bytes,2,rep,name=msgs,proto3" json:"msgs,omitempty"`
} }
func (m *MsgExec) Reset() { *m = MsgExec{} } func (m *MsgExec) Reset() { *m = MsgExec{} }
@ -282,39 +282,38 @@ func init() {
func init() { proto.RegisterFile("cosmos/authz/v1beta1/tx.proto", fileDescriptor_3ceddab7d8589ad1) } func init() { proto.RegisterFile("cosmos/authz/v1beta1/tx.proto", fileDescriptor_3ceddab7d8589ad1) }
var fileDescriptor_3ceddab7d8589ad1 = []byte{ var fileDescriptor_3ceddab7d8589ad1 = []byte{
// 498 bytes of a gzipped FileDescriptorProto // 487 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xcb, 0x6e, 0xd3, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x93, 0xcf, 0x6e, 0xd3, 0x40,
0x14, 0xb5, 0x9b, 0x34, 0x25, 0x13, 0x24, 0xc0, 0x64, 0xe1, 0x1a, 0xea, 0x58, 0xe6, 0x95, 0x05, 0x10, 0xc6, 0xb3, 0x4d, 0xda, 0x92, 0x6d, 0x25, 0xc0, 0xe4, 0xe0, 0x1a, 0xea, 0x58, 0xe6, 0x5f,
0x1d, 0xab, 0x61, 0x01, 0xdb, 0x46, 0x42, 0x48, 0x80, 0x85, 0x64, 0xc1, 0x86, 0x4d, 0x64, 0xa7, 0x24, 0xe8, 0x5a, 0x0d, 0x07, 0xce, 0x8d, 0x84, 0x90, 0x10, 0x16, 0x92, 0x05, 0x17, 0x2e, 0xd1,
0xc3, 0xc4, 0x4a, 0xec, 0xb1, 0x7c, 0xc7, 0x25, 0xe9, 0x57, 0xf0, 0x31, 0x7c, 0x44, 0xc4, 0xaa, 0x3a, 0x5d, 0x36, 0x56, 0x62, 0xaf, 0xe5, 0x59, 0x97, 0xa4, 0x4f, 0xc1, 0xc3, 0xf0, 0x10, 0x11,
0x4b, 0x56, 0x08, 0x92, 0x9f, 0x60, 0x89, 0x3c, 0x8f, 0x50, 0x50, 0x5a, 0x24, 0x56, 0x99, 0x3b, 0xa7, 0x1e, 0x39, 0x21, 0x48, 0x5e, 0x82, 0x23, 0xf2, 0xee, 0x3a, 0x14, 0x94, 0x16, 0x89, 0x53,
0xe7, 0xe4, 0xdc, 0x73, 0xcf, 0xf5, 0xa0, 0x83, 0x31, 0x83, 0x8c, 0x41, 0x10, 0x57, 0x7c, 0x72, 0x76, 0xe6, 0xfb, 0x65, 0xe6, 0xf3, 0xe7, 0x35, 0x3e, 0x1c, 0x09, 0x48, 0x05, 0x04, 0xb4, 0x94,
0x16, 0x9c, 0x1e, 0x25, 0x84, 0xc7, 0x47, 0x01, 0x9f, 0xe3, 0xa2, 0x64, 0x9c, 0x59, 0x5d, 0x09, 0xe3, 0xf3, 0xe0, 0xec, 0x38, 0x66, 0x92, 0x1e, 0x07, 0x72, 0x46, 0xf2, 0x42, 0x48, 0x61, 0x75,
0x63, 0x01, 0x63, 0x05, 0x3b, 0xfb, 0xf2, 0x76, 0x24, 0x38, 0x81, 0xa2, 0x88, 0xc2, 0xe9, 0x52, 0xb4, 0x4c, 0x94, 0x4c, 0x8c, 0xec, 0x1c, 0xe8, 0xee, 0x50, 0x31, 0x81, 0x41, 0x54, 0xe1, 0x74,
0x46, 0x99, 0xbc, 0xaf, 0x4f, 0xea, 0xb6, 0x47, 0x19, 0xa3, 0x33, 0x12, 0x88, 0x2a, 0xa9, 0x3e, 0xb8, 0xe0, 0x42, 0xf7, 0xab, 0x93, 0xe9, 0x76, 0xb9, 0x10, 0x7c, 0xca, 0x02, 0x55, 0xc5, 0xe5,
0x04, 0x3c, 0xcd, 0x08, 0xf0, 0x38, 0x2b, 0x14, 0x61, 0xff, 0x6f, 0x42, 0x9c, 0x2f, 0x14, 0x74, 0x87, 0x40, 0x26, 0x29, 0x03, 0x49, 0xd3, 0xdc, 0x00, 0x07, 0x7f, 0x03, 0x34, 0x9b, 0x1b, 0xe9,
0x4f, 0x39, 0x4c, 0x62, 0x20, 0x41, 0x9c, 0x8c, 0xd3, 0x8d, 0xcb, 0xba, 0x50, 0x24, 0x6f, 0xeb, 0xbe, 0x71, 0x18, 0x53, 0x60, 0x01, 0x8d, 0x47, 0xc9, 0xda, 0x65, 0x55, 0x18, 0xc8, 0xdb, 0xf8,
0x18, 0xd2, 0xb5, 0x60, 0xf8, 0x1f, 0xd1, 0xb5, 0x10, 0xe8, 0x8b, 0x32, 0xce, 0xb9, 0x65, 0xa3, 0x18, 0xda, 0xb5, 0x22, 0xfc, 0x8f, 0xf8, 0x46, 0x08, 0xfc, 0x65, 0x41, 0x33, 0x69, 0xd9, 0x78,
0x3d, 0x5a, 0x1f, 0x48, 0x69, 0x9b, 0x9e, 0xd9, 0x6f, 0x47, 0xba, 0xfc, 0x8d, 0x10, 0x7b, 0xe7, 0x97, 0x57, 0x07, 0x56, 0xd8, 0xc8, 0x43, 0xbd, 0x76, 0x54, 0x97, 0xbf, 0x15, 0x66, 0x6f, 0x5d,
0x22, 0x42, 0xac, 0xa7, 0x68, 0x57, 0x1c, 0xed, 0x86, 0x67, 0xf6, 0x3b, 0x83, 0x3b, 0x78, 0x5b, 0x56, 0x98, 0xf5, 0x1c, 0x6f, 0xab, 0xa3, 0xdd, 0xf4, 0x50, 0x6f, 0xaf, 0x7f, 0x97, 0x6c, 0x4a,
0x32, 0x58, 0xe8, 0x0f, 0x9b, 0xcb, 0x6f, 0x3d, 0x23, 0x92, 0x7c, 0xff, 0x15, 0xba, 0x11, 0x02, 0x86, 0xa8, 0xf9, 0x83, 0xd6, 0xe2, 0x5b, 0xb7, 0x11, 0x69, 0xde, 0x7f, 0x82, 0x6f, 0x86, 0xc0,
0x7d, 0x3e, 0x27, 0xe3, 0x88, 0x40, 0xc1, 0x72, 0x20, 0xd6, 0x33, 0xd4, 0x2a, 0x09, 0x54, 0x33, 0x5f, 0xcc, 0xd8, 0x28, 0x62, 0x90, 0x8b, 0x0c, 0x58, 0xb5, 0xa5, 0x60, 0x50, 0x4e, 0x25, 0xd8,
0x2e, 0xda, 0x77, 0x06, 0x9e, 0x16, 0xab, 0x67, 0xc4, 0x62, 0x2c, 0x2d, 0x18, 0x09, 0x5e, 0xa4, 0xc8, 0x6b, 0xf6, 0xf6, 0xa3, 0xba, 0xf4, 0x05, 0xde, 0x35, 0xf0, 0x65, 0x2b, 0xe8, 0x4f, 0x2b,
0xf8, 0x3e, 0x43, 0x7b, 0x4a, 0xec, 0xa2, 0x55, 0xf3, 0x4f, 0xab, 0x2f, 0x51, 0x33, 0x03, 0x0a, 0xaf, 0x70, 0x2b, 0x05, 0x0e, 0xf6, 0x96, 0xd7, 0xec, 0xed, 0xf5, 0x3b, 0x44, 0x67, 0x47, 0xea,
0xf6, 0x8e, 0xd7, 0xe8, 0x77, 0x06, 0x5d, 0x2c, 0xb3, 0xc5, 0x3a, 0x5b, 0x7c, 0x9c, 0x2f, 0x86, 0xec, 0xc8, 0x49, 0x36, 0x1f, 0x78, 0x5f, 0x3e, 0x1f, 0xdd, 0x83, 0xd3, 0x09, 0x09, 0x81, 0x3f,
0xde, 0x97, 0xcf, 0x87, 0x77, 0xe1, 0x64, 0x8a, 0x43, 0xa0, 0x8f, 0x3d, 0x39, 0xc4, 0x71, 0xc5, 0xf5, 0xb4, 0xc9, 0x93, 0x52, 0x8e, 0x45, 0x91, 0x9c, 0x53, 0x99, 0x88, 0x2c, 0x52, 0x33, 0x7c,
0x27, 0xac, 0x4c, 0xcf, 0x62, 0x9e, 0xb2, 0x3c, 0x12, 0x1a, 0xbe, 0x85, 0x6e, 0xea, 0xd8, 0xb4, 0x0b, 0xdf, 0xaa, 0x63, 0xa9, 0xed, 0xf9, 0x14, 0xb7, 0x43, 0xe0, 0x11, 0x3b, 0x13, 0x13, 0xf6,
0x7d, 0x3f, 0x46, 0xed, 0x10, 0x68, 0x44, 0x4e, 0xd9, 0x94, 0xfc, 0x57, 0x96, 0x1e, 0xba, 0x9e, 0x5f, 0x59, 0x79, 0x78, 0x3f, 0x05, 0x3e, 0x94, 0xf3, 0x9c, 0x0d, 0xcb, 0x62, 0xaa, 0x22, 0x6b,
0x01, 0x1d, 0xf1, 0x45, 0x41, 0x46, 0x55, 0x39, 0x13, 0x91, 0xb6, 0x23, 0x94, 0x01, 0x7d, 0xbb, 0x47, 0x38, 0x05, 0xfe, 0x76, 0x9e, 0xb3, 0x77, 0xc5, 0xd4, 0xbf, 0x83, 0x6f, 0xaf, 0x57, 0xd4,
0x28, 0xc8, 0xbb, 0x72, 0xe6, 0xdf, 0x46, 0xb7, 0x36, 0x2d, 0x74, 0xdf, 0xc1, 0x4f, 0x13, 0x35, 0x7b, 0xfb, 0x3f, 0x11, 0x6e, 0x86, 0xc0, 0xad, 0x37, 0x78, 0x5b, 0xbf, 0x27, 0x77, 0x73, 0xc8,
0x42, 0xa0, 0xd6, 0x1b, 0xb4, 0x2b, 0xf7, 0xe8, 0x6e, 0x5f, 0x82, 0x36, 0xec, 0x3c, 0xbc, 0x1a, 0xb5, 0x61, 0xe7, 0xd1, 0xf5, 0xfa, 0x3a, 0xef, 0xd7, 0xb8, 0xa5, 0x22, 0x3d, 0xbc, 0x92, 0xaf,
0xdf, 0xec, 0xe3, 0x35, 0x6a, 0x8a, 0x48, 0x0f, 0x2e, 0xe5, 0xd7, 0xb0, 0xf3, 0xe0, 0x4a, 0x78, 0x64, 0xe7, 0xe1, 0xb5, 0xf2, 0x7a, 0x5a, 0x84, 0x77, 0x4c, 0x36, 0xdd, 0x2b, 0xff, 0xa0, 0x01,
0xa3, 0x16, 0xa1, 0x96, 0xca, 0xa6, 0x77, 0xe9, 0x1f, 0x24, 0xc1, 0x79, 0xf4, 0x0f, 0x82, 0xd6, 0xe7, 0xf1, 0x3f, 0x80, 0x7a, 0xe6, 0x60, 0xb0, 0xf8, 0xe1, 0x36, 0x16, 0x4b, 0x17, 0x5d, 0x2c,
0x1c, 0x0e, 0x97, 0x3f, 0x5c, 0x63, 0xb9, 0x72, 0xcd, 0xf3, 0x95, 0x6b, 0x7e, 0x5f, 0xb9, 0xe6, 0x5d, 0xf4, 0x7d, 0xe9, 0xa2, 0x4f, 0x2b, 0xb7, 0x71, 0xb1, 0x72, 0x1b, 0x5f, 0x57, 0x6e, 0xe3,
0xa7, 0xb5, 0x6b, 0x9c, 0xaf, 0x5d, 0xe3, 0xeb, 0xda, 0x35, 0xde, 0xdf, 0xa7, 0x29, 0x9f, 0x54, 0xfd, 0x03, 0x9e, 0xc8, 0x71, 0x19, 0x93, 0x91, 0x48, 0xcd, 0xd7, 0x66, 0x7e, 0x8e, 0xe0, 0x74,
0x09, 0x1e, 0xb3, 0x4c, 0xbd, 0x46, 0xf5, 0x73, 0x08, 0x27, 0xd3, 0x60, 0x2e, 0xdf, 0x41, 0xd2, 0x12, 0xcc, 0xf4, 0x3d, 0x8f, 0x77, 0xd4, 0x05, 0x78, 0xf6, 0x2b, 0x00, 0x00, 0xff, 0xff, 0xe3,
0x12, 0x1f, 0xc0, 0x93, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4a, 0xa9, 0xb0, 0x59, 0xf3, 0x03, 0x02, 0xf3, 0xbe, 0xd3, 0x03, 0x00, 0x00,
0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.
@ -554,17 +553,14 @@ func (m *MsgExecResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i _ = i
var l int var l int
_ = l _ = l
if m.Result != nil { if len(m.Results) > 0 {
{ for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
size, err := m.Result.MarshalToSizedBuffer(dAtA[:i]) i -= len(m.Results[iNdEx])
if err != nil { copy(dAtA[i:], m.Results[iNdEx])
return 0, err i = encodeVarintTx(dAtA, i, uint64(len(m.Results[iNdEx])))
} i--
i -= size dAtA[i] = 0xa
i = encodeVarintTx(dAtA, i, uint64(size))
} }
i--
dAtA[i] = 0xa
} }
return len(dAtA) - i, nil return len(dAtA) - i, nil
} }
@ -739,9 +735,11 @@ func (m *MsgExecResponse) Size() (n int) {
} }
var l int var l int
_ = l _ = l
if m.Result != nil { if len(m.Results) > 0 {
l = m.Result.Size() for _, b := range m.Results {
n += 1 + l + sovTx(uint64(l)) l = len(b)
n += 1 + l + sovTx(uint64(l))
}
} }
return n return n
} }
@ -988,9 +986,9 @@ func (m *MsgExecResponse) Unmarshal(dAtA []byte) error {
switch fieldNum { switch fieldNum {
case 1: case 1:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
} }
var msglen int var byteLen int
for shift := uint(0); ; shift += 7 { for shift := uint(0); ; shift += 7 {
if shift >= 64 { if shift >= 64 {
return ErrIntOverflowTx return ErrIntOverflowTx
@ -1000,27 +998,23 @@ func (m *MsgExecResponse) Unmarshal(dAtA []byte) error {
} }
b := dAtA[iNdEx] b := dAtA[iNdEx]
iNdEx++ iNdEx++
msglen |= int(b&0x7F) << shift byteLen |= int(b&0x7F) << shift
if b < 0x80 { if b < 0x80 {
break break
} }
} }
if msglen < 0 { if byteLen < 0 {
return ErrInvalidLengthTx return ErrInvalidLengthTx
} }
postIndex := iNdEx + msglen postIndex := iNdEx + byteLen
if postIndex < 0 { if postIndex < 0 {
return ErrInvalidLengthTx return ErrInvalidLengthTx
} }
if postIndex > l { if postIndex > l {
return io.ErrUnexpectedEOF return io.ErrUnexpectedEOF
} }
if m.Result == nil { m.Results = append(m.Results, make([]byte, postIndex-iNdEx))
m.Result = &types.Result{} copy(m.Results[len(m.Results)-1], dAtA[iNdEx:postIndex])
}
if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
@ -1133,7 +1127,7 @@ func (m *MsgExec) Unmarshal(dAtA []byte) error {
if postIndex > l { if postIndex > l {
return io.ErrUnexpectedEOF return io.ErrUnexpectedEOF
} }
m.Msgs = append(m.Msgs, &types1.Any{}) m.Msgs = append(m.Msgs, &types.Any{})
if err := m.Msgs[len(m.Msgs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { if err := m.Msgs[len(m.Msgs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err return err
} }