Verify it yourself
Don't trust this site. Every claim in these docs can be checked against the chain with a few commands. A five-minute read.
Nobody can change the programs
Section titled “Nobody can change the programs”The two hooks and the engine have no upgrade authority. That’s what “immutable” means on Solana: the deployed code can never be replaced, by us or anyone.
solana program show eyesEswWscHeKNT9HKWyohA5htBhmgLsJBEuswZiinJ # EYES hooksolana program show eyesfsib92v2NPspfCabd9oMdqUtx8ezW61YomXkgZ2 # launchpad hooksolana program show eyesbEx9mLpRKL61QD3X2mi4Z9cMdpSjNQJatsdbZw6 # the engine# each one prints: Authority: noneMeteora’s own programs (the curve and DAMM v2) are upgradeable by Meteora. That’s the one dependency we can’t remove, see disclosures.
The code on chain is the code we built
Section titled “The code on chain is the code we built”Each program’s deployed bytes hash to a fixed build. Dump the program, keep the build’s length (the rest is zero padding) and hash it.
solana program dump eyesfsib92v2NPspfCabd9oMdqUtx8ezW61YomXkgZ2 hook-v2.sohead -c 90712 hook-v2.so | shasum -a 256# e636bc32e60f51c658c91937361cf68d98eac2b3b0278d0d304e81dccc3d0d49| Program | Build length | SHA-256 of the build |
|---|---|---|
| EYES hook | 83,392 bytes | aca342b56c9c8dcb73d3870a65a065a3b99f9a67a4f173249fa88a834df0c468 |
| Launchpad hook | 90,712 bytes | e636bc32e60f51c658c91937361cf68d98eac2b3b0278d0d304e81dccc3d0d49 |
| The engine | 82,080 bytes | c1c762b031039bc6fc6b588e47150855f268e017a2324fa2e6c3e472aadd04f1 |
The source of both hooks is published as one permanent file on Arweave: gateway.irys.xyz/CYS5g7GJKT8h42SuaDs3QY1eNPoAY2M1or3oHiB3eAUm.
A token follows the rule
Section titled “A token follows the rule”A real launch has our hook on its mint and a registration under the hook. The mint shows the hook program; the registration is the hook’s extra-account-metas account for that mint, which our hook only creates in a launch on one of our own configs.
spl-token display ZrueWB1YvjruJpTGiJSYYfyuL71FZeeSUwJY1ZPeyes# Mint authority: (not set) Freeze authority: (not set)# Transfer hook program id: eyesEswWscHeKNT9HKWyohA5htBhmgLsJBEuswZiinJThe same check in code, for apps and bots that want to recognise our launches:
import { Connection, PublicKey } from '@solana/web3.js';
const EYES_HOOKS = ['eyesfsib92v2NPspfCabd9oMdqUtx8ezW61YomXkgZ2', 'eyesEswWscHeKNT9HKWyohA5htBhmgLsJBEuswZiinJ'];
// hook = the program id in the mint's TransferHook extensionexport async function isEyesLaunch(conn: Connection, mint: PublicKey, hook: PublicKey) { if (!EYES_HOOKS.includes(hook.toBase58())) return false; const [metas] = PublicKey.findProgramAddressSync([Buffer.from('extra-account-metas'), mint.toBuffer()], hook); const acc = await conn.getAccountInfo(metas); return acc !== null && acc.owner.equals(hook);}The rule itself
Section titled “The rule itself”Try it. A buy from any curve here without Fomo verification reverts with error 7001, FOMO_REQUIRED. Every such revert is on chain, and the main site counts them live.
The hook lets a transfer out of a curve when any of these hold, and nothing else:
- Fomo’s verification key
AgmLJBMDCqWynYnQiPCuj9ewsNNsBJXyzoUhD9LJzN51signed the transaction. - The tokens go to the engine’s vault, where EYES is burned and anything else stays for good.
- On launchpad tokens only: it’s the creator’s exactly-1% buy inside the launch transaction.
Fees can only go to the engine
Section titled “Fees can only go to the engine”Every config names the engine’s vault as its fee receiver, and the hook only accepts our own configs. The vault GkREjwsj3LF8KuMUbRpwG4KinogENsAioy7xEF6DRDQM is a program address with no private key. Its full list of instructions is on the engine page. None of them withdraws.
All addresses are on the addresses page.
