Verify

Do not trust the page. Check it.

Every number on this site is an eth_call from your browser to a public node. No operator can move a lock, pause it or take a fee. The v4 vault adds one deliberate power: a 2-of-3 multisig can replace the implementation after a 48-hour delay. v1, v2 and v3 are immutable. This page gives you the addresses, the bytecode checks and the raw calls to confirm all of it without going through us. Verification is not an audit — we claim no audit, and a matching bytecode does not mean the code is free of every failure mode.

Want a guided read first? Run an agent report → It still shows the block, the addresses and the checks it made.

Security & audit status. No third-party audit has been completed; no bug bounty is live. The test coverage (99.8% lines on the product contracts) and the invariant list are on the Security page; the reporting route and scope are on the bug bounty page.

Contracts — one address on every chain

ContractAddress (same on all four chains)
Oaken Lock adapter · v10x16e02A106fE6E978fB98F76756B3a06b4995a7A6legacy vault entry
Vault · v10xe410d0a21C1376992874a9bEEeE0d623A50D4a34locks created before 2026-10-23
Position lock0xfC9A43c90e0E0d548D95cEf3C77fce802806CbA9
MultiSender0x1f380ef5eFF9113314Ee175dCE4F226DFd75A50C
Token factory0xc0A3AD1428EeB70cAF88bb89c3B17D0191E1Bd34
Airdrop0x17E9910cDC37BdA5531414012aeA5b0862C22066
Presale factory0xAC070cf2ed45aEcb9f5299d4C670fFfCE6387724
Launcher · v10x1d7561fC331594820382E8dd64582645EbafD873legacy launches
Oaken Lock adapter · v4 (proxy)0xA2898528eb4Aea0bDAf47202A5BA3bA4f58F831cnew locks · upgradeable
Vault · v4 (proxy)0x5221A10B772D5e2d51B60E8e3dd5DA9338b04ab0new locks · upgradeable
Launcher · v40x9600f22d2f629904B44c7dA2d958f5AfB3a1e5Ffnew launches
Multisig · v4 admin (2-of-3)0xCb847B572352156be50c90FBc752cfd032114666upgrade key
Delayed proxy admin · v40xDB998916A34b87c7DA337d922bC1219970FA031948h delay
Vault implementation · v40xEead023bEcE7D6A458c1da1F8c22E84be885171eimplementation, not the proxy
Adapter implementation · v40x33cA492931828B5a8E222fB731BBa1Ab5124cCaAimplementation, not the proxy
Oaken Lock adapter · v30x6022DA059FAa0673E3058ADECEef375c2Abfb4A12026-10-24
Vault · v30xd4064d8E73AAB53D7d9efd8A6E8DBE2003d1de4B2026-10-24
Launcher · v30x4488C369116D0C6FEA84162313c3840976D5A9a52026-10-24
Oaken Lock adapter · v20xDBE1f3dc1d6E6759355E1B164231748f0589cb412026-10-23 to 2026-10-24
Vault · v20xbC511F31967D9EBF775d203661a2BEfF6AA426152026-10-23 to 2026-10-24
Launcher · v20x0d7cCEA7BabC5e3b4849267740D8fBBe6C4FDa582026-10-23 to 2026-10-24
Chains: Robinhood Chain (4663), BNB Chain (56), Base (8453), Polygon (137). The deterministic salt derives the address from the bytecode, so the same address is the same contract on each chain — not a copy with different rules. v1, v2, v3 and v4 are all live. v1 holds locks created before 2026-10-23; v2 holds 2026-10-23 to 2026-10-24 (reentrancy guard + ETH refund); v3 holds 2026-10-24 (v2 plus the revoke clamp). v4 is what new locks and launches use, and it is upgradeable: the vault and adapter are ERC1967 proxies, and a 2-of-3 multisig can schedule a new implementation after a 48-hour delay. v1, v2 and v3 are immutable. The safeguards and the upgrade model are described in the self-review. Old record URLs stay on v1; newer ones carry ?vault=v2, ?vault=v3 or ?vault=v4.

