Gravity
Gravity is the weight of a staking position. It determines what share of ETH rewards that position receives, and it is the only thing that does.
How it is computed
Gravity is the staked amount multiplied by the lock's weight:
gravity = amount × multiplier| Lock | Multiplier | 1,000 PLOUTO becomes |
|---|---|---|
| 7 days | 1.0× | 1,000 Gravity |
| 30 days | 1.5× | 1,500 Gravity |
| 90 days | 2.5× | 2,500 Gravity |
In the contract, multipliers are stored in WEIGHT_PRECISION (1e18) units:
uint256 public constant MULT_7D = 1.0e18;uint256 public constant MULT_30D = 1.5e18;uint256 public constant MULT_90D = 2.5e18; uint256 weight = (amount * multiplier) / WEIGHT_PRECISION;Any duration that is not exactly 7, 30 or 90 days reverts with InvalidLock.
Your share
Rewards are divided by Gravity, not by amount. A position's share of any distribution is:
share = positionGravity / totalGravitySo 1,000 PLOUTO locked for 90 days earns the same as 2,500 PLOUTO locked for 7 days. That is the entire trade-off the system offers: time in exchange for weight.
Multiple positions
A wallet can hold any number of positions, each with its own amount, lock and Gravity. They are tracked independently:
struct Position { address owner; uint256 amount; uint256 weight; uint64 createdAt; uint64 unlockAt; uint256 rewardDebt;}There is no compounding of one position into another, and no position merging. Staking more creates a new position with its own maturity date.
Gravity is fixed at open
A position's Gravity does not decay as it approaches maturity, and it does not increase with time held. It is set when the position opens and stays there until the position closes.
This is a deliberate simplification. A decaying weight would mean a staker's share silently shrinks between distributions, which is harder to reason about and harder to verify.
What happens at maturity
Nothing automatic. The position keeps its Gravity and keeps earning until the owner withdraws. There is no penalty for leaving a matured position open, and no bonus either — it simply continues to hold weight.
Withdrawing removes the position's amount from totalStaked and its weight from totalWeight, and pays out any unclaimed rewards in the same transaction.
Reading it
The interface shows Gravity in three places: per position, summed for your wallet, and as a protocol total. The staking form previews the Gravity a position would have, along with the share of the pool it would represent if opened now.
That preview is explicitly labelled "if opened now", because the denominator moves every time anyone else stakes or withdraws.
For the precise reward mathematics, see staker reward mathematics.