Update Readme now that storage requests and offers are on-chain
This commit is contained in:
parent
3fd7c756d9
commit
743d1cdb07
45
Readme.md
45
Readme.md
|
@ -1,7 +1,7 @@
|
|||
Dagger Contracts
|
||||
================
|
||||
|
||||
An experimental implementation of the contracts that underly the Dagger storage
|
||||
An experimental implementation of the contracts that underlay the Dagger storage
|
||||
network. Its goal is to experiment with the rules around the bidding process,
|
||||
the storage contracts, the storage proofs and the host collateral. Neither
|
||||
completeness nor correctness are guaranteed at this moment in time.
|
||||
|
@ -32,12 +32,13 @@ certain amount of time.
|
|||
When all goes well, the client and host perform the following steps:
|
||||
|
||||
Client Host Storage Contract
|
||||
| |
|
||||
| --- request (1) --> |
|
||||
| |
|
||||
| <----- bid (2) ---- |
|
||||
|
|
||||
| ----------- create contract (3) ---------> |
|
||||
| | |
|
||||
| |
|
||||
| --------------- request (1) -------------> |
|
||||
| |
|
||||
| | ---- offer (2) ----> |
|
||||
| |
|
||||
| ------------- select offer (3) ----------> |
|
||||
| |
|
||||
| ----- data (4) ---> | |
|
||||
| |
|
||||
|
@ -51,26 +52,26 @@ When all goes well, the client and host perform the following steps:
|
|||
| |
|
||||
| <-- payment (7) ---- |
|
||||
|
||||
1. Client broadcasts off-chain a request for storage, containing the size of
|
||||
the data that it wants to store and the length of time it wants to store it
|
||||
2. Several hosts reply off-chain with a bid containing a price
|
||||
3. The client selects a bid and uses it to create a new storage contract
|
||||
on-chain
|
||||
1. Client submits a request for storage, containing the size of the data that
|
||||
it wants to store and the length of time it wants to store it
|
||||
2. Several hosts submit offers containing a price
|
||||
3. The client selects an offer
|
||||
4. The client sends the data it wants to store to the host
|
||||
5. Once the host has received the data it starts the storage contract
|
||||
6. While the storage contract is active, the host proves that it is still
|
||||
storing the data by responding to frequent random challlenges
|
||||
storing the data by responding to frequent random challenges
|
||||
7. At the end of the contract the host is paid
|
||||
|
||||
Contracts
|
||||
---------
|
||||
|
||||
A storage contract can be created on-chain from a signed request and bid. The
|
||||
request contains the size of the data and the length of time during which it
|
||||
needs to be stored. It also contains proof requirements such as how often a
|
||||
proof will need to be submitted by the host. A random nonce is included to
|
||||
ensure uniqueness among similar requests. A bid contains a reference to the
|
||||
request it pertains to, a price, and an expiry time.
|
||||
A storage contract can be negotiated through requests and offers. A request
|
||||
contains the size of the data and the length of time during which it needs to be
|
||||
stored. It also contains a maximum price that a client is willing to pay and
|
||||
proof requirements such as how often a proof will need to be submitted by the
|
||||
host. A random nonce is included to ensure uniqueness among similar requests. An
|
||||
offer contains a reference to the request it pertains to, a price, and an expiry
|
||||
time.
|
||||
|
||||
When a new storage contract is created the client immediately pays the entire
|
||||
price of the contract. The payment is only released to the host upon successful
|
||||
|
@ -94,12 +95,12 @@ proofs ensure with a high probability that the host is still holding on to the
|
|||
data that it was entrusted with.
|
||||
|
||||
To ensure that a host is not able to predict and precalculate proofs, these
|
||||
proofs are based on a random challenge. Currently we use the ethereum block hash
|
||||
proofs are based on a random challenge. Currently we use ethereum block hashes
|
||||
to determine two things: 1) whether or not a proof is required at this point in
|
||||
time, and 2) the random challenge for the proof. Although a host will not be
|
||||
able to predict the exact times at which a proof is required, the frequency of
|
||||
proofs averages out to once per proof period. This proof period was agreed upon
|
||||
by the client and host during the request/bid exchange.
|
||||
proofs averages out to a value that was agreed upon by the client and host
|
||||
during the request/offer exchange.
|
||||
|
||||
Hosts have a small period of time in which they are expected to submit a proof.
|
||||
When that time has expired without seeing a proof, validators are able to point
|
||||
|
|
Loading…
Reference in New Issue