OAKEN Curve · v5 (2026-10-25)

The self-launch curve. These are separate deployments per chain — unlike the lock contracts above, they do not share one address. New and not audited. All of them are Sourcify exact matches, so the bytecode at each address can be checked against the source; the known limitations are written down in the repository's contracts/CURVE-SCOPE.md.

ChainContractAddress
Robinhood Chain (4663)Curve factory · Pons model0x8D59368a7C369bEf20458442027bE0D9aD6C4F5f
Robinhood Chain (4663)V4 graduator · hook 0x28000x62E707d5cfe2cD9f029af2A93B2ADfB66976e800
Robinhood Chain (4663)CREATE2 deployer used for the graduator0xd1617035248f459E05379cDDc993313c96e5E7bf
BNB Chain (56)Curve factory · Flap model0x4983CA331Af98197527F5679721635F7e399f170
BNB Chain (56)Token deployer (standard + tax)0x7d2947174067739168F26FeA994aBB5aB2A2698e
BNB Chain (56)Pancake V2 graduator · tax tokens0x7A9eb5427ef8284e37EC13B46b007FEb0ba5125A
BNB Chain (56)Pancake V3 graduator · standard tokens0x5c43895F3a2b40a69Bbaa2DFD85B2e7FA723805B
Each launch deploys its own token and curve; the factory, graduator and token deployer above are the fixed trust surface. Sourcify: 4663 factory · 4663 graduator · 56 factory · 56 V2 graduator · 56 V3 graduator. The factory's launch fee is 0; the curve fee is 1% (protocol share 0 on 4663, 600 bps of the fee on 56).

Chains we have not deployed to

These are in our chain registry so the indexer and the deployment tooling can be pointed at them, but there is no OAKEN contract on them today. They are deliberately absent from the site's chain selector: a selector entry with no code behind it invites a transaction that succeeds at the wallet and reverts on chain. Do not send funds to the deterministic address on these chains until this table and the live chain list say otherwise.

ChainChain idStatus
Ethereum1configured — not deployed
OP Mainnet10configured — not deployed
Arbitrum One42161configured — not deployed
Avalanche C-Chain43114configured — not deployed
Deploying there is a decision, not a promise. The addresses are deterministic, so a deployment would land at the same address — but until it is announced and visible in the live chain list, treat those chains as having no OAKEN contracts at all.

Solana — what is live, and what is not

ThingProgram / addressStatus
OAKEN Factory (own launch)SPL Token + Metaplex Token Metadata live — no custom program
pump.fun launch6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P third-party, live
OAKEN Lock (our program)Co9ZnAVxX2siGThhjTpPgXPHYrCev1nrXFyGB1VcZcQW deployed — upgrade authority none
Jupiter Lock (third-party option)LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn third-party, live; upgradeable by Jupiter
OAKEN Lock is deployed. ProgramData 34ZjBrqr37VxPHPx2VFGDgmuCKjPRayi44QjT93qhTgn, upgrade authority none (revoked on-chain), deployed bytecode sha256 8de3b7cb… matches the build. It passed a 25-check E2E on a local validator, and the same five instructions ran on mainnet (5 test locks; re-read from chain).
Own launch: the site generates a mint, mints the supply, writes Metaplex metadata, then revokes the mint authority in a second transaction. There is no OAKEN program in that path — only the SPL Token and Metaplex programs, both live on Solana. Verify by reading the mint: its mint authority must be None (the first 4 bytes of the mint account are zero).
Live test evidence (2026-10-20, mainnet): pump.fun launch BbV7QT1u…qXmY, buy 2JAAvbQ8…, 1-hour Jupiter escrow ymNVpHAm…; OAKEN Factory mint 5MqDmgSs…. Every field was read back from the chain.

Verification status

