Contracts & security
Four contracts, immutable once deployed: no proxy, no admin key over funds, no pause. Small on purpose, with no complex price logic.
| Contract | Role |
|---|---|
| HorkosLocker | One ERC-721 position per lock; release() when milestones pass; extend() at any time; no early withdrawal exists. |
| TitheFactory + TitheRouter | One router per setup; splits incoming HYPE; permissionless execute() buys in TWAP tranches. |
| OathRegistry | Read-only score; getOath(token). |
| HorkosTreasury | Receives all fees; only exit is its own 100% buyback-and-burn router. |
The only privileged calls
HorkosLocker.setHorkos(address) and HorkosTreasury.setHorkos(address): one-time wiring of the $HORKOS address on launch day, callable once by the deployer. The first only enables the fee discount; the second creates the treasury’s buyback router. Neither gives any power over a lock, a router or funds, and neither can be called again.
Testnet deployment
Chain id 99801, RPC https://testnet-rpc.elysium.kinetiq.xyz, explorer. Every contract below, and every Tithe router created so far, has its source verified on the explorer and on Sourcify (exact match): what you read is what runs.
One Elysium detail for indexers: inside the EVM, block.number returns the parent chain’s (HyperEVM) block, so TitheRouter.createdBlock is a HyperEVM block number. Start log queries from the deployment block instead. All timing in Horkos (cliffs, vesting, tranche delays, 30-day windows) uses timestamps and is unaffected.
| Contract | Address | Role |
|---|---|---|
| HorkosLocker | 0xe8E8AbB1a06B1856ceD7c78Bd15D59C4F0a181B0 | Locks, positions (ERC-721 “OATH”), schedules |
| TitheFactory | 0x87D6e889A881B117A3e59E3F76f8305C992bD7DB | Creates and indexes Tithe routers |
| OathRegistry | 0x7f9e73a0254805bb0e224923C323966C08e55722 | getOath(token), read-only |
| HorkosTreasury | 0xB50DF6442199E1CCB437B2A4948B0b9d7cF5a656 | Receives every protocol fee |
| WHYPE | 0xAEba67024D913B73bE4d76613B4E5F381B295b4b | Testnet wrapped HYPE |
| MiniV2Factory | 0xf9669fbA54312D8565AAD65f4DD4eb74EC9C91D3 | Testnet Uniswap-v2-compatible pools |
| MiniV2Router | 0xF159DefAd24dd95FC6A80235Cdae7fa82C9c2bcE | Testnet buy / sell / add liquidity |
| DemoLaunchpad | 0xF7765ae29d563648775B0AFD1D803848a0B3f10e | Testnet stand-in for a graduated pad |
Before mainnet
Audit of the four contracts, then a bug bounty. If a fix is ever needed, a v2 is deployed next to v1, never in its place: existing locks keep their promise.