58 Commits

Author SHA1 Message Date
Eric
ed428767b3
chore: add downtimeProduct configuration parameter (#138)
* add `downtimeProduct` configuration parameter

* formatting
2024-08-14 15:50:32 +10:00
Mark Spanbroek
601ed18455 Verifier returns false when one of the operations fails 2024-03-13 15:25:59 +01:00
Mark Spanbroek
c7b18af7cd Deploy 2 versions of the marketplace on local network
One with the real Groth16 verifier,
and one with a dummy verifier used for testing.
2024-01-31 15:45:01 +01:00
Adam Uhlíř
331bc56e8f
feat: zkey hash in marketplace config (#81) 2024-01-30 06:36:27 +01:00
Mark Spanbroek
5d2842c69b Deploy verifier with verifier key per network 2024-01-25 13:08:10 +01:00
Mark Spanbroek
6baf80d6f4 Refactor verifier contract: remove preprocessing 2024-01-25 13:08:10 +01:00
Mark Spanbroek
39a2d56a63 Refactor verifier contract: verification key as parameter 2024-01-25 13:08:10 +01:00
Mark Spanbroek
33614ee218 Calculate public inputs for ZK proof verificition 2024-01-25 13:08:10 +01:00
Mark Spanbroek
38411c27ca Move submitProof() function to Marketplace 2024-01-25 13:08:10 +01:00
Mark Spanbroek
e6a918fed9 Submit proof as Groth16Proof struct 2024-01-25 13:08:10 +01:00
Mark Spanbroek
1af40f1790 Read proof from file in test 2024-01-25 13:08:10 +01:00
Mark Spanbroek
3e3f2307d8 Remove GPL'ed verifier, replace by MIT verifier 2024-01-25 13:08:10 +01:00
Mark Spanbroek
e59f0f961e Submit proofs as array of bytes 2024-01-25 13:08:10 +01:00
Mark Spanbroek
327ae14112 Formatting with prettier 2024-01-25 13:08:10 +01:00
Adam Uhlíř
0d9b67bb31 feat: verifier integration 2024-01-25 13:08:10 +01:00
Adam Uhlíř
14e453ac31
feat: partial payouts for cancelled requests (#69) 2023-10-16 11:14:02 +02:00
Mark Spanbroek
24ef30bd2a [proofs] improve test to check proof probability
- avoid bias due to pointer downtime
- use statistical binomial test
2023-01-30 14:47:37 +01:00
Mark Spanbroek
c9b51695aa [proofs] support probability 1 (proofs always required) 2023-01-30 14:47:37 +01:00
Mark Spanbroek
ae70fd7c6f [marketplace] introduce MarketplaceConfiguration struct
Container for all configuration values, replaces separate
constructor parameters and getters.
2023-01-23 15:10:23 +01:00
Mark Spanbroek
91ccc82d49 [proofs] remove dead code 2023-01-23 15:10:23 +01:00
Mark Spanbroek
c8dda37300 [marketplace] introduce SlotState
- replace proofEnd() by slotState()
- replace _slotAcceptsProofs() by slotState()
- remove _stopRequiringProofs()
2023-01-23 15:10:23 +01:00
Mark Spanbroek
af08a72d7d Fix: use slot start instead of request start
Proofs should be required from the moment a slot is filled,
not from the moment a request is submitted.

This reverts commit f224cb8eda74a166f0bb3020032026a8dec26466.
2023-01-12 13:49:08 +01:00
Mark Spanbroek
c0690cd5d1 [Proofs] rename expectProofs -> startRequiringProofs 2023-01-11 10:27:08 +01:00
Mark Spanbroek
f224cb8eda [Proofs] Remove double administration of request start
The timestamp when proofs start to be required was
stored in both the Marketplace and Proofs. It is now
only stored in the Marketplace.
2023-01-11 10:27:08 +01:00
Mark Spanbroek
f8e9f3c848 [Proofs] Remove double administration of request end
The timestamp when proofs no longer are required was
stored in both the Marketplace and Proofs. It is now
only stored in the Marketplace.
2023-01-11 10:27:08 +01:00
Mark Spanbroek
c9cf47f327 [Storage] Move missingProofs() to Proofs 2023-01-10 12:15:22 +01:00
Mark Spanbroek
154cc00277 [Proofs] remove unused imports 2023-01-10 12:15:22 +01:00
Mark Spanbroek
d5d99515fc [Proofs] Remove ProofId and EndId, use SlotId and RequestId
Rationale: in practice, a ProofId was always a slot id, and
an EndId was always a request id. Now that the definitons
of SlotId and RequestId are separated from the Marketplace,
we can import and use them.
2023-01-10 12:15:22 +01:00
Eric Mastro
bac2675bb2 set proof end when storage requested
1. set proof end to now + duration when storage is requested
2. set proof end to past when contract is failed
3. add back proof end mappings
2022-10-25 12:38:19 +11:00
Eric Mastro
fd74268a8a Remove proof extension, test clean up
1. Remove proof extension as it is not needed. Host are required to provide proofs from the moment they fill a slot, for the duration specified by the contract. This means that the ending of their requirements will be staggered at the end, as they were at the start, but this is more predicable for determining the cost of a request.
2. The proof end time was modified so that if the request state is not accepting proofs, it takes the min of the slot proof end time, the request end time, or block.timestamp - 1, which ensures that it returns a time in the past. If the slot is accepting proofs, it returns the slot end time.
3. Modify marketplace tests so that `waitUntilFinished` advances time to the proof ending of the last slot filled.
2022-10-25 12:38:19 +11:00
Eric Mastro
321132b6fa clean up tests
1. Replace all instances of `now()` with `await currentTime()` to get a more accurate representation of time from the block timestamp. Update examples.js to be async.
2. Move `RequestState` to `marketplace.js`
3. Delete `TestStorage` as `slashAmount` function no longer needed.
2022-10-25 12:38:19 +11:00
Eric Mastro
ad040cfee6 [marketplace] extend proof ending
Allow proof ending to be extending once a contract is started, so that all filled slots share an ending time that is equal to the contract end time. Added tests.

Add a mapping for proof id to endId so that proof expectations can be extended for all proofs that share a given endId.

Add function modifiers that require the request state to allow proofs, with accompanying tests.

General clean up of each function’s request state context, with accompanying tests.

General clean up of all tests, including state change “wait” functions and normalising the time advancement functions.
2022-10-25 12:38:19 +11:00
Eric Mastro
08e73d9348 [marketplace] Add tests for freeing a slot 2022-10-25 12:38:19 +11:00
Eric Mastro
9050a0d52d [marketplace] address PR comments
- reordered some tests
- add RequestState export
- change test descriptions to start with “it”
2022-09-21 20:52:44 +10:00
Eric Mastro
9f8affdcaa [marketplace] Add tests for freeing a slot 2022-09-21 20:52:44 +10:00
Mark Spanbroek
2bf01da728 [proofs] Submitting proof emits event containing proof 2022-04-12 09:04:29 +02:00
Mark Spanbroek
7cbb717de7 Fix tests that weren't running 2022-04-12 09:04:29 +02:00
Mark Spanbroek
29b5775951 [proofs] willProofBeRequired() predicts proof requirement 2022-04-05 11:36:31 +02:00
Mark Spanbroek
111dce58e8 [proofs] Test that pointer increases by one every block 2022-04-05 11:36:31 +02:00
Mark Spanbroek
3fd7c756d9 Fix flaky tests
By ensuring that there's enough blocks left
for submitting a proof.
2022-03-15 10:01:12 +01:00
Mark Spanbroek
f8ddc4a2f6 Add getChallenge() to Storage contract 2022-03-15 10:01:12 +01:00
Mark Spanbroek
fd55afcc5a Make pointer downtime configurable 2022-03-15 10:01:12 +01:00
Mark Spanbroek
476956c4d5 Replace pointer duos with pointer downtime design 2022-03-15 10:01:12 +01:00
Mark Spanbroek
f4d895113f Fix flaky test 2022-03-15 10:01:12 +01:00
Mark Spanbroek
6d726fc2cc Require a block height of at least 256 2022-03-15 10:01:12 +01:00
Mark Spanbroek
fd06bc00b3 Move periodOf(), periodStart(), periodEnd() into time module 2022-03-15 10:01:12 +01:00
Mark Spanbroek
78eaaa7812 Replace Proof implementation with new design
More info: https://github.com/status-im/dagger-research/pull/66
2022-03-15 10:01:12 +01:00
Mark Spanbroek
22e8ea50e2 Add EVM snapshots including time for tests 2022-03-15 10:01:12 +01:00
Mark Spanbroek
036a214427 Proof period and proof timeout are network constants now 2022-03-15 10:01:12 +01:00
Mark Spanbroek
78755ecaa2 Format using prettier 2022-02-10 07:46:03 +01:00