Add design for interactions between Sales and Repo
This commit is contained in:
parent
4e32d43787
commit
ad41558900
|
@ -0,0 +1,47 @@
|
|||
Sales module
|
||||
============
|
||||
|
||||
The sales module is responsible for selling a node's available storage in the
|
||||
[marketplace](./marketplace.md). In order to do so it needs to know how much
|
||||
storage is available. It also needs to be able to reserve parts of the storage,
|
||||
to make sure that it is not used for other purposes while a contract is running
|
||||
or being negotiated.
|
||||
|
||||
---------------------------------------------------
|
||||
| |
|
||||
| Sales |
|
||||
| |
|
||||
| ^ | |
|
||||
| | | updates ------------------ |
|
||||
| | --------------> | | |
|
||||
| | | Reservations | |
|
||||
| ------------------- | | |
|
||||
| queries ------------------ |
|
||||
| ^ ^ |
|
||||
----------------------------|---------|-----------
|
||||
| |
|
||||
availability | | state
|
||||
v v
|
||||
---------------- -----------------
|
||||
| Repo | | Datastore |
|
||||
---------------- -----------------
|
||||
|
||||
The Sales module keeps track of storage reservations in its internal
|
||||
Reservations module. It keeps a record of which pieces of reserved storage
|
||||
belong to which storage contract. It queries and updates the amount of available
|
||||
storage in the Repo. It uses a Datastore to persist its own state.
|
||||
|
||||
The Repo exposes the following functions that allow the Reservations module to
|
||||
query and update the amount of available storage:
|
||||
|
||||
Repository API:
|
||||
function available(): amount
|
||||
function reserve(amount)
|
||||
function release(amount)
|
||||
|
||||
The Datastore is a generic key-value store that is used to persist the state of
|
||||
the Reservations module, so that it survives node restarts.
|
||||
|
||||
Datastore API:
|
||||
function put(key, value)
|
||||
function get(key): value
|
Loading…
Reference in New Issue