Setting The Service Price
In the lead up to each new Epoch, each Seeker Node may submit a signed offer price to a smart contract on chain. If they do not submit a price, their submission is taken to be the same as their most recent submission, to minimise gas costs, Sylo Nodes can also submit an “opt out” offer, where they choose to receive no work this epoch - for scheduled maintenance, or in response to a service outage.
The smart contract relies on the following on-chain variables:
A lower percentile value, which is used to determine the service price for the coming epoch. Default value is 25th percentile.
An upper percentile value, which is used to determine which Nodes are penalised for offering too high. Default value is 90th percentile.
A safety margin percentage, which is used to determine the safe range of offer prices around the chosen service price. Default value is 10%.
A penalty percentage, which is used to determine the proportion of a penalised Node’s stake that is added to the stake tree in the coming epoch. Default value is 0% (i.e 100% exclusion).
All of these values are defined on-chain, and can be edited by a SNIP.
The smart contract then:
Computes the lower percentile price
a. Put the price offers in order from lowest to highest, and traverses this list of offers from low to high until offers from lower percentile of the total staked Sylo Token have been seen.
Sets the service price for this epoch as the price offered by the last Seeker Node seen. All Nodes will be paid this price for relay in the coming epoch, regardless of the price they offered.
Computes the upper percentile price
a. The price associated with this upper percentile is found the same way as above.
Computes the safety margin price
a. The safety margin price is set as (1 + safety margin percentage) * the chosen service price for the epoch.
Builds the epoch's stake tree
a. Seeker Nodes whose offer price is greater than or equal to the upper percentile price and greater than the safety margin price are penalised for offering too high of a price.
b. The penalty for the Nodes that offered too high is reduced representation in this epoch’s stake tree. Instead of having all of their stake listed in the stake tree, the amount listed is their total stake multiplied by the penalty percentage. This leads to penalised Nodes receiving less relay work to do, and less income, in the coming epoch.
This process ensures that Seeker Nodes have an economic incentive to price their services honestly, according to their own costs of delivering the service.
Seeker Nodes are paid the service price either way, and cannot unilaterally increase the service price themselves, so they are incentivised to offer as low as they can afford (i.e, their break-even price) in order to avoid being penalised.
Setting the service price at the lower percentile price prevents both market power abuse (where large stakeholders temporarily set the price lower than their own costs of production in order to make new competitors unprofitable) and service price manipulation by small stakeholders (who, by offering low with small amounts of stake, can impose large costs on their higher staked competitors).
The safety margin exists to safeguard the decentralisation of the network, by creating a range of viable prices to offer in at. This ensures that larger node operators are unable to drive their smaller competitors out of business through economies of scale.
Last updated