Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PoC] add token factory module #354

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ import (
ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint"
"github.com/spf13/cast"
"github.com/strangelove-ventures/tokenfactory/x/tokenfactory"
tokenfactorytypes "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types"
)

const (
Expand Down Expand Up @@ -153,6 +155,7 @@ var (
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
ibcfeetypes.ModuleName: nil,
incentivetypes.ModuleName: nil, // this line is needed to create an account for incentive module
tokenfactorytypes.ModuleName: {authtypes.Minter, authtypes.Burner},
}

// software upgrades and forks
Expand Down Expand Up @@ -305,6 +308,7 @@ func NewBabylonApp(
ibcfee.NewAppModule(app.IBCFeeKeeper),
ibctm.AppModule{},
ibcwasm.NewAppModule(app.IBCWasmKeeper),
tokenfactory.NewAppModule(app.TokenFactoryKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(tokenfactorytypes.ModuleName)),
// Babylon modules - btc timestamping
epoching.NewAppModule(appCodec, app.EpochingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
btclightclient.NewAppModule(appCodec, app.BTCLightClientKeeper),
Expand Down Expand Up @@ -358,6 +362,7 @@ func NewBabylonApp(
authtypes.ModuleName, banktypes.ModuleName, govtypes.ModuleName, crisistypes.ModuleName, genutiltypes.ModuleName,
authz.ModuleName, feegrant.ModuleName,
paramstypes.ModuleName, vestingtypes.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName,
tokenfactorytypes.ModuleName,
// Babylon modules
epochingtypes.ModuleName,
btclightclienttypes.ModuleName,
Expand Down Expand Up @@ -389,6 +394,7 @@ func NewBabylonApp(
genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName,
feegrant.ModuleName,
paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, consensusparamtypes.ModuleName,
tokenfactorytypes.ModuleName,
// Babylon modules
epochingtypes.ModuleName,
btclightclienttypes.ModuleName,
Expand Down Expand Up @@ -424,6 +430,7 @@ func NewBabylonApp(
genutiltypes.ModuleName, evidencetypes.ModuleName, authz.ModuleName,
feegrant.ModuleName,
paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, consensusparamtypes.ModuleName, circuittypes.ModuleName,
tokenfactorytypes.ModuleName,
// Babylon modules
btclightclienttypes.ModuleName,
epochingtypes.ModuleName,
Expand Down
30 changes: 29 additions & 1 deletion app/keepers/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,19 @@ import (
monitortypes "github.com/babylonlabs-io/babylon/x/monitor/types"
zckeeper "github.com/babylonlabs-io/babylon/x/zoneconcierge/keeper"
zctypes "github.com/babylonlabs-io/babylon/x/zoneconcierge/types"

tokenfactorykeeper "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/keeper"
tokenfactorytypes "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types"
)

var tokenFactoryCapabilities = []string{
tokenfactorytypes.EnableBurnFrom,
tokenfactorytypes.EnableForceTransfer,
tokenfactorytypes.EnableSetMetadata,
tokenfactorytypes.EnableSudoMint,
tokenfactorytypes.EnableCommunityPoolFeeFunding,
}

// Capabilities of the IBC wasm contracts
func WasmCapabilities() []string {
// The last arguments can contain custom message handlers, and custom query handlers,
Expand Down Expand Up @@ -122,6 +133,8 @@ type AppKeepers struct {
ConsensusParamsKeeper consensusparamkeeper.Keeper
CircuitKeeper circuitkeeper.Keeper

TokenFactoryKeeper tokenfactorykeeper.Keeper

// Babylon modules
EpochingKeeper epochingkeeper.Keeper
BTCLightClientKeeper btclightclientkeeper.Keeper
Expand Down Expand Up @@ -191,6 +204,7 @@ func (ak *AppKeepers) InitKeepers(
govtypes.StoreKey, paramstypes.StoreKey, consensusparamtypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
evidencetypes.StoreKey, circuittypes.StoreKey, capabilitytypes.StoreKey,
authzkeeper.StoreKey,
tokenfactorytypes.StoreKey,
// Babylon modules
epochingtypes.StoreKey,
btclightclienttypes.StoreKey,
Expand Down Expand Up @@ -410,7 +424,20 @@ func (ak *AppKeepers) InitKeepers(
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

wasmOpts = append(owasm.RegisterCustomPlugins(&ak.EpochingKeeper, &ak.CheckpointingKeeper, &ak.BTCLightClientKeeper, &ak.ZoneConciergeKeeper), wasmOpts...)
// Create the TokenFactory Keeper
ak.TokenFactoryKeeper = tokenfactorykeeper.NewKeeper(
appCodec,
ak.keys[tokenfactorytypes.StoreKey],
maccPerms,
ak.AccountKeeper,
ak.BankKeeper,
ak.DistrKeeper,
tokenFactoryCapabilities,
tokenfactorykeeper.DefaultIsSudoAdminFunc,
authtypes.NewModuleAddress(govtypes.ModuleName).String(),
)

wasmOpts = append(owasm.RegisterCustomPlugins(&ak.TokenFactoryKeeper, &ak.EpochingKeeper, &ak.CheckpointingKeeper, &ak.BTCLightClientKeeper, &ak.ZoneConciergeKeeper), wasmOpts...)
wasmOpts = append(owasm.RegisterGrpcQueries(*bApp.GRPCQueryRouter(), appCodec), wasmOpts...)

ak.WasmKeeper = wasmkeeper.NewKeeper(
Expand Down Expand Up @@ -657,6 +684,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
// whole usage of params module
paramsKeeper.Subspace(ibcexported.ModuleName)
paramsKeeper.Subspace(ibctransfertypes.ModuleName)
paramsKeeper.Subspace(tokenfactorytypes.ModuleName)

return paramsKeeper
}
12 changes: 8 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ require (
cosmossdk.io/api v0.7.5
cosmossdk.io/client/v2 v2.0.0-beta.1
cosmossdk.io/collections v0.4.0
cosmossdk.io/core v0.11.1
cosmossdk.io/core v0.12.0
cosmossdk.io/depinject v1.0.0
cosmossdk.io/errors v1.0.1
cosmossdk.io/log v1.4.1
Expand Down Expand Up @@ -60,6 +60,7 @@ require (
github.com/jsternberg/zap-logfmt v1.3.0
github.com/juju/fslock v0.0.0-20160525022230-4d5c94c67b4b
github.com/ory/dockertest/v3 v3.9.1
github.com/strangelove-ventures/tokenfactory v0.50.3-wasmvm2
github.com/vulpine-io/io-test v1.0.0
go.uber.org/zap v1.26.0
golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0
Expand Down Expand Up @@ -130,7 +131,7 @@ require (
golang.org/x/term v0.25.0 // indirect
golang.org/x/text v0.19.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
nhooyr.io/websocket v1.8.6 // indirect
nhooyr.io/websocket v1.8.10 // indirect
)

require (
Expand Down Expand Up @@ -183,9 +184,9 @@ require (
github.com/getsentry/sentry-go v0.27.0 // indirect
github.com/go-logr/logr v1.4.2 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gobwas/ws v1.1.0 // indirect
github.com/gogo/googleapis v1.4.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/gogo/status v1.1.0 // indirect
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
github.com/google/flatbuffers v2.0.8+incompatible // indirect
github.com/google/go-cmp v0.6.0 // indirect
Expand Down Expand Up @@ -223,7 +224,7 @@ require (
github.com/oklog/run v1.1.0 // indirect
github.com/onsi/gomega v1.27.10 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc2 // indirect
github.com/opencontainers/image-spec v1.1.0-rc5 // indirect
github.com/opencontainers/runc v1.1.12 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/rogpeppe/go-internal v1.12.0 // indirect
Expand Down Expand Up @@ -266,11 +267,14 @@ require (
// Long lived replaces of Cosmos SDK
// see: https://github.com/cosmos/cosmos-sdk/blob/v0.50.3/go.mod
replace (
cosmossdk.io/core => cosmossdk.io/core v0.11.0
// use cosmos fork of keyring
github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0

github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1

github.com/strangelove-ventures/tokenfactory => github.com/babylonlabs-io/tokenfactory v0.50.3-wasmvm2

// Downgraded to stable version see: https://github.com/cosmos/cosmos-sdk/pull/14952
github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7

Expand Down
Loading
Loading