Zora lets Creator Coin and Content Coin owners migrate to approved hooks
Zora liquidity migration moves an existing coin's initial market positions to a replacement hook. The feature covers Creator Coins and Content Coins, and only coin owners can initiate it. A hook is a smart contract handling pool operations such as fees and reward distribution. Migration burns the initial positions in the old hook and remints them in the destination hook. The destination must follow a registered upgrade path approved by the Zora team.
A replacement hook can change a coin's fee terms even when migration preserves its initial market liquidity positions.
Who can authorize a liquidity migration?
Only coin owners can initiate migration for Creator Coins and Content Coins, and the destination must belong to an approved, registered upgrade path. Ownership here means a management permission on the coin contract. Holding its tradable tokens doesn't automatically give a holder that permission. An approval for one upgrade path doesn't make every other hook an eligible destination.
Initial market positions move without replacing the coin
The positions the migration carries forward
Initial market liquidity means the positions created at coin initialization. Their price ranges determine where liquidity participates in trading. The migration system burns these positions in the old hook and remints them through the replacement hook, preserving the original positions. This carries the existing market's initial liquidity into the replacement configuration without requiring another coin launch.
The contract code stays immutable
Both the coin contract and hook contract remain immutable: their deployed code doesn't change. A separate hook supplies revised logic, and migration moves the coin's initial positions to a pool using that hook. An existing coin can therefore gain different pool behavior without a fresh deployment of the coin itself.
One hook implementation supports different coin configurations
Version 2.3.0 consolidated the separate
ContentCoinHook
and
CreatorCoinHook
implementations into
ZoraV4CoinHook
. The unified implementation selects behavior from the coin's configuration. A hook runs callbacks, meaning functions the pool system calls during operations such as initialization and swaps. Here,
beforeSwap
calculates dynamic fees, while
afterSwap
collects fees, converts reward currency, and distributes rewards. Both the hook version and the coin's configuration matter when interpreting the destination's behavior. The unified Coins hook runs on Base, with chain ID 8453.
Fee changes follow the destination version
For Creator Coins and Content Coins, migration to a hook at version 2.2.0 or later adopts its unified base fee structure.
The change from 3% to 1%
Version 2.2.0 changed the total pool trading fee from 3% to 1% for Creator Coins and Content Coins. Earlier deployments keep their original fee structure unless an owner migrates liquidity to a qualifying hook. The newer split allocates 50% of total fees to the creator, compared with 33.33% under the pre-v2.2.0 structure. A larger share of a smaller fee doesn't, by itself, establish higher creator income.
The launch-fee window has separate rules
On hooks implementing the launch-fee rule, qualifying new coins face a fee starting at 99% and declining linearly to the base fee over 10 seconds. It applies to buys and sells. An initial supply purchase during deployment bypasses that fee and uses 1%. Under this rule, coins created before v2.5.0 without the
IHasCreationInfo
interface also receive the normal 1% fee. The launch window runs from coin creation.
An older Content Coin can retain its positions while fees change
A hypothetical Content Coin migration can preserve its initial market positions while changing the base trading fee from 3% to 1%. Assume the coin runs on Base and uses a pre-v2.2.0 hook charging 3%. Its owner has a registered upgrade path approved by the Zora team to a hook at v2.2.0 or later. The coin is outside any applicable launch-fee window.
The owner initiates migration, which burns and remints the initial positions through the replacement hook. The existing coin keeps its identity, and the destination's 1% base fee structure takes effect. Leaving liquidity on the original hook retains this coin's original fee structure.
A successful migration records the old and new pools
A successful migration emits a
LiquidityMigrated
event from the coin contract.
The event includes
oldPoolKey
,
oldPoolKeyHash
,
newPoolKey
, and
newPoolKeyHash
.
PoolKey carries the hook relationship
A
PoolKey
identifies a
Uniswap v4 pool
through its currencies, fee field, tick spacing, and hook address. The hook address therefore belongs to the pool's identity. The migration event links the old and new keys, making the change explicit without relying on a coin's display name.
Submission and completion mean different things
The event describes a completed migration. A transaction hash identifies a transaction; its existence alone doesn't establish successful execution. Pool keys in a successful migration event tie the change to the specific market. That distinction matters when software tracks multiple coins or several generations of hook logic.
Fee reminting grows liquidity between migrations
Under the v2.2.0 unified fee structure, 20% of collected Creator Coin and Content Coin trading fees fund new permanent liquidity positions. This reminting happens during ordinary swaps. The mechanism places single-sided positions outside the current trading range and retains them as pool liquidity. It doesn't pay that portion directly to liquidity providers. These reminted positions don't earn future fees. The remaining 80% forms market rewards for designated recipients.
Migration carries existing initial positions into another hook; fee reminting adds positions funded by trading activity.
Keeping the existing hook preserves its existing rules
An owner can leave an earlier coin on its original fee structure rather than move liquidity to a newer hook. The coin then keeps that fee structure and forgoes the destination's changes. Fee handling, liquidity treatment, and reward distribution define the practical difference between the configurations. A version number alone doesn't explain those terms, and an approved route limits which replacement logic an owner can select. Deploying another coin creates a separate token and market. Migration keeps the existing coin and carries its initial market positions into approved replacement logic.
Questions worth asking
Does a hook migration bridge a coin to another blockchain?
Hook migration moves an existing coin's initial market positions to a pool with a replacement hook on the same network. It's a different operation from bridging assets between blockchains. The unified Coins hook runs on Base, with chain ID 8453. Replacing pool logic doesn't itself transfer a token balance to another chain.
Can a metadata update replace a liquidity migration?
A metadata update changes the coin's metadata URI, while liquidity migration moves its initial positions to a pool with a replacement hook. Coin owners can update metadata and the payout recipient through separate management functions. Those property updates don't move the initial market positions into a replacement hook, even though both actions require appropriate ownership permissions.
Is a payout recipient automatically allowed to migrate liquidity?
Receiving creator rewards doesn't itself grant permission to migrate a coin. The payout recipient receives creator trading rewards, while coin ownership supplies management authority. One address can hold both roles. An address serving only as the payout recipient still needs coin-owner authority to initiate a liquidity migration.
How do V3 and V4 pool records differ when tracking migrations?
Legacy V3 creation records use the CoinCreated event and include a pool address. V4 creation records instead carry a PoolKey and poolKeyHash. An indexer handling migration history needs to preserve those different record formats. A legacy creation event alone doesn't establish an approved route to a particular V4 hook.
Does sharing a hook merge different coins into one pool?
Coins can share a hook implementation while retaining distinct pools. Each coin has a primary Uniswap v4 pool paired with its backing currency. Sharing hook code therefore doesn't merge the markets or their liquidity. The old and new pool keys in a migration event describe the affected coin's market.
Will an SDK API key grant permission to migrate liquidity?
An SDK API key doesn't make an account a coin owner. API keys support SDK and API access, while the coin contract controls migration authorization. The account initiating an owner-restricted operation must satisfy the ownership rule. API access doesn't bypass the requirement for an approved, registered upgrade path.
Are legacy NFT contracts covered by this hook-migration mechanism?
This owner-initiated migration mechanism covers Creator Coins and Content Coins in the Coins protocol. Legacy NFT contracts belong to a separate protocol family. A Coins hook migration preserves an existing coin and its initial market positions; it doesn't convert a legacy NFT contract into a Creator Coin or Content Coin.
Updated on