Skip to content

Instantly share code, notes, and snippets.

View zeroFruit's full-sized avatar
🎯
Focusing

JooHyung Kim zeroFruit

🎯
Focusing
View GitHub Profile
@zeroFruit
zeroFruit / migrations.go
Created July 5, 2022 01:09
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - x/foo migration handler
package keeper // migrations.go
type Migrator struct {
keeper Keeper
}
func NewMigrator(keeper Keeper) Migrator {
return Migrator{keeper: keeper}
}
@zeroFruit
zeroFruit / module migration file tree.txt
Created July 5, 2022 01:09
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - module migration file tree
x
β”œβ”€β”€ foo
β”‚ β”œβ”€β”€ keepers
β”‚ β”‚ └── migrations.go
β”‚ β”œβ”€β”€ migrations
β”‚ β”‚ β”œβ”€β”€ v1
β”‚ β”‚ β”‚ β”œβ”€β”€ tx.pb.go
β”‚ β”‚ β”‚ └── ...
β”‚ β”‚ └── v2
β”‚ β”‚ └── migrations.go
@zeroFruit
zeroFruit / upgrade.go
Created July 5, 2022 01:08
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - v2 upgrade ex
package v2 // upgrades.go
var DenomMetadata = banktypes.Metadata{...}
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
bk bankkeeper.Keeper,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
@zeroFruit
zeroFruit / app.go
Last active July 5, 2022 01:07
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - SimApp setup upgrade handler
package app // app.go
func NewSimApp(...) *SimApp {
// setupUpgradeHandlers should be called before `LoadLatestVersion()`
// because StoreLoad is sealed after that
app.setupUpgradeHandlers(configurator, app.BankKeeper)
if loadLatest {
if err := app.LoadLatestVersion(); err != nil {
@zeroFruit
zeroFruit / upgrades.go
Created July 5, 2022 01:06
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - app upgrades
package app // upgrades.go
func (app *App) setupUpgradeHandlers(
configurator module.Configurator,
...
) {
app.UpgradeKeeper.SetUpgradeHandler(
v2.UpgradeName,
v2.CreateUpgradeHandler(app.mm, configurator, ...),
)
@zeroFruit
zeroFruit / handler.go
Created July 5, 2022 01:05
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - UpgradeHandler
package v2 // upgrades.go
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
...
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
...
@zeroFruit
zeroFruit / constants.go
Created July 5, 2022 01:04
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - UpgradeHandler constants
package v2 // constants.go
const (
UpgradeName = "v2.0.0"
...
)
@zeroFruit
zeroFruit / Application upgrade file tree.txt
Created July 5, 2022 01:03
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - Application upgrade file tree
. # application project root
β”œβ”€β”€ app
β”‚ β”œβ”€β”€ upgrades
β”‚ β”‚ β”œβ”€β”€ v2
β”‚ β”‚ β”‚ β”œβ”€β”€ constants.go
β”‚ β”‚ β”‚ └── upgrades.go
β”‚ β”‚ └── ...
β”‚ β”œβ”€β”€ app.go
β”‚ └── upgrades.go
└── ...
@zeroFruit
zeroFruit / module.go
Created July 5, 2022 01:01
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - x/upgrade
func (am AppModule) BeginBlock(ctx sdk.Context, req abci.RequestBeginBlock) {
BeginBlocker(am.keeper, ctx, req)
}
func BeginBlocker(k keeper.Keeper, ctx sdk.Context, _ abci.RequestBeginBlock) {
plan, found := k.GetUpgradePlan(ctx)
...
if !found {
return
}
@zeroFruit
zeroFruit / module.go
Created July 5, 2022 00:57
Cosmos Dev Series: Cosmos-SDK-based Blockchain Upgrade - VersionMap
// VersionMap is a map of moduleName -> version
type VersionMap map[string]uint64