← Back to the app

Unlock Truth

Is the lock real? Token unlocks, verified on-chain

Everyone shows the promised unlock calendar — we check on-chain whether the "locked" tokens are actually in a vesting contract, or just a wallet the team can empty · How every number is computed →

Every unlock tracker shows you the same thing: the vesting calendar a project published. We show you what they don't — whether that lock actually exists on-chain. For each allocation we read the chain and ask one question: are the "locked" tokens sitting inside a vesting contract that mechanically blocks early transfer, or in a team wallet / multisig that can move them at any block? The first is enforced by code; the second is a promise the team can break — and we label it exactly that way.

3 tokens with real enforced locks · 7 with discretionary pockets · 0 pre-dump flags so far.

3
Tokens with real enforced locks
7
With discretionary pockets
0
Pre-dump flags (hard) so far
7
Tokens in forensic scope

Each token below carries a colour-coded verdict of its examined allocation: Enforced tokens held inside a code-enforced vesting contract · Discretionary held in an EOA / multisig / owner-controlled contract with no on-chain lock (movable at any block) · Unverifiable a custom contract whose enforcement we could not confirm on-chain. "Discretionary" describes the mechanics only — it never implies the team intends to sell.

Per-token forensic verdicts

The bar shows how the examined allocation splits between enforced, discretionary and unverifiable. "On-chain movable" = total supply − tokens provably inside enforced locks; it is a capacity figure (what could legally move today), never a prediction.

Ondo Finance

ONDO Ethereum Token 0xfaba…9be3 ↗
5.48B discretionary · 100%

5,479,207,574 ONDO sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code.

Total supply 10,000,000,000 ONDO On-chain movable 10,000,000,000 Next dated unlock none dated in on-chain scope
Show 3 allocation buckets — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Foundation Multisig 2 — the locked insider/ecosystem allocation 0x677F…A1A1 ↗ 5,479,207,574 Discretionary Gnosis Safe multisig high Gnosis Safe proxy: getThreshold()+getOwners() both respond (4-of-7 signers, code 171B)
Management Multisig 0xAEd4…8367 ↗ 0 (excluded) Discretionary Gnosis Safe multisig high Gnosis Safe proxy: getThreshold()+getOwners() both respond (4-of-7 signers, code 171B)
Deployer 0xe2d0…4bBe ↗ 0 (excluded) Discretionary EOA (externally-owned account) high eth_getCode = 0x (externally-owned account); nothing on-chain restricts transfer

Manta Network

MANTA Ethereum Token 0x95ce…44e5 ↗
38.9M enforced · 66%20.0M discretionary · 34%

38,899,020 MANTA sits in verifiable, schedule-enforced vesting contracts; 20,000,000 MANTA sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code.

Total supply 220,113,263 MANTA On-chain movable 181,214,243 Next dated unlock none dated in on-chain scope
Show 6 allocation buckets — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Investor vesting escrow 0x21De…3d25 ↗ 19,200,000 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2025-01-18 → 2028-01-18 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2025-01-18 duration=1095d end=2028-01-18 beneficiary=0x9228631d98814a604a3e318e9383de289616d85f
Investor vesting (monthly) 0x8907…5829 ↗ 5,464,286 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2024-12-18 → 2027-12-18 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2024-12-18 duration=1095d end=2027-12-18 beneficiary=0xfaf58420de97584c6b06f5fe375918f626cf26d7
Investor vesting escrow 0x122E…F13c ↗ 5,200,000 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2025-01-18 → 2028-01-18 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2025-01-18 duration=1095d end=2028-01-18 beneficiary=0x47fbbd7af79f53430923bf05220ab3416277b862
Investor vesting escrow 0x7eB7…D243 ↗ 4,847,712 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2025-01-18 → 2028-01-18 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2025-01-18 duration=1095d end=2028-01-18 beneficiary=0xfb2e1227a48c100073e476e92001239afd09598e
Investor vesting escrow 0x9b19…3Ff0 ↗ 4,187,022 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2025-01-18 → 2028-01-18 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2025-01-18 duration=1095d end=2028-01-18 beneficiary=0x8255a792b73f2052467b1cf77055bc4e60ff1038
Round-number EOA (20,000,000 exactly) 0xD7E5…9724 ↗ 20,000,000 Discretionary EOA (externally-owned account) high eth_getCode = 0x (externally-owned account); nothing on-chain restricts transfer

Optimism

OP Optimism Token 0x4200…0042 ↗
460.5M discretionary · 100%0 unverifiable · 0%

460,475,105 OP sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code; 0 OP is in custom contracts we could not confirm as enforced (unverifiable).

