feat(staking)!: add consensus and validator address codec in staking (#16959)
Co-authored-by: Facundo Medica <14063057+facundomedica@users.noreply.github.com>
This commit is contained in:
co-authored by
Facundo Medica
parent
b1ac5768f7
commit
e0be2b80fc
+2
-2
@@ -280,7 +280,7 @@ func NewSimApp(
|
||||
bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore)
|
||||
|
||||
// add keepers
|
||||
app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
|
||||
app.AccountKeeper = authkeeper.NewAccountKeeper(appCodec, runtime.NewKVStoreService(keys[authtypes.StoreKey]), authtypes.ProtoBaseAccount, maccPerms, authcodec.NewBech32Codec(sdk.Bech32MainPrefix), sdk.Bech32MainPrefix, authtypes.NewModuleAddress(govtypes.ModuleName).String())
|
||||
|
||||
app.BankKeeper = bankkeeper.NewBaseKeeper(
|
||||
appCodec,
|
||||
@@ -291,7 +291,7 @@ func NewSimApp(
|
||||
logger,
|
||||
)
|
||||
app.StakingKeeper = stakingkeeper.NewKeeper(
|
||||
appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(),
|
||||
appCodec, runtime.NewKVStoreService(keys[stakingtypes.StoreKey]), app.AccountKeeper, app.BankKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), authcodec.NewBech32Codec(sdk.Bech32PrefixValAddr), authcodec.NewBech32Codec(sdk.Bech32PrefixConsAddr),
|
||||
)
|
||||
app.MintKeeper = mintkeeper.NewKeeper(appCodec, runtime.NewKVStoreService(keys[minttypes.StoreKey]), app.StakingKeeper, app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName, authtypes.NewModuleAddress(govtypes.ModuleName).String())
|
||||
|
||||
|
||||
@@ -168,7 +168,6 @@ var (
|
||||
Name: authtypes.ModuleName,
|
||||
Config: appconfig.WrapAny(&authmodulev1.Module{
|
||||
Bech32Prefix: "cosmos",
|
||||
Bech32PrefixValidator: "cosmosvaloper",
|
||||
ModuleAccountPermissions: moduleAccPerms,
|
||||
// By default modules authority is the governance module. This is configurable with the following:
|
||||
// Authority: "group", // A custom module authority can be set using a module name
|
||||
@@ -186,8 +185,13 @@ var (
|
||||
}),
|
||||
},
|
||||
{
|
||||
Name: stakingtypes.ModuleName,
|
||||
Config: appconfig.WrapAny(&stakingmodulev1.Module{}),
|
||||
Name: stakingtypes.ModuleName,
|
||||
Config: appconfig.WrapAny(&stakingmodulev1.Module{
|
||||
// NOTE: specifying a prefix is only necessary when using bech32 addresses
|
||||
// If not specfied, the auth Bech32Prefix appended with "valoper" and "valcons" is used by default
|
||||
Bech32PrefixValidator: "cosmosvaloper",
|
||||
Bech32PrefixConsensus: "cosmosvalcons",
|
||||
}),
|
||||
},
|
||||
{
|
||||
Name: slashingtypes.ModuleName,
|
||||
|
||||
+13
-5
@@ -28,7 +28,6 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/types/module"
|
||||
"github.com/cosmos/cosmos-sdk/types/msgservice"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth"
|
||||
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
|
||||
"github.com/cosmos/cosmos-sdk/x/auth/vesting"
|
||||
authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module"
|
||||
"github.com/cosmos/cosmos-sdk/x/bank"
|
||||
@@ -42,6 +41,7 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/x/params"
|
||||
"github.com/cosmos/cosmos-sdk/x/slashing"
|
||||
"github.com/cosmos/cosmos-sdk/x/staking"
|
||||
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||
)
|
||||
|
||||
func TestSimAppExportAndBlockedAddrs(t *testing.T) {
|
||||
@@ -317,14 +317,15 @@ func (c customAddressCodec) BytesToString(bz []byte) (string, error) {
|
||||
|
||||
func TestAddressCodecFactory(t *testing.T) {
|
||||
var addrCodec address.Codec
|
||||
var valAddressCodec authtypes.ValidatorAddressCodec
|
||||
var valAddressCodec stakingtypes.ValidatorAddressCodec
|
||||
var consAddressCodec stakingtypes.ConsensusAddressCodec
|
||||
|
||||
err := depinject.Inject(
|
||||
depinject.Configs(
|
||||
network.MinimumAppConfig(),
|
||||
depinject.Supply(log.NewNopLogger()),
|
||||
),
|
||||
&addrCodec, &valAddressCodec)
|
||||
&addrCodec, &valAddressCodec, &consAddressCodec)
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, addrCodec)
|
||||
_, ok := addrCodec.(customAddressCodec)
|
||||
@@ -332,6 +333,9 @@ func TestAddressCodecFactory(t *testing.T) {
|
||||
require.NotNil(t, valAddressCodec)
|
||||
_, ok = valAddressCodec.(customAddressCodec)
|
||||
require.False(t, ok)
|
||||
require.NotNil(t, consAddressCodec)
|
||||
_, ok = consAddressCodec.(customAddressCodec)
|
||||
require.False(t, ok)
|
||||
|
||||
// Set the address codec to the custom one
|
||||
err = depinject.Inject(
|
||||
@@ -340,10 +344,11 @@ func TestAddressCodecFactory(t *testing.T) {
|
||||
depinject.Supply(
|
||||
log.NewNopLogger(),
|
||||
func() address.Codec { return customAddressCodec{} },
|
||||
func() authtypes.ValidatorAddressCodec { return customAddressCodec{} },
|
||||
func() stakingtypes.ValidatorAddressCodec { return customAddressCodec{} },
|
||||
func() stakingtypes.ConsensusAddressCodec { return customAddressCodec{} },
|
||||
),
|
||||
),
|
||||
&addrCodec, &valAddressCodec)
|
||||
&addrCodec, &valAddressCodec, &consAddressCodec)
|
||||
require.NoError(t, err)
|
||||
require.NotNil(t, addrCodec)
|
||||
_, ok = addrCodec.(customAddressCodec)
|
||||
@@ -351,4 +356,7 @@ func TestAddressCodecFactory(t *testing.T) {
|
||||
require.NotNil(t, valAddressCodec)
|
||||
_, ok = valAddressCodec.(customAddressCodec)
|
||||
require.True(t, ok)
|
||||
require.NotNil(t, consAddressCodec)
|
||||
_, ok = consAddressCodec.(customAddressCodec)
|
||||
require.True(t, ok)
|
||||
}
|
||||
|
||||
+13
-5
@@ -128,20 +128,28 @@ func NewSimApp(
|
||||
// add it below. By default the auth module uses simulation.RandomGenesisAccounts.
|
||||
//
|
||||
// authtypes.RandomGenesisAccountsFn(simulation.RandomGenesisAccounts),
|
||||
|
||||
//
|
||||
// For providing a custom a base account type add it below.
|
||||
// By default the auth module uses authtypes.ProtoBaseAccount().
|
||||
//
|
||||
// func() sdk.AccountI { return authtypes.ProtoBaseAccount() },
|
||||
|
||||
//
|
||||
// For providing a different address codec, add it below.
|
||||
// By default the auth module uses a Bech32 address codec,
|
||||
// with the prefix defined in the auth module configuration.
|
||||
// NOTE, if a custom address codec is provided, a custom validator
|
||||
// address codec must be provided as well.
|
||||
//
|
||||
// func() address.Codec { return <- custom address codec type -> }
|
||||
// func() auth.ValidatorAddressCodec { return <- custom validator address codec type -> }
|
||||
|
||||
//
|
||||
// STAKING
|
||||
//
|
||||
// For provinding a different validator and consensus address codec, add it below.
|
||||
// By default the staking module uses the bech32 prefix provided in the auth config,
|
||||
// and appends "valoper" and "valcons" for validator and consensus addresses respectively.
|
||||
// When providing a custom address codec in auth, a custom codec must be provided here as well.
|
||||
//
|
||||
// func() stakingtypes.ValidatorAddressCodec { return <- custom validator address codec type -> }
|
||||
// func() stakingtypes.ConsensusAddressCodec { return <- custom consensus address codec type -> }
|
||||
|
||||
//
|
||||
// MINT
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ module cosmossdk.io/simapp
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
cosmossdk.io/api v0.5.0
|
||||
cosmossdk.io/api v0.6.0
|
||||
cosmossdk.io/client/v2 v2.0.0-20230630094428-02b760776860
|
||||
cosmossdk.io/core v0.9.0
|
||||
cosmossdk.io/depinject v1.0.0-alpha.3
|
||||
|
||||
+2
-2
@@ -187,8 +187,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.5.0 h1:C0gzb5N3qYE0VEUlXleuilv7Z/7/MHhdOKkgn2Ugfnc=
|
||||
cosmossdk.io/api v0.5.0/go.mod h1:5Jc00Q4tSTcrZXvvE3J/ybvZK6DopLcp3ThK3X703QE=
|
||||
cosmossdk.io/api v0.6.0 h1:AEpx/sRZaQEusARZqAxbg20zRXnS6e1F+uoal39trOM=
|
||||
cosmossdk.io/api v0.6.0/go.mod h1:kJFAEMLN57y0viszHDPLMmieF0471o5QAwwApa+270M=
|
||||
cosmossdk.io/collections v0.3.0 h1:v0eEqLBxebAV+t+Ahwf9tSJOu95HVLINwROXx2TTZ08=
|
||||
cosmossdk.io/collections v0.3.0/go.mod h1:CHE1+niUElL9ikCpevRZcp0yqQ4TU0TrEEGirN0mvIg=
|
||||
cosmossdk.io/core v0.9.0 h1:30ScAOHDIUOCg1DKAwqkho9wuQJnu7GUrMcg0XLioic=
|
||||
|
||||
Reference in New Issue
Block a user