mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-01-02 13:33:10 +00:00
chore(marketplace): use canMarkProofAsMissing (#1188)
* Add canProofBeMarkedAsMissing * Add more tests * Update contracts submodule
This commit is contained in:
parent
ca869f6dce
commit
45ade0e3c1
@ -379,14 +379,12 @@ method markProofAsMissing*(
|
||||
|
||||
discard await market.contract.markProofAsMissing(id, period, overrides).confirm(1)
|
||||
|
||||
method canProofBeMarkedAsMissing*(
|
||||
method canMarkProofAsMissing*(
|
||||
market: OnChainMarket, id: SlotId, period: Period
|
||||
): Future[bool] {.async.} =
|
||||
let provider = market.contract.provider
|
||||
let contractWithoutSigner = market.contract.connect(provider)
|
||||
let overrides = CallOverrides(blockTag: some BlockTag.pending)
|
||||
): Future[bool] {.async: (raises: [CancelledError]).} =
|
||||
try:
|
||||
discard await contractWithoutSigner.markProofAsMissing(id, period, overrides)
|
||||
let overrides = CallOverrides(blockTag: some BlockTag.pending)
|
||||
discard await market.contract.canMarkProofAsMissing(id, period, overrides)
|
||||
return true
|
||||
except EthersError as e:
|
||||
trace "Proof cannot be marked as missing", msg = e.msg
|
||||
|
||||
@ -178,6 +178,17 @@ proc markProofAsMissing*(
|
||||
]
|
||||
.}
|
||||
|
||||
proc canMarkProofAsMissing*(
|
||||
marketplace: Marketplace, id: SlotId, period: uint64
|
||||
): Confirmable {.
|
||||
contract,
|
||||
errors: [
|
||||
Marketplace_SlotNotAcceptingProofs, Proofs_PeriodNotEnded,
|
||||
Proofs_ValidationTimedOut, Proofs_ProofNotMissing, Proofs_ProofNotRequired,
|
||||
Proofs_ProofAlreadyMarkedMissing,
|
||||
]
|
||||
.}
|
||||
|
||||
proc reserveSlot*(
|
||||
marketplace: Marketplace, requestId: RequestId, slotIndex: uint64
|
||||
): Confirmable {.contract.}
|
||||
|
||||
@ -204,9 +204,9 @@ method markProofAsMissing*(
|
||||
) {.base, async: (raises: [CancelledError, MarketError]).} =
|
||||
raiseAssert("not implemented")
|
||||
|
||||
method canProofBeMarkedAsMissing*(
|
||||
method canMarkProofAsMissing*(
|
||||
market: Market, id: SlotId, period: Period
|
||||
): Future[bool] {.base, async.} =
|
||||
): Future[bool] {.base, async: (raises: [CancelledError]).} =
|
||||
raiseAssert("not implemented")
|
||||
|
||||
method reserveSlot*(
|
||||
|
||||
@ -85,7 +85,7 @@ proc markProofAsMissing(
|
||||
currentPeriod = validation.getCurrentPeriod()
|
||||
|
||||
try:
|
||||
if await validation.market.canProofBeMarkedAsMissing(slotId, period):
|
||||
if await validation.market.canMarkProofAsMissing(slotId, period):
|
||||
trace "Marking proof as missing", slotId, periodProofMissed = period
|
||||
await validation.market.markProofAsMissing(slotId, period)
|
||||
else:
|
||||
|
||||
@ -381,15 +381,15 @@ method markProofAsMissing*(
|
||||
) {.async: (raises: [CancelledError, MarketError]).} =
|
||||
market.markedAsMissingProofs.add(id)
|
||||
|
||||
proc setCanProofBeMarkedAsMissing*(mock: MockMarket, id: SlotId, required: bool) =
|
||||
proc setCanMarkProofAsMissing*(mock: MockMarket, id: SlotId, required: bool) =
|
||||
if required:
|
||||
mock.canBeMarkedAsMissing.incl(id)
|
||||
else:
|
||||
mock.canBeMarkedAsMissing.excl(id)
|
||||
|
||||
method canProofBeMarkedAsMissing*(
|
||||
method canMarkProofAsMissing*(
|
||||
market: MockMarket, id: SlotId, period: Period
|
||||
): Future[bool] {.async.} =
|
||||
): Future[bool] {.async: (raises: [CancelledError]).} =
|
||||
return market.canBeMarkedAsMissing.contains(id)
|
||||
|
||||
method reserveSlot*(
|
||||
|
||||
@ -142,7 +142,7 @@ asyncchecksuite "validation":
|
||||
test "when a proof is missed, it is marked as missing":
|
||||
await validation.start()
|
||||
await market.fillSlot(slot.request.id, slot.slotIndex, proof, collateral)
|
||||
market.setCanProofBeMarkedAsMissing(slot.id, true)
|
||||
market.setCanMarkProofAsMissing(slot.id, true)
|
||||
advanceToNextPeriod()
|
||||
await sleepAsync(100.millis) # allow validation loop to run
|
||||
check market.markedAsMissingProofs.contains(slot.id)
|
||||
@ -150,7 +150,7 @@ asyncchecksuite "validation":
|
||||
test "when a proof can not be marked as missing, it will not be marked":
|
||||
await validation.start()
|
||||
await market.fillSlot(slot.request.id, slot.slotIndex, proof, collateral)
|
||||
market.setCanProofBeMarkedAsMissing(slot.id, false)
|
||||
market.setCanMarkProofAsMissing(slot.id, false)
|
||||
advanceToNextPeriod()
|
||||
await sleepAsync(100.millis) # allow validation loop to run
|
||||
check market.markedAsMissingProofs.len == 0
|
||||
|
||||
@ -189,7 +189,46 @@ ethersuite "On-Chain Market":
|
||||
let missingPeriod =
|
||||
periodicity.periodOf((await ethProvider.currentTime()).truncate(uint64))
|
||||
await advanceToNextPeriod()
|
||||
check (await market.canProofBeMarkedAsMissing(slotId, missingPeriod)) == true
|
||||
check (await market.canMarkProofAsMissing(slotId, missingPeriod)) == true
|
||||
|
||||
test "can check whether a proof cannot be marked as missing when the slot is free":
|
||||
let slotId = slotId(request, slotIndex)
|
||||
await market.requestStorage(request)
|
||||
await market.reserveSlot(request.id, slotIndex)
|
||||
await market.fillSlot(request.id, slotIndex, proof, request.ask.collateralPerSlot)
|
||||
await waitUntilProofRequired(slotId)
|
||||
|
||||
await market.freeSlot(slotId(request.id, slotIndex))
|
||||
|
||||
let missingPeriod =
|
||||
periodicity.periodOf((await ethProvider.currentTime()).truncate(uint64))
|
||||
await advanceToNextPeriod()
|
||||
check (await market.canMarkProofAsMissing(slotId, missingPeriod)) == false
|
||||
|
||||
test "can check whether a proof cannot be marked as missing before a proof is required":
|
||||
let slotId = slotId(request, slotIndex)
|
||||
await market.requestStorage(request)
|
||||
await market.reserveSlot(request.id, slotIndex)
|
||||
await market.fillSlot(request.id, slotIndex, proof, request.ask.collateralPerSlot)
|
||||
|
||||
let missingPeriod =
|
||||
periodicity.periodOf((await ethProvider.currentTime()).truncate(uint64))
|
||||
await advanceToNextPeriod()
|
||||
check (await market.canMarkProofAsMissing(slotId, missingPeriod)) == false
|
||||
|
||||
test "can check whether a proof cannot be marked as missing if the proof was submitted":
|
||||
let slotId = slotId(request, slotIndex)
|
||||
await market.requestStorage(request)
|
||||
await market.reserveSlot(request.id, slotIndex)
|
||||
await market.fillSlot(request.id, slotIndex, proof, request.ask.collateralPerSlot)
|
||||
await waitUntilProofRequired(slotId)
|
||||
|
||||
await market.submitProof(slotId(request.id, slotIndex), proof)
|
||||
|
||||
let missingPeriod =
|
||||
periodicity.periodOf((await ethProvider.currentTime()).truncate(uint64))
|
||||
await advanceToNextPeriod()
|
||||
check (await market.canMarkProofAsMissing(slotId, missingPeriod)) == false
|
||||
|
||||
test "supports slot filled subscriptions":
|
||||
await market.requestStorage(request)
|
||||
|
||||
2
vendor/codex-contracts-eth
vendored
2
vendor/codex-contracts-eth
vendored
@ -1 +1 @@
|
||||
Subproject commit 470a4df4152b53a8065c2984d55efcd7350b549a
|
||||
Subproject commit aee91f1ac411258af338af5145e0112e6ab6f5df
|
||||
Loading…
x
Reference in New Issue
Block a user