diff --git a/codex/contracts/marketplace.nim b/codex/contracts/marketplace.nim index 11eca5be..0bf4354d 100644 --- a/codex/contracts/marketplace.nim +++ b/codex/contracts/marketplace.nim @@ -43,6 +43,7 @@ type Marketplace_InsufficientReward* = object of SolidityError Marketplace_InvalidCid* = object of SolidityError Marketplace_DurationExceedsLimit* = object of SolidityError + Marketplace_ProofNotSubmittedByHost* = object of SolidityError Proofs_InsufficientBlockHeight* = object of SolidityError Proofs_InvalidProof* = object of SolidityError Proofs_ProofAlreadySubmitted* = object of SolidityError @@ -53,6 +54,12 @@ type Proofs_ProofAlreadyMarkedMissing* = object of SolidityError Periods_InvalidSecondsPerPeriod* = object of SolidityError SlotReservations_ReservationNotAllowed* = object of SolidityError + ERC20InsufficientBalance* = object of SolidityError + ERC20InvalidSender* = object of SolidityError + ERC20InvalidReceiver* = object of SolidityError + ERC20InsufficientAllowance* = object of SolidityError + ERC20InvalidApprover* = object of SolidityError + ERC20InvalidSpender* = object of SolidityError proc configuration*(marketplace: Marketplace): MarketplaceConfig {.contract, view.} proc token*(marketplace: Marketplace): Address {.contract, view.} @@ -70,6 +77,7 @@ proc requestStorage*( Marketplace_InvalidMaxSlotLoss, Marketplace_InsufficientDuration, Marketplace_InsufficientProofProbability, Marketplace_InsufficientCollateral, Marketplace_InsufficientReward, Marketplace_InvalidCid, + Marketplace_DurationExceedsLimit, Marketplace_TransferFailed, ] .} @@ -80,6 +88,8 @@ proc fillSlot*( errors: [ Marketplace_InvalidSlot, Marketplace_ReservationRequired, Marketplace_SlotNotFree, Marketplace_StartNotBeforeExpiry, Marketplace_UnknownRequest, + Marketplace_TransferFailed, Marketplace_ProofNotSubmittedByHost, + Proofs_ProofAlreadySubmitted, Proofs_InvalidProof, ] .} @@ -90,6 +100,7 @@ proc withdrawFunds*( errors: [ Marketplace_InvalidClientAddress, Marketplace_InvalidState, Marketplace_NothingToWithdraw, Marketplace_UnknownRequest, + Marketplace_StartNotBeforeExpiry, Marketplace_TransferFailed, ] .} @@ -100,6 +111,7 @@ proc withdrawFunds*( errors: [ Marketplace_InvalidClientAddress, Marketplace_InvalidState, Marketplace_NothingToWithdraw, Marketplace_UnknownRequest, + Marketplace_StartNotBeforeExpiry, Marketplace_TransferFailed, ] .} @@ -109,7 +121,8 @@ proc freeSlot*( contract, errors: [ Marketplace_InvalidSlotHost, Marketplace_AlreadyPaid, - Marketplace_StartNotBeforeExpiry, Marketplace_UnknownRequest, Marketplace_SlotIsFree, + Marketplace_StartNotBeforeExpiry, Marketplace_UnknownRequest, + Marketplace_SlotIsFree, Marketplace_TransferFailed, ] .} @@ -122,7 +135,8 @@ proc freeSlot*( contract, errors: [ Marketplace_InvalidSlotHost, Marketplace_AlreadyPaid, - Marketplace_StartNotBeforeExpiry, Marketplace_UnknownRequest, Marketplace_SlotIsFree, + Marketplace_StartNotBeforeExpiry, Marketplace_UnknownRequest, + Marketplace_SlotIsFree, Marketplace_TransferFailed, ] .} @@ -141,7 +155,10 @@ proc requestState*( marketplace: Marketplace, requestId: RequestId ): RequestState {.contract, view, errors: [Marketplace_UnknownRequest].} -proc slotState*(marketplace: Marketplace, slotId: SlotId): SlotState {.contract, view.} +proc slotState*( + marketplace: Marketplace, slotId: SlotId +): SlotState {.contract, view, errors: [Marketplace_UnknownRequest].} + proc requestEnd*( marketplace: Marketplace, requestId: RequestId ): SecondsSince1970 {.contract, view.} @@ -151,8 +168,14 @@ proc requestExpiry*( ): SecondsSince1970 {.contract, view.} proc missingProofs*(marketplace: Marketplace, id: SlotId): UInt256 {.contract, view.} -proc isProofRequired*(marketplace: Marketplace, id: SlotId): bool {.contract, view.} -proc willProofBeRequired*(marketplace: Marketplace, id: SlotId): bool {.contract, view.} +proc isProofRequired*( + marketplace: Marketplace, id: SlotId +): bool {.contract, view, errors: [Marketplace_UnknownRequest].} + +proc willProofBeRequired*( + marketplace: Marketplace, id: SlotId +): bool {.contract, view, errors: [Marketplace_UnknownRequest].} + proc getChallenge*( marketplace: Marketplace, id: SlotId ): array[32, byte] {.contract, view.} @@ -163,8 +186,10 @@ proc submitProof*( marketplace: Marketplace, id: SlotId, proof: Groth16Proof ): Confirmable {. contract, - errors: - [Proofs_ProofAlreadySubmitted, Proofs_InvalidProof, Marketplace_UnknownRequest] + errors: [ + Proofs_ProofAlreadySubmitted, Proofs_InvalidProof, Marketplace_UnknownRequest, + Marketplace_ProofNotSubmittedByHost, + ] .} proc markProofAsMissing*( @@ -175,13 +200,25 @@ proc markProofAsMissing*( Marketplace_SlotNotAcceptingProofs, Marketplace_StartNotBeforeExpiry, Proofs_PeriodNotEnded, Proofs_ValidationTimedOut, Proofs_ProofNotMissing, Proofs_ProofNotRequired, Proofs_ProofAlreadyMarkedMissing, + Marketplace_TransferFailed, + ] +.} + +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.} +): Confirmable {.contract, errors: [SlotReservations_ReservationNotAllowed].} proc canReserveSlot*( marketplace: Marketplace, requestId: RequestId, slotIndex: uint64 -): bool {.contract, view.} +): bool {.contract, view, errors: [Marketplace_UnknownRequest].}