Documentation Index
Fetch the complete documentation index at: https://tech.ramses.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Ramses Token Contracts and Emissions
Token Stack
| Layer | Contract | Purpose |
|---|---|---|
| RAM | Token.sol + Minter.sol | Base emissions asset |
| xRAM | XRam.sol | Transfer-restricted governance token |
| Voting power | VoteModule.sol | Holds staked xRAM and exposes balances used by Voter |
| Liquid wrapper | R33.sol | ERC4626 vault that mints hyperRAM shares |
RAM and Minter
The supply schedule is enforced byMinter.sol.
Contract-level constants
INITIAL_SUPPLY = 350_000_000e18MAX_SUPPLY = 1_000_000_000e18BASIS = 10_000MAX_DEVIATION = 2_500
Lifecycle
kickoff()sets the RAM, voter, and xRAM addresses and mints the initial supply to the operator.initEpoch0()starts weekly period tracking and mints the configured epoch-0 emissions to the operator.updatePeriod()advances weekly emissions when a new period starts.updatePeriodAndRebase()advances the period and then calls xRAM’srebase().
Emissions multiplier
updateEmissionsMultiplier() is governance-controlled and cannot move by more than 25% in a single update. calculateWeeklyEmissions() also respects the global MAX_SUPPLY.
xRAM
XRam.sol is the governance token contract.
Conversion
- Pulls
amountRAM from the caller - Burns the configured slashing penalty
- Mints
amountxRAM to the caller
Exit
Transfer restrictions
xRAM is not freely transferable. Transfers only succeed when the sender or receiver is exempt, or when the transfer is part of recognized gauge and fee-distributor flows.Governance controls
AccessHub can:
- Pause or unpause xRAM
- Manage exemption lists
- Move the xRAM operator
- Rescue non-RAM tokens from xRAM
VoteModule
VoteModule.sol is where voting power actually lives.
Core behavior
- Users deposit xRAM into
VoteModule VoteModule.balanceOf(user)is the user’s voting powerVoteModule.totalSupply()is the total voting power in the system
Delegation and admin permissions
delegate(address)is used for voting-related permissionssetAdmin(address)is used for broader owner-authorized operations such as fee claims
Cooldown
VoteModule exposes:
cooldown()unlockTime()setCooldownExemption()setNewCooldown()
block.timestamp >= unlockTime.
Voter and Weekly Periods
Voter.sol is the contract that ties voting, gauges, and emissions together.
Weekly period model
The contracts use:Important consequence
Votes are written into the next period, not the current one. That same next-period behavior also applies to:FeeDistributor.notifyRewardAmount()FeeDistributor.incentivize()
Voting flow
Voter normalizes the supplied weights against the owner’s current VoteModule.balanceOf(owner) and records the resulting allocations for the next weekly period.
Maintenance flow
Voter.distribute():
- Ensures emissions are up to date through
Minter - Routes emissions into gauges
- Collects CL protocol fees through
FeeCollector - Preserves or updates fee-split behavior depending on gauge status
Fee Routing and Incentives
Two contracts matter most here:FeeCollector.sol and FeeDistributor.sol.
FeeCollector
For CL pools,FeeCollector:
- Reads accrued protocol fees from the pool
- Sends a treasury portion according to
treasuryFees - Routes the remainder into the pool’s
FeeDistributor
FeeDistributor
Each fee distributor tracks:- Vote balances per owner address
- Reward supply per token and per period
- Claimed amounts per owner, token, and period
notifyRewardAmount()for routed protocol feesincentivize()for vote incentives and bribes
R33 / hyperRAM
R33.sol is an ERC4626 vault that wraps xRAM exposure.
Naming
- Source contract name:
R33 - Token name:
xRAM Liquid Staking Token - Token symbol:
hyperRAM
Core behavior
- Deposits pull xRAM from the user
- The vault immediately deposits that xRAM into
VoteModule - Vault shares are freely transferable
totalAssets()reflects the vault’s staked xRAM balance inVoteModule
Operator actions
The vault operator can:submitVotes()claimIncentives()swapIncentiveViaAggregator()compound()unlock()
Locking
Deposits requireisUnlocked(), which means:
- The current period has been unlocked
- The system is not within one hour of the next weekly period
VoteModule.withdraw() succeeding.
