Skip to content

Commit

Permalink
Merge pull request #509 from ComposableFi/testnet-release-6.6.2
Browse files Browse the repository at this point in the history
Prefix testnet and mainnet releases
  • Loading branch information
RustNinja committed Apr 30, 2024
2 parents 8941a37 + 239d74f commit 48749f6
Show file tree
Hide file tree
Showing 8 changed files with 819 additions and 12 deletions.
4 changes: 2 additions & 2 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"path/filepath"
"strings"

"github.com/notional-labs/composable/v6/app/upgrades/v6_6_1"
"github.com/notional-labs/composable/v6/app/upgrades/v6_6_3"

nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node"
authante "github.com/cosmos/cosmos-sdk/x/auth/ante"
Expand Down Expand Up @@ -148,7 +148,7 @@ var (
// https://github.com/CosmWasm/wasmd/blob/02a54d33ff2c064f3539ae12d75d027d9c665f05/x/wasm/internal/types/proposal.go#L28-L34
EnableSpecificProposals = ""

Upgrades = []upgrades.Upgrade{v6_6_1.Upgrade}
Upgrades = []upgrades.Upgrade{v6_6_3.Upgrade}
Forks = []upgrades.Fork{}
)

Expand Down
20 changes: 10 additions & 10 deletions app/upgrades/v6_6_1/upgrades_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ package v6_6_1_test

