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.
Contracts — one address on every chain
| Contract | Address (same on all four chains) | |
|---|---|---|
| Oaken Lock adapter · v1 | 0x16e02A106fE6E978fB98F76756B3a06b4995a7A6 | legacy vault entry |
| Vault · v1 | 0xe410d0a21C1376992874a9bEEeE0d623A50D4a34 | locks created before 2026-10-23 |
| Position lock | 0xfC9A43c90e0E0d548D95cEf3C77fce802806CbA9 | |
| MultiSender | 0x1f380ef5eFF9113314Ee175dCE4F226DFd75A50C | |
| Token factory | 0xc0A3AD1428EeB70cAF88bb89c3B17D0191E1Bd34 | |
| Airdrop | 0x17E9910cDC37BdA5531414012aeA5b0862C22066 | |
| Presale factory | 0xAC070cf2ed45aEcb9f5299d4C670fFfCE6387724 | |
| Launcher · v1 | 0x1d7561fC331594820382E8dd64582645EbafD873 | legacy launches |
| Oaken Lock adapter · v4 (proxy) | 0xA2898528eb4Aea0bDAf47202A5BA3bA4f58F831c | new locks · upgradeable |
| Vault · v4 (proxy) | 0x5221A10B772D5e2d51B60E8e3dd5DA9338b04ab0 | new locks · upgradeable |
| Launcher · v4 | 0x9600f22d2f629904B44c7dA2d958f5AfB3a1e5Ff | new launches |
| Multisig · v4 admin (2-of-3) | 0xCb847B572352156be50c90FBc752cfd032114666 | upgrade key |
| Delayed proxy admin · v4 | 0xDB998916A34b87c7DA337d922bC1219970FA0319 | 48h delay |
| Vault implementation · v4 | 0xEead023bEcE7D6A458c1da1F8c22E84be885171e | implementation, not the proxy |
| Adapter implementation · v4 | 0x33cA492931828B5a8E222fB731BBa1Ab5124cCaA | implementation, not the proxy |
| Oaken Lock adapter · v3 | 0x6022DA059FAa0673E3058ADECEef375c2Abfb4A1 | 2026-10-24 |
| Vault · v3 | 0xd4064d8E73AAB53D7d9efd8A6E8DBE2003d1de4B | 2026-10-24 |
| Launcher · v3 | 0x4488C369116D0C6FEA84162313c3840976D5A9a5 | 2026-10-24 |
| Oaken Lock adapter · v2 | 0xDBE1f3dc1d6E6759355E1B164231748f0589cb41 | 2026-10-23 to 2026-10-24 |
| Vault · v2 | 0xbC511F31967D9EBF775d203661a2BEfF6AA42615 | 2026-10-23 to 2026-10-24 |
| Launcher · v2 | 0x0d7cCEA7BabC5e3b4849267740D8fBBe6C4FDa58 | 2026-10-23 to 2026-10-24 |
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.
| Chain | Contract | Address |
|---|---|---|
| Robinhood Chain (4663) | Curve factory · Pons model | 0x8D59368a7C369bEf20458442027bE0D9aD6C4F5f |
| Robinhood Chain (4663) | V4 graduator · hook 0x2800 | 0x62E707d5cfe2cD9f029af2A93B2ADfB66976e800 |
| Robinhood Chain (4663) | CREATE2 deployer used for the graduator | 0xd1617035248f459E05379cDDc993313c96e5E7bf |
| BNB Chain (56) | Curve factory · Flap model | 0x4983CA331Af98197527F5679721635F7e399f170 |
| BNB Chain (56) | Token deployer (standard + tax) | 0x7d2947174067739168F26FeA994aBB5aB2A2698e |
| BNB Chain (56) | Pancake V2 graduator · tax tokens | 0x7A9eb5427ef8284e37EC13B46b007FEb0ba5125A |
| BNB Chain (56) | Pancake V3 graduator · standard tokens | 0x5c43895F3a2b40a69Bbaa2DFD85B2e7FA723805B |
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.
| Chain | Chain id | Status |
|---|---|---|
| Ethereum | 1 | configured — not deployed |
| OP Mainnet | 10 | configured — not deployed |
| Arbitrum One | 42161 | configured — not deployed |
| Avalanche C-Chain | 43114 | configured — not deployed |
Solana — what is live, and what is not
| Thing | Program / address | Status |
|---|---|---|
| OAKEN Factory (own launch) | SPL Token + Metaplex Token Metadata | live — no custom program |
| pump.fun launch | 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P | third-party, live |
| OAKEN Lock (our program) | Co9ZnAVxX2siGThhjTpPgXPHYrCev1nrXFyGB1VcZcQW | deployed — upgrade authority none |
| Jupiter Lock (third-party option) | LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn | third-party, live; upgradeable by Jupiter |
Verification status
| Contract | 4663 | 56 | 8453 | 137 | Source |
|---|---|---|---|---|---|
| All contracts above (v1, v2, v3 and v4) | exact | exact | exact | exact | Sourcify · Blockscout |
None of them go through us.
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.
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.
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 · 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 · 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 · 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.
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 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.