Adam Uhlíř
2b5d079882
feat: collateral fractions ( #47 )
...
Co-authored-by: Eric Mastro <github@egonat.me>
2023-03-30 11:11:21 +02:00
Adam Uhlíř
8b39ef8f4a
fix: reset missed counter when slot is freed ( #48 )
2023-03-08 17:19:49 +01:00
Adam Uhlíř
dfdbd16d5b
feat: collateral per slot ( #44 )
2023-03-08 12:02:34 +01: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
Eric Mastro
cde5436262
get request from slot id ( #34 )
...
* get request from slot id
- Add public function to get request from slot id.
- Add chai test assertion that compares requests. Usage: `expect(await marketplace.getRequestFromSlotId(slotId(slot))).to.be.request(request)`
This is used when restoring active sales, and a node calls `mySlots`, then iterates the slots and needs originating request details.
* merge upstream changes
2023-01-24 15:59:56 +11:00
Mark Spanbroek
b81e6e6532
[marketplace] better wording
...
Avoids the word 'expired' which is associated
with cancelling a request
Co-authored-by: Eric Mastro <eric.mastro@gmail.com>
2023-01-23 15:10:23 +01:00
Mark Spanbroek
019c1c34c0
[marketplace] rewrite slot freeing test
...
To make it independent of values chosen in exampleRequest().
Uses the recently introduced slotState().
2023-01-23 15:10:23 +01:00
Mark Spanbroek
b62eeb564a
[marketplace] test & fix slotState()
2023-01-23 15:10:23 +01:00
Mark Spanbroek
334da1144d
[marketplace] renaming and reshuffling of request state test
2023-01-23 15:10:23 +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
bd284acce3
[examples] remove dead code
2023-01-23 15:10:23 +01:00
Mark Spanbroek
8c6891f1e2
[marketplace] slotIsNotFree() modifier
...
Replaces _slot getter
2023-01-23 15:10:23 +01:00
Mark Spanbroek
1316682a6f
[marketplace] remove slotMustAcceptProofs modifier
...
Replaced by checks on slot state
2023-01-23 15:10:23 +01:00
Mark Spanbroek
7d377a3739
[marketplace] remove requestMustAcceptProofs modifier
...
Is already covered by the slot state check later on
2023-01-23 15:10:23 +01:00
Mark Spanbroek
5eeac8a782
[marketplace] remove unused import
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
de0595edb3
[marketplace] rename state(id) -> requestState(id)
2023-01-23 15:10:23 +01:00
Mark Spanbroek
e496ac3550
[marketplace] remove _isCancelled and _isFinished
2023-01-23 15:10:23 +01:00
Mark Spanbroek
9aa4773392
[marketplace] remove unused _isSlotCancelled()
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 f224cb8eda
.
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
afb89c9233
[Storage] Remove Storage
...
Rationale: it was already a very thin wrapper
around Marketplace, and now that its remaining
functionality has been moved to Proofs and
Marketplace, we no longer need it.
2023-01-10 12:15:22 +01:00
Mark Spanbroek
6ea2b77a8f
[Storage] Move markProofAsMissing() to Marketplace
2023-01-10 12:15:22 +01:00
Mark Spanbroek
31d109f0d3
[Storage] Move isProofRequired() et al to Marketplace
2023-01-10 12:15:22 +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
Mark Spanbroek
ac98689892
[Storage] Remove getSlot()
...
Rationale: Slot is struct that is used by the contract
to keep track of the state of a slot, it doesn't need
to be exposed on the API
2023-01-10 12:15:22 +01:00
Mark Spanbroek
9b8bcc0bc7
[Storage] Move getRequest() and getHost() to Marketplace
2023-01-10 12:15:22 +01:00
Mark Spanbroek
71656f6a95
[collateral] Remove AccountLocks
...
AccountLocks is replaced by the isWithDrawAllowed()
implementation in Marketplace.
2022-12-22 10:29:06 +01:00
Mark Spanbroek
dbc5e3738e
[marketplace] Add tests for collateral locking
...
The collateral locking check was moved from Collateral
and AccountLocks to Marketplace. This tests the new
locking mechanism.
2022-12-22 10:29:06 +01:00
Mark Spanbroek
d5d4dba442
[marketplace] Add missing tests for freeSlot()
...
Removes unnecessary double removal from slotsPerHost.
2022-12-22 10:29:06 +01:00
Mark Spanbroek
4f75159e02
[marketplace] Slots of failed request remain in mySlots()
...
Until hosts calls freeSlot()
2022-12-22 10:29:06 +01:00
Mark Spanbroek
a7be363f04
[marketplace] Unlock collateral when list of slots is empty
2022-12-22 10:29:06 +01:00
Mark Spanbroek
c46c268880
[marketplace] freeSlot() can be called by host
...
Handles payout, slashing and removal from mySlots
2022-12-22 10:29:06 +01:00
Mark Spanbroek
6e0dfdf7db
[marketplace] Rename _freeSlot() -> _forciblyFreeSlot()
2022-12-22 10:29:06 +01:00
Mark Spanbroek
a96333ce5f
[marketplace] mySlots() returns slots of cancelled request
...
Reasoning: the node will want to call payoutSlot() for
cancelled requests, at which point it will be removed
from the list.
2022-12-22 10:29:06 +01:00
Mark Spanbroek
a19e3f4198
[marketplace] Remove SetMap
...
No longer needed
2022-12-22 10:29:06 +01:00
Mark Spanbroek
0f6eb306ea
[marketplace] Remove resize()
...
No longer needed
2022-12-22 10:29:06 +01:00
Mark Spanbroek
c832dfbb7c
[marketplace] Simplify myRequests()
2022-12-22 10:29:06 +01:00
Mark Spanbroek
c0a1e11b87
[marketplace] replace mySlots(requestId) by mySlots()
...
Allows a host to get all slots that it participates in
in a single call.
2022-12-22 10:29:06 +01:00
Eric Mastro
7f59e545b2
Add more tests
...
- Marketplace tests for requestsForHost, and additional tests for myRequests and mySlots
- Added Utils lib with tests
- Added additional Bytes32AddressSetMap.keys expectations
2022-12-22 10:29:06 +01:00
Eric Mastro
429b9034d8
Add SetMap tests
2022-12-22 10:29:06 +01:00
Eric Mastro
a99827ed39
Reinstate mapping index, add ActiveSlotId
...
Reinstate the index mapping for `activeSlots`, however with a modified data structure. The main difference comes from a change in `mySlots`: it now requires a `RequestId` as a parameter (which can be obtained using `myRequests`. This allowed for the `activeSlots` mapping to be keyed on `RequestId`, which gives a mapping of `ActiveSlotId => EnumerableSet.Bytes32`. `ActiveSlotId` is a keccak hash of `address + activeSlotIdx`, which not only allows retrieval of all active slot ids per request, but also allows clearing of all active slot ids for a request by incrementing the `activeSlotIdx`.
```
requestId => [ keccak(address + activeSlotIdx) => EnumerableSet.Bytes32 ]
```
2022-12-22 10:29:06 +01:00
Eric Mastro
5f056b055a
Revert mapping index for clearing active slots
...
Instead, iterate all active slots and remove them individually, only if they are part of a specific request. This is only for the case of request failure.
2022-12-22 10:29:06 +01:00
Eric Mastro
48eba1fe27
Clear active slots by host
...
Allow for clearing of active slots by host, by incrementing an mapping index. The new index points to a fresh instance of EnumerableSet, effectively wiping it clean.
2022-12-22 10:29:06 +01:00