Skip to content

Smart Contracts ​

VSPR.sol ​

Native ERC-20 token, fixed supply. Responsibilities: ERC-20 accounting, 9-decimal precision. There is no mint function and no owner: the whole supply is created at deployment, and payouts move VSPR the Treasury already holds.

sVSPR.sol ​

Rebasing representation of staked VSPR. Responsibilities: staker accounting, rebase adjustments and staking integration.

Staking.sol ​

Coordinates stake, unstake, optional warm-up, cycle accounting, reward distribution and rebase execution.

Treasury.sol ​

Controls protocol-owned reserves, asset whitelist, reserve accounting, valuation, and pays bond payouts and cycle rewards out of the VSPR inventory it holds.

BondDepository.sol ​

Manages accepted deposit assets, bond pricing, discounts, vesting and VSPR claims.

Distributor.sol ​

Pays each cycle min(bond proceeds, excess reserves) into Staking. There is no fixed reward rate. The hook books nothing here: pool fees never enter the reserve.

ReservePricer.sol ​

Values reserve tokens through Chainlink tokenized-equity feeds, with an owner-set fallback. It never reverts on a stale price: it returns the last answer and flags it, so valuations read "as of last close".

lib/SessionClock.sol ​

Pure library. From a timestamp it returns the session state (closed, pre-market, open, last light, after the close) and the seconds to the next close, with rule-based DST and NYSE holidays for 2026 and 2027.

hooks/LastLight.sol ​

LAST LIGHT, the Uniswap v4 hook: session-aware fees, the final-hour fee ramp, baseline restoration, the opening taper, and the protocol fee share, paid together with the taper to the fee recipient inside each swap. It holds nothing and settles nothing.

Permissions ​

Privileged functions should be limited to clearly defined configuration responsibilities. Critical permissions and contract ownership should be publicly identifiable from deployed contracts.

Everything settles at the close.