Total supply 4,294,963,292 OP On-chain movable 4,294,963,292 Next dated unlock none dated in on-chain scope
Show 2 allocation buckets — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Optimism Foundation (distribution/treasury multisig) 0x2501…B3F0 ↗ 460,475,105 Discretionary Gnosis Safe multisig high Gnosis Safe proxy: getThreshold()+getOwners() both respond (1-of-1 signers, code 171B)
Airdrop distributor 0xFeDF…57de ↗ 0 Unverifiable Custom contract (interface unrecognised) low Contract (code 7088B) matches NO known vesting/timelock/multisig/ownable interface — behaviour unconfirmed on-chain.

Worldcoin / World

WLD Ethereum Token 0x163f…8753 ↗
4.17B enforced · 84%781.9M discretionary · 16%

4,174,643,311 WLD sits in verifiable, schedule-enforced vesting contracts; 781,929,358 WLD sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code.

Total supply 10,000,000,000 WLD On-chain movable 5,825,356,689 Next dated unlock none dated in on-chain scope
Show 8 allocation buckets — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Community Tokens Unlock Contract #1 (2023 tranche) 0x1770…C296 ↗ 674,643,310 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2023-07-24 → 2026-07-24 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2023-07-24 duration=1096d end=2026-07-24 beneficiary=0x59a0f98345f54bab245a043488ece7fcecd7b596
Community Tokens Unlock Contract #2 (2026 tranche, post-rate-cut) 0xaEE0…0e57 ↗ 1,750,000,001 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2026-07-24 → 2029-07-24 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2026-07-24 duration=1096d end=2029-07-24 beneficiary=0x59a0f98345f54bab245a043488ece7fcecd7b596
Community Tokens Unlock Contract #3 (2029 tranche) 0x938c…77F7 ↗ 875,000,000 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2029-07-24 → 2032-07-24 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2029-07-24 duration=1096d end=2032-07-24 beneficiary=0x59a0f98345f54bab245a043488ece7fcecd7b596
Community Tokens Unlock Contract #4 (2032 final tranche to ~2038) 0x5B54…7D93 ↗ 875,000,000 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2032-07-24 → 2038-07-24 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2032-07-24 duration=2191d end=2038-07-24 beneficiary=0x59a0f98345f54bab245a043488ece7fcecd7b596
World Assets Ltd Cold Wallet (community-vesting beneficiary + OTC vehicle) 0x59a0…B596 ↗ 723,289,992 Discretionary Gnosis Safe multisig high Gnosis Safe proxy: getThreshold()+getOwners() both respond (1-of-1 signers, code 171B)
World Assets Ltd Hot Wallet (OTC settlement / operational) 0xc415…3565 ↗ 1,000,000 Discretionary Gnosis Safe multisig high Gnosis Safe proxy: getThreshold()+getOwners() both respond (2-of-8 signers, code 171B)
TFH Team/Investors 'Vesting/Unlock' wallet (labelled 'vesting' but is a plain EOA) 0x0D4C…CcE7 ↗ 22,663,258 Discretionary EOA (externally-owned account) high eth_getCode = 0x (externally-owned account); nothing on-chain restricts transfer
Three Arrows Capital (3AC) investor wallet 0xC7C9…3741 ↗ 34,976,108 Discretionary EOA (externally-owned account) high eth_getCode = 0x (externally-owned account); nothing on-chain restricts transfer

Arbitrum

ARB Arbitrum Token 0x912c…6548 ↗
139.4M enforced · 5%2.56B discretionary · 95%

139,449,101 ARB sits in verifiable, schedule-enforced vesting contracts; 2,556,141,992 ARB sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code.

Total supply 9,999,998,978 ARB On-chain movable 9,860,549,876 Next dated unlock none dated in on-chain scope
Show 2 allocation buckets — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Arbitrum DAO Treasury 0xF3FC…9B58 ↗ 2,556,141,992 Discretionary Owner-controlled contract (treasury / governance timelock / reserve) medium Contract (code 2593B) responds to owner() but to NO standard vesting/timelock selector — owner-controlled reserve/treasury/timelock, not a schedule-enforced lock.
Arbitrum Foundation Vesting Budget Wallet 0x1553…6844 ↗ 139,449,101 Contract-enforced Vesting contract (OpenZeppelin VestingWallet type) high 2023-04-17 → 2027-04-17 OpenZeppelin VestingWallet: start()+duration()+beneficiary() respond. start=2023-04-17 duration=1461d end=2027-04-17 beneficiary=0xd6c8a4e72584f24bd5517afed6c01d21477c17f6

Movement Network

