Contracts
Verify it yourself.
One creature contract, three mint policies, two price sources, and an optional token layer. Addresses come from one config file and are empty until deployment. The ABIs below are the compiler's output for the source as it stands.
No external firm has audited these contracts. An internal independent review found nothing above Low and its findings were fixed or documented. The creature holds no funds and has no withdraw function; the paid policy holds mint proceeds that only its immutable treasury can withdraw. Read the source before you trust it.
Addresses
The contracts.
| Contract | Address | Functions | ABI |
|---|---|---|---|
| MoodCreature (Eidolon) | not deployed | mint (payable) poke feed mood stats observation latestPrice svg tokenURI careOf stageOf formOf maxSupply royaltyInfo setPriceSource setMintPolicy setRoyalty renounceOwnership | JSON |
| FreeMintPolicy | not deployed | charge (refuses value) | JSON |
| PaidMintPolicy | not deployed | price phase claimAllowlist proposePrice executePrice setPhase setPaused withdraw (treasury only) renounceOwnership | JSON |
| TokenBurnMintPolicy | not deployed | charge (burns the token on mint and feed) adjust (once, capped) setPaused | JSON |
| MockPriceSource | not deployed | read setPrice setFailing | JSON |
| PrecompilePriceSource | not deployed | read spotIndex szDecimals | JSON |
Source: not yet published. Chain: Elysium, id 99901 (0x1863d), RPC rpc.elysium.kinetiq.xyz. On-chain name is "Eidolon", symbol "EIDOLON", titles "Eidolon #id". Also in the source, with no decision taken: EidolonToken, VestingVault, FeeBuyback (adapter interface only) and ItemRegistry. planned
Selectors
What this site calls.
The mint page encodes calls by hand; these are the four-byte selectors it uses, so you can match them against the ABI.
Check the claims
Five things to run.
- 01Mood is shared.
mood()takes no token id. Call it from any address and compare:cast call $CREATURE "mood()(uint8)" --rpc-url https://rpc.elysium.kinetiq.xyz
0 calm, 1 happy, 2 nervous, 3 angry, 4 sleeping. - 02The art is in the contract.
svg(tokenId)returns the picture;tokenURIwraps it as a data URI. No URL appears anywhere in the output. - 03The thresholds.
ANGRY_DROP_BPS()is -300,NERVOUS_VOL_BPS()is 100,HAPPY_RISE_BPS()is 200,RING_SIZE()is 16. Stages:HATCH_AGE1 day andHATCH_FEEDS3;JUVENILE_AGE7 days,JUVENILE_FEEDS14,JUVENILE_STREAK3;ADULT_AGE21 days,ADULT_FEEDS40,ADULT_STREAK7. Streak gaps 20 to 48 hours, burst under 6 hours, ember at 8 storm feeds and 30%. All public constants; the owner may still change them before deployment. - 04The owner's powers. The functions with
onlyOwneron the creature aresetPriceSource,setMintPolicy(instant, no timelock),setRoyalty(never aboveMAX_ROYALTY_BPS, 10%) andrenounceOwnership. No pause on feeding, no withdraw, no mint for others, no way to move or burn a token. The paid policy's owner can set the phase, propose a price (waitsdelay, never aboveMAX_PRICE), pause new mints, and renounce; it can never withdraw: only the immutable treasury can. Grep the source. - 05The site's port.
assets/creature.jsis a line-for-line port ofMoodSvg.renderEvolved; the thirty variants (five moods by egg, hatchling, juvenile and the three adult forms) match the output of the contract's own render script byte for byte against the source with md53962fdf8. The port draws the gallery and the simulator; a live contract's ownsvg()replaces it on the mint page.
Stated plainly: a gift transfer can block a wallet's own mint, because a wallet that holds one cannot mint (HoldsOneAlready); the recipient can move the gift away and then mint. Until the creature's ownership is renounced, its owner can swap the mint policy instantly, and a policy that reverts would stop minting and feeding; the plan is to renounce with the final policy at launch. A supply cap, maxSupply, is fixed at deployment and can never exceed 10,000; the royalty is ERC-2981 and advisory. Every number is a placeholder until the owner decides.