Co-authored-by: testinginprod <98415576+testinginprod@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
parent
da48079989
commit
649fe35d1f
@ -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"
|
||||
@ -313,6 +314,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"
|
||||
@ -156,6 +159,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")
|
||||
// }
|
||||
// })
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
@ -45,22 +45,23 @@ require (
|
||||
github.com/spf13/pflag v1.0.5
|
||||
github.com/spf13/viper v1.19.0
|
||||
github.com/stretchr/testify v1.9.0
|
||||
google.golang.org/grpc v1.66.2
|
||||
google.golang.org/grpc v1.67.0
|
||||
google.golang.org/protobuf v1.34.2
|
||||
)
|
||||
|
||||
require 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
|
||||
cloud.google.com/go v0.115.0 // indirect
|
||||
cloud.google.com/go/auth v0.5.1 // indirect
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.3.0 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.5.0 // indirect
|
||||
cloud.google.com/go/iam v1.1.8 // indirect
|
||||
cloud.google.com/go/storage v1.42.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
|
||||
@ -219,7 +220,7 @@ require (
|
||||
golang.org/x/tools v0.25.0 // indirect
|
||||
google.golang.org/api v0.185.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
|
||||
@ -76,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
|
||||
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
|
||||
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
|
||||
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
|
||||
cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
|
||||
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
|
||||
cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
|
||||
cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
|
||||
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
|
||||
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
|
||||
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
|
||||
@ -1346,8 +1346,8 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz
|
||||
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
|
||||
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 h1:CUiCqkPw1nNrNQzCCG4WA65m0nAmQiwXHpub3dNyruU=
|
||||
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4/go.mod h1:EvuUDCulqGgV80RvP1BHuom+smhX4qtlhnNatHuroGQ=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
@ -1385,8 +1385,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
|
||||
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||
google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
|
||||
google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
|
||||
google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
|
||||
google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -43,6 +43,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-20240417181816-5e7aae0db1f5
|
||||
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-20240920095614-aa90bb43d8f8 // indirect; main
|
||||
cosmossdk.io/server/v2/stf v0.0.0-20240926131628-f927e9b55173 // indirect; main
|
||||
cosmossdk.io/store v1.1.1-0.20240909133312-50288938d1b6 // indirect; main
|
||||
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.4-0.20240918094839-0c8ad9d2c64b // indirect; main
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
||||
|
||||
@ -10,7 +10,6 @@ import (
|
||||
"cosmossdk.io/core/transaction"
|
||||
"cosmossdk.io/math"
|
||||
"cosmossdk.io/simapp"
|
||||
multisigaccount "cosmossdk.io/x/accounts/defaults/multisig"
|
||||
v1 "cosmossdk.io/x/accounts/defaults/multisig/v1"
|
||||
"cosmossdk.io/x/bank/testutil"
|
||||
|
||||
@ -76,7 +75,7 @@ func (s *E2ETestSuite) initAccount(ctx context.Context, sender []byte, membersPo
|
||||
members = append(members, &v1.Member{Address: addrStr, Weight: power})
|
||||
}
|
||||
|
||||
_, accountAddr, err := s.app.AccountsKeeper.Init(ctx, multisigaccount.MULTISIG_ACCOUNT, sender,
|
||||
_, accountAddr, err := s.app.AccountsKeeper.Init(ctx, "multisig", sender,
|
||||
&v1.MsgInit{
|
||||
Members: members,
|
||||
Config: &v1.Config{
|
||||
|
||||
@ -26,7 +26,7 @@ require (
|
||||
github.com/golang/mock v1.6.0
|
||||
github.com/spf13/cobra v1.8.1
|
||||
github.com/stretchr/testify v1.9.0
|
||||
google.golang.org/grpc v1.66.2
|
||||
google.golang.org/grpc v1.67.0
|
||||
google.golang.org/protobuf v1.34.2
|
||||
gotest.tools/v3 v3.5.1
|
||||
pgregory.net/rapid v1.1.0
|
||||
@ -62,7 +62,7 @@ require (
|
||||
cloud.google.com/go v0.115.0 // indirect
|
||||
cloud.google.com/go/auth v0.5.1 // indirect
|
||||
cloud.google.com/go/auth/oauth2adapt v0.2.2 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.3.0 // indirect
|
||||
cloud.google.com/go/compute/metadata v0.5.0 // indirect
|
||||
cloud.google.com/go/iam v1.1.8 // indirect
|
||||
cloud.google.com/go/storage v1.42.0 // indirect
|
||||
cosmossdk.io/client/v2 v2.0.0-20230630094428-02b760776860 // indirect
|
||||
@ -220,7 +220,7 @@ require (
|
||||
golang.org/x/tools v0.25.0 // indirect
|
||||
google.golang.org/api v0.185.0 // indirect
|
||||
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect
|
||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
|
||||
12
tests/go.sum
12
tests/go.sum
@ -76,8 +76,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz
|
||||
cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU=
|
||||
cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U=
|
||||
cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU=
|
||||
cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc=
|
||||
cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
|
||||
cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY=
|
||||
cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY=
|
||||
cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I=
|
||||
cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4=
|
||||
cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0=
|
||||
@ -1336,8 +1336,8 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz
|
||||
google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s=
|
||||
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4 h1:CUiCqkPw1nNrNQzCCG4WA65m0nAmQiwXHpub3dNyruU=
|
||||
google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4/go.mod h1:EvuUDCulqGgV80RvP1BHuom+smhX4qtlhnNatHuroGQ=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4 h1:MuYw1wJzT+ZkybKfaOXKp5hJiZDn2iHaXRw0mRYdHSc=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ=
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
@ -1375,8 +1375,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
|
||||
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||
google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||
google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
|
||||
google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo=
|
||||
google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y=
|
||||
google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw=
|
||||
google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
|
||||
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
|
||||
@ -1,6 +1,95 @@
|
||||
# x/accounts
|
||||
# x/accounts Module
|
||||
|
||||
The x/accounts module provides module and facilities for writing smart cosmos-sdk accounts.
|
||||
The x/accounts module enhances the Cosmos SDK by providing tools and infrastructure for creating advanced smart accounts.
|
||||
|
||||
# The Authentication Interface
|
||||
|
||||
x/accounts introduces the `Authentication` interface, allowing for flexible transaction (TX) authentication beyond traditional public key cryptography.
|
||||
|
||||
Chain developers can implement tailored authentication methods for their accounts. Any account that implements the `Authentication` interface can be authenticated within a transaction.
|
||||
|
||||
To implement the `Authentication` interface in x/accounts, an account must expose an execution handler capable of processing a specific message type.
|
||||
|
||||
The key message type for authentication is `MsgAuthenticate`, which is defined in the module's protocol buffer files:
|
||||
|
||||
[interfaces/account_abstraction/v1/interface.proto](./proto/cosmos/accounts/interfaces/account_abstraction/v1/interface.proto)
|
||||
|
||||
## Authentication Mechanism
|
||||
|
||||
### AnteHandler in the SDK
|
||||
|
||||
The Cosmos SDK utilizes an `AnteHandler` to verify transaction (TX) integrity. Its primary function is to ensure that the messages within a transaction are correctly signed by the purported sender.
|
||||
|
||||
### Authentication Flow for x/accounts Module
|
||||
|
||||
When the `AnteHandler` identifies that a message sender (and transaction signer) belongs to the x/accounts module, it delegates the authentication process to that module.
|
||||
|
||||
#### Authentication Interface Requirement
|
||||
|
||||
For successful authentication, the account must implement the `Authentication` interface. If an account fails to implement this interface, it's considered non-externally owned, resulting in transaction rejection.
|
||||
|
||||
##### Sequence Diagram
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Tx Is Received] --> B[Execute Signature Verification Ante Handler]
|
||||
B --> D{Is signer an x/accounts account?}
|
||||
D -->|No| E[Continue with signature verification ante handler]
|
||||
D -->|Yes| F{Does account handle MsgAuthenticate?}
|
||||
F -->|No| G[Fail TX: Non-externally owned account]
|
||||
F -->|Yes| H[Invoke signer account MsgAuthenticate]
|
||||
E --> I[End]
|
||||
G --> I
|
||||
H --> I
|
||||
```
|
||||
|
||||
|
||||
## Implementing the Authentication Interface
|
||||
|
||||
To implement the Authentication interface, an account must handle the execution of `MsgAuthenticate`. Here's an example of how to do this:
|
||||
|
||||
```go
|
||||
package base
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
aa_interface_v1 "github.com/cosmos/cosmos-sdk/x/accounts/interfaces/account_abstraction/v1"
|
||||
"github.com/cosmos/cosmos-sdk/x/accounts/std"
|
||||
)
|
||||
|
||||
// Account represents a base account structure
|
||||
type Account struct {
|
||||
// Account fields...
|
||||
}
|
||||
|
||||
// Authenticate implements the authentication flow for an abstracted base account.
|
||||
func (a Account) Authenticate(ctx context.Context, msg *aa_interface_v1.MsgAuthenticate) (*aa_interface_v1.MsgAuthenticateResponse, error) {
|
||||
if !accountstd.SenderIsAccountsModule(ctx) {
|
||||
return nil, errors.New("unauthorized: only accounts module is allowed to call this")
|
||||
}
|
||||
// Implement your authentication logic here
|
||||
// ...
|
||||
return &aa_interface_v1.MsgAuthenticateResponse{}, nil
|
||||
}
|
||||
|
||||
// RegisterExecuteHandlers registers the execution handlers for the account.
|
||||
func (a Account) RegisterExecuteHandlers(builder *accountstd.ExecuteBuilder) {
|
||||
accountstd.RegisterExecuteHandler(builder, a.SwapPubKey) // Other handlers
|
||||
accountstd.RegisterExecuteHandler(builder, a.Authenticate) // Implements the Authentication interface
|
||||
}
|
||||
```
|
||||
|
||||
### Key Implementation Points
|
||||
|
||||
1. **Sender Verification**: Always verify that the sender is the x/accounts module. This prevents unauthorized accounts from triggering authentication.
|
||||
2. **Authentication Safety**: Ensure your authentication mechanism is secure:
|
||||
- Prevent replay attacks by making it impossible to reuse the same action with the same signature.
|
||||
|
||||
|
||||
#### Implementation example
|
||||
|
||||
Please find an example [here](./defaults/base/account.go).
|
||||
|
||||
# Supporting Custom Accounts in the x/auth gRPC Server
|
||||
|
||||
|
||||
@ -34,6 +34,16 @@ type InitBuilder = implementation.InitBuilder
|
||||
// AccountCreatorFunc is the exported type of AccountCreatorFunc.
|
||||
type AccountCreatorFunc = implementation.AccountCreatorFunc
|
||||
|
||||
func DIAccount[A Interface](name string, constructor func(deps Dependencies) (A, error)) DepinjectAccount {
|
||||
return DepinjectAccount{MakeAccount: AddAccount(name, constructor)}
|
||||
}
|
||||
|
||||
type DepinjectAccount struct {
|
||||
MakeAccount AccountCreatorFunc
|
||||
}
|
||||
|
||||
func (DepinjectAccount) IsManyPerContainerType() {}
|
||||
|
||||
// Dependencies is the exported type of Dependencies.
|
||||
type Dependencies = implementation.Dependencies
|
||||
|
||||
|
||||
@ -33,6 +33,8 @@ var (
|
||||
|
||||
type Option func(a *Account)
|
||||
|
||||
func (Option) IsManyPerContainerType() {}
|
||||
|
||||
func NewAccount(name string, handlerMap *signing.HandlerMap, options ...Option) accountstd.AccountCreatorFunc {
|
||||
return func(deps accountstd.Dependencies) (string, accountstd.Interface, error) {
|
||||
acc := Account{
|
||||
|
||||
31
x/accounts/defaults/base/depinject/depinject.go
Normal file
31
x/accounts/defaults/base/depinject/depinject.go
Normal file
@ -0,0 +1,31 @@
|
||||
package basedepinject
|
||||
|
||||
import (
|
||||
"cosmossdk.io/depinject"
|
||||
"cosmossdk.io/x/accounts/accountstd"
|
||||
"cosmossdk.io/x/accounts/defaults/base"
|
||||
"cosmossdk.io/x/tx/signing"
|
||||
)
|
||||
|
||||
type Inputs struct {
|
||||
depinject.In
|
||||
|
||||
SignHandlersMap *signing.HandlerMap
|
||||
Options []base.Option
|
||||
}
|
||||
|
||||
func ProvideAccount(in Inputs) accountstd.DepinjectAccount {
|
||||
return accountstd.DepinjectAccount{MakeAccount: base.NewAccount("base", in.SignHandlersMap, in.Options...)}
|
||||
}
|
||||
|
||||
func ProvideSecp256K1PubKey() base.Option {
|
||||
return base.WithSecp256K1PubKey()
|
||||
}
|
||||
|
||||
func ProvideCustomPubkey[T any, PT base.PubKeyG[T]]() base.Option {
|
||||
return base.WithPubKey[T, PT]()
|
||||
}
|
||||
|
||||
func ProvideCustomPubKeyAndValidationFunc[T any, PT base.PubKeyG[T]](validateFn func(PT) error) base.Option {
|
||||
return base.WithPubKeyWithValidationFunc(validateFn)
|
||||
}
|
||||
@ -21,7 +21,7 @@ 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
|
||||
cosmossdk.io/core/testing v0.0.0-20240913164418-aaf72f20c10b // indirect; main
|
||||
cosmossdk.io/depinject v1.0.0 // indirect
|
||||
cosmossdk.io/depinject v1.0.0
|
||||
cosmossdk.io/errors v1.0.1 // indirect
|
||||
cosmossdk.io/log v1.4.1 // indirect
|
||||
cosmossdk.io/math v1.3.0 // indirect
|
||||
@ -175,13 +175,6 @@ replace (
|
||||
// pseudo version lower than the latest tag
|
||||
cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20240913190136-3bc707a5a214 // main
|
||||
cosmossdk.io/x/accounts => ../../.
|
||||
cosmossdk.io/x/accounts/defaults/multisig => ../multisig
|
||||
cosmossdk.io/x/bank => ../../../bank
|
||||
cosmossdk.io/x/consensus => ../../../consensus
|
||||
cosmossdk.io/x/distribution => ../../../distribution
|
||||
cosmossdk.io/x/gov => ../../../gov
|
||||
cosmossdk.io/x/mint => ../../../mint
|
||||
cosmossdk.io/x/protocolpool => ../../../protocolpool
|
||||
cosmossdk.io/x/slashing => ../../../slashing
|
||||
cosmossdk.io/x/staking => ../../../staking
|
||||
)
|
||||
|
||||
31
x/accounts/defaults/lockup/depinject/depinject.go
Normal file
31
x/accounts/defaults/lockup/depinject/depinject.go
Normal file
@ -0,0 +1,31 @@
|
||||
package lockupdepinject
|
||||
|
||||
import (
|
||||
"cosmossdk.io/x/accounts/accountstd"
|
||||
"cosmossdk.io/x/accounts/defaults/lockup"
|
||||
)
|
||||
|
||||
func ProvideAllLockupAccounts() []accountstd.DepinjectAccount {
|
||||
return []accountstd.DepinjectAccount{
|
||||
ProvidePeriodicLockingAccount(),
|
||||
ProvideContinuousLockingAccount(),
|
||||
ProvidePermanentLockingAccount(),
|
||||
ProvideDelayedLockingAccount(),
|
||||
}
|
||||
}
|
||||
|
||||
func ProvideContinuousLockingAccount() accountstd.DepinjectAccount {
|
||||
return accountstd.DIAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount)
|
||||
}
|
||||
|
||||
func ProvidePeriodicLockingAccount() accountstd.DepinjectAccount {
|
||||
return accountstd.DIAccount(lockup.PERIODIC_LOCKING_ACCOUNT, lockup.NewPeriodicLockingAccount)
|
||||
}
|
||||
|
||||
func ProvideDelayedLockingAccount() accountstd.DepinjectAccount {
|
||||
return accountstd.DIAccount(lockup.DELAYED_LOCKING_ACCOUNT, lockup.NewDelayedLockingAccount)
|
||||
}
|
||||
|
||||
func ProvidePermanentLockingAccount() accountstd.DepinjectAccount {
|
||||
return accountstd.DIAccount(lockup.PERMANENT_LOCKING_ACCOUNT, lockup.NewPermanentLockingAccount)
|
||||
}
|
||||
@ -13,12 +13,6 @@ require (
|
||||
github.com/cosmos/gogoproto v1.7.0
|
||||
)
|
||||
|
||||
require (
|
||||
cosmossdk.io/schema v0.3.0 // indirect
|
||||
github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
)
|
||||
|
||||
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
|
||||
@ -28,6 +22,7 @@ require (
|
||||
cosmossdk.io/errors v1.0.1
|
||||
cosmossdk.io/log v1.4.1
|
||||
cosmossdk.io/math v1.3.0
|
||||
cosmossdk.io/schema v0.3.0 // indirect
|
||||
cosmossdk.io/store v1.1.1-0.20240909133312-50288938d1b6 // indirect
|
||||
cosmossdk.io/x/tx v0.13.4-0.20240918094839-0c8ad9d2c64b // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
@ -39,6 +34,7 @@ require (
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/cockroachdb/errors v1.11.3 // indirect
|
||||
github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect
|
||||
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
|
||||
github.com/cockroachdb/pebble v1.1.2 // indirect
|
||||
github.com/cockroachdb/redact v1.1.5 // indirect
|
||||
@ -68,6 +64,7 @@ require (
|
||||
github.com/go-logfmt/logfmt v0.6.0 // indirect
|
||||
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/golang/protobuf v1.5.4 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/google/btree v1.1.3 // indirect
|
||||
@ -155,13 +152,7 @@ replace (
|
||||
// pseudo version lower than the latest tag
|
||||
cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20240913190136-3bc707a5a214 // main
|
||||
cosmossdk.io/x/accounts => ../../.
|
||||
cosmossdk.io/x/accounts/defaults/multisig => ../multisig
|
||||
cosmossdk.io/x/bank => ../../../bank
|
||||
cosmossdk.io/x/consensus => ../../../consensus
|
||||
cosmossdk.io/x/distribution => ../../../distribution
|
||||
cosmossdk.io/x/gov => ../../../gov
|
||||
cosmossdk.io/x/mint => ../../../mint
|
||||
cosmossdk.io/x/protocolpool => ../../../protocolpool
|
||||
cosmossdk.io/x/slashing => ../../../slashing
|
||||
cosmossdk.io/x/staking => ../../../staking
|
||||
)
|
||||
|
||||
@ -16,8 +16,6 @@ import (
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
)
|
||||
|
||||
var MULTISIG_ACCOUNT = "multisig-account"
|
||||
|
||||
var (
|
||||
MembersPrefix = collections.NewPrefix(0)
|
||||
SequencePrefix = collections.NewPrefix(1)
|
||||
|
||||
10
x/accounts/defaults/multisig/depinject/depinject.go
Normal file
10
x/accounts/defaults/multisig/depinject/depinject.go
Normal file
@ -0,0 +1,10 @@
|
||||
package multisigdepinject
|
||||
|
||||
import (
|
||||
"cosmossdk.io/x/accounts/accountstd"
|
||||
"cosmossdk.io/x/accounts/defaults/multisig"
|
||||
)
|
||||
|
||||
func ProvideAccount() accountstd.DepinjectAccount {
|
||||
return accountstd.DIAccount("multisig", multisig.NewAccount)
|
||||
}
|
||||
@ -176,11 +176,5 @@ replace (
|
||||
cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20240913190136-3bc707a5a214 // main
|
||||
cosmossdk.io/x/accounts => ../../.
|
||||
cosmossdk.io/x/bank => ../../../bank
|
||||
cosmossdk.io/x/consensus => ../../../consensus
|
||||
cosmossdk.io/x/distribution => ../../../distribution
|
||||
cosmossdk.io/x/gov => ../../../gov
|
||||
cosmossdk.io/x/mint => ../../../mint
|
||||
cosmossdk.io/x/protocolpool => ../../../protocolpool
|
||||
cosmossdk.io/x/slashing => ../../../slashing
|
||||
cosmossdk.io/x/staking => ../../../staking
|
||||
)
|
||||
|
||||
@ -1,19 +1,12 @@
|
||||
package accounts
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
modulev1 "cosmossdk.io/api/cosmos/accounts/module/v1"
|
||||
signingv1beta1 "cosmossdk.io/api/cosmos/tx/signing/v1beta1"
|
||||
"cosmossdk.io/core/address"
|
||||
"cosmossdk.io/core/appmodule"
|
||||
"cosmossdk.io/depinject"
|
||||
"cosmossdk.io/depinject/appconfig"
|
||||
"cosmossdk.io/x/accounts/accountstd"
|
||||
baseaccount "cosmossdk.io/x/accounts/defaults/base"
|
||||
"cosmossdk.io/x/accounts/defaults/lockup"
|
||||
"cosmossdk.io/x/accounts/defaults/multisig"
|
||||
"cosmossdk.io/x/tx/signing"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
|
||||
@ -39,8 +32,7 @@ type ModuleInputs struct {
|
||||
AddressCodec address.Codec
|
||||
Registry cdctypes.InterfaceRegistry
|
||||
|
||||
// TODO: Add a way to inject custom accounts.
|
||||
// Currently only the base account is supported.
|
||||
Accounts []accountstd.DepinjectAccount // at least one account must be provided
|
||||
}
|
||||
|
||||
type ModuleOutputs struct {
|
||||
@ -50,32 +42,19 @@ type ModuleOutputs struct {
|
||||
Module appmodule.AppModule
|
||||
}
|
||||
|
||||
var _ signing.SignModeHandler = directHandler{}
|
||||
|
||||
type directHandler struct{}
|
||||
|
||||
func (s directHandler) Mode() signingv1beta1.SignMode {
|
||||
return signingv1beta1.SignMode_SIGN_MODE_DIRECT
|
||||
}
|
||||
|
||||
func (s directHandler) GetSignBytes(_ context.Context, _ signing.SignerData, _ signing.TxData) ([]byte, error) {
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
func ProvideModule(in ModuleInputs) ModuleOutputs {
|
||||
handler := directHandler{}
|
||||
account := baseaccount.NewAccount("base", signing.NewHandlerMap(handler), baseaccount.WithSecp256K1PubKey())
|
||||
accountskeeper, err := NewKeeper(
|
||||
in.Cdc, in.Environment, in.AddressCodec, in.Registry, account,
|
||||
accountstd.AddAccount(lockup.CONTINUOUS_LOCKING_ACCOUNT, lockup.NewContinuousLockingAccount),
|
||||
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_ACCOUNT, multisig.NewAccount),
|
||||
accCreators := make([]accountstd.AccountCreatorFunc, len(in.Accounts))
|
||||
for i, acc := range in.Accounts {
|
||||
accCreators[i] = acc.MakeAccount
|
||||
}
|
||||
|
||||
accountsKeeper, err := NewKeeper(
|
||||
in.Cdc, in.Environment, in.AddressCodec, in.Registry,
|
||||
accCreators...,
|
||||
)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
m := NewAppModule(in.Cdc, accountskeeper)
|
||||
return ModuleOutputs{AccountsKeeper: accountskeeper, Module: m}
|
||||
m := NewAppModule(in.Cdc, accountsKeeper)
|
||||
return ModuleOutputs{AccountsKeeper: accountsKeeper, Module: m}
|
||||
}
|
||||
|
||||
@ -8,8 +8,6 @@ require (
|
||||
cosmossdk.io/core v1.0.0-alpha.3 // main
|
||||
cosmossdk.io/core/testing v0.0.0-20240913164418-aaf72f20c10b // main
|
||||
cosmossdk.io/depinject v1.0.0
|
||||
cosmossdk.io/x/accounts/defaults/base v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/x/accounts/defaults/multisig v0.0.0-00010101000000-000000000000
|
||||
cosmossdk.io/x/bank v0.0.0-20240226161501-23359a0b6d91
|
||||
cosmossdk.io/x/tx v0.13.4-0.20240918094839-0c8ad9d2c64b // main
|
||||
github.com/cosmos/cosmos-sdk v0.52.0
|
||||
@ -28,8 +26,6 @@ require (
|
||||
cosmossdk.io/math v1.3.0
|
||||
cosmossdk.io/schema v0.3.0 // indirect
|
||||
cosmossdk.io/store v1.1.1-0.20240909133312-50288938d1b6 // indirect
|
||||
cosmossdk.io/x/accounts/defaults/lockup v0.0.0-20240417181816-5e7aae0db1f5
|
||||
cosmossdk.io/x/distribution v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/x/staking v0.0.0-00010101000000-000000000000 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
|
||||
@ -180,12 +176,6 @@ replace (
|
||||
cosmossdk.io/api => cosmossdk.io/api v0.7.3-0.20240924065902-eb7653cfecdf // main
|
||||
// pseudo version lower than the latest tag
|
||||
cosmossdk.io/store => cosmossdk.io/store v1.0.0-rc.0.0.20240913190136-3bc707a5a214 // main
|
||||
cosmossdk.io/x/accounts/defaults/base => ./defaults/base
|
||||
cosmossdk.io/x/accounts/defaults/lockup => ./defaults/lockup
|
||||
cosmossdk.io/x/accounts/defaults/multisig => ./defaults/multisig
|
||||
cosmossdk.io/x/bank => ../bank
|
||||
cosmossdk.io/x/distribution => ../distribution
|
||||
cosmossdk.io/x/mint => ../mint
|
||||
cosmossdk.io/x/slashing => ../slashing
|
||||
cosmossdk.io/x/staking => ../staking
|
||||
)
|
||||
|
||||
@ -49,9 +49,10 @@ type ModuleInputs struct {
|
||||
type ModuleOutputs struct {
|
||||
depinject.Out
|
||||
|
||||
BaseAppOption runtime.BaseAppOption // This is only useful for chains using baseapp.
|
||||
TxConfig client.TxConfig
|
||||
TxConfigOptions tx.ConfigOptions
|
||||
BaseAppOption runtime.BaseAppOption // This is only useful for chains using baseapp.
|
||||
TxConfig client.TxConfig
|
||||
TxConfigOptions tx.ConfigOptions
|
||||
TxSigningHandlerMap *txsigning.HandlerMap
|
||||
}
|
||||
|
||||
func ProvideProtoRegistry() txsigning.ProtoFileResolver {
|
||||
@ -89,8 +90,9 @@ func ProvideModule(in ModuleInputs) ModuleOutputs {
|
||||
app.SetTxDecoder(txConfig.TxDecoder())
|
||||
app.SetTxEncoder(txConfig.TxEncoder())
|
||||
},
|
||||
TxConfig: txConfig,
|
||||
TxConfigOptions: txConfigOptions,
|
||||
TxConfig: txConfig,
|
||||
TxConfigOptions: txConfigOptions,
|
||||
TxSigningHandlerMap: txConfig.SignModeHandler(),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,10 +39,6 @@ require (
|
||||
cosmossdk.io/collections v0.4.1-0.20240802064046-23fac2f1b8ab // indirect; main
|
||||
cosmossdk.io/core/testing v0.0.0-20240913164418-aaf72f20c10b // main
|
||||
cosmossdk.io/schema v0.3.0 // 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/distribution v0.0.0-00010101000000-000000000000 // indirect
|
||||
cosmossdk.io/x/epochs v0.0.0-20240522060652-a1ae4c3e0337 // indirect
|
||||
cosmossdk.io/x/tx v0.13.4-0.20240918094839-0c8ad9d2c64b // indirect; main
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
|
||||
Loading…
Reference in New Issue
Block a user