import (
"encoding/json"
ibchookskeeper "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper"
ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types"
"strings"
"testing"
"time"

ibchookskeeper "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper"
ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types"

"github.com/notional-labs/composable/v6/app/upgrades/v6_6_1"

"cosmossdk.io/math"
Expand All @@ -22,7 +23,6 @@ import (
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types"
ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types"
ibctransfemiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types"

apptesting "github.com/notional-labs/composable/v6/app"
"github.com/notional-labs/composable/v6/bech32-migration/utils"
Expand Down Expand Up @@ -259,29 +259,29 @@ func prepareForTestingPfmMiddlewareModule(s *UpgradeTestSuite) {

func prepareForTestingIbcTransferMiddlewareModule(s *UpgradeTestSuite) {
store := s.Ctx.KVStore(s.App.GetKey(ibctransfermiddlewaretypes.StoreKey))
var fees []*ibctransfemiddlewaretypes.ChannelFee
fees = append(fees, &ibctransfemiddlewaretypes.ChannelFee{
var fees []*ibctransfermiddlewaretypes.ChannelFee
fees = append(fees, &ibctransfermiddlewaretypes.ChannelFee{
Channel: "channel-7",
AllowedTokens: []*ibctransfemiddlewaretypes.CoinItem{{
AllowedTokens: []*ibctransfermiddlewaretypes.CoinItem{{
MinFee: sdk.Coin{},
Percentage: 20,
}},
FeeAddress: "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs",
MinTimeoutTimestamp: 0,
})
fees = append(fees, &ibctransfemiddlewaretypes.ChannelFee{
fees = append(fees, &ibctransfermiddlewaretypes.ChannelFee{
Channel: "channel-9",
AllowedTokens: []*ibctransfemiddlewaretypes.CoinItem{{
AllowedTokens: []*ibctransfermiddlewaretypes.CoinItem{{
MinFee: sdk.Coin{},
Percentage: 10,
}},
FeeAddress: "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs",
MinTimeoutTimestamp: 0,
})
params := ibctransfemiddlewaretypes.Params{ChannelFees: fees}
params := ibctransfermiddlewaretypes.Params{ChannelFees: fees}
encCdc := apptesting.MakeEncodingConfig()
bz := encCdc.Amino.MustMarshal(&params)
store.Set(ibctransfemiddlewaretypes.ParamsKey, bz)
store.Set(ibctransfermiddlewaretypes.ParamsKey, bz)
}

func prepareForTestingIbcHooksModule(s *UpgradeTestSuite) {
Expand Down
20 changes: 20 additions & 0 deletions app/upgrades/v6_6_2/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package v6_6_2

import (
store "github.com/cosmos/cosmos-sdk/store/types"
"github.com/notional-labs/composable/v6/app/upgrades"
)

const (
// UpgradeName defines the on-chain upgrade name for the composable upgrade.
UpgradeName = "v6_6_2"
)

var Upgrade = upgrades.Upgrade{
UpgradeName: UpgradeName,
CreateUpgradeHandler: CreateUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{
Added: []string{},
Deleted: []string{},
},
}
32 changes: 32 additions & 0 deletions app/upgrades/v6_6_2/upgrade.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package v6_6_2

import (
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types"
ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types"

"github.com/notional-labs/composable/v6/app/keepers"
"github.com/notional-labs/composable/v6/app/upgrades"
bech32IbcHooksMigration "github.com/notional-labs/composable/v6/bech32-migration/ibchooks"
bench32ibctransfermiddleware "github.com/notional-labs/composable/v6/bech32-migration/ibctransfermiddleware"
)

func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
_ upgrades.BaseAppParamManager,
codec codec.Codec,
keepers *keepers.AppKeepers,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
keys := keepers.GetKVStoreKey()
// Migration prefix
ctx.Logger().Info("First step: Migrate addresses stored in bech32 form to use new prefix")
bench32ibctransfermiddleware.MigrateAddressBech32(ctx, keys[ibctransfermiddlewaretypes.StoreKey], codec)
bech32IbcHooksMigration.MigrateAddressBech32(ctx, keys[ibchookstypes.StoreKey], codec)
return mm.RunMigrations(ctx, configurator, vm)
}
}
135 changes: 135 additions & 0 deletions app/upgrades/v6_6_2/upgrades_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
package v6_6_2_test

import (
"encoding/json"
"testing"

"github.com/notional-labs/composable/v6/app/upgrades/v6_6_2"
ibchookskeeper "github.com/notional-labs/composable/v6/x/ibc-hooks/keeper"
ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types"

"cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
apptesting "github.com/notional-labs/composable/v6/app"
"github.com/notional-labs/composable/v6/bech32-migration/utils"
ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types"
"github.com/stretchr/testify/suite"
)

const (
COIN_DENOM = "stake"
CONNECTION_0 = "connection-0"
PORT_0 = "port-0"
CHANNEL_0 = "channel-0"
)

type UpgradeTestSuite struct {
apptesting.KeeperTestHelper
}

func TestUpgradeTestSuite(t *testing.T) {
suite.Run(t, new(UpgradeTestSuite))
}

// Ensures the test does not error out.
func (s *UpgradeTestSuite) TestForMigratingNewPrefix() {
// DEFAULT PREFIX: centauri
sdk.SetAddrCacheEnabled(false)

sdk.GetConfig().SetBech32PrefixForAccount(utils.OldBech32PrefixAccAddr, utils.OldBech32PrefixAccPub)
sdk.GetConfig().SetBech32PrefixForValidator(utils.OldBech32PrefixValAddr, utils.OldBech32PrefixValPub)
sdk.GetConfig().SetBech32PrefixForConsensusNode(utils.OldBech32PrefixConsAddr, utils.OldBech32PrefixConsPub)

s.Setup(s.T())

prepareForTestingIbcTransferMiddlewareModule(s)
prepareForTestingIbcHooksModule(s)

/* == UPGRADE == */
upgradeHeight := int64(5)
s.ConfirmUpgradeSucceeded(v6_6_2.UpgradeName, upgradeHeight)

checkUpgradeIbcTransferMiddlewareModule(s)
checkUpgradeIbcHooksMiddlewareModule(s)
}

func prepareForTestingIbcTransferMiddlewareModule(s *UpgradeTestSuite) {
store := s.Ctx.KVStore(s.App.GetKey(ibctransfermiddlewaretypes.StoreKey))
var fees []*ibctransfermiddlewaretypes.ChannelFee
fees = append(fees, &ibctransfermiddlewaretypes.ChannelFee{
Channel: "channel-7",
AllowedTokens: []*ibctransfermiddlewaretypes.CoinItem{{
MinFee: sdk.Coin{},
Percentage: 20,
}},
FeeAddress: "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs",
MinTimeoutTimestamp: 0,
})
fees = append(fees, &ibctransfermiddlewaretypes.ChannelFee{
Channel: "channel-9",
AllowedTokens: []*ibctransfermiddlewaretypes.CoinItem{{
MinFee: sdk.Coin{},
Percentage: 10,
}},
FeeAddress: "centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs",
MinTimeoutTimestamp: 0,
})
params := ibctransfermiddlewaretypes.Params{ChannelFees: fees}
encCdc := apptesting.MakeEncodingConfig()
bz := encCdc.Amino.MustMarshal(&params)
store.Set(ibctransfermiddlewaretypes.ParamsKey, bz)
}

func prepareForTestingIbcHooksModule(s *UpgradeTestSuite) {
store := s.Ctx.KVStore(s.App.GetKey(ibchookstypes.StoreKey))
store.Set(ibchookskeeper.GetPacketKey("channel-2", 2), []byte("centauri1hj5fveer5cjtn4wd6wstzugjfdxzl0xpzxlwgs"))
store.Set(ibchookskeeper.GetPacketKey("channel-4", 2), []byte("centauri1wkjvpgkuchq0r8425g4z4sf6n85zj5wtmqzjv9"))
}

func checkUpgradeIbcTransferMiddlewareModule(s *UpgradeTestSuite) {
data := s.App.IbcTransferMiddlewareKeeper.GetChannelFeeAddress(s.Ctx, "channel-9")
s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data)

data = s.App.IbcTransferMiddlewareKeeper.GetChannelFeeAddress(s.Ctx, "channel-7")
s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data)
data = s.App.IbcTransferMiddlewareKeeper.GetChannelFeeAddress(s.Ctx, "channel-1")
s.Suite.Equal("", data)
}

func checkUpgradeIbcHooksMiddlewareModule(s *UpgradeTestSuite) {
data := s.App.IBCHooksKeeper.GetPacketCallback(s.Ctx, "channel-2", 2)
s.Suite.Equal("pica1hj5fveer5cjtn4wd6wstzugjfdxzl0xpas3hgy", data)

data = s.App.IBCHooksKeeper.GetPacketCallback(s.Ctx, "channel-4", 2)
s.Suite.Equal("pica1wkjvpgkuchq0r8425g4z4sf6n85zj5wtykvtv3", data)

data = s.App.IBCHooksKeeper.GetPacketCallback(s.Ctx, "channel-2", 1)
s.Suite.Equal("", data)
}

func CreateVestingAccount(s *UpgradeTestSuite,
) vestingtypes.ContinuousVestingAccount {
str := `{"@type":"/cosmos.vesting.v1beta1.ContinuousVestingAccount","base_vesting_account":{"base_account":{"address":"centauri1alga5e8vr6ccr9yrg0kgxevpt5xgmgrvfkc5p8","pub_key":{"@type":"/cosmos.crypto.multisig.LegacyAminoPubKey","threshold":4,"public_keys":[{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AlnzK22KrkylnvTCvZZc8eZnydtQuzCWLjJJSMFUvVHf"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Aiw2Ftg+fnoHDU7M3b0VMRsI0qurXlerW0ahtfzSDZA4"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AvEHv+MVYRVau8FbBcJyG0ql85Tbbn7yhSA0VGmAY4ku"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Az5VHWqi3zMJu1rLGcu2EgNXLLN+al4Dy/lj6UZTzTCl"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Ai4GlSH3uG+joMnAFbQC3jQeHl9FPvVTlRmwIFt7d7TI"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A2kAzH2bZr530jmFq/bRFrT2q8SRqdnfIebba+YIBqI1"}]},"account_number":46,"sequence":27},"original_vesting":[{"denom":"stake","amount":"22165200000000"}],"delegated_free":[{"denom":"stake","amount":"443382497453"}],"delegated_vesting":[{"denom":"stake","amount":"22129422502547"}],"end_time":1770994800},"start_time":1676300400}`

var acc vestingtypes.ContinuousVestingAccount
if err := json.Unmarshal([]byte(str), &acc); err != nil {
panic(err)
}

err := banktestutil.FundAccount(s.App.BankKeeper, s.Ctx, acc.BaseAccount.GetAddress(),
acc.GetOriginalVesting())
if err != nil {
panic(err)
}

err = banktestutil.FundAccount(s.App.BankKeeper, s.Ctx, acc.BaseAccount.GetAddress(),
sdk.NewCoins(sdk.NewCoin(COIN_DENOM, math.NewIntFromUint64(1))))
if err != nil {
panic(err)
}

s.App.AccountKeeper.SetAccount(s.Ctx, &acc)
return acc
}
20 changes: 20 additions & 0 deletions app/upgrades/v6_6_3/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package v6_6_3

import (
store "github.com/cosmos/cosmos-sdk/store/types"
"github.com/notional-labs/composable/v6/app/upgrades"
)

const (
// UpgradeName defines the on-chain upgrade name for the composable upgrade.
UpgradeName = "v6_6_3"
)

var Upgrade = upgrades.Upgrade{
UpgradeName: UpgradeName,
CreateUpgradeHandler: CreateUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{
Added: []string{},
Deleted: []string{},
},
}
60 changes: 60 additions & 0 deletions app/upgrades/v6_6_3/upgrade.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package v6_6_3

import (
"github.com/CosmWasm/wasmd/x/wasm"
"github.com/cosmos/cosmos-sdk/codec"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
routertypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types"
icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types"
ibchookstypes "github.com/notional-labs/composable/v6/x/ibc-hooks/types"
ibctransfermiddlewaretypes "github.com/notional-labs/composable/v6/x/ibctransfermiddleware/types"

"github.com/notional-labs/composable/v6/app/keepers"
"github.com/notional-labs/composable/v6/app/upgrades"
bech32authmigration "github.com/notional-labs/composable/v6/bech32-migration/auth"
bech32govmigration "github.com/notional-labs/composable/v6/bech32-migration/gov"
bech32IbcHooksMigration "github.com/notional-labs/composable/v6/bech32-migration/ibchooks"
bench32ibctransfermiddleware "github.com/notional-labs/composable/v6/bech32-migration/ibctransfermiddleware"
bech32icamigration "github.com/notional-labs/composable/v6/bech32-migration/ica"
bech32mintmigration "github.com/notional-labs/composable/v6/bech32-migration/mint"
bech32PfmMigration "github.com/notional-labs/composable/v6/bech32-migration/pfmmiddleware"
bech32slashingmigration "github.com/notional-labs/composable/v6/bech32-migration/slashing"
bech32stakingmigration "github.com/notional-labs/composable/v6/bech32-migration/staking"
bech32transfermiddlewaremigration "github.com/notional-labs/composable/v6/bech32-migration/transfermiddleware"
bech32WasmMigration "github.com/notional-labs/composable/v6/bech32-migration/wasm"
transfermiddlewaretypes "github.com/notional-labs/composable/v6/x/transfermiddleware/types"
)

func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
_ upgrades.BaseAppParamManager,
codec codec.Codec,
keepers *keepers.AppKeepers,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
keys := keepers.GetKVStoreKey()
// Migration prefix
ctx.Logger().Info("First step: Migrate addresses stored in bech32 form to use new prefix")
bech32stakingmigration.MigrateAddressBech32(ctx, keys[stakingtypes.StoreKey], codec)
bech32stakingmigration.MigrateUnbonding(ctx, keys[stakingtypes.StoreKey], codec)
bech32slashingmigration.MigrateAddressBech32(ctx, keys[slashingtypes.StoreKey], codec)
bech32govmigration.MigrateAddressBech32(ctx, keys[govtypes.StoreKey], codec)
bech32authmigration.MigrateAddressBech32(ctx, keys[authtypes.StoreKey], codec)
bech32icamigration.MigrateAddressBech32(ctx, keys[icahosttypes.StoreKey], codec)
bech32mintmigration.MigrateAddressBech32(ctx, keys[minttypes.StoreKey], codec)
bech32transfermiddlewaremigration.MigrateAddressBech32(ctx, keys[transfermiddlewaretypes.StoreKey], codec)
bech32WasmMigration.MigrateAddressBech32(ctx, keys[wasm.StoreKey], codec)
bech32PfmMigration.MigrateAddressBech32(ctx, keys[routertypes.StoreKey], codec, keepers)
bench32ibctransfermiddleware.MigrateAddressBech32(ctx, keys[ibctransfermiddlewaretypes.StoreKey], codec)
bech32IbcHooksMigration.MigrateAddressBech32(ctx, keys[ibchookstypes.StoreKey], codec)
return mm.RunMigrations(ctx, configurator, vm)
}
}
Loading

0 comments on commit 48749f6

Please sign in to comment.