upgrades

package
v0.1.14-dev1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 29, 2025 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Useful for local testing & development
	LocalNetPnfAddress = "pokt1eeeksh2tvkh7wzmfrljnhw4wrhs55lcuvmekkw"

	// The default PNF/DAO address in the genesis file for Alpha TestNet. Used to create new authz authorizations.
	AlphaTestNetPnfAddress = "pokt1r6ja6rz6rpae58njfrsgs5n5sp3r36r2q9j04h"

	// This is the authority address used to create new authz authorizations. Defaults to x/gov module account address.
	// DEV_NOTE: This hard-coded address is kept for record-keeping historical purposes.
	// Use `keepers.<target_module>.GetAuthority()` to get the authority address for the module.
	AlphaTestNetAuthorityAddress = "pokt10d07y265gmmuvt4z0w9aw880jnsr700j8yv32t"

	// The default PNF/DAO address in the genesis file for Beta TestNet. Used to create new authz authorizations.
	BetaTestNetPnfAddress = "pokt1f0c9y7mahf2ya8tymy8g4rr75ezh3pkklu4c3e"

	// PNF/DAO address specified in MainNet genesis.
	// Used to create new authz authorizations after migration is complete.
	MainNetPnfAddress = "pokt1hv3xrylxvwd7hfv03j50ql0ttp3s5hqqelegmv"

	// Grove address specified in MainNet genesis.
	// Used to create new authz authorizations throughout the migration process.
	MainnetGroveAddress = "pokt18808wvw0h4t450t06uvauny8lvscsxjfyua7vh"
)

Visit the pocket-network-genesis repo for the source of truth for these addresses. https://github.com/pokt-network/pocket-network-genesis/tree/master/shannon

View Source
const Upgrade_0_0_12_PlanName = "v0.0.12"
View Source
const Upgrade_0_0_13_PlanName = "v0.0.13"
View Source
const Upgrade_0_0_14_PlanName = "v0.0.14"
View Source
const Upgrade_0_1_10_PlanName = "v0.1.10"
View Source
const (
	Upgrade_0_1_11_PlanName = "v0.1.11"
)
View Source
const (
	Upgrade_0_1_12_PlanName = "v0.1.12"
)
View Source
const (
	Upgrade_0_1_13_PlanName = "v0.1.13"
)
View Source
const Upgrade_0_1_2_PlanName = "v0.1.2"
View Source
const Upgrade_0_1_3_PlanName = "v0.1.3"
View Source
const Upgrade_0_1_4_PlanName = "v0.1.4"
View Source
const Upgrade_0_1_5_PlanName = "v0.1.5"
View Source
const Upgrade_0_1_6_PlanName = "v0.1.6"
View Source
const (
	Upgrade_0_1_7_PlanName = "v0.1.7"
)
View Source
const (
	Upgrade_0_1_8_PlanName = "v0.1.8"
)
View Source
const Upgrade_0_1_9_PlanName = "v0.1.9"
View Source
const (
	Upgrade_NEXT_PlanName = "vNEXT"
)

Variables

NetworkAuthzGranteeAddress is a map of network names (i.e chain-id) to their respective authorization (i.e. PNF/DAO) addresses.

