fix(x/upgrade): register missing implementation for SoftwareUpgradeProposal (backport #23179) (#23377)

Co-authored-by: mmsqe <mavis@crypto.com>
Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
mergify[bot]
2025-01-14 11:16:42 +01:00
committed by GitHub
co-authored by mmsqe Julien Robert
parent d08147160c
commit ae5ab855b7
6 changed files with 80 additions and 5 deletions
+3
View File
@@ -25,6 +25,9 @@ Ref: https://keepachangelog.com/en/1.0.0/
## [Unreleased]
### Bug Fixes
* (x/upgrade) [#23179](https://github.com/cosmos/cosmos-sdk/pull/23179) Register missing implementation for SoftwareUpgradeProposal to avoid no concrete type registered for type URL /cosmos.upgrade.v1beta1.SoftwareUpgradeProposal against interface *v1beta1.Content error.
## [v0.2.0-rc.1](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.2.0-rc.1) - 2024-12-18
### Improvements
+1 -1
View File
@@ -46,7 +46,7 @@ require (
cosmossdk.io/schema v1.0.0 // indirect
cosmossdk.io/x/bank v0.2.0-rc.1 // indirect
cosmossdk.io/x/staking v0.2.0-rc.1 // indirect
cosmossdk.io/x/tx v1.0.0 // indirect; main
cosmossdk.io/x/tx v1.0.0 // main
filippo.io/edwards25519 v1.1.0 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
+5 -1
View File
@@ -3,6 +3,7 @@ package types
import (
"cosmossdk.io/core/registry"
coretransaction "cosmossdk.io/core/transaction"
"cosmossdk.io/x/gov/types/v1beta1"
"github.com/cosmos/cosmos-sdk/codec/legacy"
"github.com/cosmos/cosmos-sdk/types/msgservice"
@@ -23,6 +24,9 @@ func RegisterInterfaces(registrar registry.InterfaceRegistrar) {
&MsgSoftwareUpgrade{},
&MsgCancelUpgrade{},
)
registrar.RegisterImplementations(
(*v1beta1.Content)(nil),
&SoftwareUpgradeProposal{},
)
msgservice.RegisterMsgServiceDesc(registrar, &_Msg_serviceDesc)
}
+33
View File
@@ -0,0 +1,33 @@
package types
import (
"testing"
proto "github.com/cosmos/gogoproto/proto"
gogoprotoany "github.com/cosmos/gogoproto/types/any"
"github.com/stretchr/testify/require"
"cosmossdk.io/x/gov/types/v1beta1"
"cosmossdk.io/x/tx/signing"
codectestutil "github.com/cosmos/cosmos-sdk/codec/testutil"
"github.com/cosmos/cosmos-sdk/codec/types"
)
func TestInterfaceRegistrationOfContent(t *testing.T) {
opts := codectestutil.CodecOptions{}
registrar, err := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
ProtoFiles: proto.HybridResolver,
SigningOptions: signing.Options{
AddressCodec: opts.GetAddressCodec(),
ValidatorAddressCodec: opts.GetValidatorCodec(),
},
})
require.NoError(t, err)
RegisterInterfaces(registrar)
val := &gogoprotoany.Any{
TypeUrl: "/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal",
Value: []byte{},
}
require.NoError(t, registrar.UnpackAny(val, new(v1beta1.Content)))
}
+21
View File
@@ -0,0 +1,21 @@
package types
import (
"cosmossdk.io/x/gov/types"
"cosmossdk.io/x/gov/types/v1beta1"
)
// GetTitle returns the proposal title
func (sp *SoftwareUpgradeProposal) GetTitle() string { return sp.Title }
// GetDescription returns the proposal description
func (sp *SoftwareUpgradeProposal) GetDescription() string { return sp.Description }
// ProposalRoute returns the proposal router key
func (sp *SoftwareUpgradeProposal) ProposalRoute() string { return types.RouterKey }
// ProposalType is "Text"
func (sp *SoftwareUpgradeProposal) ProposalType() string { return v1beta1.ProposalTypeText }
// ValidateBasic validates the content's title and description of the proposal
func (sp *SoftwareUpgradeProposal) ValidateBasic() error { return v1beta1.ValidateAbstract(sp) }