Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
co-authored by
Julien Robert
parent
2049c4b82a
commit
6ddf0af2e7
+55
-11
@@ -10,6 +10,9 @@ import (
|
||||
|
||||
runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
|
||||
appv1alpha1 "cosmossdk.io/api/cosmos/app/v1alpha1"
|
||||
authmodulev1 "cosmossdk.io/api/cosmos/auth/module/v1"
|
||||
stakingmodulev1 "cosmossdk.io/api/cosmos/staking/module/v1"
|
||||
"cosmossdk.io/core/address"
|
||||
"cosmossdk.io/core/appmodule"
|
||||
"cosmossdk.io/core/comet"
|
||||
"cosmossdk.io/core/event"
|
||||
@@ -23,10 +26,9 @@ import (
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/baseapp"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/codec/address"
|
||||
addresscodec "github.com/cosmos/cosmos-sdk/codec/address"
|
||||
codectypes "github.com/cosmos/cosmos-sdk/codec/types"
|
||||
"github.com/cosmos/cosmos-sdk/std"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
"github.com/cosmos/cosmos-sdk/types/msgservice"
|
||||
)
|
||||
@@ -73,6 +75,7 @@ func init() {
|
||||
ProvideHeaderInfoService,
|
||||
ProvideCometInfoService,
|
||||
ProvideBasicManager,
|
||||
ProvideAddressCodec,
|
||||
),
|
||||
appmodule.Invoke(SetupAppBuilder),
|
||||
)
|
||||
@@ -156,16 +159,10 @@ func SetupAppBuilder(inputs AppInputs) {
|
||||
}
|
||||
}
|
||||
|
||||
func ProvideInterfaceRegistry(customGetSigners []signing.CustomGetSigner) (codectypes.InterfaceRegistry, error) {
|
||||
func ProvideInterfaceRegistry(addressCodec address.Codec, validatorAddressCodec ValidatorAddressCodec, customGetSigners []signing.CustomGetSigner) (codectypes.InterfaceRegistry, error) {
|
||||
signingOptions := signing.Options{
|
||||
// using the global prefixes is a temporary solution until we refactor this
|
||||
// to get the address.Codec's from the container
|
||||
AddressCodec: address.Bech32Codec{
|
||||
Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
|
||||
},
|
||||
ValidatorAddressCodec: address.Bech32Codec{
|
||||
Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
|
||||
},
|
||||
AddressCodec: addressCodec,
|
||||
ValidatorAddressCodec: validatorAddressCodec,
|
||||
}
|
||||
for _, signer := range customGetSigners {
|
||||
signingOptions.DefineCustomGetSigners(signer.MsgType, signer.Fn)
|
||||
@@ -261,3 +258,50 @@ func ProvideHeaderInfoService(app *AppBuilder) header.Service {
|
||||
func ProvideBasicManager(app *AppBuilder) module.BasicManager {
|
||||
return app.app.basicManager
|
||||
}
|
||||
|
||||
type (
|
||||
// ValidatorAddressCodec is an alias for address.Codec for validator addresses.
|
||||
ValidatorAddressCodec address.Codec
|
||||
|
||||
// ConsensusAddressCodec is an alias for address.Codec for validator consensus addresses.
|
||||
ConsensusAddressCodec address.Codec
|
||||
)
|
||||
|
||||
type AddressCodecInputs struct {
|
||||
depinject.In
|
||||
|
||||
AuthConfig *authmodulev1.Module `optional:"true"`
|
||||
StakingConfig *stakingmodulev1.Module `optional:"true"`
|
||||
|
||||
AddressCodecFactory func() address.Codec `optional:"true"`
|
||||
ValidatorAddressCodecFactory func() ValidatorAddressCodec `optional:"true"`
|
||||
ConsensusAddressCodecFactory func() ConsensusAddressCodec `optional:"true"`
|
||||
}
|
||||
|
||||
// ProvideAddressCodec provides an address.Codec to the container for any
|
||||
// modules that want to do address string <> bytes conversion.
|
||||
func ProvideAddressCodec(in AddressCodecInputs) (address.Codec, ValidatorAddressCodec, ConsensusAddressCodec) {
|
||||
if in.AddressCodecFactory != nil && in.ValidatorAddressCodecFactory != nil && in.ConsensusAddressCodecFactory != nil {
|
||||
return in.AddressCodecFactory(), in.ValidatorAddressCodecFactory(), in.ConsensusAddressCodecFactory()
|
||||
}
|
||||
|
||||
if in.AuthConfig == nil || in.AuthConfig.Bech32Prefix == "" {
|
||||
panic("auth config bech32 prefix cannot be empty if no custom address codec is provided")
|
||||
}
|
||||
|
||||
if in.StakingConfig == nil {
|
||||
in.StakingConfig = &stakingmodulev1.Module{}
|
||||
}
|
||||
|
||||
if in.StakingConfig.Bech32PrefixValidator == "" {
|
||||
in.StakingConfig.Bech32PrefixValidator = fmt.Sprintf("%svaloper", in.AuthConfig.Bech32Prefix)
|
||||
}
|
||||
|
||||
if in.StakingConfig.Bech32PrefixConsensus == "" {
|
||||
in.StakingConfig.Bech32PrefixConsensus = fmt.Sprintf("%svalcons", in.AuthConfig.Bech32Prefix)
|
||||
}
|
||||
|
||||
return addresscodec.NewBech32Codec(in.AuthConfig.Bech32Prefix),
|
||||
addresscodec.NewBech32Codec(in.StakingConfig.Bech32PrefixValidator),
|
||||
addresscodec.NewBech32Codec(in.StakingConfig.Bech32PrefixConsensus)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user