Skip to content

Commit e6b2ba0

Browse files
authored
feat: move market/deployment params to collections (#2056)
Signed-off-by: Artur Troian <troian@users.noreply.github.com> Co-authored-by: Artur Troian <troian@users.noreply.github.com>
1 parent 2b08297 commit e6b2ba0

19 files changed

Lines changed: 256 additions & 110 deletions

File tree

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ require (
4848
google.golang.org/grpc v1.76.0
4949
gopkg.in/yaml.v3 v3.0.1
5050
gotest.tools/v3 v3.5.2
51-
pkg.akt.dev/go v0.2.0
52-
pkg.akt.dev/go/cli v0.2.0
51+
pkg.akt.dev/go v0.2.2
52+
pkg.akt.dev/go/cli v0.2.1
5353
pkg.akt.dev/go/sdl v0.2.0
5454
)
5555

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3293,10 +3293,10 @@ nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y=
32933293
nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
32943294
pgregory.net/rapid v0.5.5 h1:jkgx1TjbQPD/feRoK+S/mXw9e1uj6WilpHrXJowi6oA=
32953295
pgregory.net/rapid v0.5.5/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04=
3296-
pkg.akt.dev/go v0.2.0 h1:2D6DxmclzqgxZ9r4SPrjGdl2xf1O2FBwmHIAKFUc3xQ=
3297-
pkg.akt.dev/go v0.2.0/go.mod h1:x9Cku9yibLk4aGLTE/Yy7eEkkda0uOSRWmYwQeFw23o=
3298-
pkg.akt.dev/go/cli v0.2.0 h1:Dl51O5KWzUq/rS2AX1qw66QPzUE7o33eP12w/A2uIcY=
3299-
pkg.akt.dev/go/cli v0.2.0/go.mod h1:MHm9lU8hb+xQ8BX3b9c9S1pMyZKUob5tVjHXQ4T1uwU=
3296+
pkg.akt.dev/go v0.2.2 h1:h3ESUY+GX0pPra66lpF0ssEPShoo3sZ/R1jHZTfiz1k=
3297+
pkg.akt.dev/go v0.2.2/go.mod h1:x9Cku9yibLk4aGLTE/Yy7eEkkda0uOSRWmYwQeFw23o=
3298+
pkg.akt.dev/go/cli v0.2.1 h1:agCMcHrVLJt/hIbvUDZquj+C9gm//lxvs6Vf/ssBAig=
3299+
pkg.akt.dev/go/cli v0.2.1/go.mod h1:MHm9lU8hb+xQ8BX3b9c9S1pMyZKUob5tVjHXQ4T1uwU=
33003300
pkg.akt.dev/go/sdl v0.2.0 h1:hY74GjN4itV92REf8HqGt1rQDtXsruzE/iIzd/FpUB8=
33013301
pkg.akt.dev/go/sdl v0.2.0/go.mod h1:urd6091AWDy9YwFLRCsENuQ931qyRcg/RJBN9XCBs/E=
33023302
pkg.akt.dev/specs v0.0.1 h1:OP0zil3Fr4kcCuybFqQ8LWgSlSP2Yn7306meWpu6/S4=

upgrades/software/v2.0.0/upgrade.go

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ import (
1616
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
1717
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
1818
bmetypes "pkg.akt.dev/go/node/bme/v1"
19+
dvbeta "pkg.akt.dev/go/node/deployment/v1beta4"
1920
epochstypes "pkg.akt.dev/go/node/epochs/v1beta1"
21+
mvbeta "pkg.akt.dev/go/node/market/v1beta5"
2022
otypes "pkg.akt.dev/go/node/oracle/v1"
2123
ttypes "pkg.akt.dev/go/node/take/v1"
2224
"pkg.akt.dev/go/sdkutil"
@@ -112,30 +114,6 @@ func (up *upgrade) UpgradeHandler() upgradetypes.UpgradeHandler {
112114
return toVM, err
113115
}
114116

115-
dparams := up.Keepers.Akash.Deployment.GetParams(sctx)
116-
117-
var uakt sdk.Coin
118-
for _, coin := range dparams.MinDeposits {
119-
if coin.Denom == sdkutil.DenomUakt {
120-
uakt = coin
121-
break
122-
}
123-
}
124-
125-
if uakt.IsNil() {
126-
panic("uakt coin not found in deployment MinDeposit params")
127-
}
128-
129-
dparams.MinDeposits = sdk.Coins{
130-
sdk.NewInt64Coin(sdkutil.DenomUact, 5000000),
131-
uakt,
132-
}
133-
134-
err = up.Keepers.Akash.Deployment.SetParams(sctx, dparams)
135-
if err != nil {
136-
return toVM, err
137-
}
138-
139117
oparams := otypes.DefaultParams()
140118

141119
// Instantiate oracle contracts via wasm message server.
@@ -190,11 +168,36 @@ func (up *upgrade) UpgradeHandler() upgradetypes.UpgradeHandler {
190168
NewVaultBalance: balance,
191169
},
192170
)
193-
194171
if err != nil {
195172
return nil, err
196173
}
197174

175+
dparams := dvbeta.Params{
176+
MinDeposits: sdk.Coins{
177+
sdk.NewInt64Coin(sdkutil.DenomUact, 500000),
178+
sdk.NewInt64Coin(sdkutil.DenomUakt, 500000),
179+
},
180+
}
181+
182+
err = up.Keepers.Akash.Deployment.SetParams(sctx, dparams)
183+
if err != nil {
184+
return nil, fmt.Errorf("failed to set deployment params: %w", err)
185+
}
186+
187+
mparams := mvbeta.Params{
188+
BidMinDeposit: sdk.NewInt64Coin(sdkutil.DenomUakt, 500000),
189+
OrderMaxBids: 20,
190+
BidMinDeposits: sdk.Coins{
191+
sdk.NewInt64Coin(sdkutil.DenomUact, 500000),
192+
sdk.NewInt64Coin(sdkutil.DenomUakt, 500000),
193+
},
194+
}
195+
196+
err = up.Keepers.Akash.Market.SetParams(sctx, mparams)
197+
if err != nil {
198+
return nil, fmt.Errorf("failed to set deployment params: %w", err)
199+
}
200+
198201
return toVM, err
199202
}
200203
}

