Contracts
Every Symbolon contract deployed on the Elysium testnet, with explorer links, and the main functions and events of each. Addresses are read from the deployment manifest, deployments/99801.json.
Deployed addresses
| Contract | Role | Address |
|---|---|---|
Pots | Escrow: Pots, pledges, bounties, First Crossing, claims | 0x6b495688E2d4b8325c5cCaDc99f9d26286384823 |
RiteManager | Claims, verifies, settles and fails Rites | 0x97Fb1Bb143B3eB1731C91bA6989d3f38C15628f1 |
Officiants | Bonds, unbonding, slashing | 0x293D169091f1dB59E9ab4c74bb216EB6Ab94720A |
Treasury | Receives the 2% protocol fee and slashed bonds | 0x1EEF45270b3F092affE77Ba4580F0fce0DaB198B |
MockTickerAuction | Simulated HyperCore ticker auction | 0x066AD378A17Cb1cFdb0DB514FA0A52B42D8148d7 |
MockCoreState | Simulated HyperCore spot-deploy state | 0xAadB4b53595073Fec3F91b8b874184729c3463e5 |
MockDepositWalletFactory | Simulated HyperCore deposit-wallet factory | 0xF763d1D87F3253223e2bFc6855277fb74E6f4066 |
DemoPriceSource | Testnet reference prices for the start-price check | 0xA05A36807F2BA77C6a1e79322AE20216676A251e |
DemoTokenFactory | Creates Specimen demo tokens | 0xccEb7Fe7FfC551B8C26fdF42D9400A246a83949D |
OLIVE | Demo token | 0x962D8C6152aA22362bA908C8a1e182A04263F528 |
LYRE | Demo token | 0xE0082c7A481B0F8D0Ac061Ef54a266E7e6C3F589 |
EMBER | Demo token | 0xE6D40a97D9feb9294DE7c8A75d3D147Fc56e4014 |
All contracts are written in Solidity 0.8.28. They have no upgradeability, no pause and no owner-only parameter setters. Parameters are fixed at deployment. Every function that moves HYPE or tokens has a reentrancy guard, and value leaves through pull-based claims where possible.
Pots
The escrow. Holds pledges, bounties and crossing deposits.
| Function | Who | When |
|---|---|---|
openPot(token, ticker) | Anyone | Token has no live Pot, ticker valid and free |
pledge(potId) payable | Anyone | Open |
withdraw(potId, amount) | Sponsor | Open |
addBounty(potId, amount), withdrawBounty(potId, amount) | Anyone, contributor | Open |
joinCrossing(potId, amount) | Holder | In Rite |
withdrawCrossing(potId) | Holder | Open, after a failed Rite |
claimCrossing(potId) | Holder | Listed |
claimRefund(potId), claimBounty(potId) | Sponsor | Listed |
claimOfficiantPayment() | Officiant | After settlement |
flushTreasury() | Anyone | Fees owed |
closePot(potId) | Opener, or anyone after the idle delay | Open and empty |
Views: getPot, statusOf, pledgeOf, bountyOf, crossingOf, claimableOf, eligiblePot, openPotIds, tickerStatus, computeSpec, coreSupplyOf, potCount.
Events: PotOpened, PotClosed, Pledged, Withdrawn, BountyAdded, BountyWithdrawn, CrossingJoined, CrossingWithdrawn, Crossed, RiteStarted, RiteReverted, Settled, RefundClaimed, BountyClaimed, OfficiantPaid, TreasuryFlushed.
Accounting invariant, tested with Foundry invariant tests: the HYPE balance of Pots equals live pledges, plus unclaimed refunds, plus amounts owed to Officiants and to the Treasury.
RiteManager
Starts, settles and fails Rites.
| Function | Who | Effect |
|---|---|---|
claimRite(potId) | Bonded Officiant | Assigns the Rite of the eligible Pot, sets the deadline |
settle(potId) | Anyone | Runs the seven checks, credits Officiant and Treasury, opens claims |
fail(potId) | Anyone, after the deadline | Slashes the bond, returns the Pot to Open |
verify(potId) | View | Bit mask of the seven checks, token index, price paid |
riteOf(potId), activePot() | View | Rite data, active Pot |
Events: RiteClaimed, RiteSettled, RiteFailed. Errors include CheckFailed(n), NotEligiblePot, DeadlineNotPassed, TickerNotBought.
Officiants
Bond registry.
| Function | Effect |
|---|---|
bond() payable | Posts or tops up a bond |
requestUnbond(), cancelUnbond(), unbond() | Cooldown, then withdrawal |
officiantOf(address), isEligible(address), list() | Views: bond, Rites completed, Rites failed, active Pot |
Events: Bonded, UnbondRequested, UnbondCancelled, Unbonded, Assigned, Released, Slashed. Only the RiteManager can assign, release and slash.
Treasury
Receives the protocol fee (receiveFee) and slashed bonds (receiveSlash). Exposes totalFees and totalSlashed. No owner and no withdrawal on testnet.
Simulated HyperCore
| Contract | Main functions |
|---|---|
MockTickerAuction | buyTicker(ticker, szDecimals, weiDecimals, maxPrice), currentPrice(), windowEnd(), available(), isTickerFree(ticker), saleOf(tokenIndex) |
MockCoreState | userGenesis, genesis, linkEvmContract, setDeployerFeeShare, enableFreezePrivilege, revokeFreezePrivilege, freezeUser, listSpot, setTokenAnnotation, getToken, indexOfTicker, balanceOf, systemAddress |
MockDepositWalletFactory | predictWallet, walletFor, createWallet |
Events used for the Rite timeline: TickerBought, WalletCreated, Genesis, EvmContractLinked, DeployerFeeShareSet, FreezePrivilegeRevoked, SpotListed.
Demo contracts
| Contract | Purpose |
|---|---|
DemoToken (OLIVE, LYRE, EMBER) | Plain ERC-20, fixed supply, faucet() once per address |
DemoTokenFactory | createSpecimen() deploys a fresh demo token and gives the creator 1,000,000 of it |
DemoPriceSource | priceOf(token): fixed demo reference prices |