fix: marshal old tx body if unordered not used (backport #22723) (#23347)

Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
mergify[bot] 2025-01-13 16:43:34 +01:00 committed by GitHub
parent 2bde4a8557
commit fd651b7366
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 620 additions and 157 deletions

View File

@ -4,6 +4,7 @@ import (
"bytes"
"sort"
"testing"
"time"
abci "github.com/cometbft/cometbft/api/cometbft/abci/v1"
cmtprotocrypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
@ -499,10 +500,10 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_NoOpMempoolTxSelection()
tx := builder.GetTx()
txBz, err := txConfig.TxEncoder()(tx)
s.Require().NoError(err)
s.Require().Len(txBz, 165)
s.Require().Len(txBz, 152)
txDataSize := int(cmttypes.ComputeProtoSizeForTxs([]cmttypes.Tx{txBz}))
s.Require().Equal(txDataSize, 168)
s.Require().Equal(155, txDataSize)
testCases := map[string]struct {
ctx sdk.Context
@ -533,7 +534,7 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_NoOpMempoolTxSelection()
ctx: s.ctx,
req: &abci.PrepareProposalRequest{
Txs: [][]byte{txBz, txBz, txBz, txBz, txBz},
MaxTxBytes: 465,
MaxTxBytes: 464,
},
expectedTxs: 2,
},
@ -595,24 +596,24 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_PriorityNonceMempoolTxSe
testTxs := []testTx{
// test 1
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`0`), [][]byte{secret1}, []uint64{1}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`12345678910`), [][]byte{secret1}, []uint64{2}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`22`), [][]byte{secret1}, []uint64{3}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`32`), [][]byte{secret2}, []uint64{1}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`0`), [][]byte{secret1}, []uint64{1}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`12345678910`), [][]byte{secret1}, []uint64{2}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`22`), [][]byte{secret1}, []uint64{3}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`32`), [][]byte{secret2}, []uint64{1}, false), priority: 8},
// test 2
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`4`), [][]byte{secret1, secret2}, []uint64{3, 3}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`52345678910`), [][]byte{secret1, secret3}, []uint64{4, 3}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`62`), [][]byte{secret1, secret4}, []uint64{5, 3}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`72`), [][]byte{secret3, secret5}, []uint64{4, 3}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`82`), [][]byte{secret2, secret6}, []uint64{4, 3}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`4`), [][]byte{secret1, secret2}, []uint64{3, 3}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`52345678910`), [][]byte{secret1, secret3}, []uint64{4, 3}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`62`), [][]byte{secret1, secret4}, []uint64{5, 3}, false), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`72`), [][]byte{secret3, secret5}, []uint64{4, 3}, false), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`82`), [][]byte{secret2, secret6}, []uint64{4, 3}, false), priority: 8},
// test 3
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`9`), [][]byte{secret3, secret4}, []uint64{3, 3}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`1052345678910`), [][]byte{secret1, secret2}, []uint64{4, 4}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`11`), [][]byte{secret1, secret2}, []uint64{5, 5}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`9`), [][]byte{secret3, secret4}, []uint64{3, 3}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`1052345678910`), [][]byte{secret1, secret2}, []uint64{4, 4}, false), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`11`), [][]byte{secret1, secret2}, []uint64{5, 5}, false), priority: 8},
// test 4
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`1252345678910`), [][]byte{secret1}, []uint64{3}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`13`), [][]byte{secret1}, []uint64{5}), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`14`), [][]byte{secret1}, []uint64{6}), priority: 8},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`1252345678910`), [][]byte{secret1}, []uint64{3}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`13`), [][]byte{secret1}, []uint64{5}, false), priority: 10},
{tx: buildMsg(s.T(), txConfig, signingCtx.AddressCodec(), []byte(`14`), [][]byte{secret1}, []uint64{6}, false), priority: 8},
}
for i := range testTxs {
@ -622,15 +623,15 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_PriorityNonceMempoolTxSe
testTxs[i].size = int(cmttypes.ComputeProtoSizeForTxs([]cmttypes.Tx{bz}))
}
s.Require().Equal(193, testTxs[0].size)
s.Require().Equal(203, testTxs[1].size)
s.Require().Equal(194, testTxs[2].size)
s.Require().Equal(194, testTxs[3].size)
s.Require().Equal(276, testTxs[4].size)
s.Require().Equal(286, testTxs[5].size)
s.Require().Equal(277, testTxs[6].size)
s.Require().Equal(277, testTxs[7].size)
s.Require().Equal(277, testTxs[8].size)
s.Require().Equal(180, testTxs[0].size)
s.Require().Equal(190, testTxs[1].size)
s.Require().Equal(181, testTxs[2].size)
s.Require().Equal(181, testTxs[3].size)
s.Require().Equal(263, testTxs[4].size)
s.Require().Equal(273, testTxs[5].size)
s.Require().Equal(264, testTxs[6].size)
s.Require().Equal(264, testTxs[7].size)
s.Require().Equal(264, testTxs[8].size)
testCases := map[string]struct {
ctx sdk.Context
@ -643,7 +644,7 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_PriorityNonceMempoolTxSe
ctx: s.ctx,
txInputs: []testTx{testTxs[0], testTxs[1], testTxs[2], testTxs[3]},
req: &abci.PrepareProposalRequest{
MaxTxBytes: 193 + 194,
MaxTxBytes: 180 + 181,
},
expectedTxs: []int{0, 3},
},
@ -651,7 +652,7 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_PriorityNonceMempoolTxSe
ctx: s.ctx,
txInputs: []testTx{testTxs[4], testTxs[5], testTxs[6], testTxs[7], testTxs[8]},
req: &abci.PrepareProposalRequest{
MaxTxBytes: 276 + 277,
MaxTxBytes: 263 + 264,
},
expectedTxs: []int{4, 8},
},
@ -660,7 +661,7 @@ func (s *ABCIUtilsTestSuite) TestDefaultProposalHandler_PriorityNonceMempoolTxSe
ctx: s.ctx,
txInputs: []testTx{testTxs[9], testTxs[10], testTxs[11]},
req: &abci.PrepareProposalRequest{
MaxTxBytes: 276 + 277,
MaxTxBytes: 263 + 264,
},
expectedTxs: []int{9},
},
@ -722,7 +723,7 @@ func marshalDelimitedFn(msg proto.Message) ([]byte, error) {
return buf.Bytes(), nil
}
func buildMsg(t *testing.T, txConfig client.TxConfig, ac address.Codec, value []byte, secrets [][]byte, nonces []uint64) sdk.Tx {
func buildMsg(t *testing.T, txConfig client.TxConfig, ac address.Codec, value []byte, secrets [][]byte, nonces []uint64, unordered bool) sdk.Tx {
t.Helper()
builder := txConfig.NewTxBuilder()
@ -742,6 +743,11 @@ func buildMsg(t *testing.T, txConfig client.TxConfig, ac address.Codec, value []
addr, err := ac.BytesToString(signatures[0].PubKey.Bytes())
require.NoError(t, err)
builder.SetUnordered(unordered)
if unordered {
builder.SetTimeoutTimestamp(time.Now().Add(time.Hour))
}
_ = builder.SetMsgs(
&baseapptestutil.MsgKeyValue{
Signer: addr,

View File

@ -21,13 +21,6 @@ import (
"github.com/cosmos/cosmos-sdk/codec/types"
)
// ProtoCodecMarshaler defines an interface for codecs that utilize Protobuf for both
// binary and JSON encoding.
// Deprecated: Use Codec instead.
type ProtoCodecMarshaler interface {
Codec
}
// ProtoCodec defines a codec that utilizes Protobuf for both binary and JSON
// encoding.
type ProtoCodec struct {

4
go.mod
View File

@ -4,7 +4,7 @@ module github.com/cosmos/cosmos-sdk
require (
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.36.1-20241120201313-68e42a58b301.1 // indirect
cosmossdk.io/api v0.8.0 // main
cosmossdk.io/api v0.8.1 // main
cosmossdk.io/collections v1.0.0 // main
cosmossdk.io/core v1.0.0
cosmossdk.io/core/testing v0.0.1 // main
@ -59,7 +59,7 @@ require (
golang.org/x/sync v0.10.0
google.golang.org/genproto/googleapis/api v0.0.0-20241015192408-796eee8c2d53
google.golang.org/grpc v1.69.2
google.golang.org/protobuf v1.36.1
google.golang.org/protobuf v1.36.2
gotest.tools/v3 v3.5.1
pgregory.net/rapid v1.1.0
sigs.k8s.io/yaml v1.4.0

8
go.sum
View File

@ -4,8 +4,8 @@ buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.1-20240130113600-88e
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.36.1-20240130113600-88ef6483f90f.1/go.mod h1:GB5hdNJd6cahKmHcLArJo5wnV9TeZGMSz7ysK4YLvag=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cosmossdk.io/api v0.8.0 h1:E5Xifxu/3mPTLF79si9fyq4rR0wagubeVNmOz5duTUo=
cosmossdk.io/api v0.8.0/go.mod h1:hgJ83P0ZUu0rS1SZoVM6abk6ADOkiM259BVVlYtAPP0=
cosmossdk.io/api v0.8.1 h1:jQxx7CgUZDfgbPhPak41hW8TZzqfj06YxNI1WOulOo4=
cosmossdk.io/api v0.8.1/go.mod h1:8Q+Je1bFwsNTCMe6qigVDDyrNmFYa7ttvG96tN/oKGw=
cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
@ -694,8 +694,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU=
google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -143,6 +143,41 @@ message TxBody {
repeated google.protobuf.Any non_critical_extension_options = 2047;
}
// TxBodyCompat is the body of a transaction that all signers sign over.
// This message is used to represent the transaction body before the unordered
// features was added. It is used to support backwards compatibility when user a newer
// client with an older chain.
message TxBodyCompat {
// messages is a list of messages to be executed. The required signers of
// those messages define the number and order of elements in AuthInfo's
// signer_infos and Tx's signatures. Each required signer address is added to
// the list only the first time it occurs.
// By convention, the first required signer (usually from the first message)
// is referred to as the primary signer and pays the fee for the whole
// transaction.
repeated google.protobuf.Any messages = 1;
// memo is any arbitrary note/comment to be added to the transaction.
// WARNING: in clients, any publicly exposed text should not be called memo,
// but should be called `note` instead (see
// https://github.com/cosmos/cosmos-sdk/issues/9122).
string memo = 2;
// timeout_height is the block height after which this transaction will not
// be processed by the chain.
uint64 timeout_height = 3;
// extension_options are arbitrary options that can be added by chains
// when the default options are not sufficient. If any of these are present
// and can't be handled, the transaction will be rejected
repeated google.protobuf.Any extension_options = 1023;
// extension_options are arbitrary options that can be added by chains
// when the default options are not sufficient. If any of these are present
// and can't be handled, they will be ignored
repeated google.protobuf.Any non_critical_extension_options = 2047;
}
// AuthInfo describes the fee and signer modes that are used to sign a
// transaction.
message AuthInfo {

View File

@ -1,4 +1,4 @@
protoVer=0.15.2
protoVer=0.15.3
protoImageName=ghcr.io/cosmos/proto-builder:$(protoVer)
protoImage=$(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace $(protoImageName)

View File

@ -3,7 +3,7 @@ module cosmossdk.io/simapp
go 1.23.4
require (
cosmossdk.io/api v0.8.0 // main
cosmossdk.io/api v0.8.1 // main
cosmossdk.io/client/v2 v2.10.0-beta.1
cosmossdk.io/collections v1.0.0 // main
cosmossdk.io/core v1.0.0 // main
@ -49,7 +49,7 @@ require (
github.com/spf13/viper v1.19.0
github.com/stretchr/testify v1.10.0
google.golang.org/grpc v1.69.2
google.golang.org/protobuf v1.36.1
google.golang.org/protobuf v1.36.2
)
require (

View File

@ -192,8 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
cosmossdk.io/api v0.8.0 h1:E5Xifxu/3mPTLF79si9fyq4rR0wagubeVNmOz5duTUo=
cosmossdk.io/api v0.8.0/go.mod h1:hgJ83P0ZUu0rS1SZoVM6abk6ADOkiM259BVVlYtAPP0=
cosmossdk.io/api v0.8.1 h1:jQxx7CgUZDfgbPhPak41hW8TZzqfj06YxNI1WOulOo4=
cosmossdk.io/api v0.8.1/go.mod h1:8Q+Je1bFwsNTCMe6qigVDDyrNmFYa7ttvG96tN/oKGw=
cosmossdk.io/client/v2 v2.10.0-beta.1 h1:uMF5PUt6cy6QeXRnBf1tuig5Haw3dUaTqtSIYZWf/Cc=
cosmossdk.io/client/v2 v2.10.0-beta.1/go.mod h1:EqHIw/tLdCK1vSAg+8ovNEBq3PeBenP+nQ1WhPMGq94=
cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
@ -1470,8 +1470,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU=
google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -147,7 +147,7 @@ func TestAppSimulationAfterImport(t *testing.T) {
BalanceSource: app.BankKeeper,
}
}
ti.Cfg.InitialBlockHeight = int(exported.Height)
ti.Cfg.InitialBlockHeight = uint64(exported.Height)
simsx.RunWithSeed(t, ti.Cfg, NewSimApp, importGenesisStateFactory, ti.Cfg.Seed, ti.Cfg.FuzzSeed)
})
}

View File

@ -3,7 +3,7 @@ module cosmossdk.io/simapp/v2
go 1.23.4
require (
cosmossdk.io/api v0.8.0 // main
cosmossdk.io/api v0.8.1 // main
cosmossdk.io/client/v2 v2.10.0-beta.1
cosmossdk.io/core v1.0.0 // main
cosmossdk.io/core/testing v0.0.1 // indirect; main
@ -258,10 +258,7 @@ require (
// replace (
// <temporary replace>
// )
replace (
cosmossdk.io/server/v2/cometbft => ../../server/v2/cometbft
cosmossdk.io/x/staking => cosmossdk.io/x/staking v0.2.0-rc.1.0.20250109101855-4c6e34be28c1
)
replace cosmossdk.io/server/v2/cometbft => ../../server/v2/cometbft
// Below are the long-lived replace of the SimApp
replace (

View File

@ -192,8 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
cosmossdk.io/api v0.8.0 h1:E5Xifxu/3mPTLF79si9fyq4rR0wagubeVNmOz5duTUo=
cosmossdk.io/api v0.8.0/go.mod h1:hgJ83P0ZUu0rS1SZoVM6abk6ADOkiM259BVVlYtAPP0=
cosmossdk.io/api v0.8.1 h1:jQxx7CgUZDfgbPhPak41hW8TZzqfj06YxNI1WOulOo4=
cosmossdk.io/api v0.8.1/go.mod h1:8Q+Je1bFwsNTCMe6qigVDDyrNmFYa7ttvG96tN/oKGw=
cosmossdk.io/client/v2 v2.10.0-beta.1 h1:uMF5PUt6cy6QeXRnBf1tuig5Haw3dUaTqtSIYZWf/Cc=
cosmossdk.io/client/v2 v2.10.0-beta.1/go.mod h1:EqHIw/tLdCK1vSAg+8ovNEBq3PeBenP+nQ1WhPMGq94=
cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
@ -268,8 +268,8 @@ cosmossdk.io/x/protocolpool v0.2.0-rc.1 h1:BNtRCp/TStXYSW0uc5KJTtJoTVOCaF7/P6Smx
cosmossdk.io/x/protocolpool v0.2.0-rc.1/go.mod h1:asoCc7jX1kMqaJ9sI1U67P2evXjVKXSngTgGinAXTZo=
cosmossdk.io/x/slashing v0.2.0-rc.1 h1:RNAV5JN7nIuyDtGclPoN1iFl92Edu71ERl/OtFSS06I=
cosmossdk.io/x/slashing v0.2.0-rc.1/go.mod h1:uICi76DI/iwfgPbETb8sVio6dEA4Q4sv4Vqj9cxn2zI=
cosmossdk.io/x/staking v0.2.0-rc.1.0.20250109101855-4c6e34be28c1 h1:/IEkm90NCAatqdKITvVumjsbnMRldOimcslNiQ0gJlg=
cosmossdk.io/x/staking v0.2.0-rc.1.0.20250109101855-4c6e34be28c1/go.mod h1:eb4WWz3WB8lryUutt5pPuevwgqMSGsh0iPgr0VZr2kc=
cosmossdk.io/x/staking v0.2.0-rc.1 h1:AZRGddRuuTaLxxpBvC7/TR7Dmt0pjziXWk13dC1beIo=
cosmossdk.io/x/staking v0.2.0-rc.1/go.mod h1:7K4hgQ6tn0XLFb2BJ9oe8nEc4RkfQ4qHqgQy2b0kVNc=
cosmossdk.io/x/tx v1.0.0 h1:pUUKRvHiMUZC/MnO8v747k1lUEA1DfAq0j0y0Mqrz/o=
cosmossdk.io/x/tx v1.0.0/go.mod h1:AXYJ47btzkcWuT1OtA3M44dv1iiYbKomtopHEbQGgH4=
cosmossdk.io/x/upgrade v0.2.0-rc.1 h1:YO865mCFIsFyjzl1fOsOr7Hw2iVGJhTGwecUC3u0YBY=

View File

@ -3,7 +3,7 @@ module github.com/cosmos/cosmos-sdk/tests
go 1.23.4
require (
cosmossdk.io/api v0.8.0 // main
cosmossdk.io/api v0.8.1 // main
cosmossdk.io/collections v1.0.0 // main
cosmossdk.io/core v1.0.0 // main
cosmossdk.io/core/testing v0.0.1 // main
@ -28,7 +28,7 @@ require (
github.com/spf13/cobra v1.8.1 // indirect
github.com/stretchr/testify v1.10.0
google.golang.org/grpc v1.69.2
google.golang.org/protobuf v1.36.1
google.golang.org/protobuf v1.36.2
gotest.tools/v3 v3.5.1
pgregory.net/rapid v1.1.0
)

View File

@ -192,8 +192,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX
cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg=
cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0=
cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M=
cosmossdk.io/api v0.8.0 h1:E5Xifxu/3mPTLF79si9fyq4rR0wagubeVNmOz5duTUo=
cosmossdk.io/api v0.8.0/go.mod h1:hgJ83P0ZUu0rS1SZoVM6abk6ADOkiM259BVVlYtAPP0=
cosmossdk.io/api v0.8.1 h1:jQxx7CgUZDfgbPhPak41hW8TZzqfj06YxNI1WOulOo4=
cosmossdk.io/api v0.8.1/go.mod h1:8Q+Je1bFwsNTCMe6qigVDDyrNmFYa7ttvG96tN/oKGw=
cosmossdk.io/collections v1.0.0 h1:YCYIe/pIMtc1iLDD0OrVdfWCnIkpwdy7k9NSQpaR5mg=
cosmossdk.io/collections v1.0.0/go.mod h1:mFfLxnYT1fV+B3Lx9GLap1qxmffIPqQCND4xBExerps=
cosmossdk.io/core v1.0.0 h1:e7XBbISOytLBOXMVwpRPixThXqEkeLGlg8no/qpgS8U=
@ -1426,8 +1426,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk=
google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU=
google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

View File

@ -172,7 +172,7 @@ func TestBaseApp_BlockGas(t *testing.T) {
require.Equal(t, []byte("ok"), okValue)
}
// check block gas is always consumed
baseGas := uint64(39205) // baseGas is the gas consumed before tx msg
baseGas := uint64(39075) // baseGas is the gas consumed before tx msg
expGasConsumed := addUint64Saturating(tc.gasToConsume, baseGas)
if expGasConsumed > uint64(simtestutil.DefaultConsensusParams.Block.MaxGas) {
// capped by gasLimit

View File

@ -473,6 +473,105 @@ func (m *TxBody) GetNonCriticalExtensionOptions() []*any.Any {
return nil
}
// TxBodyCompat is the body of a transaction that all signers sign over.
// This message is used to represent the transaction body before the unordered
// features was added. It is used to support backwards compatibility when user a newer
// client with an older chain.
type TxBodyCompat struct {
// messages is a list of messages to be executed. The required signers of
// those messages define the number and order of elements in AuthInfo's
// signer_infos and Tx's signatures. Each required signer address is added to
// the list only the first time it occurs.
// By convention, the first required signer (usually from the first message)
// is referred to as the primary signer and pays the fee for the whole
// transaction.
Messages []*any.Any `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
// memo is any arbitrary note/comment to be added to the transaction.
// WARNING: in clients, any publicly exposed text should not be called memo,
// but should be called `note` instead (see
// https://github.com/cosmos/cosmos-sdk/issues/9122).
Memo string `protobuf:"bytes,2,opt,name=memo,proto3" json:"memo,omitempty"`
// timeout_height is the block height after which this transaction will not
// be processed by the chain.
TimeoutHeight uint64 `protobuf:"varint,3,opt,name=timeout_height,json=timeoutHeight,proto3" json:"timeout_height,omitempty"`
// extension_options are arbitrary options that can be added by chains
// when the default options are not sufficient. If any of these are present
// and can't be handled, the transaction will be rejected
ExtensionOptions []*any.Any `protobuf:"bytes,1023,rep,name=extension_options,json=extensionOptions,proto3" json:"extension_options,omitempty"`
// extension_options are arbitrary options that can be added by chains
// when the default options are not sufficient. If any of these are present
// and can't be handled, they will be ignored
NonCriticalExtensionOptions []*any.Any `protobuf:"bytes,2047,rep,name=non_critical_extension_options,json=nonCriticalExtensionOptions,proto3" json:"non_critical_extension_options,omitempty"`
}
func (m *TxBodyCompat) Reset() { *m = TxBodyCompat{} }
func (m *TxBodyCompat) String() string { return proto.CompactTextString(m) }
func (*TxBodyCompat) ProtoMessage() {}
func (*TxBodyCompat) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{5}
}
func (m *TxBodyCompat) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *TxBodyCompat) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_TxBodyCompat.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *TxBodyCompat) XXX_Merge(src proto.Message) {
xxx_messageInfo_TxBodyCompat.Merge(m, src)
}
func (m *TxBodyCompat) XXX_Size() int {
return m.Size()
}
func (m *TxBodyCompat) XXX_DiscardUnknown() {
xxx_messageInfo_TxBodyCompat.DiscardUnknown(m)
}
var xxx_messageInfo_TxBodyCompat proto.InternalMessageInfo
func (m *TxBodyCompat) GetMessages() []*any.Any {
if m != nil {
return m.Messages
}
return nil
}
func (m *TxBodyCompat) GetMemo() string {
if m != nil {
return m.Memo
}
return ""
}
func (m *TxBodyCompat) GetTimeoutHeight() uint64 {
if m != nil {
return m.TimeoutHeight
}
return 0
}
func (m *TxBodyCompat) GetExtensionOptions() []*any.Any {
if m != nil {
return m.ExtensionOptions
}
return nil
}
func (m *TxBodyCompat) GetNonCriticalExtensionOptions() []*any.Any {
if m != nil {
return m.NonCriticalExtensionOptions
}
return nil
}
// AuthInfo describes the fee and signer modes that are used to sign a
// transaction.
type AuthInfo struct {
@ -497,7 +596,7 @@ func (m *AuthInfo) Reset() { *m = AuthInfo{} }
func (m *AuthInfo) String() string { return proto.CompactTextString(m) }
func (*AuthInfo) ProtoMessage() {}
func (*AuthInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{5}
return fileDescriptor_96d1575ffde80842, []int{6}
}
func (m *AuthInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -568,7 +667,7 @@ func (m *SignerInfo) Reset() { *m = SignerInfo{} }
func (m *SignerInfo) String() string { return proto.CompactTextString(m) }
func (*SignerInfo) ProtoMessage() {}
func (*SignerInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{6}
return fileDescriptor_96d1575ffde80842, []int{7}
}
func (m *SignerInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -634,7 +733,7 @@ func (m *ModeInfo) Reset() { *m = ModeInfo{} }
func (m *ModeInfo) String() string { return proto.CompactTextString(m) }
func (*ModeInfo) ProtoMessage() {}
func (*ModeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{7}
return fileDescriptor_96d1575ffde80842, []int{8}
}
func (m *ModeInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -720,7 +819,7 @@ func (m *ModeInfo_Single) Reset() { *m = ModeInfo_Single{} }
func (m *ModeInfo_Single) String() string { return proto.CompactTextString(m) }
func (*ModeInfo_Single) ProtoMessage() {}
func (*ModeInfo_Single) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{7, 0}
return fileDescriptor_96d1575ffde80842, []int{8, 0}
}
func (m *ModeInfo_Single) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -769,7 +868,7 @@ func (m *ModeInfo_Multi) Reset() { *m = ModeInfo_Multi{} }
func (m *ModeInfo_Multi) String() string { return proto.CompactTextString(m) }
func (*ModeInfo_Multi) ProtoMessage() {}
func (*ModeInfo_Multi) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{7, 1}
return fileDescriptor_96d1575ffde80842, []int{8, 1}
}
func (m *ModeInfo_Multi) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -837,7 +936,7 @@ func (m *Fee) Reset() { *m = Fee{} }
func (m *Fee) String() string { return proto.CompactTextString(m) }
func (*Fee) ProtoMessage() {}
func (*Fee) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{8}
return fileDescriptor_96d1575ffde80842, []int{9}
}
func (m *Fee) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -908,7 +1007,7 @@ func (m *Tip) Reset() { *m = Tip{} }
func (m *Tip) String() string { return proto.CompactTextString(m) }
func (*Tip) ProtoMessage() {}
func (*Tip) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{9}
return fileDescriptor_96d1575ffde80842, []int{10}
}
func (m *Tip) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -974,7 +1073,7 @@ func (m *AuxSignerData) Reset() { *m = AuxSignerData{} }
func (m *AuxSignerData) String() string { return proto.CompactTextString(m) }
func (*AuxSignerData) ProtoMessage() {}
func (*AuxSignerData) Descriptor() ([]byte, []int) {
return fileDescriptor_96d1575ffde80842, []int{10}
return fileDescriptor_96d1575ffde80842, []int{11}
}
func (m *AuxSignerData) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1037,6 +1136,7 @@ func init() {
proto.RegisterType((*SignDoc)(nil), "cosmos.tx.v1beta1.SignDoc")
proto.RegisterType((*SignDocDirectAux)(nil), "cosmos.tx.v1beta1.SignDocDirectAux")
proto.RegisterType((*TxBody)(nil), "cosmos.tx.v1beta1.TxBody")
proto.RegisterType((*TxBodyCompat)(nil), "cosmos.tx.v1beta1.TxBodyCompat")
proto.RegisterType((*AuthInfo)(nil), "cosmos.tx.v1beta1.AuthInfo")
proto.RegisterType((*SignerInfo)(nil), "cosmos.tx.v1beta1.SignerInfo")
proto.RegisterType((*ModeInfo)(nil), "cosmos.tx.v1beta1.ModeInfo")
@ -1050,79 +1150,81 @@ func init() {
func init() { proto.RegisterFile("cosmos/tx/v1beta1/tx.proto", fileDescriptor_96d1575ffde80842) }
var fileDescriptor_96d1575ffde80842 = []byte{
// 1147 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x56, 0x4f, 0x8f, 0xdb, 0x44,
0x14, 0x8f, 0xe3, 0x24, 0x9b, 0xbc, 0xee, 0xb6, 0xbb, 0x43, 0x8b, 0xb2, 0x29, 0xcd, 0x2e, 0xa9,
0x0a, 0x51, 0xc5, 0xda, 0xed, 0x16, 0x41, 0xa9, 0x10, 0x25, 0x69, 0xa9, 0x5a, 0x95, 0x82, 0xf0,
0xee, 0xa9, 0x17, 0x6b, 0x62, 0xcf, 0x3a, 0xa3, 0xc6, 0x33, 0xc6, 0x33, 0x86, 0xf8, 0xc8, 0x05,
0x4e, 0x48, 0x15, 0x17, 0x24, 0x3e, 0x01, 0xe2, 0xd4, 0x43, 0x25, 0xbe, 0x42, 0xb9, 0x55, 0x3d,
0x21, 0x0e, 0x6d, 0xd5, 0x3d, 0xf4, 0x63, 0x80, 0x3c, 0x1e, 0x7b, 0xb7, 0xdd, 0x34, 0x0b, 0x02,
0x89, 0x4b, 0xe4, 0x79, 0xf3, 0x7b, 0x6f, 0x7e, 0xef, 0x7f, 0xa0, 0xe3, 0x71, 0x11, 0x72, 0x61,
0xcb, 0xa9, 0xfd, 0xd5, 0xf9, 0x11, 0x91, 0xf8, 0xbc, 0x2d, 0xa7, 0x56, 0x14, 0x73, 0xc9, 0xd1,
0x4a, 0x7e, 0x67, 0xc9, 0xa9, 0xa5, 0xef, 0x3a, 0xab, 0xb9, 0xc8, 0x55, 0x00, 0x5b, 0xdf, 0xab,
0x43, 0x67, 0x05, 0x87, 0x94, 0x71, 0x5b, 0xfd, 0x6a, 0xd1, 0xf1, 0x80, 0x07, 0x3c, 0x87, 0x66,
0x5f, 0x5a, 0xba, 0xa1, 0x9f, 0xf4, 0xe2, 0x34, 0x92, 0xdc, 0x0e, 0x93, 0x89, 0xa4, 0x82, 0x06,
0xe5, 0xfb, 0x85, 0x40, 0xc3, 0xbb, 0x1a, 0x3e, 0xc2, 0x82, 0x94, 0x18, 0x8f, 0x53, 0xa6, 0xef,
0xdf, 0xde, 0xf3, 0x40, 0xd0, 0x80, 0x51, 0xb6, 0x67, 0x49, 0x9f, 0x35, 0x70, 0x35, 0xe0, 0x3c,
0x98, 0x10, 0x5b, 0x9d, 0x46, 0xc9, 0x8e, 0x8d, 0x59, 0xaa, 0xaf, 0xd6, 0x5e, 0xbe, 0x92, 0x34,
0x24, 0x42, 0xe2, 0x30, 0xca, 0x01, 0xbd, 0xef, 0x0d, 0xa8, 0x6e, 0x4f, 0xd1, 0x06, 0xd4, 0x46,
0xdc, 0x4f, 0xdb, 0xc6, 0xba, 0xd1, 0x3f, 0xb2, 0xb9, 0x6a, 0x1d, 0x08, 0x90, 0xb5, 0x3d, 0x1d,
0x72, 0x3f, 0x75, 0x14, 0x0c, 0x5d, 0x84, 0x16, 0x4e, 0xe4, 0xd8, 0xa5, 0x6c, 0x87, 0xb7, 0xab,
0x4a, 0xe7, 0xe4, 0x0c, 0x9d, 0x41, 0x22, 0xc7, 0x37, 0xd8, 0x0e, 0x77, 0x9a, 0x58, 0x7f, 0xa1,
0x2e, 0x40, 0x46, 0x1e, 0xcb, 0x24, 0x26, 0xa2, 0x6d, 0xae, 0x9b, 0xfd, 0x45, 0x67, 0x9f, 0xa4,
0xc7, 0xa0, 0xbe, 0x3d, 0x75, 0xf0, 0xd7, 0xe8, 0x14, 0x40, 0xf6, 0x94, 0x3b, 0x4a, 0x25, 0x11,
0x8a, 0xd7, 0xa2, 0xd3, 0xca, 0x24, 0xc3, 0x4c, 0x80, 0xde, 0x82, 0x63, 0x25, 0x03, 0x8d, 0xa9,
0x2a, 0xcc, 0x52, 0xf1, 0x54, 0x8e, 0x3b, 0xec, 0xbd, 0x1f, 0x0c, 0x58, 0xd8, 0xa2, 0x01, 0xbb,
0xca, 0xbd, 0xff, 0xea, 0xc9, 0x55, 0x68, 0x7a, 0x63, 0x4c, 0x99, 0x4b, 0xfd, 0xb6, 0xb9, 0x6e,
0xf4, 0x5b, 0xce, 0x82, 0x3a, 0xdf, 0xf0, 0xd1, 0x19, 0x38, 0x8a, 0x3d, 0x8f, 0x27, 0x4c, 0xba,
0x2c, 0x09, 0x47, 0x24, 0x6e, 0xd7, 0xd6, 0x8d, 0x7e, 0xcd, 0x59, 0xd2, 0xd2, 0xcf, 0x94, 0xb0,
0xf7, 0x5d, 0x15, 0x96, 0x35, 0xa9, 0xab, 0x34, 0x26, 0x9e, 0x1c, 0x24, 0xd3, 0xc3, 0xd8, 0x5d,
0x00, 0x88, 0x92, 0xd1, 0x84, 0x7a, 0xee, 0x1d, 0x92, 0xea, 0x9c, 0x1c, 0xb7, 0xf2, 0xf4, 0x5b,
0x45, 0xfa, 0xad, 0x01, 0x4b, 0x9d, 0x56, 0x8e, 0xbb, 0x49, 0xd2, 0x7f, 0x4f, 0x15, 0x75, 0xa0,
0x29, 0xc8, 0x97, 0x09, 0x61, 0x1e, 0x69, 0xd7, 0x15, 0xa0, 0x3c, 0xa3, 0x77, 0xc0, 0x94, 0x34,
0x6a, 0x37, 0x14, 0x97, 0xd7, 0x67, 0xd5, 0x14, 0x8d, 0x86, 0xd5, 0xb6, 0xe1, 0x64, 0xb0, 0x4b,
0xaf, 0x3d, 0xba, 0xbf, 0x71, 0x2c, 0xc7, 0x6c, 0x08, 0xff, 0xce, 0xfa, 0x39, 0xeb, 0xdd, 0xf7,
0x7a, 0xdf, 0x9a, 0xd0, 0xc8, 0x2b, 0x0f, 0x9d, 0x83, 0x66, 0x48, 0x84, 0xc0, 0x81, 0xf2, 0xde,
0x7c, 0xa5, 0x7b, 0x25, 0x0a, 0x21, 0xa8, 0x85, 0x24, 0xcc, 0x0b, 0xb4, 0xe5, 0xa8, 0xef, 0xcc,
0xad, 0xac, 0x05, 0x78, 0x22, 0xdd, 0x31, 0xa1, 0xc1, 0x58, 0x2a, 0xbf, 0x6b, 0xce, 0x92, 0x96,
0x5e, 0x57, 0x42, 0xf4, 0x06, 0xb4, 0x12, 0xc6, 0x63, 0x9f, 0xc4, 0xc4, 0x57, 0x8e, 0x37, 0x9d,
0x3d, 0x01, 0xfa, 0x02, 0x56, 0x0a, 0x23, 0x65, 0x3f, 0x29, 0xef, 0x8f, 0x6c, 0x76, 0x0e, 0x70,
0xda, 0x2e, 0x10, 0xc3, 0xe6, 0x83, 0xc7, 0x6b, 0xc6, 0xdd, 0x27, 0x6b, 0x86, 0xb3, 0xac, 0xd5,
0xcb, 0x3b, 0x34, 0x84, 0x15, 0x32, 0x95, 0x84, 0x09, 0xca, 0x99, 0xcb, 0x23, 0x49, 0x39, 0x13,
0xed, 0x3f, 0x17, 0xe6, 0xf8, 0xb9, 0x5c, 0xe2, 0x3f, 0xcf, 0xe1, 0xe8, 0x36, 0x74, 0x19, 0x67,
0xae, 0x17, 0x53, 0x49, 0x3d, 0x3c, 0x71, 0x67, 0x18, 0x3c, 0x36, 0xc7, 0xe0, 0x49, 0xc6, 0xd9,
0x15, 0xad, 0xfb, 0xc9, 0x4b, 0xb6, 0x7b, 0xbf, 0x1a, 0xd0, 0x2c, 0xda, 0x19, 0x7d, 0x0c, 0x8b,
0x59, 0x0b, 0x91, 0x58, 0xf5, 0x42, 0x91, 0x8e, 0x53, 0x33, 0x32, 0xbc, 0xa5, 0x60, 0x6a, 0x06,
0x1c, 0x11, 0xe5, 0xb7, 0x40, 0x7d, 0x30, 0x77, 0x08, 0xd1, 0x65, 0x3a, 0xab, 0x34, 0xae, 0x11,
0xe2, 0x64, 0x10, 0x74, 0x39, 0x2f, 0x22, 0x73, 0x6e, 0x11, 0x9d, 0xf8, 0xe3, 0x60, 0xed, 0xe8,
0xba, 0xea, 0xfd, 0x68, 0x00, 0xec, 0xd1, 0x78, 0xa9, 0x4f, 0x8c, 0xbf, 0xd7, 0x27, 0x17, 0xa1,
0x15, 0x72, 0x9f, 0x1c, 0x36, 0xef, 0x6e, 0x71, 0x9f, 0xe4, 0xf3, 0x2e, 0xd4, 0x5f, 0x2f, 0xf4,
0x87, 0xf9, 0x62, 0x7f, 0xf4, 0x9e, 0x56, 0xa1, 0x59, 0xa8, 0xa0, 0x0f, 0xa1, 0x21, 0x28, 0x0b,
0x26, 0x44, 0x73, 0xea, 0xcd, 0xb1, 0x6f, 0x6d, 0x29, 0xe4, 0xf5, 0x8a, 0xa3, 0x75, 0xd0, 0x07,
0x50, 0x57, 0xdb, 0x45, 0x93, 0x7b, 0x73, 0x9e, 0xf2, 0xad, 0x0c, 0x78, 0xbd, 0xe2, 0xe4, 0x1a,
0x9d, 0x01, 0x34, 0x72, 0x73, 0xe8, 0x7d, 0xa8, 0x65, 0xbc, 0x15, 0x81, 0xa3, 0x9b, 0xa7, 0xf7,
0xd9, 0x28, 0xf6, 0xcd, 0xfe, 0xb4, 0x66, 0xf6, 0x1c, 0xa5, 0xd0, 0xb9, 0x6b, 0x40, 0x5d, 0x59,
0x45, 0x37, 0xa1, 0x39, 0xa2, 0x12, 0xc7, 0x31, 0x2e, 0x62, 0x6b, 0x17, 0x66, 0xf2, 0xad, 0x68,
0x95, 0x4b, 0xb0, 0xb0, 0x75, 0x85, 0x87, 0x11, 0xf6, 0xe4, 0x90, 0xca, 0x41, 0xa6, 0xe6, 0x94,
0x06, 0xd0, 0x25, 0x80, 0x32, 0xea, 0xd9, 0xac, 0x35, 0x0f, 0x0b, 0x7b, 0xab, 0x08, 0xbb, 0x18,
0xd6, 0xc1, 0x14, 0x49, 0xd8, 0xfb, 0xa6, 0x0a, 0xe6, 0x35, 0x42, 0x50, 0x0a, 0x0d, 0x1c, 0x66,
0x63, 0x4b, 0xd7, 0x6a, 0xb9, 0xe1, 0xb2, 0xe5, 0xbb, 0x8f, 0x0a, 0x65, 0xc3, 0x6b, 0x0f, 0x1e,
0xaf, 0x55, 0x7e, 0x79, 0xb2, 0xd6, 0x0f, 0xa8, 0x1c, 0x27, 0x23, 0xcb, 0xe3, 0xa1, 0x5d, 0x2c,
0xf6, 0xb2, 0xc2, 0x6c, 0x99, 0x46, 0x44, 0x28, 0x05, 0xf1, 0xd3, 0xf3, 0x7b, 0x67, 0x17, 0x27,
0x24, 0xc0, 0x5e, 0xea, 0x66, 0xeb, 0x5b, 0xfc, 0xfc, 0xfc, 0xde, 0x59, 0xc3, 0xd1, 0x0f, 0xa2,
0x93, 0xd0, 0x0a, 0xb0, 0x70, 0x27, 0x34, 0xa4, 0x52, 0xa5, 0xa7, 0xe6, 0x34, 0x03, 0x2c, 0x3e,
0xcd, 0xce, 0xc8, 0x82, 0x7a, 0x84, 0x53, 0x12, 0xe7, 0xd3, 0x77, 0xd8, 0x7e, 0x74, 0x7f, 0xe3,
0xb8, 0x66, 0x36, 0xf0, 0xfd, 0x98, 0x08, 0xb1, 0x25, 0x63, 0xca, 0x02, 0x27, 0x87, 0xa1, 0x4d,
0x58, 0x08, 0x62, 0xcc, 0xa4, 0x1e, 0xc7, 0xf3, 0x34, 0x0a, 0x60, 0xef, 0x37, 0x03, 0xcc, 0x6d,
0x1a, 0xfd, 0x9f, 0x31, 0x38, 0x07, 0x0d, 0x49, 0xa3, 0x88, 0xc4, 0xf9, 0x2c, 0x9e, 0xc3, 0x5a,
0xe3, 0x2e, 0x9d, 0x78, 0x34, 0xab, 0xa3, 0x7b, 0xbb, 0x06, 0x2c, 0x0d, 0x92, 0x69, 0xde, 0xcf,
0x57, 0xb1, 0xc4, 0x59, 0x44, 0x70, 0x6e, 0x41, 0x15, 0xdc, 0xdc, 0x88, 0x68, 0x20, 0xfa, 0x08,
0x9a, 0x59, 0x45, 0xbb, 0x3e, 0xf7, 0x74, 0xc3, 0x9c, 0x7e, 0xc5, 0xec, 0xda, 0xbf, 0x81, 0x9d,
0x05, 0xa1, 0xff, 0x28, 0x14, 0x8d, 0x62, 0xfe, 0xc3, 0x46, 0x41, 0xcb, 0x60, 0x0a, 0x1a, 0xa8,
0xd4, 0x2d, 0x3a, 0xd9, 0xe7, 0xcc, 0xad, 0x37, 0xbc, 0xfc, 0xe0, 0x59, 0xd7, 0x78, 0xf8, 0xac,
0x6b, 0x3c, 0x7d, 0xd6, 0x35, 0xee, 0xee, 0x76, 0x2b, 0x0f, 0x77, 0xbb, 0x95, 0xdf, 0x77, 0xbb,
0x95, 0xdb, 0x67, 0x0e, 0x4f, 0x88, 0x2d, 0xa7, 0xa3, 0x86, 0x1a, 0x64, 0x17, 0xfe, 0x0a, 0x00,
0x00, 0xff, 0xff, 0x72, 0x63, 0x4f, 0x0e, 0x05, 0x0b, 0x00, 0x00,
// 1170 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xcf, 0x8f, 0x14, 0xc5,
0x17, 0xdf, 0x9e, 0x9e, 0x99, 0x9d, 0x79, 0xcc, 0xc2, 0x6e, 0x7d, 0xe1, 0x9b, 0xd9, 0x41, 0x66,
0xd7, 0x21, 0xe8, 0x84, 0xb8, 0xdd, 0xb0, 0x18, 0x45, 0x62, 0xc4, 0x19, 0x90, 0x40, 0x10, 0x8d,
0xbd, 0x7b, 0xe2, 0xd2, 0xa9, 0xe9, 0xae, 0xed, 0xa9, 0x30, 0x5d, 0xd5, 0x76, 0x55, 0xeb, 0xf4,
0xd1, 0x8b, 0x9e, 0x4c, 0x88, 0x17, 0x13, 0xfd, 0x07, 0x8c, 0x27, 0x0e, 0x24, 0xfe, 0x0b, 0x78,
0x23, 0x9c, 0x8c, 0x07, 0x20, 0xec, 0x81, 0x3f, 0x43, 0xd3, 0xd5, 0xd5, 0xbd, 0x0b, 0x0c, 0xb3,
0x1a, 0x8d, 0x7a, 0xe9, 0x74, 0xbd, 0xfa, 0xbc, 0x57, 0x9f, 0x7a, 0xaf, 0xde, 0x0f, 0xe8, 0x78,
0x5c, 0x84, 0x5c, 0xd8, 0x72, 0x6a, 0x7f, 0x76, 0x76, 0x44, 0x24, 0x3e, 0x6b, 0xcb, 0xa9, 0x15,
0xc5, 0x5c, 0x72, 0xb4, 0x92, 0xef, 0x59, 0x72, 0x6a, 0xe9, 0xbd, 0xce, 0x6a, 0x2e, 0x72, 0x15,
0xc0, 0xd6, 0xfb, 0x6a, 0xd1, 0x59, 0xc1, 0x21, 0x65, 0xdc, 0x56, 0x5f, 0x2d, 0x3a, 0x1a, 0xf0,
0x80, 0xe7, 0xd0, 0xec, 0x4f, 0x4b, 0x37, 0xf4, 0x91, 0x5e, 0x9c, 0x46, 0x92, 0xdb, 0x61, 0x32,
0x91, 0x54, 0xd0, 0xa0, 0x3c, 0xbf, 0x10, 0x68, 0x78, 0x57, 0xc3, 0x47, 0x58, 0x90, 0x12, 0xe3,
0x71, 0xca, 0xf4, 0xfe, 0xeb, 0x7b, 0x37, 0x10, 0x34, 0x60, 0x94, 0xed, 0x59, 0xd2, 0x6b, 0x0d,
0x5c, 0x0d, 0x38, 0x0f, 0x26, 0xc4, 0x56, 0xab, 0x51, 0xb2, 0x63, 0x63, 0x96, 0xea, 0xad, 0xb5,
0xe7, 0xb7, 0x24, 0x0d, 0x89, 0x90, 0x38, 0x8c, 0x72, 0x40, 0xef, 0x6b, 0x03, 0x2a, 0xdb, 0x53,
0xb4, 0x01, 0xd5, 0x11, 0xf7, 0xd3, 0xb6, 0xb1, 0x6e, 0xf4, 0x0f, 0x6d, 0xae, 0x5a, 0x2f, 0x38,
0xc8, 0xda, 0x9e, 0x0e, 0xb9, 0x9f, 0x3a, 0x0a, 0x86, 0xce, 0x43, 0x13, 0x27, 0x72, 0xec, 0x52,
0xb6, 0xc3, 0xdb, 0x15, 0xa5, 0x73, 0x7c, 0x86, 0xce, 0x20, 0x91, 0xe3, 0x6b, 0x6c, 0x87, 0x3b,
0x0d, 0xac, 0xff, 0x50, 0x17, 0x20, 0x23, 0x8f, 0x65, 0x12, 0x13, 0xd1, 0x36, 0xd7, 0xcd, 0x7e,
0xcb, 0xd9, 0x27, 0xe9, 0x31, 0xa8, 0x6d, 0x4f, 0x1d, 0xfc, 0x39, 0x3a, 0x01, 0x90, 0x1d, 0xe5,
0x8e, 0x52, 0x49, 0x84, 0xe2, 0xd5, 0x72, 0x9a, 0x99, 0x64, 0x98, 0x09, 0xd0, 0x6b, 0x70, 0xa4,
0x64, 0xa0, 0x31, 0x15, 0x85, 0x59, 0x2a, 0x8e, 0xca, 0x71, 0x07, 0x9d, 0xf7, 0x8d, 0x01, 0x8b,
0x5b, 0x34, 0x60, 0x97, 0xb9, 0xf7, 0x77, 0x1d, 0xb9, 0x0a, 0x0d, 0x6f, 0x8c, 0x29, 0x73, 0xa9,
0xdf, 0x36, 0xd7, 0x8d, 0x7e, 0xd3, 0x59, 0x54, 0xeb, 0x6b, 0x3e, 0x3a, 0x05, 0x87, 0xb1, 0xe7,
0xf1, 0x84, 0x49, 0x97, 0x25, 0xe1, 0x88, 0xc4, 0xed, 0xea, 0xba, 0xd1, 0xaf, 0x3a, 0x4b, 0x5a,
0xfa, 0x91, 0x12, 0xf6, 0xbe, 0xaa, 0xc0, 0xb2, 0x26, 0x75, 0x99, 0xc6, 0xc4, 0x93, 0x83, 0x64,
0x7a, 0x10, 0xbb, 0x73, 0x00, 0x51, 0x32, 0x9a, 0x50, 0xcf, 0xbd, 0x45, 0x52, 0x1d, 0x93, 0xa3,
0x56, 0x1e, 0x7e, 0xab, 0x08, 0xbf, 0x35, 0x60, 0xa9, 0xd3, 0xcc, 0x71, 0xd7, 0x49, 0xfa, 0xd7,
0xa9, 0xa2, 0x0e, 0x34, 0x04, 0xf9, 0x34, 0x21, 0xcc, 0x23, 0xed, 0x9a, 0x02, 0x94, 0x6b, 0xf4,
0x06, 0x98, 0x92, 0x46, 0xed, 0xba, 0xe2, 0xf2, 0xff, 0x59, 0x6f, 0x8a, 0x46, 0xc3, 0x4a, 0xdb,
0x70, 0x32, 0xd8, 0x85, 0xff, 0x3d, 0xb8, 0xbb, 0x71, 0x24, 0xc7, 0x6c, 0x08, 0xff, 0xd6, 0xfa,
0x19, 0xeb, 0xcd, 0xb7, 0x7a, 0x5f, 0x9a, 0x50, 0xcf, 0x5f, 0x1e, 0x3a, 0x03, 0x8d, 0x90, 0x08,
0x81, 0x03, 0x75, 0x7b, 0xf3, 0xa5, 0xd7, 0x2b, 0x51, 0x08, 0x41, 0x35, 0x24, 0x61, 0xfe, 0x40,
0x9b, 0x8e, 0xfa, 0xcf, 0xae, 0x95, 0xa5, 0x00, 0x4f, 0xa4, 0x3b, 0x26, 0x34, 0x18, 0x4b, 0x75,
0xef, 0xaa, 0xb3, 0xa4, 0xa5, 0x57, 0x95, 0x10, 0xbd, 0x02, 0xcd, 0x84, 0xf1, 0xd8, 0x27, 0x31,
0xf1, 0xd5, 0xc5, 0x1b, 0xce, 0x9e, 0x00, 0x7d, 0x02, 0x2b, 0x85, 0x91, 0x32, 0x9f, 0xd4, 0xed,
0x0f, 0x6d, 0x76, 0x5e, 0xe0, 0xb4, 0x5d, 0x20, 0x86, 0x8d, 0x7b, 0x0f, 0xd7, 0x8c, 0xdb, 0x8f,
0xd6, 0x0c, 0x67, 0x59, 0xab, 0x97, 0x7b, 0x68, 0x08, 0x2b, 0x64, 0x2a, 0x09, 0x13, 0x94, 0x33,
0x97, 0x47, 0x92, 0x72, 0x26, 0xda, 0xbf, 0x2d, 0xce, 0xb9, 0xe7, 0x72, 0x89, 0xff, 0x38, 0x87,
0xa3, 0x9b, 0xd0, 0x65, 0x9c, 0xb9, 0x5e, 0x4c, 0x25, 0xf5, 0xf0, 0xc4, 0x9d, 0x61, 0xf0, 0xc8,
0x1c, 0x83, 0xc7, 0x19, 0x67, 0x97, 0xb4, 0xee, 0x07, 0xcf, 0xd9, 0xee, 0x7d, 0x5f, 0x81, 0x56,
0x1e, 0x88, 0x4b, 0x3c, 0x8c, 0xb0, 0xfc, 0x67, 0xc3, 0xf1, 0x5f, 0xf7, 0xce, 0x4f, 0x06, 0x34,
0x8a, 0x62, 0x87, 0xde, 0x87, 0x56, 0x56, 0x60, 0x48, 0xac, 0x2a, 0x45, 0xe1, 0x9d, 0x13, 0x33,
0xde, 0xff, 0x96, 0x82, 0xa9, 0x0a, 0x79, 0x48, 0x94, 0xff, 0x02, 0xf5, 0xc1, 0xdc, 0x21, 0x44,
0x27, 0xf1, 0xac, 0xc4, 0xb9, 0x42, 0x88, 0x93, 0x41, 0xd0, 0xc5, 0x3c, 0xc5, 0xcc, 0xb9, 0x29,
0x76, 0xec, 0xd7, 0x17, 0x33, 0x4b, 0x67, 0x5d, 0xef, 0x5b, 0x03, 0x60, 0x8f, 0xc6, 0x73, 0x55,
0xc4, 0xf8, 0x63, 0x55, 0xe4, 0x3c, 0x34, 0x43, 0xee, 0x93, 0x83, 0xba, 0xc1, 0x0d, 0xee, 0x93,
0xbc, 0x1b, 0x84, 0xfa, 0xef, 0x99, 0xea, 0x61, 0x3e, 0x5b, 0x3d, 0x7a, 0x8f, 0x2b, 0xd0, 0x28,
0x54, 0xd0, 0xbb, 0x50, 0x17, 0x94, 0x05, 0x13, 0xa2, 0x39, 0xf5, 0xe6, 0xd8, 0xb7, 0xb6, 0x14,
0xf2, 0xea, 0x82, 0xa3, 0x75, 0xd0, 0x3b, 0x50, 0x53, 0xbd, 0x57, 0x93, 0x7b, 0x75, 0x9e, 0xf2,
0x8d, 0x0c, 0x78, 0x75, 0xc1, 0xc9, 0x35, 0x3a, 0x03, 0xa8, 0xe7, 0xe6, 0xd0, 0xdb, 0x50, 0xcd,
0x78, 0x2b, 0x02, 0x87, 0x37, 0x4f, 0xee, 0xb3, 0x51, 0x74, 0xe3, 0xfd, 0x61, 0xcd, 0xec, 0x39,
0x4a, 0xa1, 0x73, 0xdb, 0x80, 0x9a, 0xb2, 0x8a, 0xae, 0x43, 0x63, 0x44, 0x25, 0x8e, 0x63, 0x5c,
0xf8, 0xd6, 0x2e, 0xcc, 0xe4, 0x33, 0x83, 0x55, 0x8e, 0x08, 0x85, 0x2d, 0x95, 0x6d, 0x9e, 0x1c,
0x52, 0x39, 0xc8, 0xd4, 0x9c, 0xd2, 0x00, 0xba, 0x00, 0x50, 0x7a, 0x3d, 0xeb, 0x44, 0xe6, 0x41,
0x6e, 0x6f, 0x16, 0x6e, 0x17, 0xc3, 0x1a, 0x98, 0x22, 0x09, 0x7b, 0x5f, 0x54, 0xc0, 0xbc, 0x42,
0x08, 0x4a, 0xa1, 0x8e, 0xc3, 0xac, 0xa8, 0xeb, 0xb7, 0x5a, 0xf6, 0xff, 0x6c, 0x34, 0xd9, 0x47,
0x85, 0xb2, 0xe1, 0x95, 0x7b, 0x0f, 0xd7, 0x16, 0x7e, 0x7c, 0xb4, 0xd6, 0x0f, 0xa8, 0x1c, 0x27,
0x23, 0xcb, 0xe3, 0xa1, 0x5d, 0x8c, 0x3d, 0xe5, 0x0b, 0xb3, 0x65, 0x1a, 0x11, 0xa1, 0x14, 0xc4,
0x77, 0x4f, 0xef, 0x9c, 0x6e, 0x4d, 0x48, 0x80, 0xbd, 0xd4, 0xcd, 0x86, 0x1b, 0xf1, 0xc3, 0xd3,
0x3b, 0xa7, 0x0d, 0x47, 0x1f, 0x88, 0x8e, 0x43, 0x33, 0xc0, 0xc2, 0x9d, 0xd0, 0x90, 0x4a, 0x15,
0x9e, 0xaa, 0xd3, 0x08, 0xb0, 0xf8, 0x30, 0x5b, 0x23, 0x0b, 0x6a, 0x11, 0x4e, 0x49, 0x9c, 0xf7,
0xa6, 0x61, 0xfb, 0xc1, 0xdd, 0x8d, 0xa3, 0x9a, 0xd9, 0xc0, 0xf7, 0x63, 0x22, 0xc4, 0x96, 0x8c,
0x29, 0x0b, 0x9c, 0x1c, 0x86, 0x36, 0x61, 0x31, 0x88, 0x31, 0x93, 0xba, 0x59, 0xcd, 0xd3, 0x28,
0x80, 0xbd, 0x9f, 0x0d, 0x30, 0xb7, 0x69, 0xf4, 0x6f, 0xfa, 0xe0, 0x0c, 0xd4, 0x25, 0x8d, 0x22,
0x12, 0xe7, 0xa5, 0x71, 0x0e, 0x6b, 0x8d, 0xbb, 0x70, 0xec, 0xc1, 0xac, 0x8c, 0xee, 0xed, 0x1a,
0xb0, 0x34, 0x48, 0xa6, 0x79, 0x3e, 0x5f, 0xc6, 0x12, 0x67, 0x1e, 0xc1, 0xb9, 0x05, 0xf5, 0xe0,
0xe6, 0x7a, 0x44, 0x03, 0xd1, 0x7b, 0xd0, 0xc8, 0x5e, 0xb4, 0xeb, 0x73, 0x4f, 0x27, 0xcc, 0xc9,
0x97, 0xd4, 0xae, 0xfd, 0xf3, 0x89, 0xb3, 0x28, 0xf4, 0x18, 0x55, 0x24, 0x8a, 0xf9, 0x27, 0x13,
0x05, 0x2d, 0x83, 0x29, 0x68, 0xa0, 0x42, 0xd7, 0x72, 0xb2, 0xdf, 0x99, 0x33, 0xc1, 0xf0, 0xe2,
0xbd, 0x27, 0x5d, 0xe3, 0xfe, 0x93, 0xae, 0xf1, 0xf8, 0x49, 0xd7, 0xb8, 0xbd, 0xdb, 0x5d, 0xb8,
0xbf, 0xdb, 0x5d, 0xf8, 0x65, 0xb7, 0xbb, 0x70, 0xf3, 0xd4, 0xc1, 0x01, 0xb1, 0xe5, 0x74, 0x54,
0x57, 0x85, 0xec, 0xdc, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x58, 0xe5, 0xd5, 0x23, 0x0c,
0x00, 0x00,
}
func (m *Tx) Marshal() (dAtA []byte, err error) {
@ -1448,6 +1550,87 @@ func (m *TxBody) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *TxBodyCompat) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *TxBodyCompat) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *TxBodyCompat) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.NonCriticalExtensionOptions) > 0 {
for iNdEx := len(m.NonCriticalExtensionOptions) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.NonCriticalExtensionOptions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x7f
i--
dAtA[i] = 0xfa
}
}
if len(m.ExtensionOptions) > 0 {
for iNdEx := len(m.ExtensionOptions) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.ExtensionOptions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x3f
i--
dAtA[i] = 0xfa
}
}
if m.TimeoutHeight != 0 {
i = encodeVarintTx(dAtA, i, uint64(m.TimeoutHeight))
i--
dAtA[i] = 0x18
}
if len(m.Memo) > 0 {
i -= len(m.Memo)
copy(dAtA[i:], m.Memo)
i = encodeVarintTx(dAtA, i, uint64(len(m.Memo)))
i--
dAtA[i] = 0x12
}
if len(m.Messages) > 0 {
for iNdEx := len(m.Messages) - 1; iNdEx >= 0; iNdEx-- {
{
size, err := m.Messages[iNdEx].MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func (m *AuthInfo) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2019,6 +2202,40 @@ func (m *TxBody) Size() (n int) {
return n
}
func (m *TxBodyCompat) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Messages) > 0 {
for _, e := range m.Messages {
l = e.Size()
n += 1 + l + sovTx(uint64(l))
}
}
l = len(m.Memo)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
if m.TimeoutHeight != 0 {
n += 1 + sovTx(uint64(m.TimeoutHeight))
}
if len(m.ExtensionOptions) > 0 {
for _, e := range m.ExtensionOptions {
l = e.Size()
n += 2 + l + sovTx(uint64(l))
}
}
if len(m.NonCriticalExtensionOptions) > 0 {
for _, e := range m.NonCriticalExtensionOptions {
l = e.Size()
n += 2 + l + sovTx(uint64(l))
}
}
return n
}
func (m *AuthInfo) Size() (n int) {
if m == nil {
return 0
@ -3162,6 +3379,209 @@ func (m *TxBody) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *TxBodyCompat) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: TxBodyCompat: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: TxBodyCompat: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Messages", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Messages = append(m.Messages, &any.Any{})
if err := m.Messages[len(m.Messages)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Memo", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Memo = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field TimeoutHeight", wireType)
}
m.TimeoutHeight = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
m.TimeoutHeight |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
case 1023:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ExtensionOptions", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.ExtensionOptions = append(m.ExtensionOptions, &any.Any{})
if err := m.ExtensionOptions[len(m.ExtensionOptions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 2047:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field NonCriticalExtensionOptions", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.NonCriticalExtensionOptions = append(m.NonCriticalExtensionOptions, &any.Any{})
if err := m.NonCriticalExtensionOptions[len(m.NonCriticalExtensionOptions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTx(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthTx
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *AuthInfo) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0

View File

@ -114,14 +114,26 @@ func (w *builder) getTx() (*gogoTxWrapper, error) {
if err != nil {
return nil, fmt.Errorf("unable to convert messages: %w", err)
}
body := &txv1beta1.TxBody{
Messages: anyMsgs,
Memo: w.memo,
TimeoutHeight: w.timeoutHeight,
TimeoutTimestamp: timestamppb.New(w.timeoutTimestamp),
Unordered: w.unordered,
ExtensionOptions: intoAnyV2(w.extensionOptions),
NonCriticalExtensionOptions: intoAnyV2(w.nonCriticalExtensionOptions),
var body proto.Message
if !w.unordered && (w.timeoutTimestamp.IsZero() || w.timeoutTimestamp.Unix() == 0) {
body = &txv1beta1.TxBodyCompat{
Messages: anyMsgs,
Memo: w.memo,
TimeoutHeight: w.timeoutHeight,
ExtensionOptions: intoAnyV2(w.extensionOptions),
NonCriticalExtensionOptions: intoAnyV2(w.nonCriticalExtensionOptions),
}
} else {
body = &txv1beta1.TxBody{
Messages: anyMsgs,
Memo: w.memo,
TimeoutHeight: w.timeoutHeight,
TimeoutTimestamp: timestamppb.New(w.timeoutTimestamp),
Unordered: w.unordered,
ExtensionOptions: intoAnyV2(w.extensionOptions),
NonCriticalExtensionOptions: intoAnyV2(w.nonCriticalExtensionOptions),
}
}
fee, err := w.getFee()