HOODLOCK / LEARN

Is liquidity locked on Doppler launches?

Published 2026-10-10 · HoodLock Team

Short answer: on Robinhood Chain, yes, and permanently, for almost every Doppler launch. The launch liquidity sits in Uniswap V4 positions owned by Doppler's pool initializer contract, and on the launches we checked there is no code path left that can take it out. Not the creator, not the launchpad, not Doppler. What Doppler does not lock is everything around the pool: a creator's vested allocation once it vests, tokens bought from the pool, fee income, and any liquidity someone adds later.

How we checked. Doppler's own repository lists a "Robinhood Mainnet (4663)" deployment. We read the source of the contracts involved, confirmed on Blockscout that the deployed contracts are verified under the same names, and read the chain directly: every Create and Migrate event the Airlock has emitted from its first launch on 1 July 2026 to 10 October 2026, plus the on-chain state of a random sample of 400 launches.

Doppler's documentation only walks through Base and Solana. Where Robinhood Chain behaves differently, the numbers below are from Robinhood Chain itself, not carried over from Base.

How a Doppler launch works on Robinhood Chain

Doppler is launch infrastructure rather than a single launchpad. Every launch, whichever front end it comes from (Bankr is one), goes through one contract, the Airlock (0xeb7C…0862), which is given four modules: a token factory, a governance factory, a pool initializer and a liquidity migrator. In one transaction the Airlock deploys the token, hands the tokens for sale to the initializer, which builds the pool, and registers the migrator for later.

Pool initializer on 4663Launches, 1 Jul to 10 Oct 2026
DopplerHookInitializer (Uniswap V4)200,813 of 202,477 (99.2%)
LockableUniswapV3Initializer (0xde88…29A3, 0xD09d…7683)1,658
UniswapV4Initializer (two deployments)6

So when someone asks whether "Doppler liquidity" is locked on Robinhood Chain, they are almost always asking about the DopplerHookInitializer.

The hook, and why beforeRemoveLiquidity isn't the lock

People who read a Doppler pool on an explorer often look for a beforeRemoveLiquidity hook that reverts for outsiders. There isn't one. In Uniswap V4 a hook's permissions are encoded in the last bits of its address, and the DopplerHookInitializer's address (ending a544) switches on beforeInitialize, afterAddLiquidity, afterRemoveLiquidity, afterSwap and afterSwapReturnDelta. beforeRemoveLiquidity is off, which matches the getHookPermissions() function in the source.

The lock comes from ownership instead. Uniswap V4 files every position under the address that created it, and only that address can shrink it. The initializer mints the launch positions itself, so it is the only account that can ever remove them, and its source has exactly one function that does: exitLiquidity. That function:

When a launch is created with fee beneficiaries, the initializer stores its status as Locked instead and emits a Lock event. Nothing in the contract moves a launch from Locked back to Initialized. The one other exit, graduate(), needs a Doppler hook with the graduation flag; the Rehype hooks we checked are enabled with the initialization and swap flags only (value 3), and every launch in our sample has its timelock set to 0x…dEaD or the zero address, so no account can attach a different hook. Even a graduation would set Graduated, which exitLiquidity also refuses.

Every one of the 400 DopplerHookInitializer launches we sampled (300 at random across the whole period plus the 100 most recent) returned status 2, Locked, from getState(token). In plain terms: the curve positions, and the ETH buyers have paid into them, stay in the pool for good. The positions can still earn fees, and collectFees pays those to the beneficiaries.

The Rehype hook adds a second layer. It reinvests part of the swap fees as a full-range position held by the hook contract. In the verified source of the Rehype deployments on Robinhood Chain, the hook's own code only ever adds to that position, so this liquidity only grows.

What happens at "migration"

On Base, Doppler launches are often described as moving liquidity to a new pool when the curve completes. On Robinhood Chain that step essentially does not happen:

That single case shows why the migrator matters. It used the UniswapV2MigratorSplit (0xB050…a333), whose source sends 95% of the new Uniswap V2 LP tokens to the launch's timelock address and only 5% to the UniswapV2Locker (0x63f6…42a5), with a minimum lock of 365 days. If a future launch is set up with that migrator, the lock picture is very different, so check which migrator a token uses rather than assuming.

The Lockable V3 launches follow the same pattern as the hook launches: in a sample of 80, 78 were Locked with the NoOpMigrator, and 2 were Initialized with the V2 split migrator.

What Doppler does not lock

Bankr is a Doppler launchpad

