Pricing A Request
Each request needs to specify how much the requestor is willing to pay to receive a proof. Each prover on the decentralized market will decide whether that price is acceptable to them, and compete to fulfill those requests.
The offer section of a request specifies the parameters of the reverse Dutch auction, part of the proof lifecycle. This is the mechanism by which the requestor and prover can aggree upon a price, and ensures the requestor will get the best price available from any prover on the market.
Contents of an Offer
An offer contains the following:
- Pricing parameters
- Minimum price
- Maximum price
- Bidding start (defined as a block number)
- Length of ramp-up period (measured in blocks since the start of the bid)
- Timeout (measured in blocks since the start of the bid)
- Lock-in stake
For example, an offer might specify:
- Pricing parameters
- Minimum price: 0.001 Ether
- Maximum price: 0.002 Ether
- Bidding start: Block number 1000
- Length of ramp-up period: 5 blocks
- Timeout: 100 blocks
- Lock-in stake: 0.4 Ether
The pricing parameters are used to determine the reward that gets paid-out when the request is fulfilled (ie, the proof has been verified). The reward is governed by the price function. Its inputs are:
- The offer.
- The number of blocks that have passed since the bidding started.
The function works like so:
- During the discovery period (the initial phase of the auction before bidding start), the price is just the minimum price.
- During the ramp-up period (which immediately follows the discovery period), the price grows linearly up-to the maximum price.
- After the ramp-up period, the price is just the maximum price.
Continuing with the example offer given above, the price is constant (0.001 Ether, its minimum) for the first 10 blocks; on block 11 it jumps to 0.0012 Ether; on 12 it jumps to 0.0014 Ether; on 15 it reaches 0.002 Ether (its maximum), and remains at that value until the offer expires.
When a prover locks-in a request, they are agreeing to be paid the reward offered by this function at the time of their bid.
📟 Pricing Calculator
Use this interactive calculator to get suggested request parameters based on your program's complexity and desired proof time: