Mark Spanbroek
27ccb1e2bc
[Marketplace] Extract Request struct into separate file
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
124457608d
[build] Update NodeJS dependencies
2023-01-09 12:04:23 +01:00
Mark Spanbroek
4e11549a54
[build] Update to NodeJS 18.13.0 (latest LTS)
2023-01-09 12:04:23 +01:00
Mark Spanbroek
dfc53fb272
Rename: dagger -> codex
2023-01-09 11:42:18 +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
0ecce3094a
[utils] Remove Utils
...
No longer required
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
6c52f60381
[marketplace] Formatting
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
3fbc851a8d
[marketplace] Cleanup
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
b08169198a
rename AddressSetMap to Bytes32AddressSetMap
2022-12-22 10:29:06 +01:00
Eric Mastro
f6991d6933
add Bytes32AddressSetMap for active requests by host
...
Add `Bytes32AddressSetMap` which maps addresses to a requestId. This is used in `Marketplace.activeRequestsForHost`, where all addresses for a particular requestId are listed. This can then be used to iterate and list out the actives requests for a particular address in a view function only. This allows for all addresses for a request to be cleared in situations such as when a request fails or is cancelled.
2022-12-22 10:29:06 +01:00
Eric Mastro
eebf3a0709
Add SetMap type for mapping all requests
2022-12-22 10:29:06 +01:00
Eric Mastro
81dd4c203f
add ability to get all requests
2022-12-22 10:29:06 +01:00
Eric Mastro
6397835635
switch to a lib, and generalise the api
2022-12-22 10:29:06 +01:00
Eric Mastro
20111c2ec1
move activeslots to separate contract
2022-12-22 10:29:06 +01:00
Eric Mastro
74c2d91b69
PR comments
...
- remove ActiveSlotId type and instead use an additional mapping for readability
- simplify _activeSlotsForHost for readability
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
Eric Mastro
47bf5d37cf
remove slot from waitUntilStarted signature
2022-12-22 10:29:06 +01:00
Eric Mastro
b2de745d9a
add tests for active slots
2022-12-22 10:29:06 +01:00
Eric Mastro
5b6187afc4
list active sales
2022-12-22 10:29:06 +01:00
markspanbroek
a4057d712f
Merge pull request #22 from status-im/list-of-active-requests
...
List of active requests
2022-11-10 05:23:18 -05:00
Mark Spanbroek
fb47176450
[marketplace] formatting
...
reformatting using prettier
2022-10-26 10:58:29 +02:00
Mark Spanbroek
c29fb75a48
[marketplace] Remove duplication
2022-10-26 10:58:05 +02:00
Eric Mastro
61b8f5fc35
[test] Remove lastSlot return from waitUntilStarted
...
This is a remnant from a staggered ending of slots. All slots will end at the request end time now, and thus this is no longer needed.
2022-10-26 13:37:30 +11:00
Eric Mastro
4a470c7dc7
[marketplace] improve requestEnd to check all states
...
There may be cases where the the request end is not accurate as the state of the request hasn’t yet been updated. For example, when a request is cancelled, the request end would not have been updated to be in the past, and would still be set for the end of the request (which could be in the future).
2022-10-26 13:36:32 +11:00
Mark Spanbroek
9a6a321d5b
[marketplace] Add method to get request end time
2022-10-25 14:49:37 +02:00
Eric Mastro
2ac6c0b2de
remove duplicate _toProofId function
2022-10-25 13:13:31 +11:00
Eric Mastro
51a02c09ba
[marketplace] remove request from list of active requests
2022-10-25 13:06:52 +11:00
Eric Mastro
29dcfb52b4
[marketplace] formatting
...
reformatting using prettier
2022-10-25 13:04:16 +11:00
Eric Mastro
b2f9e07c56
[marketplace] add list of active requests
2022-10-25 13:00:48 +11:00
Eric Mastro
e97583befd
[marketplace] alias bytes32 types
...
`RequestId`, `SlotId`, `LockId`, `ProofId`, `EndId` types were created to avoid confusion and enforce compiler restrictions.
2022-10-25 13:00:24 +11:00
Eric Mastro
2478e36aba
add back proof end mappings
2022-10-25 12:47:50 +11:00
Eric Mastro
cfb70897f8
[marketplace] alias bytes32 types
...
`RequestId`, `SlotId`, `LockId`, `ProofId`, `EndId` types were created to avoid confusion and enforce compiler restrictions.
2022-10-25 12:47:50 +11: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