diff --git a/codex/contracts/market.nim b/codex/contracts/market.nim index f415711d..52800b7e 100644 --- a/codex/contracts/market.nim +++ b/codex/contracts/market.nim @@ -366,7 +366,12 @@ method submitProof*( market: OnChainMarket, id: SlotId, proof: Groth16Proof ) {.async: (raises: [CancelledError, MarketError]).} = convertEthersError("Failed to submit proof"): - discard await market.contract.submitProof(id, proof).confirm(1) + try: + discard await market.contract.submitProof(id, proof).confirm(1) + except Proofs_InvalidProof as parent: + raise newException( + ProofInvalidError, "Failed to submit proof because the proof is invalid", parent + ) method markProofAsMissing*( market: OnChainMarket, id: SlotId, period: Period diff --git a/codex/market.nim b/codex/market.nim index 0303a906..0fe69347 100644 --- a/codex/market.nim +++ b/codex/market.nim @@ -20,6 +20,7 @@ type MarketError* = object of CodexError SlotStateMismatchError* = object of MarketError SlotReservationNotAllowedError* = object of MarketError + ProofInvalidError* = object of MarketError Subscription* = ref object of RootObj OnRequest* = proc(id: RequestId, ask: StorageAsk, expiry: uint64) {.gcsafe, upraises: [].} diff --git a/codex/sales/states/provingsimulated.nim b/codex/sales/states/provingsimulated.nim index b8a3e9ce..edf7eb1e 100644 --- a/codex/sales/states/provingsimulated.nim +++ b/codex/sales/states/provingsimulated.nim @@ -40,7 +40,7 @@ when codex_enable_proof_failures: try: warn "Submitting INVALID proof", period = currentPeriod, slotId = slot.id await market.submitProof(slot.id, Groth16Proof.default) - except Proofs_InvalidProof as e: + except ProofInvalidError as e: discard # expected except CancelledError as error: raise error