feat(accounts): make x/accounts more depinject friendly (#21928)
This commit is contained in:
@@ -28,6 +28,7 @@ import (
|
||||
"cosmossdk.io/x/accounts/accountstd"
|
||||
baseaccount "cosmossdk.io/x/accounts/defaults/base"
|
||||
lockup "cosmossdk.io/x/accounts/defaults/lockup"
|
||||
"cosmossdk.io/x/accounts/defaults/multisig"
|
||||
"cosmossdk.io/x/accounts/testing/account_abstraction"
|
||||
"cosmossdk.io/x/accounts/testing/counter"
|
||||
"cosmossdk.io/x/authz"
|
||||
@@ -315,6 +316,7 @@ func NewSimApp(
|
||||
accountstd.AddAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount),
|
||||
accountstd.AddAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount),
|
||||
accountstd.AddAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount),
|
||||
accountstd.AddAccount("multisig", multisig.NewAccount),
|
||||
// PRODUCTION: add
|
||||
baseaccount.NewAccount("base", txConfig.SignModeHandler(), baseaccount.WithSecp256K1PubKey()),
|
||||
)
|
||||
|
||||
@@ -15,6 +15,9 @@ import (
|
||||
"cosmossdk.io/depinject"
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/x/accounts"
|
||||
basedepinject "cosmossdk.io/x/accounts/defaults/base/depinject"
|
||||
lockupdepinject "cosmossdk.io/x/accounts/defaults/lockup/depinject"
|
||||
multisigdepinject "cosmossdk.io/x/accounts/defaults/multisig/depinject"
|
||||
bankkeeper "cosmossdk.io/x/bank/keeper"
|
||||
circuitkeeper "cosmossdk.io/x/circuit/keeper"
|
||||
consensuskeeper "cosmossdk.io/x/consensus/keeper"
|
||||
@@ -155,6 +158,27 @@ func NewSimApp(
|
||||
// For providing a custom inflation function for x/mint add here your
|
||||
// custom function that implements the minttypes.MintFn interface.
|
||||
),
|
||||
depinject.Provide(
|
||||
// inject desired account types:
|
||||
multisigdepinject.ProvideAccount,
|
||||
basedepinject.ProvideAccount,
|
||||
lockupdepinject.ProvideAllLockupAccounts,
|
||||
|
||||
// provide base account options
|
||||
basedepinject.ProvideSecp256K1PubKey,
|
||||
// if you want to provide a custom public key you
|
||||
// can do it from here.
|
||||
// Example:
|
||||
// basedepinject.ProvideCustomPubkey[Ed25519PublicKey]()
|
||||
//
|
||||
// You can also provide a custom public key with a custom validation function:
|
||||
//
|
||||
// basedepinject.ProvideCustomPubKeyAndValidationFunc(func(pub Ed25519PublicKey) error {
|
||||
// if len(pub.Key) != 64 {
|
||||
// return fmt.Errorf("invalid pub key size")
|
||||
// }
|
||||
// })
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -48,6 +48,7 @@ require (
|
||||
|
||||
require (
|
||||
cosmossdk.io/x/accounts/defaults/base v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
|
||||
google.golang.org/grpc v1.67.0
|
||||
)
|
||||
|
||||
@@ -62,7 +63,6 @@ require (
|
||||
cloud.google.com/go/storage v1.43.0 // indirect
|
||||
cosmossdk.io/errors v1.0.1 // indirect
|
||||
cosmossdk.io/schema v0.3.0 // indirect
|
||||
cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000 // indirect
|
||||
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
|
||||
|
||||
@@ -13,6 +13,9 @@ import (
|
||||
"cosmossdk.io/log"
|
||||
"cosmossdk.io/runtime/v2"
|
||||
"cosmossdk.io/store/v2/root"
|
||||
basedepinject "cosmossdk.io/x/accounts/defaults/base/depinject"
|
||||
lockupdepinject "cosmossdk.io/x/accounts/defaults/lockup/depinject"
|
||||
multisigdepinject "cosmossdk.io/x/accounts/defaults/multisig/depinject"
|
||||
upgradekeeper "cosmossdk.io/x/upgrade/keeper"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
@@ -119,6 +122,25 @@ func NewSimApp[T transaction.Tx](
|
||||
codec.ProvideAddressCodec,
|
||||
codec.ProvideProtoCodec,
|
||||
codec.ProvideLegacyAmino,
|
||||
// inject desired account types:
|
||||
multisigdepinject.ProvideAccount,
|
||||
basedepinject.ProvideAccount,
|
||||
lockupdepinject.ProvideAllLockupAccounts,
|
||||
|
||||
// provide base account options
|
||||
basedepinject.ProvideSecp256K1PubKey,
|
||||
// if you want to provide a custom public key you
|
||||
// can do it from here.
|
||||
// Example:
|
||||
// basedepinject.ProvideCustomPubkey[Ed25519PublicKey]()
|
||||
//
|
||||
// You can also provide a custom public key with a custom validation function:
|
||||
//
|
||||
// basedepinject.ProvideCustomPubKeyAndValidationFunc(func(pub Ed25519PublicKey) error {
|
||||
// if len(pub.Key) != 64 {
|
||||
// return fmt.Errorf("invalid pub key size")
|
||||
// }
|
||||
// })
|
||||
),
|
||||
depinject.Invoke(
|
||||
std.RegisterInterfaces,
|
||||
|
||||
+6
-3
@@ -42,6 +42,12 @@ require (
|
||||
google.golang.org/protobuf v1.34.2
|
||||
)
|
||||
|
||||
require (
|
||||
cosmossdk.io/x/accounts/defaults/base v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/x/accounts/defaults/lockup v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
|
||||
)
|
||||
|
||||
require (
|
||||
buf.build/gen/go/cometbft/cometbft/protocolbuffers/go v1.34.2-20240701160653-fedbb9acfd2f.2 // indirect
|
||||
buf.build/gen/go/cosmos/gogo-proto/protocolbuffers/go v1.34.2-20240130113600-88ef6483f90f.2 // indirect
|
||||
@@ -59,9 +65,6 @@ require (
|
||||
cosmossdk.io/server/v2/appmanager v0.0.0-20240802110823-cffeedff643d // indirect
|
||||
cosmossdk.io/server/v2/stf v0.0.0-20240708142107-25e99c54bac1 // indirect
|
||||
cosmossdk.io/store v1.1.1 // indirect
|
||||
cosmossdk.io/x/accounts/defaults/base v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5 // indirect
|
||||
cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/x/tx v0.13.5 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
||||
|
||||
Reference in New Issue
Block a user