Bankr's own support documentation says its launches use Doppler and deploy to Robinhood Chain by default, and the chain agrees. Bankr tokens are created by the Airlock above, with the DopplerHookInitializer and the NoOpMigrator, and their metadata names Bankr as the launch provider. One example is 0x4346…Fba3: getState returns Locked, 15% of supply is vested to the creator with a 30-day cliff over one year, and the pool's fee beneficiaries are the creator at 95% and Doppler's protocol owner at 5%, the minimum share the contract requires.

The vesting length has changed. Bankr launches from early July 2026 vest over two years; later ones vest over one year, which is what Bankr's documentation now describes, and Bankr lets a creator switch vesting off entirely. Read the token's own schedule rather than relying on the default. Our guide to vesting alongside a Bankr launch covers what that schedule leaves out.

How to check a specific Doppler token

  1. Open the token on Blockscout. A Doppler token shows up as a minimal proxy of DopplerERC20V1, so read it through the proxy view, which uses the verified DopplerERC20V1 code. owner() should return the Airlock, 0xeb7C…0862.
  2. Open the Airlock and read getAssetData(token). Note the poolInitializer and liquidityMigrator. The DopplerHookInitializer plus the NoOpMigrator is the combination described above.
  3. Open the DopplerHookInitializer and read getState(token). A status of 2 means Locked. getBeneficiaries(token) lists who receives the pool's fees.
  4. Back on the token, read vestedTotalAmount(), then vestingSchedules(0) for the cliff and duration in seconds (2,592,000 is 30 days; 31,536,000 is one year). vestingOf(address, 0) shows what a beneficiary has been allocated and released.
  5. Finally, check the holder list. The token contract holding a balance of its own token is the unvested allocation. Large wallets beyond that are what holder distribution is about.

HoodLock's liquidity lock checker and token lock checker show what is locked on HoodLock for a token. A Doppler pool's launch liquidity is held by Doppler's contracts, not by HoodLock, so it won't appear there; anything a creator has locked or vested with HoodLock will.

Locking or vesting your allocation with HoodLock

If you launched through Doppler, the pool question is settled. The open questions are the balances Doppler leaves liquid, and those are what holders look at next.

Pricing is listed on the fees page. Every lock and schedule gets a proof page that reads from the chain and opens without a wallet.

Common questions

Is liquidity locked on Doppler launches on Robinhood Chain?

For almost every launch, yes, and with no end date. Over 99% of Doppler launches on Robinhood Chain use the DopplerHookInitializer, which holds the launch liquidity as Uniswap V4 positions in its own name. Every launch we sampled was marked Locked and paired with the NoOpMigrator, so the only function that removes those positions can never run.

Does the Doppler hook use beforeRemoveLiquidity to block withdrawals?

No. The DopplerHookInitializer leaves beforeRemoveLiquidity switched off, and its address encodes that. The lock comes from ownership: Uniswap V4 keys every position to the contract that created it, so only the initializer can remove its positions, and its one removal path requires a status a locked launch never reaches.

Do Doppler launches migrate liquidity after the bonding curve?

Not on Robinhood Chain in practice. The Airlock has emitted exactly one Migrate event there, for a test token. Launches set up with the NoOpMigrator cannot migrate at all, because its migrate function always reverts, so liquidity stays in the original pool.

Are creator tokens locked on a Doppler launch?

Only if the launch reserved a vested allocation, and only until it vests. DopplerERC20V1 can vest up to 80% of supply, and a schedule may even vest instantly. Released tokens, tokens bought from the pool and fee income are ordinary balances that can be sold at any time.

Does Bankr use Doppler on Robinhood Chain?

Yes. Bankr launches on Robinhood Chain are created through Doppler's Airlock with the DopplerHookInitializer, and their metadata names Bankr as the launch provider. Recent ones vest 15% of supply to the creator over one year behind a 30-day cliff; the earliest, in July 2026, used two years.

Can I lock or vest Doppler tokens with HoodLock?

Yes. A Doppler token is a standard ERC-20 on Robinhood Chain, so tokens you hold can be locked until a date or vested to a beneficiary on HoodLock, with a public proof page for each.

Keep reading

Lock it, share the proof

Lock or vest the tokens Doppler leaves liquid, with a proof link anyone can open without a wallet.

Lock tokens →

HoodLock is not affiliated with Doppler, Whetstone Research, Bankr or Robinhood Markets, Inc. Contract behaviour described here comes from Doppler's published source and from reading Robinhood Chain on 10 October 2026. Contracts and launch settings change over time. Verify a specific token on-chain, and see docs.doppler.lol, before relying on this.