Payments & pricing
GENESIS services accept two tokens.
| Before launch | After launch | |
|---|---|---|
| HYPE (Elysium native coin) | Accepted | Accepted |
| GENESIS (ElysiumPad token) | Not yet live | Accepted, always cheaper in value |
How GENESIS stays cheaper
Every price is set once, in HYPE. The GENESIS price is derived from it:
GENESIS price = HYPE price × (GENESIS per HYPE) × (1 − GENESIS discount)- The GENESIS discount is 10% by default. The contract won't accept 0%, so GENESIS can never cost the same or more.
- The GENESIS/HYPE rate comes from a price feed, which can be a GENESIS Data Oracle feed, or from a fixed rate until one exists. If GENESIS doubles in value, its fee halves automatically.
- If the rate is missing or stale, GENESIS payments pause and HYPE keeps working.
Example with a 0.001 HYPE VRF fee, a rate of 1 HYPE = 1,000 GENESIS, and a 10% discount:
| Pay with | Fee | Value in HYPE |
|---|---|---|
| HYPE | 0.001 HYPE | 0.001 |
| GENESIS | 0.9 GENESIS | 0.0009 (10% less) |
Staking GENESIS adds a further 10–40% off, whichever token you pay with.
Where each token is used
| Use | How to choose the token |
|---|---|
| VRF and Fair Selection fees | Send HYPE as msg.value, or approve GENESIS and send no value |
| Automation upkeep funding | Pass the token when registering. GENESIS-funded jobs pay a smaller keeper premium |
| Commit–reveal bonds | The round creator picks the token |
| Keeper and operator stake | Either token. Each has its own minimum, and the GENESIS minimum is lower in value |
Requests, rounds and upkeeps always settle in the token they started in. Operators and keepers are paid in that same token.
Quoting fees
ts
const { hype, genesis, genesisSavingsBps } = await client.quoteVrfFees(myAddress);
// hype.amount, genesis?.amount, and the saving in basis points (1000 = 10%)solidity
uint256 hypeFee = feeManager.quote(VRF_REQUEST, account, address(0));
uint256 genFee = feeManager.quote(VRF_REQUEST, account, genesisToken);