MOVE Ethereum Token 0x3073…3073 ↗
15.4M discretionary · 100%

15,445,004 MOVE sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code.

Total supply 8,907,301,978 MOVE On-chain movable 8,907,301,978 Next dated unlock none dated in on-chain scope
Show 1 allocation bucket — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Movement Strategic Reserve (buyback destination) 0xA14C…cACe ↗ 15,445,004 Discretionary EOA (externally-owned account) high eth_getCode = 0x (externally-owned account); nothing on-chain restricts transfer

Ethena

ENA Ethereum Token 0x57e1…6061 ↗
1.04B discretionary · 100%

1,035,583,289 ENA sits in discretionary wallets (EOA/multisig/owner-controlled) with NO on-chain lock — the calendar there is a promise, not code.

Total supply 15,000,000,000 ENA On-chain movable 15,000,000,000 Next dated unlock none dated in on-chain scope
Show 1 allocation bucket — address · classification · evidence
BucketAddressOn-chain balanceClassificationContract kindConfidenceScheduleEvidence / caveat
Staked ENA (sENA) contract 0x8bE3…B3b9 ↗ 1,035,583,289 Discretionary Owner-controlled contract (treasury / governance timelock / reserve) medium Contract (code 2876B) responds to owner() but to NO standard vesting/timelock selector — owner-controlled reserve/treasury/timelock, not a schedule-enforced lock.

Out of scope — shown for honesty, not verified

Our engine reads Ethereum, Arbitrum, Optimism. These well-known unlocks live on chains we cannot read, so we make no forensic claim about them — verifying a promise we can't read would betray the whole point.

TokenNameWhy we don't verify it
WWormholesupply + vesting live on Solana (non-EVM) — not indexable by our engine
ZKzkSyncallocation/vesting on zkSync Era L2 (not in our indexed set); L1 token is dead
STRKStarknetvesting enforced in Cairo on Starknet L2 (non-EVM); L1 is bridge escrow only
SEISeiCosmos-based (non-EVM)

On a chain we do read, but with no publicly-labelled team/investor/vesting addresses to check — so there is nothing for us to classify:

TokenNameWhy it's opaque to us
BLURon Ethereum but no publicly-labeled team/investor/vesting addresses; ~95% already unlocked (mature)
ZROLayerZeroon Ethereum but Foundation/vesting addresses not officially disclosed
ETHFIether.fion Ethereum but team/investor vesting addresses not disclosed / Etherscan-gated

Methodology & honesty

How we classify. For each allocation address we run eth_getCode: an empty response means a plain wallet (EOA) — nothing on-chain restricts transfer. Where there is contract code, we probe function selectors to recognise the interface: start() + duration() + beneficiary() for an OpenZeppelin VestingWallet (schedule-enforced); getThreshold() + getOwners() for a Gnosis Safe multisig (discretionary — signers can move funds at any block); owner() with no vesting selector for an owner-controlled reserve/treasury/timelock (discretionary). A contract matching no known interface is reported Unverifiable — we refuse to award "enforced" without a chain-checkable basis. We bias toward not claiming enforcement: a false "discretionary" is safe, a false "enforced" is brand-lethal.

The guardrails, as recorded in the daily build:

A movement is described mechanically — "held in an EOA", "balance fell from X to Y", "no vesting contract found" — and never as intent: we do not publish "dumped", "rugged" or "scammed". · Absence of a flag is NOT a clean bill of health: our CEX/bridge label list is incomplete and drifts, our pre-dump scan uses a shallow recent-block window that deepens over time, and we only see the chains we index — tokens bridged elsewhere or moved on a CEX internal ledger are invisible. · Enforced today ≠ enforced tomorrow: an upgradeable or owner-mutable vesting contract can be changed, so a green verdict is a statement about the contract as it stands today.

Incomplete by nature — CEX/bridge addresses rotate; used only to LABEL a movement, never to assert intent. A transfer to one of these addresses is not proof of a sale; it can be custody migration, staking, collateral, or an internal move. Absence of a match here is NOT evidence tokens stayed put — it only means we did not recognize the counterparty from these public sources.

Full method and contract addresses on the methodology page.

Citation & sources

Free to use with attribution. Please cite:

EstateFi Unlock Truth — on-chain token-lock verification — estatefi.io — retrieved 2026-07-29

Source: EstateFi — estatefi.io. Every number is read from a public blockchain and recomputed daily; where the chain is silent we say "unverifiable", loudly. Last generated 2026-07-29.

See also: Price Index · Can you sell? · Is the rent paid? · Coverage & criteria · Methodology. Informational only — not investment advice.