x/bme/keeper/abci.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -97,26 +97,26 @@ func (k *keeper) EndBlocker(ctx context.Context) error {
9797
return postCondition()
9898
}
9999

100-
pid := types.LedgerRecordID{
101-
Denom: sdkutil.DenomUact,
102-
ToDenom: sdkutil.DenomUakt,
103-
}
104-
105-
startPrefix, err := ledgerRecordIDCodec{}.ToPrefix(pid)
106-
if err != nil {
107-
panic(err)
108-
}
109-
110100
be, err := k.epochs.Get(sctx, epochBurn)
111101
if err != nil && !errors.Is(err, collections.ErrNotFound) {
112102
panic(err)
113103
}
114104

115105
nextBEpoch := be
116106

117-
if (be == 0) || (be == sctx.BlockHeight()) {
107+
if be <= sctx.BlockHeight() {
118108
be = sctx.BlockHeight() + params.MinEpochBlocks
119109

110+
pid := types.LedgerRecordID{
111+
Denom: sdkutil.DenomUact,
112+
ToDenom: sdkutil.DenomUakt,
113+
}
114+
115+
startPrefix, err := ledgerRecordIDCodec{}.ToPrefix(pid)
116+
if err != nil {
117+
panic(err)
118+
}
119+
120120
err = iteratePending(startPrefix, func() error {
121121
return nil
122122
})
@@ -146,12 +146,12 @@ func (k *keeper) EndBlocker(ctx context.Context) error {
146146
} else if (cr.Status <= types.MintStatusWarning) && (me == sctx.BlockHeight()) {
147147
me = sctx.BlockHeight() + cr.EpochHeightDiff
148148

149-
pid = types.LedgerRecordID{
149+
pid := types.LedgerRecordID{
150150
Denom: sdkutil.DenomUakt,
151151
ToDenom: sdkutil.DenomUact,
152152
}
153153

154-
startPrefix, err = ledgerRecordIDCodec{}.ToPrefix(pid)
154+
startPrefix, err := ledgerRecordIDCodec{}.ToPrefix(pid)
155155
if err != nil {
156156
panic(err)
157157
}

x/bme/keeper/grpc_query.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ func (qs Querier) LedgerRecords(ctx context.Context, req *types.QueryLedgerRecor
9393
var resumeID *types.LedgerRecordID
9494

9595
if len(req.Pagination.Key) > 0 {
96-
var pkBytes []byte
96+
var pkBytes, unsolicited []byte
9797
var err error
98-
states, _, pkBytes, _, err = query.DecodePaginationKey(req.Pagination.Key)
98+
states, _, pkBytes, unsolicited, err = query.DecodePaginationKey(req.Pagination.Key)
9999
if err != nil {
100100
return nil, status.Error(codes.InvalidArgument, err.Error())
101101
}
@@ -105,6 +105,9 @@ func (qs Querier) LedgerRecords(ctx context.Context, req *types.QueryLedgerRecor
105105
return nil, status.Error(codes.Internal, err.Error())
106106
}
107107
resumeID = &id
108+
109+
// Restore reverse flag from key — ignore req.Pagination.Reverse on resume
110+
req.Pagination.Reverse = len(unsolicited) > 0 && unsolicited[0] == 1
108111
} else {
109112
if req.Filters.Status != "" {
110113
statusVal := types.LedgerRecordStatus(types.LedgerRecordStatus_value[req.Filters.Status])
@@ -125,6 +128,13 @@ func (qs Querier) LedgerRecords(ctx context.Context, req *types.QueryLedgerRecor
125128
}
126129
}
127130

131+
// Reverse states order when paginating in reverse without a resume key
132+
if len(req.Pagination.Key) == 0 && req.Pagination.Reverse {
133+
for i, j := 0, len(states)-1; i < j; i, j = i+1, j-1 {
134+
states[i], states[j] = states[j], states[i]
135+
}
136+
}
137+
128138
// Step 2: Iterate status collections in order
129139
var records []types.QueryLedgerRecordEntry
130140
var nextKey []byte
@@ -143,7 +153,7 @@ func (qs Querier) LedgerRecords(ctx context.Context, req *types.QueryLedgerRecor
143153
}
144154

145155
if req.Pagination.Limit == 0 {
146-
nk, err := qs.encodeLedgerNextKey(states[idx:], states[idx], id)
156+
nk, err := qs.encodeLedgerNextKey(states[idx:], states[idx], id, req.Pagination.Reverse)
147157
if err != nil {
148158
return true, err
149159
}
@@ -167,7 +177,13 @@ func (qs Querier) LedgerRecords(ctx context.Context, req *types.QueryLedgerRecor
167177

168178
var r collections.Ranger[types.LedgerRecordID]
169179
if idx == 0 && resumeID != nil {
170-
r = new(collections.Range[types.LedgerRecordID]).StartInclusive(*resumeID)
180+
if req.Pagination.Reverse {
181+
r = new(collections.Range[types.LedgerRecordID]).EndInclusive(*resumeID).Descending()
182+
} else {
183+
r = new(collections.Range[types.LedgerRecordID]).StartInclusive(*resumeID)
184+
}
185+
} else if req.Pagination.Reverse {
186+
r = new(collections.Range[types.LedgerRecordID]).Descending()
171187
}
172188

173189
switch state {
@@ -219,10 +235,14 @@ func (qs Querier) LedgerRecords(ctx context.Context, req *types.QueryLedgerRecor
219235
}, nil
220236
}
221237

222-
func (qs Querier) encodeLedgerNextKey(remainingStates []byte, currentState byte, id types.LedgerRecordID) ([]byte, error) {
238+
func (qs Querier) encodeLedgerNextKey(remainingStates []byte, currentState byte, id types.LedgerRecordID, reverse bool) ([]byte, error) {
223239
pkBuf := make([]byte, LedgerRecordIDKey.Size(id))
224240
if _, err := LedgerRecordIDKey.Encode(pkBuf, id); err != nil {
225241
return nil, err
226242
}
227-
return query.EncodePaginationKey(remainingStates, []byte{currentState}, pkBuf, nil)
243+
var unsolicited []byte
244+
if reverse {
245+
unsolicited = []byte{1}
246+
}
247+
return query.EncodePaginationKey(remainingStates, []byte{currentState}, pkBuf, unsolicited)
228248
}

x/bme/keeper/grpc_query_test.go

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,90 @@ func TestGRPCQueryLedgerRecords(t *testing.T) {
302302
}
303303
}
304304

305+
func TestGRPCQueryLedgerRecordsReverse(t *testing.T) {
306+
suite := setupTest(t)
307+
_ = seedLedgerRecords(t, suite.ctx, suite.keeper)
308+
309+
ctx := suite.ctx
310+
311+
t.Run("reverse returns records in opposite order of forward", func(t *testing.T) {
312+
// Get forward order
313+
fwd, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{})
314+
require.NoError(t, err)
315+
316+
// Get reverse order
317+
rev, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{
318+
Pagination: &sdkquery.PageRequest{Reverse: true},
319+
})
320+
require.NoError(t, err)
321+
require.Len(t, rev.Records, len(fwd.Records))
322+
323+
// Reverse should be the exact opposite of forward
324+
for i := range fwd.Records {
325+
j := len(fwd.Records) - 1 - i
326+
require.Equal(t, fwd.Records[i].ID, rev.Records[j].ID,
327+
"reverse[%d] should equal forward[%d]", j, i)
328+
}
329+
})
330+
331+
t.Run("reverse with pagination key (multi-page)", func(t *testing.T) {
332+
// Get all records in reverse for reference
333+
allRev, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{
334+
Pagination: &sdkquery.PageRequest{Reverse: true},
335+
})
336+
require.NoError(t, err)
337+
338+
// First page: 2 records
339+
res1, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{
340+
Pagination: &sdkquery.PageRequest{Limit: 2, Reverse: true},
341+
})
342+
require.NoError(t, err)
343+
require.Len(t, res1.Records, 2)
344+
require.NotEmpty(t, res1.Pagination.NextKey)
345+
346+
// Second page — Reverse is NOT set; it's encoded in the NextKey
347+
res2, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{
348+
Pagination: &sdkquery.PageRequest{Key: res1.Pagination.NextKey, Limit: 10},
349+
})
350+
require.NoError(t, err)
351+
require.Len(t, res2.Records, 2)
352+
353+
// Paginated results should match full reverse query
354+
paginated := append(res1.Records, res2.Records...)
355+
require.Len(t, paginated, len(allRev.Records))
356+
for i := range paginated {
357+
require.Equal(t, allRev.Records[i].ID, paginated[i].ID,
358+
"paginated[%d] should match full reverse[%d]", i, i)
359+
}
360+
})
361+
362+
t.Run("reverse with status filter", func(t *testing.T) {
363+
// Get forward with status filter
364+
fwd, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{
365+
Filters: types.LedgerRecordFilters{
366+
Status: "ledger_record_status_pending",
367+
},
368+
Pagination: &sdkquery.PageRequest{},
369+
})
370+
require.NoError(t, err)
371+
require.Len(t, fwd.Records, 2)
372+
373+
// Get reverse with same status filter
374+
rev, err := suite.queryClient.LedgerRecords(ctx, &types.QueryLedgerRecordsRequest{
375+
Filters: types.LedgerRecordFilters{
376+
Status: "ledger_record_status_pending",
377+
},
378+
Pagination: &sdkquery.PageRequest{Reverse: true},
379+
})
380+
require.NoError(t, err)
381+
require.Len(t, rev.Records, 2)
382+
383+
// Should be opposite order
384+
require.Equal(t, fwd.Records[0].ID, rev.Records[1].ID)
385+
require.Equal(t, fwd.Records[1].ID, rev.Records[0].ID)
386+
})
387+
}
388+
305389
type ledgerFilterModifier struct {
306390
fieldName string
307391
f func(id types.LedgerRecordID, filter types.LedgerRecordFilters) types.LedgerRecordFilters

x/deployment/genesis.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,11 @@ func ExportGenesis(ctx sdk.Context, k keeper.IKeeper) (*dvbeta.GenesisState, err
9292
records[i].Groups = groups
9393
}
9494

95-
params := k.GetParams(ctx)
95+
params, err := k.GetParams(ctx)
96+
if err != nil {
97+
return nil, err
98+
}
99+
96100
return &dvbeta.GenesisState{
97101
Deployments: records,
98102
Params: params,

x/deployment/handler/server.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ func (ms msgServer) CreateDeployment(goCtx context.Context, msg *types.MsgCreate
4747
return nil, v1.ErrDeploymentExists
4848
}
4949

50-
params := ms.deployment.GetParams(ctx)
50+
params, err := ms.deployment.GetParams(ctx)
51+
if err != nil {
52+
return nil, err
53+
}
5154

5255
if err := params.ValidateDeposit(msg.Deposit.Amount); err != nil {
5356
return nil, err

x/deployment/keeper/grpc_query.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,10 @@ func (k Querier) Params(ctx context.Context, req *types.QueryParamsRequest) (*ty
428428
}
429429

430430
sdkCtx := sdk.UnwrapSDKContext(ctx)
431-
params := k.GetParams(sdkCtx)
431+
params, err := k.GetParams(sdkCtx)
432+
if err != nil {
433+
return nil, status.Errorf(codes.NotFound, err.Error())
434+
}
432435

433436
return &types.QueryParamsResponse{Params: params}, nil
434437
}

0 commit comments

Comments
 (0)