diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fc3f3dc8526..4c0f1f48767e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,8 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### Bug Fixes +* (x/auth/tx) [#23492](https://github.com/cosmos/cosmos-sdk/pull/23492) Add missing timeoutTimestamp in newBuilderFromDecodedTx. + ### API Breaking Changes * (x/params) [#22995](https://github.com/cosmos/cosmos-sdk/pull/22995) Remove `x/params`. Migrate to the new params system introduced in `v0.47` as demonstrated [here](https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md#xparams). diff --git a/x/auth/tx/builder.go b/x/auth/tx/builder.go index d8dcc5edb311..e67fb21b9bbe 100644 --- a/x/auth/tx/builder.go +++ b/x/auth/tx/builder.go @@ -63,6 +63,7 @@ func newBuilderFromDecodedTx( codec: codec, msgs: decoded.Messages, timeoutHeight: decoded.GetTimeoutHeight(), + timeoutTimestamp: decoded.GetTimeoutTimeStamp(), granter: decoded.FeeGranter(), payer: payer, unordered: decoded.GetUnordered(), diff --git a/x/auth/tx/builder_test.go b/x/auth/tx/builder_test.go index 9667f42d7ba2..ac9733dd8dfe 100644 --- a/x/auth/tx/builder_test.go +++ b/x/auth/tx/builder_test.go @@ -6,10 +6,32 @@ import ( any "github.com/cosmos/gogoproto/types/any" "github.com/stretchr/testify/require" + "github.com/cosmos/cosmos-sdk/client" + codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil" + "github.com/cosmos/cosmos-sdk/testutil" "github.com/cosmos/cosmos-sdk/types/tx" + authclient "github.com/cosmos/cosmos-sdk/x/auth/client" ) func TestIntoV2SignerInfo(t *testing.T) { require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{}})) require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{PublicKey: &any.Any{}}})) } + +func TestBuilderWithTimeoutTimestamp(t *testing.T) { + cdc := codectestutil.CodecOptions{}.NewCodec() + interfaceRegistry := cdc.InterfaceRegistry() + signingCtx := interfaceRegistry.SigningContext() + txConfig := NewTxConfig(cdc, signingCtx.AddressCodec(), signingCtx.ValidatorAddressCodec(), DefaultSignModes) + txBuilder := txConfig.NewTxBuilder() + encodedTx, err := txConfig.TxJSONEncoder()(txBuilder.GetTx()) + require.NoError(t, err) + file := testutil.WriteToNewTempFile(t, string(encodedTx)) + clientCtx := client.Context{InterfaceRegistry: interfaceRegistry, TxConfig: txConfig} + decodedTx, err := authclient.ReadTxFromFile(clientCtx, file.Name()) + require.NoError(t, err) + txBldr, err := txConfig.WrapTxBuilder(decodedTx) + require.NoError(t, err) + b := txBldr.(*builder) + require.False(t, b.timeoutTimestamp.IsZero()) +}