Formula
The mine pays tribute per dollar staked, per day. The level sets the rate, and the rate is the same for every miner. At level 0 it is 0.1 WINZE for every dollar, every day.
tribute per day = value of your stake in $ x tribute per $ per day$10,000 staked at level 0 receives 1,000 WINZE per day. At level 1 the same stake receives 500.
There are only two inputs. Everything else on this page is about how the mine reads them accurately.
In short
- The rate is not a share of anything. Other deposits do not touch it.
- Tribute accrues every second. The daily figure is a display unit.
- Your stake is valued at the oracle price, so tribute moves with the stock.
- Nothing updates until something touches your position.
- The price read at settlement is applied to the whole interval.
Not diluted
The rate is not a share of a pool. Nobody divides a daily emission between miners. A second miner who stakes $2,000,000 does not change what your dollars receive.
| Miner | Staked | WINZE per day at level 0 | At level 1 |
|---|---|---|---|
| You | $10,000 | 1,000 | 500 |
| Someone else | $2,000,000 | 200,000 | 100,000 |
Two things move your tribute per day: the value of your stake, and the level. Other deposits matter only because they push TVL toward the next level.
This is the whole design. A rate that depended on other deposits would be a rate nobody could quote to you in advance, because it would depend on what everyone else does next.
Per second, not per day
Tribute accrues continuously, every second. The daily figure is a display unit.
tribute per $ per second = tribute per $ per day / seconds in a dayThere are 86,400 seconds in a day. The contract stores the rate per second, not the rate per day, and derives the daily figure from it. Tribute accrued since the last settlement is readable at any time through pendingTribute, whether or not anything has been settled.
There is no daily tick, no epoch boundary you have to be present for, and no advantage to staking at a particular time of day.
Price at settlement
A stake is valued at the current oracle price, not at the price of the day it was staked. A stake worth $10,000 is worth whatever the stock is worth now. When the price rises, tribute per day rises with it. When the price falls, it falls.
Each listed token has a price source. At launch it is a manual source, where a keeper pushes prices. A Chainlink source can replace it for a token that has a feed. Over a weekend or a market close, the last pushed price stands. A price older than 7 days is shown as stale. It does not block staking or claiming.
If a price source stops answering, that token counts as $0 in TVL and new stakes of it are refused. Its positions skip settlement until the price returns, so nothing accrued is lost. Unstake and claim keep working. The whole of it is in prices.
Lazy settlement
The mine does not update every position every second. A position is settled when something touches it: a stake, an unstake, a claim, or poke, which anyone can call for any miner.
At settlement the mine pays the interval since the last settlement, integrated across every rate epoch inside that interval.
tribute = amount x price now x rate per $ per second x seconds elapsedThe price used is the price at settlement, for the whole interval. This is an approximation. If the price moved during the interval, the whole interval is paid at the new price. A position nobody touches for a month is paid for that month at the price of the day it is settled.
Settled tribute moves into claimable. Stake and unstake settle but do not transfer. Claim transfers everything claimable, for all tokens, in one call. Staking walks through each call in order.
Time weighted prices and price checkpoints are planned for V2. V1 does not have them, and risks says what that costs.
What the contract actually stores
The rate per dollar per second is held at 10^36 scale, and the level rate is the level 0 rate shifted right once per level. The division that produces it is floored, so the daily figure the contract reports is a wei or two under the table.
At level 0 the table says 0.1 and the contract reports 99999999999999999 wei against a table value of 100000000000000000. On $10,000 that is 999.99999999999999 WINZE a day rather than a round 1,000.
Labels on this site use the table values. Figures that claim to be what the contract computed use the contract's own numbers. The difference is listed level by level in risks.