Set once, in the constructor.
Every number below was fixed when the contract was deployed. Nobody can move them afterwards — not you, not us, not whoever deployed it. There is no admin function, because there is no admin.
new StakeVault( stakeToken: —, rewardToken: —, epochDuration: —, rampEpochs: —, rampStart: —, maxStake: —, ); // there is no owner(), no pause(), no upgrade, // no blocklist and no setter. The contract is // inert from the block it was deployed in.
Three moves, one contract.
Mining power climbs from — to 100% over —. Every deposit into the vault is split across miners in proportion to that power, once per —.
Commit
Deposit the token into the vault. It is never locked: a withdrawal returns exactly what went in, whenever you ask for it.
Ramp
Your mining power climbs one step per epoch, from the floor to 100%. Staying is what earns the weight, not size alone.
Collect
Each deposit is split across miners in proportion to that power, and sits claimable until you take it.
One vault. Two payout assets.
Fees are paid in by hand. The contract does the rest, and every edge below is a call anyone can read on chain.
Nothing here skims a swap. Every reward that reaches you was paid in by a human first.
Six properties, all readable on chain.
Nothing below is a promise about what the vault will earn. Each one is a fact about what the contract can and cannot do.
Paid in the quote asset
Rewards arrive in the pool's quote asset. Nothing is converted, nothing takes slippage.
Time-weighted ramp
Power climbs to 100%. Capital committed longer weighs more on the same pot.
No administrator
No owner, no pause, no upgrade, no blocklist. The contract is inert once deployed.
Principal returned whole
A withdrawal returns exactly what was committed. No penalty, no exit fee, no lockup.
Public ledger
Each deposit is timestamped by the chain and shown as-is, amount and sender included.
Open catch-up
sync() is nobody's privilege. After a quiet stretch, anyone can restart distribution.
Every reward is on the record.
A token graduated on Pons trades behind the Pons hook, which is shared and mandatory, so nothing in this protocol skims a swap. Rewards are paid into the vault, and the chain keeps the receipt for every one of them.
taken from a swap
Every reward is paid in deliberately. Nothing is siphoned off a trade, so nothing depends on volume you cannot see.
of deposits on chain
Every fund() emits a timestamped event. The ledger is read straight from the chain, and no one can erase a line from it.
admin keys
No owner(), no pause(), no withdrawal to a third party. Once funded, nothing leaves the vault except toward miners.
fund() is open to anyone: anybody can top the vault up, nobody can take funds out. Distribution is weighted by power, which is itself a function of the amount committed and how long it has been committed.