Skip to content

Commit a5c3567

Browse files
authored
Merge branch 'master' into feat/rework-zk-proving
2 parents d0b23f5 + 3e17207 commit a5c3567

File tree

11 files changed

+46
-11
lines changed

11 files changed

+46
-11
lines changed

codex/codex.nim

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ proc bootstrapInteractions(s: CodexServer): Future[void] {.async.} =
8383
error "Persistence enabled, but no Ethereum account was set"
8484
quit QuitFailure
8585

86-
let provider = JsonRpcProvider.new(config.ethProvider)
86+
let provider = JsonRpcProvider.new(
87+
config.ethProvider, maxPriorityFeePerGas = config.maxPriorityFeePerGas.u256
88+
)
8789
await waitForSync(provider)
8890
var signer: Signer
8991
if account =? config.ethAccount:

codex/conf.nim

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,15 @@ import ./utils
4545
import ./nat
4646
import ./utils/natutils
4747

48-
from ./contracts/config import DefaultRequestCacheSize
48+
from ./contracts/config import DefaultRequestCacheSize, DefaultMaxPriorityFeePerGas
4949
from ./validationconfig import MaxSlots, ValidationGroups
5050

5151
export units, net, codextypes, logutils, completeCmdArg, parseCmdArg, NatConfig
5252
export ValidationGroups, MaxSlots
5353

5454
export
5555
DefaultQuotaBytes, DefaultBlockTtl, DefaultBlockInterval, DefaultNumBlocksPerInterval,
56-
DefaultRequestCacheSize
56+
DefaultRequestCacheSize, DefaultMaxPriorityFeePerGas
5757

5858
type ThreadCount* = range[0 .. 256]
5959

@@ -376,6 +376,15 @@ type
376376
hidden
377377
.}: uint16
378378

379+
maxPriorityFeePerGas* {.
380+
desc:
381+
"Sets the default maximum priority fee per gas for Ethereum EIP-1559 transactions, in wei, when not provided by the network.",
382+
defaultValue: DefaultMaxPriorityFeePerGas,
383+
defaultValueDesc: $DefaultMaxPriorityFeePerGas,
384+
name: "max-priority-fee-per-gas",
385+
hidden
386+
.}: uint64
387+
379388
case persistenceCmd* {.defaultValue: noCmd, command.}: PersistenceCmd
380389
of PersistenceCmd.prover:
381390
circuitDir* {.

codex/contracts/config.nim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import pkg/questionable/results
55
export contractabi
66

77
const DefaultRequestCacheSize* = 128.uint16
8+
const DefaultMaxPriorityFeePerGas* = 1_000_000_000.uint64
89

910
type
1011
MarketplaceConfig* = object

codex/purchasing/states/submitted.nim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ method run*(
3030
requestId = purchase.requestId
3131

3232
proc wait() {.async.} =
33-
let done = newFuture[void]()
33+
let done = newAsyncEvent()
3434
proc callback(_: RequestId) =
35-
done.complete()
35+
done.fire()
3636

3737
let subscription = await market.subscribeFulfillment(request.id, callback)
38-
await done
38+
await done.wait()
3939
await subscription.unsubscribe()
4040

4141
proc withTimeout(future: Future[void]) {.async.} =

codex/sales/statemachine.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export asyncstatemachine
1212

1313
type
1414
SaleState* = ref object of State
15-
SaleError* = ref object of CodexError
15+
SaleError* = object of CodexError
1616

1717
method onCancelled*(
1818
state: SaleState, request: StorageRequest

codex/sales/states/preparing.nim

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ method run*(
5151
await agent.subscribe()
5252

5353
without request =? data.request:
54-
raiseAssert "no sale request"
54+
error "request could not be retrieved", id = data.requestId
55+
let error = newException(SaleError, "request could not be retrieved")
56+
return some State(SaleErrored(error: error))
5557

5658
let slotId = slotId(data.requestId, data.slotIndex)
5759
let state = await market.slotState(slotId)

codex/sales/states/unknown.nim

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ method run*(
3838
await agent.retrieveRequest()
3939
await agent.subscribe()
4040

41+
without request =? data.request:
42+
error "request could not be retrieved", id = data.requestId
43+
let error = newException(SaleError, "request could not be retrieved")
44+
return some State(SaleErrored(error: error))
45+
4146
let slotId = slotId(data.requestId, data.slotIndex)
4247
let slotState = await market.slotState(slotId)
4348

tests/codex/sales/states/testpreparing.nim

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,12 @@ asyncchecksuite "sales state 'preparing'":
7272
let next = state.onSlotFilled(request.id, slotIndex)
7373
check !next of SaleFilled
7474

75+
test "run switches to errored when the request cannot be retrieved":
76+
agent = newSalesAgent(context, request.id, slotIndex, StorageRequest.none)
77+
let next = !(await state.run(agent))
78+
check next of SaleErrored
79+
check SaleErrored(next).error.msg == "request could not be retrieved"
80+
7581
proc createAvailability(enabled = true) {.async.} =
7682
let a = await reservations.createAvailability(
7783
availability.totalSize,

tests/codex/sales/states/testunknown.nim

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,22 @@ suite "sales state 'unknown'":
2020
let slotId = slotId(request.id, slotIndex)
2121

2222
var market: MockMarket
23+
var context: SalesContext
2324
var agent: SalesAgent
2425
var state: SaleUnknown
2526

2627
setup:
2728
market = MockMarket.new()
28-
let context = SalesContext(market: market)
29-
agent = newSalesAgent(context, request.id, slotIndex, StorageRequest.none)
29+
context = SalesContext(market: market)
30+
agent = newSalesAgent(context, request.id, slotIndex, request.some)
3031
state = SaleUnknown.new()
3132

33+
test "switches to error state when the request cannot be retrieved":
34+
agent = newSalesAgent(context, request.id, slotIndex, StorageRequest.none)
35+
let next = await state.run(agent)
36+
check !next of SaleErrored
37+
check SaleErrored(!next).error.msg == "request could not be retrieved"
38+
3239
test "switches to error state when on chain state cannot be fetched":
3340
let next = await state.run(agent)
3441
check !next of SaleErrored
@@ -37,6 +44,7 @@ suite "sales state 'unknown'":
3744
market.slotState[slotId] = SlotState.Free
3845
let next = await state.run(agent)
3946
check !next of SaleErrored
47+
check SaleErrored(!next).error.msg == "Slot state on chain should not be 'free'"
4048

4149
test "switches to filled state when on chain state is 'filled'":
4250
market.slotState[slotId] = SlotState.Filled

tests/contracts/testMarket.nim

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -537,6 +537,8 @@ ethersuite "On-Chain Market":
537537

538538
let (_, fromTime) = await ethProvider.blockNumberAndTimestamp(BlockTag.latest)
539539

540+
await ethProvider.advanceTime(1.u256)
541+
540542
await market.reserveSlot(request.id, 1.uint64)
541543
await market.reserveSlot(request.id, 2.uint64)
542544
await market.fillSlot(request.id, 1.uint64, proof, request.ask.collateralPerSlot)

0 commit comments

Comments
 (0)