From 1f887cf3ad1ad9fc8bff2ad335b9c18e7c4934aa Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 10:56:22 -0400 Subject: [PATCH 1/7] Upgrade pregenesis --- protocol/scripts/genesis/sample_pregenesis.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/scripts/genesis/sample_pregenesis.json b/protocol/scripts/genesis/sample_pregenesis.json index 78393c8b9d..ee8472320d 100644 --- a/protocol/scripts/genesis/sample_pregenesis.json +++ b/protocol/scripts/genesis/sample_pregenesis.json @@ -4102,7 +4102,7 @@ ] } }, - "app_version": "9.0.0-64-g531bff2de", + "app_version": "9.0.0-49-g33a4abb2f", "chain_id": "dydx-sample-1", "consensus": { "params": { From 4317e31200ec9a4d1e211b55668d5071b02fae02 Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 11:09:15 -0400 Subject: [PATCH 2/7] 9.4 upgrade handler --- protocol/app/upgrades.go | 12 +++++----- protocol/app/upgrades/v9.4/constants.go | 15 +++++++++++++ protocol/app/upgrades/v9.4/upgrade.go | 22 +++++++++++++++++++ .../{v9.3 => v9.4}/upgrade_container_test.go | 6 ++--- 4 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 protocol/app/upgrades/v9.4/constants.go create mode 100644 protocol/app/upgrades/v9.4/upgrade.go rename protocol/app/upgrades/{v9.3 => v9.4}/upgrade_container_test.go (85%) diff --git a/protocol/app/upgrades.go b/protocol/app/upgrades.go index 8936e3da2f..8ae5d8f01a 100644 --- a/protocol/app/upgrades.go +++ b/protocol/app/upgrades.go @@ -3,7 +3,7 @@ package app import ( "fmt" - v_9_3 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v9.3" + v_9_4 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v9.4" upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -14,7 +14,7 @@ var ( // `Upgrades` defines the upgrade handlers and store loaders for the application. // New upgrades should be added to this slice after they are implemented. Upgrades = []upgrades.Upgrade{ - v_9_3.Upgrade, + v_9_4.Upgrade, } Forks = []upgrades.Fork{} ) @@ -22,12 +22,12 @@ var ( // setupUpgradeHandlers registers the upgrade handlers to perform custom upgrade // logic and state migrations for software upgrades. func (app *App) setupUpgradeHandlers() { - if app.UpgradeKeeper.HasHandler(v_9_3.UpgradeName) { - panic(fmt.Sprintf("Cannot register duplicate upgrade handler '%s'", v_9_3.UpgradeName)) + if app.UpgradeKeeper.HasHandler(v_9_4.UpgradeName) { + panic(fmt.Sprintf("Cannot register duplicate upgrade handler '%s'", v_9_4.UpgradeName)) } app.UpgradeKeeper.SetUpgradeHandler( - v_9_3.UpgradeName, - v_9_3.CreateUpgradeHandler( + v_9_4.UpgradeName, + v_9_4.CreateUpgradeHandler( app.ModuleManager, app.configurator, ), diff --git a/protocol/app/upgrades/v9.4/constants.go b/protocol/app/upgrades/v9.4/constants.go new file mode 100644 index 0000000000..bd380c775f --- /dev/null +++ b/protocol/app/upgrades/v9.4/constants.go @@ -0,0 +1,15 @@ +package v_9_4 + +import ( + store "cosmossdk.io/store/types" + "github.com/dydxprotocol/v4-chain/protocol/app/upgrades" +) + +const ( + UpgradeName = "v9.4" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + StoreUpgrades: store.StoreUpgrades{}, +} diff --git a/protocol/app/upgrades/v9.4/upgrade.go b/protocol/app/upgrades/v9.4/upgrade.go new file mode 100644 index 0000000000..914eadd651 --- /dev/null +++ b/protocol/app/upgrades/v9.4/upgrade.go @@ -0,0 +1,22 @@ +package v_9_4 + +import ( + "context" + "fmt" + + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/dydxprotocol/v4-chain/protocol/lib" +) + +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := lib.UnwrapSDKContext(ctx, "app/upgrades") + sdkCtx.Logger().Info(fmt.Sprintf("Running %s Upgrade...", UpgradeName)) + + return mm.RunMigrations(ctx, configurator, vm) + } +} diff --git a/protocol/app/upgrades/v9.3/upgrade_container_test.go b/protocol/app/upgrades/v9.4/upgrade_container_test.go similarity index 85% rename from protocol/app/upgrades/v9.3/upgrade_container_test.go rename to protocol/app/upgrades/v9.4/upgrade_container_test.go index 2be8429dcb..64dd1d4a4a 100644 --- a/protocol/app/upgrades/v9.3/upgrade_container_test.go +++ b/protocol/app/upgrades/v9.4/upgrade_container_test.go @@ -1,12 +1,10 @@ //go:build all || container_test -package v_9_3_test +package v_9_4_test import ( "testing" - v_9_3 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v9.3" - "github.com/dydxprotocol/v4-chain/protocol/testing/containertest" "github.com/dydxprotocol/v4-chain/protocol/testutil/constants" "github.com/stretchr/testify/require" @@ -24,7 +22,7 @@ func TestStateUpgrade(t *testing.T) { preUpgradeSetups(node, t) preUpgradeChecks(node, t) - err = containertest.UpgradeTestnet(nodeAddress, t, node, v_9_3.UpgradeName) + err = containertest.UpgradeTestnet(nodeAddress, t, node, v_9_4.UpgradeName) require.NoError(t, err) postUpgradeChecks(node, t) From b9f1c87ca556d6fe5f9c2d9f960e552f5cd4c7fe Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 13:50:40 -0400 Subject: [PATCH 3/7] Update and add tests --- protocol/app/upgrades.go | 1 + protocol/app/upgrades/v9.4/constants.go | 65 +++++++++++++++++-- protocol/app/upgrades/v9.4/upgrade.go | 47 ++++++++++++++ .../upgrades/v9.4/upgrade_container_test.go | 14 +++- 4 files changed, 121 insertions(+), 6 deletions(-) diff --git a/protocol/app/upgrades.go b/protocol/app/upgrades.go index 8ae5d8f01a..00725c3070 100644 --- a/protocol/app/upgrades.go +++ b/protocol/app/upgrades.go @@ -29,6 +29,7 @@ func (app *App) setupUpgradeHandlers() { v_9_4.UpgradeName, v_9_4.CreateUpgradeHandler( app.ModuleManager, + app.AffiliatesKeeper, app.configurator, ), ) diff --git a/protocol/app/upgrades/v9.4/constants.go b/protocol/app/upgrades/v9.4/constants.go index bd380c775f..54b349ff6c 100644 --- a/protocol/app/upgrades/v9.4/constants.go +++ b/protocol/app/upgrades/v9.4/constants.go @@ -3,13 +3,70 @@ package v_9_4 import ( store "cosmossdk.io/store/types" "github.com/dydxprotocol/v4-chain/protocol/app/upgrades" + affiliatetypes "github.com/dydxprotocol/v4-chain/protocol/x/affiliates/types" ) const ( UpgradeName = "v9.4" ) -var Upgrade = upgrades.Upgrade{ - UpgradeName: UpgradeName, - StoreUpgrades: store.StoreUpgrades{}, -} +var ( + Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, + StoreUpgrades: store.StoreUpgrades{}, + } + + PreviousAffilliateTiers = affiliatetypes.AffiliateTiers{ + Tiers: []affiliatetypes.AffiliateTiers_Tier{ + { + ReqReferredVolumeQuoteQuantums: 0, + ReqStakedWholeCoins: 0, + TakerFeeSharePpm: 200_000, + }, + { + ReqReferredVolumeQuoteQuantums: 2_000_000_000_000, // 1M volume + ReqStakedWholeCoins: 0, + TakerFeeSharePpm: 300_000, + }, + }, + } + + PreviousAffiliateParameters = affiliatetypes.AffiliateParameters{ + Maximum_30DAffiliateRevenuePerReferredUserQuoteQuantums: 1_000_000_000_000, // 10M volume + RefereeMinimumFeeTierIdx: 1, + Maximum_30DAttributableVolumePerReferredUserQuoteQuantums: 1_000_000_000, // 10k volume + } + + PreviousAffiliateWhitelist = affiliatetypes.AffiliateWhitelist{ + Tiers: []affiliatetypes.AffiliateWhitelist_Tier{ + { + Addresses: []string{ + "dydx1affiliate1", + "dydx1affiliate2", + }, + TakerFeeSharePpm: 200_000, + }, + }, + } + + DefaultAffiliateTiers = affiliatetypes.AffiliateTiers{ + Tiers: []affiliatetypes.AffiliateTiers_Tier{ + { + ReqReferredVolumeQuoteQuantums: 0, + ReqStakedWholeCoins: 0, + TakerFeeSharePpm: 400_000, + }, + { + ReqReferredVolumeQuoteQuantums: 1_000_000_000_000, // 1M volume + ReqStakedWholeCoins: 0, + TakerFeeSharePpm: 500_000, + }, + }, + } + + DefaultAffiliateParameters = affiliatetypes.AffiliateParameters{ + Maximum_30DAffiliateRevenuePerReferredUserQuoteQuantums: 10_000_000_000_000, // 10M volume + RefereeMinimumFeeTierIdx: 2, + Maximum_30DAttributableVolumePerReferredUserQuoteQuantums: 10_000_000_000, // 10k volume + } +) diff --git a/protocol/app/upgrades/v9.4/upgrade.go b/protocol/app/upgrades/v9.4/upgrade.go index 914eadd651..0bd53043ba 100644 --- a/protocol/app/upgrades/v9.4/upgrade.go +++ b/protocol/app/upgrades/v9.4/upgrade.go @@ -5,18 +5,65 @@ import ( "fmt" upgradetypes "cosmossdk.io/x/upgrade/types" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/dydxprotocol/v4-chain/protocol/lib" + + affiliatekeeper "github.com/dydxprotocol/v4-chain/protocol/x/affiliates/keeper" + affiliatetypes "github.com/dydxprotocol/v4-chain/protocol/x/affiliates/types" ) +func setDefaultAffiliateTiersForSlidingAffiliates(ctx sdk.Context, affiliateKeeper affiliatekeeper.Keeper) { + err := affiliateKeeper.UpdateAffiliateTiers(ctx, DefaultAffiliateTiers) + + if err != nil { + panic(fmt.Sprintf("failed to set default affiliate tiers: %s", err)) + } +} + +func setDefaultAffiliateParameters(ctx sdk.Context, affiliateKeeper affiliatekeeper.Keeper) { + err := affiliateKeeper.UpdateAffiliateParameters(ctx, &affiliatetypes.MsgUpdateAffiliateParameters{ + AffiliateParameters: DefaultAffiliateParameters, + }) + + if err != nil { + panic(fmt.Sprintf("failed to set default affiliate parameters: %s", err)) + } +} + +func migrateAffiliateOverrides(ctx sdk.Context, affiliateKeeper affiliatekeeper.Keeper) { + // Get all whitelist + whitelist, err := affiliateKeeper.GetAffiliateWhitelist(ctx) + if err != nil { + panic(fmt.Sprintf("failed to get affiliate whitelist: %s", err)) + } + // Create overrides for all whitelist addresses + overrides := affiliatetypes.AffiliateOverrides{} + var overridesList []string + for _, addr := range whitelist.Tiers { + overridesList = append(overridesList, addr.Addresses...) + } + overrides.Addresses = overridesList + // Update affiliate overrides + err = affiliateKeeper.SetAffiliateOverrides(ctx, overrides) + if err != nil { + panic(fmt.Sprintf("failed to set affiliate overrides: %s", err)) + } +} + func CreateUpgradeHandler( mm *module.Manager, + affiliateKeeper affiliatekeeper.Keeper, configurator module.Configurator, ) upgradetypes.UpgradeHandler { return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { sdkCtx := lib.UnwrapSDKContext(ctx, "app/upgrades") sdkCtx.Logger().Info(fmt.Sprintf("Running %s Upgrade...", UpgradeName)) + // Set default affiliate tiers and parameters. + setDefaultAffiliateTiersForSlidingAffiliates(sdkCtx, affiliateKeeper) + setDefaultAffiliateParameters(sdkCtx, affiliateKeeper) + migrateAffiliateOverrides(sdkCtx, affiliateKeeper) return mm.RunMigrations(ctx, configurator, vm) } } diff --git a/protocol/app/upgrades/v9.4/upgrade_container_test.go b/protocol/app/upgrades/v9.4/upgrade_container_test.go index 64dd1d4a4a..4e15f601de 100644 --- a/protocol/app/upgrades/v9.4/upgrade_container_test.go +++ b/protocol/app/upgrades/v9.4/upgrade_container_test.go @@ -28,8 +28,18 @@ func TestStateUpgrade(t *testing.T) { postUpgradeChecks(node, t) } -func preUpgradeSetups(node *containertest.Node, t *testing.T) {} +func preUpgradeSetups(node *containertest.Node, t *testing.T) { + // Set default affiliate tiers and parameters. + node.SetAffiliateTiers(constants.PreviousAffiliateTiers) + node.SetAffiliateParameters(constants.PreviousAffiliateParameters) + node.SetAffiliateWhitelist(constants.PreviousAffiliateWhitelist) +} func preUpgradeChecks(node *containertest.Node, t *testing.T) {} -func postUpgradeChecks(node *containertest.Node, t *testing.T) {} +func postUpgradeChecks(node *containertest.Node, t *testing.T) { + // Check that the affiliate tiers and parameters are set to the default values. + require.Equal(t, constants.DefaultAffiliateTiers, node.GetAffiliateTiers()) + require.Equal(t, constants.DefaultAffiliateParameters, node.GetAffiliateParameters()) + require.Equal(t, constants.DefaultAffiliateOverrides, node.GetAffiliateOverrides()) +} From 2853bc67dadd13e003cb4747f59800acca3d0184 Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 14:27:28 -0400 Subject: [PATCH 4/7] Fix unknown --- protocol/app/upgrades/v9.4/upgrade_container_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/protocol/app/upgrades/v9.4/upgrade_container_test.go b/protocol/app/upgrades/v9.4/upgrade_container_test.go index 4e15f601de..5863119ba1 100644 --- a/protocol/app/upgrades/v9.4/upgrade_container_test.go +++ b/protocol/app/upgrades/v9.4/upgrade_container_test.go @@ -30,16 +30,16 @@ func TestStateUpgrade(t *testing.T) { func preUpgradeSetups(node *containertest.Node, t *testing.T) { // Set default affiliate tiers and parameters. - node.SetAffiliateTiers(constants.PreviousAffiliateTiers) - node.SetAffiliateParameters(constants.PreviousAffiliateParameters) - node.SetAffiliateWhitelist(constants.PreviousAffiliateWhitelist) + node.SetAffiliateTiers(v_9_4.PreviousAffiliateTiers) + node.SetAffiliateParameters(v_9_4.PreviousAffiliateParameters) + node.SetAffiliateWhitelist(v_9_4.PreviousAffiliateWhitelist) } func preUpgradeChecks(node *containertest.Node, t *testing.T) {} func postUpgradeChecks(node *containertest.Node, t *testing.T) { // Check that the affiliate tiers and parameters are set to the default values. - require.Equal(t, constants.DefaultAffiliateTiers, node.GetAffiliateTiers()) - require.Equal(t, constants.DefaultAffiliateParameters, node.GetAffiliateParameters()) - require.Equal(t, constants.DefaultAffiliateOverrides, node.GetAffiliateOverrides()) + require.Equal(t, v_9_4.DefaultAffiliateTiers, node.GetAffiliateTiers()) + require.Equal(t, v_9_4.DefaultAffiliateParameters, node.GetAffiliateParameters()) + require.Equal(t, v_9_4.DefaultAffiliateOverrides, node.GetAffiliateOverrides()) } From 8b25fad493f4e7afd45123fdb0cd27f36d2e5342 Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 16:23:34 -0400 Subject: [PATCH 5/7] Test upgrade --- protocol/app/upgrades/v9.4/constants.go | 26 +++++-- protocol/app/upgrades/v9.4/upgrade.go | 12 ++- .../upgrades/v9.4/upgrade_container_test.go | 74 ++++++++++++++++--- protocol/testing/version/VERSION_CURRENT | 2 +- .../version/VERSION_FULL_NAME_PREUPGRADE | 2 +- protocol/testing/version/VERSION_PREUPGRADE | 2 +- 6 files changed, 92 insertions(+), 26 deletions(-) diff --git a/protocol/app/upgrades/v9.4/constants.go b/protocol/app/upgrades/v9.4/constants.go index 54b349ff6c..cf41d73786 100644 --- a/protocol/app/upgrades/v9.4/constants.go +++ b/protocol/app/upgrades/v9.4/constants.go @@ -21,12 +21,22 @@ var ( { ReqReferredVolumeQuoteQuantums: 0, ReqStakedWholeCoins: 0, - TakerFeeSharePpm: 200_000, + TakerFeeSharePpm: 50_000, }, { - ReqReferredVolumeQuoteQuantums: 2_000_000_000_000, // 1M volume - ReqStakedWholeCoins: 0, - TakerFeeSharePpm: 300_000, + ReqReferredVolumeQuoteQuantums: 1_000_000_000_000, // 1M volume + ReqStakedWholeCoins: 200, + TakerFeeSharePpm: 100_000, + }, + { + ReqReferredVolumeQuoteQuantums: 5_000_000_000_000, // 5M volume + ReqStakedWholeCoins: 1_000, + TakerFeeSharePpm: 125_000, + }, + { + ReqReferredVolumeQuoteQuantums: 25_000_000_000_000, // 25M volume + ReqStakedWholeCoins: 5_000, + TakerFeeSharePpm: 150_000, }, }, } @@ -41,8 +51,8 @@ var ( Tiers: []affiliatetypes.AffiliateWhitelist_Tier{ { Addresses: []string{ - "dydx1affiliate1", - "dydx1affiliate2", + "dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4", // Carl + "dydx10fx7sy6ywd5senxae9dwytf8jxek3t2gcen2vs", // Dave }, TakerFeeSharePpm: 200_000, }, @@ -58,8 +68,8 @@ var ( }, { ReqReferredVolumeQuoteQuantums: 1_000_000_000_000, // 1M volume - ReqStakedWholeCoins: 0, - TakerFeeSharePpm: 500_000, + ReqStakedWholeCoins: 200, + TakerFeeSharePpm: 400_000, }, }, } diff --git a/protocol/app/upgrades/v9.4/upgrade.go b/protocol/app/upgrades/v9.4/upgrade.go index 0bd53043ba..20cfb1d858 100644 --- a/protocol/app/upgrades/v9.4/upgrade.go +++ b/protocol/app/upgrades/v9.4/upgrade.go @@ -60,10 +60,14 @@ func CreateUpgradeHandler( sdkCtx := lib.UnwrapSDKContext(ctx, "app/upgrades") sdkCtx.Logger().Info(fmt.Sprintf("Running %s Upgrade...", UpgradeName)) - // Set default affiliate tiers and parameters. - setDefaultAffiliateTiersForSlidingAffiliates(sdkCtx, affiliateKeeper) - setDefaultAffiliateParameters(sdkCtx, affiliateKeeper) - migrateAffiliateOverrides(sdkCtx, affiliateKeeper) + // // Set default affiliate tiers and parameters. + // setDefaultAffiliateTiersForSlidingAffiliates(sdkCtx, affiliateKeeper) + + // // Set default affiliate parameters. + // setDefaultAffiliateParameters(sdkCtx, affiliateKeeper) + + // // Migrate affiliate overrides. + // migrateAffiliateOverrides(sdkCtx, affiliateKeeper) return mm.RunMigrations(ctx, configurator, vm) } } diff --git a/protocol/app/upgrades/v9.4/upgrade_container_test.go b/protocol/app/upgrades/v9.4/upgrade_container_test.go index 5863119ba1..21b8065edc 100644 --- a/protocol/app/upgrades/v9.4/upgrade_container_test.go +++ b/protocol/app/upgrades/v9.4/upgrade_container_test.go @@ -5,8 +5,11 @@ package v_9_4_test import ( "testing" + "github.com/cosmos/gogoproto/proto" + v_9_4 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v9.4" "github.com/dydxprotocol/v4-chain/protocol/testing/containertest" "github.com/dydxprotocol/v4-chain/protocol/testutil/constants" + affiliatetypes "github.com/dydxprotocol/v4-chain/protocol/x/affiliates/types" "github.com/stretchr/testify/require" ) @@ -28,18 +31,67 @@ func TestStateUpgrade(t *testing.T) { postUpgradeChecks(node, t) } -func preUpgradeSetups(node *containertest.Node, t *testing.T) { - // Set default affiliate tiers and parameters. - node.SetAffiliateTiers(v_9_4.PreviousAffiliateTiers) - node.SetAffiliateParameters(v_9_4.PreviousAffiliateParameters) - node.SetAffiliateWhitelist(v_9_4.PreviousAffiliateWhitelist) -} +func preUpgradeSetups(node *containertest.Node, t *testing.T) {} -func preUpgradeChecks(node *containertest.Node, t *testing.T) {} +func preUpgradeChecks(node *containertest.Node, t *testing.T) { + // Verify affiliate tiers are set to default values + tiersResp := &affiliatetypes.AllAffiliateTiersResponse{} + resp, err := containertest.Query( + node, + affiliatetypes.NewQueryClient, + affiliatetypes.QueryClient.AllAffiliateTiers, + &affiliatetypes.AllAffiliateTiersRequest{}, + ) + require.NoError(t, err) + err = proto.UnmarshalText(resp.String(), tiersResp) + require.NoError(t, err) + require.Equal(t, v_9_4.PreviousAffilliateTiers, tiersResp.Tiers) +} func postUpgradeChecks(node *containertest.Node, t *testing.T) { - // Check that the affiliate tiers and parameters are set to the default values. - require.Equal(t, v_9_4.DefaultAffiliateTiers, node.GetAffiliateTiers()) - require.Equal(t, v_9_4.DefaultAffiliateParameters, node.GetAffiliateParameters()) - require.Equal(t, v_9_4.DefaultAffiliateOverrides, node.GetAffiliateOverrides()) + // Verify affiliate tiers are set to default values + tiersResp := &affiliatetypes.AllAffiliateTiersResponse{} + resp, err := containertest.Query( + node, + affiliatetypes.NewQueryClient, + affiliatetypes.QueryClient.AllAffiliateTiers, + &affiliatetypes.AllAffiliateTiersRequest{}, + ) + require.NoError(t, err) + err = proto.UnmarshalText(resp.String(), tiersResp) + require.NoError(t, err) + require.Equal(t, v_9_4.DefaultAffiliateTiers, tiersResp.Tiers) + + // Verify affiliate parameters are set to default values + paramsResp := &affiliatetypes.AffiliateParametersResponse{} + resp, err = containertest.Query( + node, + affiliatetypes.NewQueryClient, + affiliatetypes.QueryClient.AffiliateParameters, + &affiliatetypes.AffiliateParametersRequest{}, + ) + require.NoError(t, err) + err = proto.UnmarshalText(resp.String(), paramsResp) + require.NoError(t, err) + require.Equal(t, v_9_4.DefaultAffiliateParameters, paramsResp.Parameters) + + // Verify affiliate overrides were migrated from whitelist + overridesResp := &affiliatetypes.AffiliateOverridesResponse{} + resp, err = containertest.Query( + node, + affiliatetypes.NewQueryClient, + affiliatetypes.QueryClient.AffiliateOverrides, + &affiliatetypes.AffiliateOverridesRequest{}, + ) + require.NoError(t, err) + err = proto.UnmarshalText(resp.String(), overridesResp) + require.NoError(t, err) + // Overrides should contain addresses from the pre-upgrade whitelist + expectedOverrides := affiliatetypes.AffiliateOverrides{ + Addresses: []string{ + "dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4", // Carl + "dydx10fx7sy6ywd5senxae9dwytf8jxek3t2gcen2vs", // Dave + }, + } + require.Equal(t, expectedOverrides, overridesResp.Overrides) } diff --git a/protocol/testing/version/VERSION_CURRENT b/protocol/testing/version/VERSION_CURRENT index a26c2c72d5..d3b4227d55 100644 --- a/protocol/testing/version/VERSION_CURRENT +++ b/protocol/testing/version/VERSION_CURRENT @@ -1 +1 @@ -v9.3 \ No newline at end of file +v9.4 \ No newline at end of file diff --git a/protocol/testing/version/VERSION_FULL_NAME_PREUPGRADE b/protocol/testing/version/VERSION_FULL_NAME_PREUPGRADE index 065a19ae0c..a26c2c72d5 100644 --- a/protocol/testing/version/VERSION_FULL_NAME_PREUPGRADE +++ b/protocol/testing/version/VERSION_FULL_NAME_PREUPGRADE @@ -1 +1 @@ -v9.2.1 \ No newline at end of file +v9.3 \ No newline at end of file diff --git a/protocol/testing/version/VERSION_PREUPGRADE b/protocol/testing/version/VERSION_PREUPGRADE index 22dada6e0b..a26c2c72d5 100644 --- a/protocol/testing/version/VERSION_PREUPGRADE +++ b/protocol/testing/version/VERSION_PREUPGRADE @@ -1 +1 @@ -v9.2 \ No newline at end of file +v9.3 \ No newline at end of file From 17ff22e6ff50f0f9b58db1b8dc65c28c42e9f0ff Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 16:27:34 -0400 Subject: [PATCH 6/7] Add migrations back --- protocol/app/upgrades/v9.4/upgrade.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/protocol/app/upgrades/v9.4/upgrade.go b/protocol/app/upgrades/v9.4/upgrade.go index 20cfb1d858..545a17006e 100644 --- a/protocol/app/upgrades/v9.4/upgrade.go +++ b/protocol/app/upgrades/v9.4/upgrade.go @@ -60,14 +60,15 @@ func CreateUpgradeHandler( sdkCtx := lib.UnwrapSDKContext(ctx, "app/upgrades") sdkCtx.Logger().Info(fmt.Sprintf("Running %s Upgrade...", UpgradeName)) - // // Set default affiliate tiers and parameters. - // setDefaultAffiliateTiersForSlidingAffiliates(sdkCtx, affiliateKeeper) + // Set default affiliate tiers and parameters. + setDefaultAffiliateTiersForSlidingAffiliates(sdkCtx, affiliateKeeper) - // // Set default affiliate parameters. - // setDefaultAffiliateParameters(sdkCtx, affiliateKeeper) + // Set default affiliate parameters. + setDefaultAffiliateParameters(sdkCtx, affiliateKeeper) + + // Migrate affiliate overrides. + migrateAffiliateOverrides(sdkCtx, affiliateKeeper) - // // Migrate affiliate overrides. - // migrateAffiliateOverrides(sdkCtx, affiliateKeeper) return mm.RunMigrations(ctx, configurator, vm) } } From 5ab484673ffafd69dd7164a15b74795e9a75d91c Mon Sep 17 00:00:00 2001 From: Justin Barnett Date: Mon, 20 Oct 2025 16:37:38 -0400 Subject: [PATCH 7/7] Fix sample pregen --- protocol/scripts/genesis/sample_pregenesis.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/scripts/genesis/sample_pregenesis.json b/protocol/scripts/genesis/sample_pregenesis.json index ee8472320d..78393c8b9d 100644 --- a/protocol/scripts/genesis/sample_pregenesis.json +++ b/protocol/scripts/genesis/sample_pregenesis.json @@ -4102,7 +4102,7 @@ ] } }, - "app_version": "9.0.0-49-g33a4abb2f", + "app_version": "9.0.0-64-g531bff2de", "chain_id": "dydx-sample-1", "consensus": { "params": {