View Source
var UpgradeExample = Upgrade{

	PlanName:             "v0.0.0-Example",
	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

An example of an upgrade that uses the default upgrade handler and also performs additional state changes. For example, even if `ConsensusVersion` is not modified for any modules, it still might be beneficial to create an upgrade so node runners are signaled to start utilizing `Cosmovisor` for new binaries.

View Source
var Upgrade_0_0_10 = Upgrade{
	PlanName: "v0.0.10",
	CreateUpgradeHandler: func(mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		applyNewParameters := func(ctx context.Context) (err error) {

			appParams := keepers.ApplicationKeeper.GetParams(ctx)
			newMinStakeApp := cosmostypes.NewCoin("upokt", math.NewInt(100000000))
			appParams.MinStake = &newMinStakeApp
			err = keepers.ApplicationKeeper.SetParams(ctx, appParams)
			if err != nil {
				return err
			}

			supplierParams := keepers.SupplierKeeper.GetParams(ctx)
			newMinStakeSupplier := cosmostypes.NewCoin("upokt", math.NewInt(1000000))
			supplierParams.MinStake = &newMinStakeSupplier
			err = keepers.SupplierKeeper.SetParams(ctx, supplierParams)
			if err != nil {
				return err
			}

			gatewayParams := keepers.GatewayKeeper.GetParams(ctx)
			newMinStakeGW := cosmostypes.NewCoin("upokt", math.NewInt(1000000))
			gatewayParams.MinStake = &newMinStakeGW
			err = keepers.GatewayKeeper.SetParams(ctx, gatewayParams)
			if err != nil {
				return err
			}

			newProofRequirementThreshold := cosmostypes.NewCoin("upokt", math.NewInt(20000000))
			newProofMissingPenalty := cosmostypes.NewCoin("upokt", math.NewInt(320000000))
			newProofSubmissionFee := cosmostypes.NewCoin("upokt", math.NewInt(1000000))
			proofParams := prooftypes.NewParams(
				0.25,
				&newProofRequirementThreshold,
				&newProofMissingPenalty,
				&newProofSubmissionFee,
			)

			err = keepers.ProofKeeper.SetParams(ctx, proofParams)
			if err != nil {
				return err
			}

			sharedParams := keepers.SharedKeeper.GetParams(ctx)
			sharedParams.SupplierUnbondingPeriodSessions = uint64(1)
			sharedParams.ApplicationUnbondingPeriodSessions = uint64(1)
			sharedParams.ComputeUnitsToTokensMultiplier = uint64(42)
			err = keepers.SharedKeeper.SetParams(ctx, sharedParams)
			if err != nil {
				return err
			}
			return
		}

		applyNewAuthorizations := func(ctx context.Context) (err error) {

			grantAuthorizationMessages := []string{
				"/pocket.gateway.MsgUpdateParam",
				"/pocket.application.MsgUpdateParam",
				"/pocket.supplier.MsgUpdateParam",
			}

			expiration, err := time.Parse(time.RFC3339, "2500-01-01T00:00:00Z")
			if err != nil {
				return fmt.Errorf("failed to parse time: %w", err)
			}

			for _, msg := range grantAuthorizationMessages {
				err = keepers.AuthzKeeper.SaveGrant(
					ctx,
					cosmostypes.AccAddress(AlphaTestNetPnfAddress),
					cosmostypes.AccAddress(AlphaTestNetAuthorityAddress),
					authz.NewGenericAuthorization(msg),
					&expiration,
				)
				if err != nil {
					return fmt.Errorf("failed to save grant for message %s: %w", msg, err)
				}
			}
			return
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			err := applyNewParameters(ctx)
			if err != nil {
				return vm, err
			}

			err = applyNewAuthorizations(ctx)
			if err != nil {
				return vm, err
			}

			return mm.RunMigrations(ctx, configurator, vm)
		}
	},

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_0_10 is the upgrade handler for v0.0.10 Alpha TestNet upgrade Before/after validations should be done using the correct version, mimiching real-world scenario:

  • Before: v0.0.9
  • After: v0.0.10
View Source
var Upgrade_0_0_11 = Upgrade{
	PlanName: "v0.0.11",
	CreateUpgradeHandler: func(mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		applyNewParameters := func(ctx context.Context) (err error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting parameter updates for v0.0.11")

			sessionParams := sessiontypes.Params{
				NumSuppliersPerSession: uint64(15),
			}

			err = keepers.SessionKeeper.SetParams(ctx, sessionParams)
			if err != nil {
				logger.Error("Failed to set session params", "error", err)
				return err
			}
			logger.Info("Successfully updated session params", "new_params", sessionParams)

			tokenomicsParams := tokenomicstypes.Params{
				MintAllocationPercentages: tokenomicstypes.MintAllocationPercentages{
					Dao:         0.1,
					Proposer:    0.05,
					Supplier:    0.7,
					SourceOwner: 0.15,
					Application: 0.0,
				},
				DaoRewardAddress: AlphaTestNetPnfAddress,
			}

			err = keepers.TokenomicsKeeper.SetParams(ctx, tokenomicsParams)
			if err != nil {
				logger.Error("Failed to set tokenomics params", "error", err)
				return err
			}
			logger.Info("Successfully updated tokenomics params", "new_params", tokenomicsParams)

			return
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting v0.0.11 upgrade handler")

			err := applyNewParameters(ctx)
			if err != nil {
				logger.Error("Failed to apply new parameters", "error", err)
				return vm, err
			}

			logger.Info("Running module migrations")
			vm, err = mm.RunMigrations(ctx, configurator, vm)
			if err != nil {
				logger.Error("Failed to run migrations", "error", err)
				return vm, err
			}

			logger.Info("Successfully completed v0.0.11 upgrade handler")
			return vm, nil
		}
	},

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_0_11 is the upgrade handler for v0.0.11 Alpha TestNet upgrade Beta TestNet was launched with v0.0.11, so this upgrade is exclusively for Alpha TestNet.

  • Before: v0.0.10
  • After: v0.0.11
View Source
var Upgrade_0_0_12 = Upgrade{
	PlanName: Upgrade_0_0_12_PlanName,
	CreateUpgradeHandler: func(mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {
		// Parameter configurations aligned with repository config.yml specifications.
		// These values reflect the delta between v0.0.11 and the main branch as of #1043.
		// Reference:
		// - Comparison: https://github.com/pokt-network/poktroll/compare/v0.0.11..7541afd6d89a12d61e2c32637b535f24fae20b58
		// - Direct diff: `git diff v0.0.11..7541afd6d89a12d61e2c32637b535f24fae20b58 -- config.yml`
		//
		// DEV_NOTE: These parameter updates are derived from config.yml in the root directory
		// of this repository, which serves as the source of truth for all parameter changes.
		const (
			supplierStakingFee                = 1000000 // uPOKT
			serviceTargetNumRelays            = 100     // num relays
			tokenomicsGlobalInflationPerClaim = 0.1     // % of the claim amount
		)

		applyNewParameters := func(ctx context.Context) (err error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting parameter updates", "upgrade_plan_name", Upgrade_0_0_12_PlanName)

			supplierParams := keepers.SupplierKeeper.GetParams(ctx)
			supplierParams.MinStake = &cosmostypes.Coin{
				Denom:  "upokt",
				Amount: math.NewInt(supplierStakingFee),
			}
			err = keepers.SupplierKeeper.SetParams(ctx, supplierParams)
			if err != nil {
				logger.Error("Failed to set supplier params", "error", err)
				return err
			}
			logger.Info("Successfully updated supplier params", "new_params", supplierParams)

			serviceParams := keepers.ServiceKeeper.GetParams(ctx)
			serviceParams.TargetNumRelays = serviceTargetNumRelays
			err = keepers.ServiceKeeper.SetParams(ctx, serviceParams)
			if err != nil {
				logger.Error("Failed to set service params", "error", err)
				return err
			}
			logger.Info("Successfully updated service params", "new_params", serviceParams)

			tokenomicsParams := keepers.TokenomicsKeeper.GetParams(ctx)
			tokenomicsParams.GlobalInflationPerClaim = tokenomicsGlobalInflationPerClaim
			err = keepers.TokenomicsKeeper.SetParams(ctx, tokenomicsParams)
			if err != nil {
				logger.Error("Failed to set tokenomics params", "error", err)
				return err
			}
			logger.Info("Successfully updated tokenomics params", "new_params", tokenomicsParams)
			return nil
		}

		updateSuppliersRevShare := func(ctx context.Context) error {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			suppliers := keepers.SupplierKeeper.GetAllSuppliers(ctx)
			logger.Info("Updating (overriding) all suppliers to delegate 100% revenue share to the supplier's operator address",
				"num_suppliers", len(suppliers))

			for _, supplier := range suppliers {
				for _, service := range supplier.Services {
					if len(service.RevShare) > 1 {

						addresses := make([]string, len(service.RevShare))
						for i, rs := range service.RevShare {
							addresses[i] = rs.Address
						}
						revShareAddressesStr := "[" + strings.Join(addresses, ",") + "]"
						logger.Warn(
							"Overwriting existing revenue share configuration",
							"supplier_operator", supplier.OperatorAddress,
							"supplier_owner", supplier.OwnerAddress,
							"service", service.ServiceId,
							"previous_revshare_count", len(service.RevShare),
							"previous_revshare_addresses", revShareAddressesStr,
						)
						service.RevShare = []*sharedtypes.ServiceRevenueShare{
							{
								Address:            supplier.OperatorAddress,
								RevSharePercentage: uint64(100),
							},
						}
					} else if len(service.RevShare) == 1 {

						logger.Info("Updating supplier's revenue share configuration",
							"supplier_operator", supplier.OperatorAddress,
							"supplier_owner", supplier.OwnerAddress,
							"service", service.ServiceId,
							"previous_revshare_address", service.RevShare[0].Address,
						)
						currentRevShare := service.RevShare[0]
						service.RevShare = []*sharedtypes.ServiceRevenueShare{
							{
								Address:            currentRevShare.Address,
								RevSharePercentage: uint64(100),
							},
						}
					} else {
						logger.Warn("That shouldn't happen: no revenue share configuration found for supplier",
							"supplier_operator", supplier.OperatorAddress,
							"supplier_owner", supplier.OwnerAddress,
							"service", service.ServiceId,
						)
					}
				}
				keepers.SupplierKeeper.SetAndIndexDehydratedSupplier(ctx, supplier)
				logger.Info("Updated supplier",
					"supplier_operator", supplier.OperatorAddress,
					"supplier_owner", supplier.OwnerAddress)
			}
			return nil
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting upgrade handler", "upgrade_plan_name", Upgrade_0_0_12_PlanName)

			logger.Info("Starting parameter updates section", "upgrade_plan_name", Upgrade_0_0_12_PlanName)

			err := applyNewParameters(ctx)
			if err != nil {
				logger.Error("Failed to apply new parameters",
					"upgrade_plan_name", Upgrade_0_0_12_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Starting supplier RevShare updates section", "upgrade_plan_name", Upgrade_0_0_12_PlanName)

			err = updateSuppliersRevShare(ctx)
			if err != nil {
				logger.Error("Failed to update suppliers RevShare",
					"upgrade_plan_name", Upgrade_0_0_12_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Starting module migrations section", "upgrade_plan_name", Upgrade_0_0_12_PlanName)
			vm, err = mm.RunMigrations(ctx, configurator, vm)
			if err != nil {
				logger.Error("Failed to run migrations",
					"upgrade_plan_name", Upgrade_0_0_12_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Successfully completed upgrade handler", "upgrade_plan_name", Upgrade_0_0_12_PlanName)
			return vm, nil
		}
	},

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_0_12 handles the upgrade to release `v0.0.12`. This is planned to be issued on both Pocket Network's Shannon Alpha & Beta TestNets.

View Source
var Upgrade_0_0_13 = Upgrade{
	PlanName: Upgrade_0_0_13_PlanName,
	CreateUpgradeHandler: func(mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {
		applyNewParameters := func(ctx context.Context) (err error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting parameter updates", "upgrade_plan_name", Upgrade_0_0_13_PlanName)

			sharedParams := keepers.SharedKeeper.GetParams(ctx)
			sharedParams.GatewayUnbondingPeriodSessions = sharedtypes.DefaultGatewayUnbondingPeriodSessions

			if err = sharedParams.ValidateBasic(); err != nil {
				logger.Error("Failed to validate shared params", "error", err)
				return err
			}

			err = keepers.SharedKeeper.SetParams(ctx, sharedParams)
			if err != nil {
				logger.Error("Failed to set shared params", "error", err)
				return err
			}
			logger.Info("Successfully updated shared params", "new_params", sharedParams)

			return nil
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting upgrade handler", "upgrade_plan_name", Upgrade_0_0_13_PlanName)

			logger.Info("Starting parameter updates section", "upgrade_plan_name", Upgrade_0_0_13_PlanName)

			err := applyNewParameters(ctx)
			if err != nil {
				logger.Error("Failed to apply new parameters",
					"upgrade_plan_name", Upgrade_0_0_13_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Starting module migrations section", "upgrade_plan_name", Upgrade_0_0_13_PlanName)
			vm, err = mm.RunMigrations(ctx, configurator, vm)
			if err != nil {
				logger.Error("Failed to run migrations",
					"upgrade_plan_name", Upgrade_0_0_13_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Successfully completed upgrade handler", "upgrade_plan_name", Upgrade_0_0_13_PlanName)
			return vm, nil
		}
	},

	StoreUpgrades: storetypes.StoreUpgrades{

		Added: []string{migrationtypes.StoreKey},
	},
}

Upgrade_0_0_13 handles the upgrade to release `v0.0.13`. This is planned to be issued on both Pocket Network's Shannon Alpha & Beta TestNets.

View Source
var Upgrade_0_0_14 = Upgrade{
	PlanName: Upgrade_0_0_14_PlanName,

	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_0_14 handles the upgrade to release `v0.0.14`. This is planned to be issued on both Pocket Network's Shannon Alpha & Beta TestNets.

View Source
var Upgrade_0_0_4 = Upgrade{
	PlanName: "v0.0.4",
	CreateUpgradeHandler: func(mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {
		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {

			currentParams, err := keepers.ConsensusParamsKeeper.ParamsStore.Get(ctx)
			if err != nil {
				return vm, err
			}

			newParams := consensusparamtypes.MsgUpdateParams{
				Authority: keepers.ConsensusParamsKeeper.GetAuthority(),
				Block:     currentParams.Block,
				Evidence:  currentParams.Evidence,
				Validator: currentParams.Validator,

				Abci: currentParams.Abci,
			}

			newParams.Block.MaxBytes = 22020096 * 2

			if _, err = keepers.ConsensusParamsKeeper.UpdateParams(ctx, &newParams); err != nil {
				return vm, err
			}

			return mm.RunMigrations(ctx, configurator, vm)
		}
	},

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_0_4 is an example of an upgrade that increases the block size. This example demonstrates how to change the block size using an upgrade.

View Source
var Upgrade_0_0_9 = Upgrade{
	PlanName:             "v0.0.9",
	CreateUpgradeHandler: defaultUpgradeHandler,
	StoreUpgrades:        storetypes.StoreUpgrades{},
}

Upgrade_0_0_9 is a small upgrade on TestNet.

View Source
var Upgrade_0_1_10 = Upgrade{
	PlanName: Upgrade_0_1_10_PlanName,

	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_1_9 handles the upgrade to release `v0.1.9`. This is fix upgrade to be issued on both Pocket Network's Shannon Alpha, Beta TestNets. It is an upgrade intended to fix chain halts caused by the previous upgrade. https://github.com/pokt-network/poktroll/compare/v0.1.9..v0.1.10

View Source
var Upgrade_0_1_11 = Upgrade{
	PlanName: Upgrade_0_1_11_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		applyNewParameters := func(ctx context.Context, logger cosmoslog.Logger) (err error) {
			logger.Info("Starting parameter updates", "upgrade_plan_name", Upgrade_0_1_11_PlanName)

			migrationParams := keepers.MigrationKeeper.GetParams(ctx)

			switch cosmostypes.UnwrapSDKContext(ctx).ChainID() {
			case pocket.AlphaTestNetChainId, pocket.BetaTestNetChainId:
				migrationParams.AllowMorseAccountImportOverwrite = true
			default:
				migrationParams.AllowMorseAccountImportOverwrite = false
			}

			if err = migrationParams.Validate(); err != nil {
				logger.Error("Failed to validate migration params", "error", err)
				return err
			}

			err = keepers.MigrationKeeper.SetParams(ctx, migrationParams)
			if err != nil {
				logger.Error("Failed to set migration params", "error", err)
				return err
			}
			logger.Info("Successfully updated migration params", "new_params", migrationParams)

			return nil
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()

			grantAuthorizationMessages := []string{"/pocket.migration.MsgRecoverMorseAccount"}
			if err := applyNewAuthorizations(ctx, keepers, logger, grantAuthorizationMessages); err != nil {
				return vm, err
			}

			if err := applyNewParameters(ctx, logger); err != nil {
				return vm, err
			}

			return vm, nil
		}
	},
}

Upgrade_0_1_11 handles the upgrade to release `v0.1.11`. This upgrade adds: - the `allow_morse_account_import_overwrite` migration module param

  • Set to `false` by default
  • Set to `true` on Alpha and Beta TestNets

- a corresponding authz grant - new `MsgRecoverMorseAccount` message with empty message handlers (scaffolding) https://github.com/pokt-network/poktroll/compare/v0.1.10..v0.1.11

View Source
var Upgrade_0_1_12 = Upgrade{
	PlanName: Upgrade_0_1_12_PlanName,

	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_1_12 handles the upgrade to release `v0.1.12`. https://github.com/pokt-network/poktroll/compare/v0.1.11..v0.1.12

View Source
var Upgrade_0_1_13 = Upgrade{
	PlanName: Upgrade_0_1_13_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		applyComputeUnitsCostGranularity := func(ctx context.Context, logger cosmoslog.Logger) (err error) {
			logger.Info("Starting shared module parameter updates", "upgrade_plan_name", Upgrade_0_1_13_PlanName)

			sharedParams := keepers.SharedKeeper.GetParams(ctx)

			sharedParams.ComputeUnitCostGranularity = 1e6

			sharedParams.ComputeUnitsToTokensMultiplier *= sharedParams.ComputeUnitCostGranularity

			if err = sharedParams.ValidateBasic(); err != nil {
				logger.Error("Failed to validate shared module params", "error", err)
				return err
			}

			err = keepers.SharedKeeper.SetParams(ctx, sharedParams)
			if err != nil {
				logger.Error("Failed to set shared module params", "error", err)
				return err
			}
			logger.Info("Successfully updated shared module params", "new_params", sharedParams)

			return nil
		}

		applyMorseAccountClaimingEnabled := func(ctx context.Context, logger cosmoslog.Logger) (err error) {
			logger.Info("Starting migration module parameter updates", "upgrade_plan_name", Upgrade_0_1_13_PlanName)

			migrationParams := keepers.MigrationKeeper.GetParams(ctx)

			migrationParams.MorseAccountClaimingEnabled = true

			if err = migrationParams.Validate(); err != nil {
				logger.Error("Failed to validate migration module params", "error", err)
				return err
			}

			err = keepers.MigrationKeeper.SetParams(ctx, migrationParams)
			if err != nil {
				logger.Error("Failed to set migration module params", "error", err)
				return err
			}
			logger.Info("Successfully updated migration module params", "new_params", migrationParams)

			return nil
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()

			if err := applyComputeUnitsCostGranularity(ctx, logger); err != nil {
				return vm, err
			}

			if err := applyMorseAccountClaimingEnabled(ctx, logger); err != nil {
				return vm, err
			}

			return vm, nil
		}
	},
}

Upgrade_0_1_13 handles the upgrade to release `v0.1.13`. This upgrade: - Adds the `compute_unit_cost_granularity` shared module param - Adds the `morse_account_claiming_enabled` migration module param - Fixes chain halt caused by zero relay claims

https://github.com/pokt-network/poktroll/compare/v0.1.12..v0.1.13

View Source
var Upgrade_0_1_2 = Upgrade{

	PlanName: Upgrade_0_1_2_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		applyNewParameters := func(ctx context.Context) (err error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting parameter updates", "upgrade_plan_name", Upgrade_0_1_2_PlanName)

			migrationParams := migrationtypes.Params{
				WaiveMorseClaimGasFees: true,
			}

			if err = migrationParams.Validate(); err != nil {
				logger.Error("Failed to validate migration params", "error", err)
				return err
			}

			err = keepers.MigrationKeeper.SetParams(ctx, migrationParams)
			if err != nil {
				logger.Error("Failed to set migration params", "error", err)
				return err
			}
			logger.Info("Successfully updated migration params", "new_params", migrationParams)

			return nil
		}

		applyNewAuthorizations := func(ctx context.Context) (err error) {

			grantAuthorizationMessages := []string{
				"/pocket.migration.MsgUpdateParam",
				"/pocket.migration.MsgImportMorseClaimableAccounts",
			}

			expiration, err := time.Parse(time.RFC3339, "2500-01-01T00:00:00Z")
			if err != nil {
				return fmt.Errorf("failed to parse time: %w", err)
			}

			granterAddr := keepers.MigrationKeeper.GetAuthority()

			granteeAddr := NetworkAuthzGranteeAddress[cosmostypes.UnwrapSDKContext(ctx).ChainID()]

			for _, msg := range grantAuthorizationMessages {
				err = keepers.AuthzKeeper.SaveGrant(
					ctx,
					cosmostypes.AccAddress(granteeAddr),
					cosmostypes.AccAddress(granterAddr),
					authz.NewGenericAuthorization(msg),
					&expiration,
				)
				if err != nil {
					return fmt.Errorf("failed to save grant for message %s: %w", msg, err)
				}
			}
			return
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger()
			logger.Info("Starting upgrade handler", "upgrade_plan_name", Upgrade_0_1_2_PlanName)

			err := applyNewParameters(ctx)
			if err != nil {
				logger.Error("Failed to apply new parameters",
					"upgrade_plan_name", Upgrade_0_1_2_PlanName,
					"error", err)
				return vm, err
			}

			err = applyNewAuthorizations(ctx)
			if err != nil {
				logger.Error("Failed to apply new authorizations",
					"upgrade_plan_name", Upgrade_0_1_2_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Starting module migrations section", "upgrade_plan_name", Upgrade_0_1_2_PlanName)
			vm, err = mm.RunMigrations(ctx, configurator, vm)
			if err != nil {
				logger.Error("Failed to run migrations",
					"upgrade_plan_name", Upgrade_0_1_2_PlanName,
					"error", err)
				return vm, err
			}

			logger.Info("Successfully completed upgrade", "upgrade_plan_name", Upgrade_0_1_2_PlanName)
			return vm, nil
		}
	},
}

Upgrade_0_1_2 handles the upgrade to release `v0.1.2`. This is planned to be issued on both Pocket Network's Shannon Alpha & Beta TestNets as well as Mainnet.

View Source
var Upgrade_0_1_3 = Upgrade{
	PlanName: Upgrade_0_1_3_PlanName,

	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_1_3 handles the upgrade to release `v0.1.3`. This is planned to be issued on both Pocket Network's Shannon Alpha & Beta TestNets. It is a small upgrade intended to reduce the memory footprint of session suppliers. Key change: - https://github.com/pokt-network/poktroll/pull/1214 https://github.com/pokt-network/poktroll/compare/v0.1.2..b2d023a

View Source
var Upgrade_0_1_4 = Upgrade{

	PlanName: Upgrade_0_1_4_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger().With("upgrade_plan_name", Upgrade_0_1_4_PlanName)
			logger.Info("Starting upgrade handler")

			grantAuthorizationMessages := []string{
				"/pocket.migration.MsgUpdateParams",
				"/pocket.migration.MsgImportMorseClaimableAccounts",
			}

			logger.Info("Starting authorization updates")
			err := applyNewAuthorizations(ctx, keepers, logger, grantAuthorizationMessages)
			if err != nil {
				logger.Error("Failed to apply new authorizations", "error", err)
				return vm, err
			}
			logger.Info("Successfully completed authorization updates")

			logger.Info("Starting module migrations section")
			vm, err = mm.RunMigrations(ctx, configurator, vm)
			if err != nil {
				logger.Error("Failed to run migrations", "error", err)
				return vm, err
			}
			logger.Info("Successfully completed module migrations")

			logger.Info("Successfully completed upgrade")
			return vm, nil
		}
	},
}

Upgrade_0_1_4 handles the upgrade to release `v0.1.4`. A follow up to `v0.1.2` that has to be re-applied due to the issues outlined here: https://github.com/cosmos/cosmos-sdk/pull/24548

View Source
var Upgrade_0_1_5 = Upgrade{
	PlanName: Upgrade_0_1_5_PlanName,

	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_1_5 handles the upgrade to release `v0.1.5`. This is planned to be issued on both Pocket Network's Shannon Alpha, Beta TestNets as well as MainNet. It is an upgrade intended to reduce the memory footprint when iterating over Suppliers and Applications. https://github.com/pokt-network/poktroll/compare/v0.1.4..b92aa0c

View Source
var Upgrade_0_1_6 = Upgrade{
	PlanName: Upgrade_0_1_6_PlanName,

	CreateUpgradeHandler: defaultUpgradeHandler,

	StoreUpgrades: storetypes.StoreUpgrades{},
}

Upgrade_0_1_6 handles the upgrade to release `v0.1.6`. This is planned to be issued on both Pocket Network's Shannon Alpha, Beta TestNets as well as MainNet. It is an upgrade intended to reduce the memory by avoiding unnecessary marshaling of the supplier object when iterating over the suppliers. https://github.com/pokt-network/poktroll/compare/v0.1.5..c7ab386

View Source
var Upgrade_0_1_7 = Upgrade{
	PlanName: Upgrade_0_1_7_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {
		newTokenSupplyCoins := cosmostypes.NewCoins(cosmostypes.NewInt64Coin(pocket.DenomMACT, newTokenSupplyAmount))

		mintNewTokenTypeMACT := func(ctx context.Context) (err error) {
			return keepers.BankKeeper.MintCoins(ctx, banktypes.ModuleName, newTokenSupplyCoins)
		}

		distributeNewTokenTypeMACT := func(ctx context.Context) (err error) {
			granteeAddr := NetworkAuthzGranteeAddress[cosmostypes.UnwrapSDKContext(ctx).ChainID()]
			granteeAccAddr := cosmostypes.MustAccAddressFromBech32(granteeAddr)

			return keepers.BankKeeper.SendCoinsFromModuleToAccount(ctx, banktypes.ModuleName, granteeAccAddr, newTokenSupplyCoins)
		}

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			if err := mintNewTokenTypeMACT(ctx); err != nil {
				return vm, err
			}

			if err := distributeNewTokenTypeMACT(ctx); err != nil {
				return vm, err
			}

			return vm, nil
		}
	},
}

Upgrade_0_1_7 handles the upgrade to release `v0.1.7`. This is planned to be issued on both Pocket Network's Shannon Alpha, Beta TestNets as well as MainNet. It is an upgrade intended to reduce the memory footprint when iterating over Suppliers and Applications. https://github.com/pokt-network/poktroll/compare/v0.1.6..99c393

View Source
var Upgrade_0_1_8 = Upgrade{
	PlanName: Upgrade_0_1_8_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {
		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger().With("upgrade_plan_name", Upgrade_0_1_8_PlanName)
			logger.Info("Starting upgrade handler")

			logger.Info("Indexing applications")
			if err := indexApplications(ctx, keepers, logger); err != nil {
				return vm, err
			}

			logger.Info("Indexing suppliers service configs")
			if err := indexSuppliersServiceConfigs(ctx, keepers, logger); err != nil {
				return vm, err
			}

			return vm, nil
		}
	},
}

Upgrade_0_1_8 handles the upgrade to release `v0.1.8`. This is planned to be issued on both Pocket Network's Shannon Alpha, Beta TestNets It is an upgrade intended to enable: - Suppliers service config indexing and more granular hydration. - Application indexing TODO_FOLLOWUP(#1230, @red-0ne): Update the github link from main to v0.1.8 once the upgrade is released. https://github.com/pokt-network/poktroll/compare/v0.1.7..v0.1.8

View Source
var Upgrade_0_1_9 = Upgrade{
	PlanName: Upgrade_0_1_9_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {
		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			logger := cosmostypes.UnwrapSDKContext(ctx).Logger().With("upgrade_plan_name", Upgrade_0_1_9_PlanName)
			logger.Info("Starting upgrade handler")

			logger.Info("re-indexing suppliers service configs")
			keepers.SupplierKeeper.MigrateSupplierServiceConfigIndexes(ctx)

			return vm, nil
		}
	},
}

Upgrade_0_1_9 handles the upgrade to release `v0.1.9`. This is planned to be issued on both Pocket Network's Shannon Alpha, Beta TestNets as well as MainNet. It is an upgrade intended to reduce the claim settlement processing time by caching the redundant data in the store and avoiding unnecessary marshaling, indexing and data retrieval. https://github.com/pokt-network/poktroll/compare/v0.1.8..v0.1.9

View Source
var Upgrade_NEXT = Upgrade{
	PlanName: Upgrade_NEXT_PlanName,

	StoreUpgrades: storetypes.StoreUpgrades{},

	CreateUpgradeHandler: func(
		mm *module.Manager,
		keepers *keepers.Keepers,
		configurator module.Configurator,
	) upgradetypes.UpgradeHandler {

		return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
			return vm, nil
		}
	},
}

Upgrade_NEXT handles the upgrade to release `vNEXT`. This upgrade adds: - the `compute_unit_cost_granularity` shared module param - the `morse_account_claiming_enabled` migration module param

https://github.com/pokt-network/poktroll/compare/vPREV..vNEXT

Functions

This section is empty.

Types

type Upgrade

type Upgrade struct {
	// PlanName is a name an upgrade is matched to from the onchain `upgradetypes.Plan`.
	PlanName string

	// CreateUpgradeHandler returns an upgrade handler that will be executed at the time of the upgrade.
	// State changes and protocol version upgrades should be performed here.
	CreateUpgradeHandler func(*module.Manager, *keepers.Keepers, module.Configurator) upgradetypes.UpgradeHandler

	// StoreUpgrades adds, renames and deletes KVStores in the state to prepare for a protocol upgrade.
	StoreUpgrades storetypes.StoreUpgrades
}

Upgrade represents a protocol upgrade in code. Once a `MsgSoftwareUpgrade` is submitted onchain, and `Upgrade.PlanName` matches the `Plan.Name`, the upgrade will be scheduled for execution at the corresponding height.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL