Skip to content

Commit

Permalink
chore: change storageCosts to array
Browse files Browse the repository at this point in the history
  • Loading branch information
shifty11 committed Apr 29, 2024
1 parent 256ffc5 commit 235fecc
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 391 deletions.
18 changes: 10 additions & 8 deletions app/upgrades/v1_5/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package v1_5

import (
"context"
"cosmossdk.io/math"
"fmt"

storetypes "cosmossdk.io/store/types"
Expand All @@ -22,10 +23,11 @@ const (

func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator, cdc codec.Codec, storeKeys []storetypes.StoreKey, bundlesKeeper keeper.Keeper, poolKeeper *poolkeeper.Keeper) upgradetypes.UpgradeHandler {
return func(ctx context.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
logger := sdk.UnwrapSDKContext(ctx).Logger().With("upgrade", UpgradeName)
sdkCtx := sdk.UnwrapSDKContext(ctx)
logger := sdkCtx.Logger().With("upgrade", UpgradeName)
logger.Info(fmt.Sprintf("performing upgrade %v", UpgradeName))

if err := migrateStorageCosts(ctx, bundlesKeeper, poolKeeper, storeKeys, cdc); err != nil {
if err := migrateStorageCosts(sdkCtx, bundlesKeeper, poolKeeper, storeKeys, cdc); err != nil {
return nil, err
}

Expand All @@ -35,9 +37,7 @@ func CreateUpgradeHandler(mm *module.Manager, configurator module.Configurator,
}
}

func migrateStorageCosts(ctx context.Context, bundlesKeeper keeper.Keeper, poolKeeper *poolkeeper.Keeper, storeKeys []storetypes.StoreKey, cdc codec.Codec) error {
sdkCtx := sdk.UnwrapSDKContext(ctx)

func migrateStorageCosts(sdkCtx sdk.Context, bundlesKeeper keeper.Keeper, poolKeeper *poolkeeper.Keeper, storeKeys []storetypes.StoreKey, cdc codec.Codec) error {
var bundlesStoreKey storetypes.StoreKey
for _, k := range storeKeys {
if k.Name() == "bundles" {
Expand All @@ -51,6 +51,7 @@ func migrateStorageCosts(ctx context.Context, bundlesKeeper keeper.Keeper, poolK

// Get all storage providers
storageIds := map[uint32]struct{}{}
storageIds[0] = struct{}{} // Default storage provider
for _, pool := range poolKeeper.GetAllPools(sdkCtx) {
storageIds[pool.CurrentStorageProviderId] = struct{}{}
}
Expand All @@ -60,14 +61,15 @@ func migrateStorageCosts(ctx context.Context, bundlesKeeper keeper.Keeper, poolK
oldParams := v1_4_types.GetParams(sdkCtx, bundlesStoreKey, cdc)
newParams := bundlestypes.Params{
UploadTimeout: oldParams.UploadTimeout,
StorageCosts: make(map[uint32]bundlestypes.LegacyDecValue),
StorageCosts: make([]math.LegacyDec, len(storageIds)),
NetworkFee: oldParams.NetworkFee,
MaxPoints: oldParams.MaxPoints,
}
for storageId := range storageIds {
newParams.StorageCosts[storageId] = bundlestypes.LegacyDecValue{
Value: oldParams.StorageCost,
if int(storageId) > len(newParams.StorageCosts) {
return fmt.Errorf("storage provider id %d is out of bounds", storageId)
}
newParams.StorageCosts[storageId] = oldParams.StorageCost
}

bundlesKeeper.SetParams(sdkCtx, newParams)
Expand Down
30 changes: 8 additions & 22 deletions docs/static/openapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,10 @@ paths:
format: uint64
description: upload_timeout ...
storage_costs:
type: object
additionalProperties:
type: object
properties:
value:
type: string
description: value ...
description: >-
LegacyDecValue defines a wrapper around a string that
represents a LegacyDec.
description: storage_cost ...
type: array
items:
type: string
description: storage_costs ...
network_fee:
type: string
description: network_fee ...
Expand Down Expand Up @@ -4279,17 +4272,10 @@ paths:
format: uint64
description: upload_timeout ...
storage_costs:
type: object
additionalProperties:
type: object
properties:
value:
type: string
description: value ...
description: >-
LegacyDecValue defines a wrapper around a string that
represents a LegacyDec.
description: storage_cost ...
type: array
items:
type: string
description: storage_costs ...
network_fee:
type: string
description: network_fee ...
Expand Down
16 changes: 5 additions & 11 deletions proto/kyve/bundles/v1beta1/params.proto
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,15 @@ import "gogoproto/gogo.proto";

option go_package = "github.com/KYVENetwork/chain/x/bundles/types";

// LegacyDecValue defines a wrapper around a string that represents a LegacyDec.
message LegacyDecValue {
// value ...
string value = 1 [
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
(gogoproto.nullable) = false
];
}

// Params defines the bundles module parameters.
message Params {
// upload_timeout ...
uint64 upload_timeout = 1;
// storage_cost ...
map<uint32, LegacyDecValue> storage_costs = 2 [(gogoproto.nullable) = false];
// storage_costs ...
repeated string storage_costs = 2 [
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
(gogoproto.nullable) = false
];
// network_fee ...
string network_fee = 3 [
(gogoproto.customtype) = "cosmossdk.io/math.LegacyDec",
Expand Down
12 changes: 4 additions & 8 deletions x/bundles/keeper/getters_params.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,11 @@ func (k Keeper) GetUploadTimeout(ctx sdk.Context) (res uint64) {

// GetStorageCost returns the StorageCost param
func (k Keeper) GetStorageCost(ctx sdk.Context, storageProviderId uint32) (res math.LegacyDec) {
storageMap := k.GetParams(ctx).StorageCosts
if storageCost, ok := storageMap[storageProviderId]; ok {
return storageCost.Value
storageCosts := k.GetParams(ctx).StorageCosts
if int(storageProviderId) < len(storageCosts) {
return storageCosts[storageProviderId]
}
// default to storage provider 0
if storageCost, ok := storageMap[0]; ok {
return storageCost.Value
}
return math.LegacyNewDec(0)
return storageCosts[0]
}

// GetNetworkFee returns the NetworkFee param
Expand Down
2 changes: 1 addition & 1 deletion x/bundles/keeper/keeper_suite_valid_bundles_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -960,7 +960,7 @@ var _ = Describe("valid bundles", Ordered, func() {
storageProviderId := uint32(1)

params := s.App().BundlesKeeper.GetParams(s.Ctx())
params.StorageCosts[1] = bundletypes.LegacyDecValue{Value: math.LegacyMustNewDecFromStr("0.9")}
params.StorageCosts = append(params.StorageCosts, math.LegacyMustNewDecFromStr("0.9"))
s.App().BundlesKeeper.SetParams(s.Ctx(), params)

pool, _ := s.App().PoolKeeper.GetPool(s.Ctx(), 0)
Expand Down
38 changes: 14 additions & 24 deletions x/bundles/keeper/msg_server_update_params_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,9 @@ var _ = Describe("msg_server_update_params.go", Ordered, func() {
// ARRANGE
payload := `{
"upload_timeout": 20,
"storage_costs": {
"0": {
"value": "0.05"
}
},
"storage_costs": [
"0.05"
],
"network_fee": "0.05",
"max_points": 15
}`
Expand Down Expand Up @@ -144,9 +142,7 @@ var _ = Describe("msg_server_update_params.go", Ordered, func() {
Expect(voteErr).NotTo(HaveOccurred())

Expect(updatedParams.UploadTimeout).To(Equal(uint64(20)))
Expect(updatedParams.StorageCosts).To(Equal(map[uint32]types.LegacyDecValue{
0: {Value: math.LegacyMustNewDecFromStr("0.05")},
}))
Expect(updatedParams.StorageCosts).To(Equal([]math.LegacyDec{math.LegacyMustNewDecFromStr("0.05")}))
Expect(updatedParams.NetworkFee).To(Equal(math.LegacyMustNewDecFromStr("0.05")))
Expect(updatedParams.MaxPoints).To(Equal(uint64(15)))
})
Expand Down Expand Up @@ -292,14 +288,10 @@ var _ = Describe("msg_server_update_params.go", Ordered, func() {
It("Update storage costs", func() {
// ARRANGE
payload := `{
"storage_costs": {
"0": {
"value": "0.050000000000000000"
},
"1": {
"value": "0.08"
}
}
"storage_costs": [
"0.05",
"0.08"
]
}`

msg := &types.MsgUpdateParams{
Expand Down Expand Up @@ -329,9 +321,9 @@ var _ = Describe("msg_server_update_params.go", Ordered, func() {
Expect(voteErr).NotTo(HaveOccurred())

Expect(updatedParams.UploadTimeout).To(Equal(types.DefaultUploadTimeout))
Expect(updatedParams.StorageCosts).To(Equal(map[uint32]types.LegacyDecValue{
0: {Value: math.LegacyMustNewDecFromStr("0.05")},
1: {Value: math.LegacyMustNewDecFromStr("0.08")},
Expect(updatedParams.StorageCosts).To(Equal([]math.LegacyDec{
math.LegacyMustNewDecFromStr("0.05"),
math.LegacyMustNewDecFromStr("0.08"),
}))
Expect(updatedParams.NetworkFee).To(Equal(types.DefaultNetworkFee))
Expect(updatedParams.MaxPoints).To(Equal(types.DefaultMaxPoints))
Expand All @@ -340,11 +332,9 @@ var _ = Describe("msg_server_update_params.go", Ordered, func() {
It("Update storage cost with invalid value", func() {
// ARRANGE
payload := `{
"storage_costs": {
"0": {
"value": "-100"
}
}
"storage_costs": [
"-100"
]
}`

msg := &types.MsgUpdateParams{
Expand Down
10 changes: 4 additions & 6 deletions x/bundles/types/params.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,8 @@ import (
var DefaultUploadTimeout = uint64(600)

// DefaultStorageCosts ...
func DefaultStorageCosts() map[uint32]LegacyDecValue {
return map[uint32]LegacyDecValue{
0: {Value: math.LegacyMustNewDecFromStr("0.025")},
}
func DefaultStorageCosts() []math.LegacyDec {
return []math.LegacyDec{math.LegacyMustNewDecFromStr("0.025")}
}

// DefaultNetworkFee ...
Expand All @@ -27,7 +25,7 @@ var DefaultMaxPoints = uint64(24)
// NewParams creates a new Params instance
func NewParams(
uploadTimeout uint64,
storageCosts map[uint32]LegacyDecValue,
storageCosts []math.LegacyDec,
networkFee math.LegacyDec,
maxPoints uint64,
) Params {
Expand Down Expand Up @@ -59,7 +57,7 @@ func (p Params) Validate() error {
return fmt.Errorf("storage costs cannot be empty")
}
for _, v := range p.StorageCosts {
if err := util.ValidateDecimal(v.Value); err != nil {
if err := util.ValidateDecimal(v); err != nil {
return err
}
}
Expand Down
Loading

0 comments on commit 235fecc

Please sign in to comment.