Contract4663568453137Source
All contracts above (v1, v2, v3 and v4)exactexactexactexact Sourcify · Blockscout
What "exact" means: the published source compiles to the bytecode at that address, byte for byte. It does not mean "audited". The lock contracts are also published on Blockscout for the three lock addresses. The Bonds contracts are separate deployments; their addresses, Safe and Timelock are listed on the Bonds page.
THREE WAYS TO CHECK A LOCK

None of them go through us.

01

Open its record page

Every number there is read live from the chain, and its Verify this page panel re-reads the vault and compares every field. If the page and a block explorer disagree, believe the explorer. The record page also links the transaction that created the lock.

02

Call the vault directly

Paste the vault address into Blockscout or BscScan, open getLock(id) and read it. It returns the same amount, dates, steps and beneficiary the page shows. No ABI encoding needed on an explorer.

03

Use your own node

Point your node at the chain and make the call yourself. The schedule is in the contract; this website is a reader, not a dependency for a release.

Walk through one real lock (id 16)

open #16 ↗
  1. 1 · Open the record page. Lock #16 on Robinhood Chain — every figure there was read with eth_call in your browser, not from a database.
  2. 2 · Press “Read on chain” in “Verify this page”. The page calls vault.getLock(16) and compares the result field by field with what it rendered. If anything differs it says so; the contract wins.
  3. 3 · Do the same without us. Open the vault on Blockscout, choose Read contract, call getLock(16), and compare the same fields. The Code tab also shows the runtime bytecode — the record page prints its keccak256, so you can check Sourcify's Exact Match against it.
If the explorer and this site disagree, the explorer is right. Send us the id and the two values — that is a bug we want to hear about.

Copy-paste eth_call recipes

These are raw JSON-RPC calls. The data is a 4-byte selector followed by ABI-encoded arguments. Replace the lock id (the final 64 hex digits) with the one you care about.

Vault · getLock(uint256) · selector 0xd68f4dd1 — this example reads lock #33 (0x21):

curl -s https://rpc.mainnet.chain.robinhood.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0xe410d0a21C1376992874a9bEEeE0d623A50D4a34","data":"0xd68f4dd10000000000000000000000000000000000000000000000000000000000000021"},"latest"]}'

Decode the returned words with any ABI decoder (ethers, viem, cast) or compare them with the record page. The first words are the token, start time, unlock times, steps, amount and claimed amount.

Vault · nextLockId() · selector 0x6518a0b3 — the next id, so the latest lock is one less:

curl -s https://rpc.mainnet.chain.robinhood.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0xe410d0a21C1376992874a9bEEeE0d623A50D4a34","data":"0x6518a0b3"},"latest"]}'

Bond oracle · latestRoundData() · selector 0xfeaf968c:

curl -s https://rpc.mainnet.chain.robinhood.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x9BC910D817b96174704C340fF791E7eC53b82596","data":"0xfeaf968c"},"latest"]}'

On an explorer, use the Read contract tab instead of raw JSON-RPC — it decodes the result for you. The selectors above are the same calls.

THE TRUST BOUNDARY

The lock boundary is "no operator". Bonds have an admin.

Locks & tools

  • No operator over a lock. The schedule is fixed once the lock lands. The v4 vault has a 2-of-3 upgrade key with a 48h delay; v1–v3 are immutable.
  • No protocol fee. You pay gas only.
  • Anyone can pay gas to release a due lock; the vault pays only the beneficiary.

Bonds (aOAKEN)

  • Admin = 2-of-3 Safe + 48h Timelock. Parameters can change; that is a governance surface, disclosed on every Bonds page.
  • Reserves are not the admin's to move. Mint/redeem are paid from USDG reserves; redemption can be limited by them.
  • No external yield. OAKEN emissions are emissions, not a market yield; there is no aOAKEN market here.

See the live state on Bonds →

Read the code, not the badge. All contracts are short and public. We claim no audit. Known limitations FAQ See the locks