Skip to content

Commit

Permalink
DFR module beta implementation (#12)
Browse files Browse the repository at this point in the history
Implement the DFR module

Co-authored-by: Fabrice Bascoulergue <lebascou@users.noreply.github.com>
  • Loading branch information
Segfaultd and lebascou committed Sep 23, 2022
1 parent f7fa077 commit 59ae904
Show file tree
Hide file tree
Showing 59 changed files with 7,306 additions and 164 deletions.
3 changes: 0 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,6 @@ jobs:
- uses: actions/setup-go@v2.1.4
with:
go-version: '^1.18'
env:
GOOS: ${{ matrix.targetos }}
GOARCH: ${{ matrix.arch }}

- name: Compile lumd
run: |
Expand Down
31 changes: 30 additions & 1 deletion app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
icacontrollertypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types"
icahosttypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types"
icatypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types"
"github.com/lum-network/chain/x/dfract"
dfractclient "github.com/lum-network/chain/x/dfract/client"
"io"
"net/http"
"os"
Expand Down Expand Up @@ -78,6 +80,7 @@ import (
appparams "github.com/lum-network/chain/app/params"
"github.com/lum-network/chain/x/beam"
beamtypes "github.com/lum-network/chain/x/beam/types"
dfracttypes "github.com/lum-network/chain/x/dfract/types"
tmjson "github.com/tendermint/tendermint/libs/json"

"github.com/lum-network/chain/x/airdrop"
Expand Down Expand Up @@ -112,6 +115,7 @@ var (
upgradeclient.CancelProposalHandler,
ibcclientclient.UpdateClientProposalHandler,
ibcclientclient.UpgradeProposalHandler,
dfractclient.ProposalHandler,
),
params.AppModuleBasic{},
crisis.AppModuleBasic{},
Expand All @@ -126,6 +130,7 @@ var (
vesting.AppModuleBasic{},
beam.AppModuleBasic{},
airdrop.AppModuleBasic{},
dfract.AppModuleBasic{},
)

// module account permissions
Expand All @@ -140,6 +145,7 @@ var (
ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner},
beamtypes.ModuleName: nil,
airdroptypes.ModuleName: {authtypes.Minter, authtypes.Burner},
dfracttypes.ModuleName: {authtypes.Minter, authtypes.Burner},
}
)

Expand Down Expand Up @@ -212,7 +218,7 @@ func New(
minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, icahosttypes.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey,
evidencetypes.StoreKey, ibctransfertypes.StoreKey, capabilitytypes.StoreKey, authzkeeper.StoreKey,
beamtypes.StoreKey, airdroptypes.StoreKey,
beamtypes.StoreKey, airdroptypes.StoreKey, dfracttypes.StoreKey,
)
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
Expand Down Expand Up @@ -267,6 +273,7 @@ func New(
authzmodule.NewAppModule(appCodec, *app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
beam.NewAppModule(appCodec, *app.BeamKeeper),
airdrop.NewAppModule(appCodec, *app.AirdropKeeper),
dfract.NewAppModule(appCodec, *app.DFractKeeper),
)

// During begin block slashing happens after distr.BeginBlocker so that
Expand Down Expand Up @@ -295,6 +302,7 @@ func New(
ibctransfertypes.ModuleName,
beamtypes.ModuleName,
airdroptypes.ModuleName,
dfracttypes.ModuleName,
)

app.mm.SetOrderEndBlockers(
Expand All @@ -319,6 +327,7 @@ func New(
ibctransfertypes.ModuleName,
beamtypes.ModuleName,
airdroptypes.ModuleName,
dfracttypes.ModuleName,
)

// NOTE: The genutils module must occur after staking so that pools are
Expand Down Expand Up @@ -348,6 +357,7 @@ func New(
authz.ModuleName,
beamtypes.ModuleName,
airdroptypes.ModuleName,
dfracttypes.ModuleName,
)

app.mm.RegisterInvariants(app.CrisisKeeper)
Expand All @@ -372,6 +382,7 @@ func New(
app.transferModule,
authzmodule.NewAppModule(appCodec, *app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
beam.NewAppModule(appCodec, *app.BeamKeeper),
dfract.NewAppModule(appCodec, *app.DFractKeeper),
)
app.sm.RegisterStoreDecoders()

Expand Down Expand Up @@ -608,6 +619,17 @@ func (app *App) registerUpgradeHandlers() {
return app.mm.RunMigrations(ctx, app.configurator, fromVM)
})

app.UpgradeKeeper.SetUpgradeHandler("v1.2.1", func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
// Set the DFract module consensus version so InitGenesis is not run
fromVM[dfracttypes.ModuleName] = app.mm.Modules[dfracttypes.ModuleName].ConsensusVersion()

// Apply the initial parameters
app.DFractKeeper.SetParams(ctx, dfracttypes.DefaultParams())

app.Logger().Info("v1.2.1 upgrade applied. DFract module live")
return app.mm.RunMigrations(ctx, app.configurator, fromVM)
})

upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic(fmt.Sprintf("failed to read upgrade info from disk %s", err))
Expand All @@ -628,4 +650,11 @@ func (app *App) registerUpgradeHandlers() {

app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
}
if upgradeInfo.Name == "v1.2.1" && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
storeUpgrades := storetypes.StoreUpgrades{
Added: []string{dfracttypes.StoreKey},
}
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades))
}

}
34 changes: 22 additions & 12 deletions app/keepers.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ import (
airdroptypes "github.com/lum-network/chain/x/airdrop/types"
beamkeeper "github.com/lum-network/chain/x/beam/keeper"
beamtypes "github.com/lum-network/chain/x/beam/types"
"github.com/lum-network/chain/x/dfract"
dfractkeeper "github.com/lum-network/chain/x/dfract/keeper"
dfracttypes "github.com/lum-network/chain/x/dfract/types"
)

type AppKeepers struct {
Expand Down Expand Up @@ -83,6 +86,7 @@ type AppKeepers struct {
// Custom Keepers
AirdropKeeper *airdropkeeper.Keeper
BeamKeeper *beamkeeper.Keeper
DFractKeeper *dfractkeeper.Keeper
}

// InitSpecialKeepers Init the "special" keepers in the order of definition
Expand Down Expand Up @@ -228,32 +232,37 @@ func (app *App) InitNormalKeepers() {
feeGrantKeeper := feegrantkeeper.NewKeeper(appCodec, keys[feegrant.StoreKey], app.AccountKeeper)
app.FeeGrantKeeper = &feeGrantKeeper

// Initialize our custom beam keeper
beamKeeper := *beamkeeper.NewKeeper(
appCodec, keys[beamtypes.StoreKey], keys[beamtypes.MemStoreKey],
*app.AccountKeeper, app.BankKeeper, *app.StakingKeeper,
)
app.BeamKeeper = &beamKeeper

// Initialize our custom airdrop keeper
airdropKeeper := airdropkeeper.NewKeeper(appCodec, keys[airdroptypes.StoreKey], keys[airdroptypes.MemStoreKey], *app.AccountKeeper, app.BankKeeper, *app.StakingKeeper, *app.DistrKeeper)
app.AirdropKeeper = airdropKeeper

// Initialize our custom dfract keeper
dfractKeeper := dfractkeeper.NewKeeper(appCodec, keys[dfracttypes.StoreKey], keys[dfracttypes.StoreKey], app.GetSubspace(dfracttypes.ModuleName), *app.AccountKeeper, app.BankKeeper, *app.StakingKeeper)
app.DFractKeeper = dfractKeeper

// Initialize the governance router
govRouter := govtypes.NewRouter()
govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler).
AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(*app.ParamsKeeper)).
AddRoute(distrtypes.RouterKey, distr.NewCommunityPoolSpendProposalHandler(*app.DistrKeeper)).
AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)).
AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(*app.UpgradeKeeper)).
AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper))
AddRoute(ibchost.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)).
AddRoute(dfracttypes.RouterKey, dfract.NewDFractProposalHandler(*app.DFractKeeper))

// Initialize the governance keeper
govKeeper := govkeeper.NewKeeper(
appCodec, keys[govtypes.StoreKey], app.GetSubspace(govtypes.ModuleName), app.AccountKeeper, app.BankKeeper,
app.StakingKeeper, govRouter,
)
app.GovKeeper = &govKeeper

// Initialize our custom beam keeper
beamKeeper := *beamkeeper.NewKeeper(
appCodec, keys[beamtypes.StoreKey], keys[beamtypes.MemStoreKey],
*app.AccountKeeper, app.BankKeeper, *app.StakingKeeper,
)
app.BeamKeeper = &beamKeeper

// Initialize our custom airdrop keeper
airdropKeeper := airdropkeeper.NewKeeper(appCodec, keys[airdroptypes.StoreKey], keys[airdroptypes.MemStoreKey], *app.AccountKeeper, app.BankKeeper, *app.StakingKeeper, *app.DistrKeeper)
app.AirdropKeeper = airdropKeeper
}

func (app *App) SetupHooks() {
Expand Down Expand Up @@ -285,6 +294,7 @@ func (app *App) InitParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.
paramsKeeper.Subspace(authz.ModuleName)

paramsKeeper.Subspace(beamtypes.ModuleName)
paramsKeeper.Subspace(dfracttypes.ModuleName)

return paramsKeeper
}
16 changes: 16 additions & 0 deletions app/testing/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,22 @@ func AddTestAddrs(app *app.App, ctx sdk.Context, accNum int, accAmt sdk.Int) []s
return addTestAddrs(app, ctx, accNum, accAmt, createRandomAccounts)
}

func AddTestAddrsWithDenom(app *app.App, ctx sdk.Context, accNum int, accAmt sdk.Int, denom string) []sdk.AccAddress {
return addTestAddrsWithDenom(app, ctx, accNum, accAmt, denom, createRandomAccounts)
}

func addTestAddrsWithDenom(app *app.App, ctx sdk.Context, accNum int, accAmt sdk.Int, denom string, strategy GenerateAccountStrategy) []sdk.AccAddress {
testAddrs := strategy(accNum)

initCoins := sdk.NewCoins(sdk.NewCoin(denom, accAmt))

for _, addr := range testAddrs {
initAccountWithCoins(app, ctx, addr, initCoins)
}

return testAddrs
}

func addTestAddrs(app *app.App, ctx sdk.Context, accNum int, accAmt sdk.Int, strategy GenerateAccountStrategy) []sdk.AccAddress {
testAddrs := strategy(accNum)

Expand Down
4 changes: 4 additions & 0 deletions config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ genesis:
gov:
deposit_params:
min_deposit: [{"amount": "1000000000", "denom": "ulum"}]
dfract:
params:
min_deposit_amount: "1"
deposit_denom: "ulum"
faucet:
name: user1
coins: ["10ulum"]
Expand Down
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ require (
github.com/stretchr/testify v1.8.0
github.com/tendermint/tendermint v0.34.20
github.com/tendermint/tm-db v0.6.7
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd
google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc
google.golang.org/grpc v1.48.0
google.golang.org/protobuf v1.28.0
google.golang.org/protobuf v1.28.1
)

require (
Expand Down Expand Up @@ -112,7 +112,7 @@ require (
github.com/zondax/hid v0.9.0 // indirect
go.etcd.io/bbolt v1.3.6 // indirect
golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 // indirect
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e // indirect
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c // indirect
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect
golang.org/x/text v0.3.7 // indirect
Expand Down
11 changes: 6 additions & 5 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -264,8 +264,6 @@ github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4
github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw=
github.com/cosmos/iavl v0.19.0 h1:sgyrjqOkycXiN7Tuupuo4QAldKFg7Sipyfeg/IL7cps=
github.com/cosmos/iavl v0.19.0/go.mod h1:l5h9pAB3m5fihB3pXVgwYqdY8aBsMagqz7T0MUjxZeA=
github.com/cosmos/ibc-go/v2 v2.4.0 h1:+zoP4MKHiDx+5nwq6L19wEPiSNBUS2lmWSo35UWdivQ=
github.com/cosmos/ibc-go/v2 v2.4.0/go.mod h1:178DJNV01ypS5qSG1p4QqMDTKd2N2sHVNE5TEwqWCV4=
github.com/cosmos/ibc-go/v3 v3.2.0 h1:Mh+RWo5FHPMM1Xsrar3uwKufdEGdIp5LDkVk9cYKYYA=
github.com/cosmos/ibc-go/v3 v3.2.0/go.mod h1:DrDYXJjWNwgv72cK1Il+BegtyGIDXcx+cnJwWGzve6o=
github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4=
Expand Down Expand Up @@ -1464,8 +1462,9 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su
golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9 h1:Yqz/iviulwKwAREEeUd3nbBFn0XuyJqkoft2IlrvOhc=
golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ=
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand Down Expand Up @@ -1898,8 +1897,9 @@ google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX
google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd h1:e0TwkXOdbnH/1x5rc5MZ/VYyiZ4v+RdVfrGMqEwT68I=
google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc h1:Nf+EdcTLHR8qDNN/KfkQL0u0ssxt9OhbaWCl5C0ucEI=
google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk=
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
Expand All @@ -1917,8 +1917,9 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
49 changes: 0 additions & 49 deletions proto/cosmos/base/query/v1beta1/pagination.proto

This file was deleted.

40 changes: 0 additions & 40 deletions proto/cosmos/base/v1beta1/coin.proto

This file was deleted.

Loading

0 comments on commit 59ae904

Please sign in to comment.