Skip to content
eyes docs07 / 10

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.

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.

Check the upgrade authority
solana program show eyesEswWscHeKNT9HKWyohA5htBhmgLsJBEuswZiinJ # EYES hook
solana program show eyesfsib92v2NPspfCabd9oMdqUtx8ezW61YomXkgZ2 # launchpad hook
solana program show eyesbEx9mLpRKL61QD3X2mi4Z9cMdpSjNQJatsdbZw6 # the engine
# each one prints: Authority: none

Meteora’s own programs (the curve and DAMM v2) are upgradeable by Meteora. That’s the one dependency we can’t remove, see disclosures.

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.

Check the deployed bytes
solana program dump eyesfsib92v2NPspfCabd9oMdqUtx8ezW61YomXkgZ2 hook-v2.so
head -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 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.

Check a mint
spl-token display ZrueWB1YvjruJpTGiJSYYfyuL71FZeeSUwJY1ZPeyes
# Mint authority: (not set) Freeze authority: (not set)
# Transfer hook program id: eyesEswWscHeKNT9HKWyohA5htBhmgLsJBEuswZiinJ

The same check in code, for apps and bots that want to recognise our launches:

isEyesLaunch.ts
import { Connection, PublicKey } from '@solana/web3.js';
const EYES_HOOKS = ['eyesfsib92v2NPspfCabd9oMdqUtx8ezW61YomXkgZ2', 'eyesEswWscHeKNT9HKWyohA5htBhmgLsJBEuswZiinJ'];
// hook = the program id in the mint's TransferHook extension
export 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);
}

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:

  1. Fomo’s verification key AgmLJBMDCqWynYnQiPCuj9ewsNNsBJXyzoUhD9LJzN51 signed the transaction.
  2. The tokens go to the engine’s vault, where EYES is burned and anything else stays for good.
  3. On launchpad tokens only: it’s the creator’s exactly-1% buy inside the launch transaction.

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.