Setting the service price
The goal when setting a common service price is to ensure that supply and demand are balanced.
In markets, prices are typically determined by solving a market clearing problem - reconciling a stack of bids to buy the item at a particular price, against a stack of offers to sell the item at a particular price, leading to a final market price that is halfway between the highest unfulfilled bid and the lowest unfulfilled offer.
However, this is not possible in our case. While we could feasibly collect sell offers from nodes, it is not feasible to collect bids from the users of the service without adding unacceptable friction for those consuming the service.
Instead, we can make use of two on-chain values to measure supply and demand - the total amount of SYLO staked, as a measure of supply, and the total number of pieces of evidence of relay that were submitted, as a measure of demand.
First, the number of pieces of evidence of relay from the last epoch is divided by the ticket evidence probability, to produce the expected number of relays performed last epoch. Then, this number of relays is divided by the total number of SYLO staked, to get the number of relays per SYLO staked.
This value, measured each epoch, captures the balance between demand for the service, and the amount of capacity for supply of the service.
A high number of relays per staked SYLO shows that the network needs more capacity, or that the current price is a really good deal, leading to lots of use of the network. A low number of relays per staked SYLO suggests that the network is over-resourced, or that the price is too high, leading users to cut back on use.
Each epoch, the measured number of relays per staked SYLO is compared to a target value:
If the measured number is higher than the target, the service price is increased slightly. The higher price improves income for nodes, incentivising more nodes and more staked SYLO to join the network, and also reduces the quantity of service demanded. Both of these incentives act to change user behaviour, and return the measured value for next epoch back to the set point.
If the measured number is lower than the target, the service price is decreased slightly. The lower price decreases income for nodes, incentivising some of them to unstake, and also incentivises increased use of the network, as it's services are now cheaper. Both of these things incentives act to change user behaviour, and return the measured value for the next epoch back to the set point.
This iterative update process keeps the network price in balance according to competitive market forces, incentivising the network to keep up with demand for it's services and rewarding those who participate in it's growth.
Last updated