Skip to content

Commit 1cbb9de

Browse files
authored
Merge pull request #43 from onomyprotocol/release/v1.1.6
Release/v1.1.6
2 parents af92d6f + bfb3b7a commit 1cbb9de

File tree

8 files changed

+182
-24
lines changed

8 files changed

+182
-24
lines changed

app/app.go

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import (
88
"os"
99
"path/filepath"
1010

11-
// v0 "github.com/onomyprotocol/onex/app/upgrades/"
12-
1311
"github.com/cosmos/cosmos-sdk/baseapp"
1412
"github.com/cosmos/cosmos-sdk/client"
1513
"github.com/cosmos/cosmos-sdk/client/grpc/tmservice"
@@ -20,7 +18,6 @@ import (
2018
"github.com/cosmos/cosmos-sdk/server/config"
2119
servertypes "github.com/cosmos/cosmos-sdk/server/types"
2220
"github.com/cosmos/cosmos-sdk/simapp"
23-
storetypes "github.com/cosmos/cosmos-sdk/store/types"
2421
sdk "github.com/cosmos/cosmos-sdk/types"
2522
"github.com/cosmos/cosmos-sdk/types/module"
2623
"github.com/cosmos/cosmos-sdk/version"
@@ -120,15 +117,20 @@ import (
120117
marketclient "github.com/pendulum-labs/market/x/market/client"
121118
marketkeeper "github.com/pendulum-labs/market/x/market/keeper"
122119
markettypes "github.com/pendulum-labs/market/x/market/types"
120+
121+
"github.com/onomyprotocol/onex/app/upgrades"
122+
v1_1_6 "github.com/onomyprotocol/onex/app/upgrades/v1.1.6"
123123
)
124124

125125
const (
126126
AppName = "onex"
127-
upgradeName = "v1.1.0"
128127
AccountAddressPrefix = "onomy"
129128
)
130129

131130
var (
131+
Upgrades = []upgrades.Upgrade{}
132+
Forks = []upgrades.Fork{v1_1_6.Fork}
133+
132134
// DefaultNodeHome default home directories for the application daemon
133135
DefaultNodeHome string
134136

@@ -554,6 +556,7 @@ func New(
554556
consumertypes.ModuleName,
555557
)
556558
app.MM.SetOrderEndBlockers(
559+
upgradetypes.ModuleName,
557560
crisistypes.ModuleName,
558561
govtypes.ModuleName,
559562
stakingtypes.ModuleName,
@@ -567,7 +570,6 @@ func New(
567570
authz.ModuleName,
568571
feegrant.ModuleName,
569572
paramstypes.ModuleName,
570-
upgradetypes.ModuleName,
571573
vestingtypes.ModuleName,
572574
ibctransfertypes.ModuleName,
573575
ibchost.ModuleName,
@@ -582,6 +584,7 @@ func New(
582584
// so that other modules that want to create or claim capabilities afterwards in InitChain
583585
// can do so safely.
584586
app.MM.SetOrderInitGenesis(
587+
upgradetypes.ModuleName,
585588
capabilitytypes.ModuleName,
586589
authtypes.ModuleName,
587590
banktypes.ModuleName,
@@ -595,7 +598,6 @@ func New(
595598
authz.ModuleName,
596599
feegrant.ModuleName,
597600
paramstypes.ModuleName,
598-
upgradetypes.ModuleName,
599601
vestingtypes.ModuleName,
600602
ibchost.ModuleName,
601603
ibctransfertypes.ModuleName,
@@ -659,7 +661,8 @@ func New(
659661
app.SetBeginBlocker(app.BeginBlocker)
660662
app.SetEndBlocker(app.EndBlocker)
661663

662-
app.setupUpgradeHandlers(app.configurator)
664+
app.setupUpgradeStoreLoaders()
665+
app.setupUpgradeHandlers()
663666

664667
if loadLatest {
665668
if err := app.LoadLatestVersion(); err != nil {
@@ -679,6 +682,7 @@ func (app *App) Name() string { return app.BaseApp.Name() }
679682

680683
// BeginBlocker application updates every begin block
681684
func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
685+
BeginBlockForks(ctx, app)
682686
return app.MM.BeginBlock(ctx, req)
683687
}
684688

@@ -918,29 +922,35 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
918922
return paramsKeeper
919923
}
920924

921-
func (app *App) setupUpgradeHandlers(cfg module.Configurator) {
922-
app.UpgradeKeeper.SetUpgradeHandler(upgradeName, func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
923-
return app.MM.RunMigrations(ctx, cfg, vm)
924-
})
925-
925+
func (app *App) setupUpgradeStoreLoaders() {
926926
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
927927
if err != nil {
928-
panic(fmt.Errorf("failed to read upgrade info from disk: %w", err))
928+
panic(fmt.Sprintf("failed to read upgrade info from disk %s", err))
929929
}
930930

931-
// configure store loader that checks if version == upgradeHeight and applies store upgrades
932931
if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
933932
return
934933
}
935934

936-
var storeUpgrades *storetypes.StoreUpgrades
937-
938-
switch upgradeInfo.Name {
939-
default:
940-
// no store upgrades
935+
for _, upgrade := range Upgrades {
936+
if upgradeInfo.Name == upgrade.UpgradeName {
937+
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &upgrade.StoreUpgrades))
938+
}
941939
}
940+
}
942941

943-
if storeUpgrades != nil {
944-
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, storeUpgrades))
942+
func (app *App) setupUpgradeHandlers() {
943+
for _, upgrade := range Upgrades {
944+
app.UpgradeKeeper.SetUpgradeHandler(
945+
upgrade.UpgradeName,
946+
upgrade.CreateUpgradeHandler(
947+
app.MM,
948+
app.configurator,
949+
&upgrades.UpgradeKeepers{
950+
BankKeeper: app.BankKeeper,
951+
MarketKeeper: app.MarketKeeper,
952+
},
953+
),
954+
)
945955
}
946956
}

app/fork.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package app
2+
3+
import (
4+
sdk "github.com/cosmos/cosmos-sdk/types"
5+
"github.com/onomyprotocol/onex/app/upgrades"
6+
)
7+
8+
// BeginBlockForks is intended to be ran in a chain upgrade.
9+
func BeginBlockForks(ctx sdk.Context, app *App) {
10+
for _, fork := range Forks {
11+
if ctx.BlockHeight() == fork.UpgradeHeight {
12+
fork.BeginForkLogic(ctx, &upgrades.ForkKeepers{
13+
BankKeeper: app.BankKeeper,
14+
MarketKeeper: app.MarketKeeper,
15+
})
16+
return
17+
}
18+
}
19+
}

app/proposals_whitelisting.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ var WhitelistedParams = map[paramChangeKey]struct{}{
7070
// ccv params (note: some CCV params should not be configurable or require special coordination with the provider chain)
7171
{Subspace: consumertypes.ModuleName, Key: "ProviderRewardDenoms"}: {},
7272
{Subspace: consumertypes.ModuleName, Key: "RewardDenoms"}: {},
73+
{Subspace: consumertypes.ModuleName, Key: "DistributionTransmissionChannel"}: {},
7374
{Subspace: consumertypes.ModuleName, Key: "ConsumerRedistributionFraction"}: {},
7475
{Subspace: consumertypes.ModuleName, Key: "BlocksPerDistributionTransmission"}: {},
7576
{Subspace: consumertypes.ModuleName, Key: "TransferTimeoutPeriod"}: {},

app/upgrades/types.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package upgrades
2+
3+
import (
4+
store "github.com/cosmos/cosmos-sdk/store/types"
5+
sdk "github.com/cosmos/cosmos-sdk/types"
6+
"github.com/cosmos/cosmos-sdk/types/module"
7+
bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
8+
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
9+
marketkeeper "github.com/pendulum-labs/market/x/market/keeper"
10+
)
11+
12+
// Upgrade defines a struct containing necessary fields that a SoftwareUpgradeProposal
13+
// must have written, in order for the state migration to go smoothly.
14+
// An upgrade must implement this struct, and then set it in the app.go.
15+
// The app.go will then define the handler.
16+
type Upgrade struct {
17+
// Upgrade version name, for the upgrade handler, e.g. `v7`
18+
UpgradeName string
19+
20+
// CreateUpgradeHandler defines the function that creates an upgrade handler
21+
CreateUpgradeHandler func(*module.Manager, module.Configurator, *UpgradeKeepers) upgradetypes.UpgradeHandler
22+
23+
// Store upgrades, should be used for any new modules introduced, new modules deleted, or store names renamed.
24+
StoreUpgrades store.StoreUpgrades
25+
}
26+
27+
type UpgradeKeepers struct {
28+
// keepers
29+
BankKeeper bankkeeper.Keeper
30+
MarketKeeper marketkeeper.Keeper
31+
}
32+
33+
// Fork defines a struct containing the requisite fields for a non-software upgrade proposal
34+
// Hard Fork at a given height to implement.
35+
// There is one time code that can be added for the start of the Fork, in `BeginForkLogic`.
36+
// Any other change in the code should be height-gated, if the goal is to have old and new binaries
37+
// to be compatible prior to the upgrade height.
38+
type Fork struct {
39+
// Upgrade version name, for the upgrade handler, e.g. `v7`
40+
UpgradeName string
41+
// height the upgrade occurs at
42+
UpgradeHeight int64
43+
44+
// Function that runs some custom state transition code at the beginning of a fork.
45+
BeginForkLogic func(ctx sdk.Context, keepers *ForkKeepers)
46+
}
47+
48+
type ForkKeepers struct {
49+
// keepers
50+
BankKeeper bankkeeper.Keeper
51+
MarketKeeper marketkeeper.Keeper
52+
}

app/upgrades/v1.1.6/constants.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package v1_1_6
2+
3+
import (
4+
"github.com/onomyprotocol/onex/app/upgrades"
5+
)
6+
7+
const (
8+
// UpgradeName defines the on-chain upgrades name.
9+
UpgradeName = "v1_1_6"
10+
UpgradeHeight = 389310
11+
)
12+
13+
var Fork = upgrades.Fork{
14+
UpgradeName: UpgradeName,
15+
UpgradeHeight: UpgradeHeight,
16+
BeginForkLogic: RunForkLogic,
17+
}

app/upgrades/v1.1.6/fork.go

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Package v1_1_6 is contains chain fork of the corresponding version.
2+
package v1_1_6 //nolint:revive,stylecheck // app version
3+
4+
import (
5+
"github.com/onomyprotocol/onex/app/upgrades"
6+
7+
sdk "github.com/cosmos/cosmos-sdk/types"
8+
markettypes "github.com/pendulum-labs/market/x/market/types"
9+
)
10+
11+
func RunForkLogic(
12+
ctx sdk.Context,
13+
keepers *upgrades.ForkKeepers,
14+
) {
15+
ctx.Logger().Info("Starting fork...")
16+
17+
// Deactivate all drops
18+
drops := keepers.MarketKeeper.GetAllDrop(ctx)
19+
for _, drop := range drops {
20+
drop.Active = false
21+
keepers.MarketKeeper.SetDrop(ctx, drop)
22+
}
23+
24+
// Set pool drops to zero and wipe leaders
25+
pools := keepers.MarketKeeper.GetAllPool(ctx)
26+
for _, pool := range pools {
27+
pool.Drops = sdk.ZeroInt()
28+
pool.Leaders = []*markettypes.Leader{}
29+
30+
keepers.MarketKeeper.SetPool(ctx, pool)
31+
}
32+
33+
// Set member balances to zero
34+
members := keepers.MarketKeeper.GetAllMember(ctx)
35+
for _, member := range members {
36+
member.Balance = sdk.ZeroInt()
37+
keepers.MarketKeeper.SetMember(ctx, member)
38+
}
39+
40+
onexAmount, _ := sdk.NewIntFromString("94784650277373001264452")
41+
42+
ibc1Amount, _ := sdk.NewIntFromString("998915079")
43+
44+
ibc2Amount, _ := sdk.NewIntFromString("28966246179579930912901")
45+
46+
ibc3Amount, _ := sdk.NewIntFromString("2952795016")
47+
48+
onexCoin := sdk.NewCoin("aonex", onexAmount)
49+
ibc1 := sdk.NewCoin("ibc/30EDC220372A2C3D0FC1D987E19062E35375DECD1001A5EFA44EB92FF59D1867", ibc1Amount)
50+
ibc2 := sdk.NewCoin("ibc/5BDD8875CC2AF7BC842BE44236ACD576EA4F53C36347F74903B852060D6BF29A", ibc2Amount)
51+
ibc3 := sdk.NewCoin("ibc/CCCBD7307FEB70B0CF7ADF8503F711F6741F41623D25BAD8CB736E03BE384264", ibc3Amount)
52+
53+
reclaimCoins := sdk.NewCoins(onexCoin, ibc1, ibc2, ibc3)
54+
reclaimer, _ := sdk.AccAddressFromBech32("onomy1yc0lg97cy5e80jyajtkz0zke2rr4734anugf9g")
55+
56+
keepers.BankKeeper.SendCoinsFromModuleToAccount(ctx, markettypes.ModuleName, reclaimer, reclaimCoins)
57+
58+
ctx.Logger().Info("Fork complete")
59+
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ replace (
157157
github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.45.16-ics
158158
github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
159159
github.com/keybase/go-keychain => github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4
160-
github.com/pendulum-labs/market => github.com/onomyprotocol/market v1.1.2-dev
160+
github.com/pendulum-labs/market => github.com/onomyprotocol/market v1.1.4-dev
161161
github.com/tendermint/tendermint => github.com/graphprotocol/tendermint v0.34.28-fh.0
162162
google.golang.org/grpc => google.golang.org/grpc v1.33.2
163163
)

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2209,8 +2209,8 @@ github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:v
22092209
github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
22102210
github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ=
22112211
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
2212-
github.com/onomyprotocol/market v1.1.2-dev h1:uLCI2DMclMrKJ9YGi7RyOz5EmG8b7EvJoNwgqfwp5Ks=
2213-
github.com/onomyprotocol/market v1.1.2-dev/go.mod h1:OFWUMLq8cfNRQnc6WqReQYq+hNYRqoc2RmMvECSxdwk=
2212+
github.com/onomyprotocol/market v1.1.4-dev h1:fA1O3NAatEBx/YU2++2LcdBNRs+aX9N50rY/bWxmXfU=
2213+
github.com/onomyprotocol/market v1.1.4-dev/go.mod h1:OFWUMLq8cfNRQnc6WqReQYq+hNYRqoc2RmMvECSxdwk=
22142214
github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
22152215
github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
22162216
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=

0 commit comments

Comments
 (0)