diff --git a/CHANGELOG.md b/CHANGELOG.md index 80acb6b96228..f0d68750ee8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,7 @@ Every module contains its own CHANGELOG.md. Please refer to the module you are i ### Bug Fixes * (query) [23002](https://github.com/cosmos/cosmos-sdk/pull/23002) Fix collection filtered pagination. +* (x/auth/tx) [#23148](https://github.com/cosmos/cosmos-sdk/pull/23148) Avoid panic from intoAnyV2 when v1.PublicKey is optional. ### API Breaking Changes diff --git a/x/auth/tx/builder.go b/x/auth/tx/builder.go index 2b1c866e8e0a..17b23f8b645b 100644 --- a/x/auth/tx/builder.go +++ b/x/auth/tx/builder.go @@ -293,9 +293,11 @@ func intoV2SignerInfo(v1s []*tx.SignerInfo) []*txv1beta1.SignerInfo { modeInfoV2 := new(txv1beta1.ModeInfo) intoV2ModeInfo(v1.ModeInfo, modeInfoV2) v2 := &txv1beta1.SignerInfo{ - PublicKey: intoAnyV2([]*codectypes.Any{v1.PublicKey})[0], - ModeInfo: modeInfoV2, - Sequence: v1.Sequence, + ModeInfo: modeInfoV2, + Sequence: v1.Sequence, + } + if v1.PublicKey != nil { + v2.PublicKey = intoAnyV2([]*codectypes.Any{v1.PublicKey})[0] } v2s[i] = v2 } diff --git a/x/auth/tx/builder_test.go b/x/auth/tx/builder_test.go new file mode 100644 index 000000000000..9667f42d7ba2 --- /dev/null +++ b/x/auth/tx/builder_test.go @@ -0,0 +1,15 @@ +package tx + +import ( + "testing" + + any "github.com/cosmos/gogoproto/types/any" + "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/types/tx" +) + +func TestIntoV2SignerInfo(t *testing.T) { + require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{}})) + require.NotNil(t, intoV2SignerInfo([]*tx.SignerInfo{{PublicKey: &any.Any{}}})) +}