Skip to main content

Core contractsRegistry4626

Registry4626

The onchain index that maps each creator coin or agent token to its vault, wrapper, ShareOFT, and gauge, plus shared chain config.

Apps, keepers, and other protocol contracts call Registry4626 to find a creator's contract stack from one token address. Factories and the protocol owner write to it during deploy; everyone else only reads.

At a glance​

RoleLookup from a lane token (creator coin or agent token) to its contract stack, plus LayerZero and DEX config per chain
DeployedShared, one per chain
Standard(s)None (protocol index)
Key relationshipsCreatorOVault, CreatorOVaultWrapper, CreatorShareOFT, Gauge controller, LotteryManager

How it works​

Each registered token gets one record that points at its vault claim () vault, wrapper, ShareOFT (), and gauge. LotteryManager is shared per chain and reads this record; it is not deployed per vault.

The registry also stores chain config: LayerZero endpoints, chain ID to endpoint ID (EID) mappings, which chain is the hub, and DEX infrastructure.

Which registry to read​

As of 2026-09-17, the app resolves vaults through the live Registry4626 at 0x7779…4626. The immutable DeploymentBatcher.registry() still returns the greenfield Registry 0xB395…0B22. If this page and Addresses disagree, Addresses wins.

Multi-chain ShareOFT mesh​

The hub ShareOFT on Base is canonical. The registry records remote ShareOFT peers, both EVM addresses and Solana bytes32 peers, and Solana mesh metadata. At Phase 2 finalize, 25% of the ShareOFT supply bridges to Solana.

The creator coin stays on Base. Remote chains hold ShareOFT only, with no local vault redeem. See Solana share bridge.

Key functions​

Lookups​

FunctionWhat it returnsWho can call
getVaultForToken(token)Vault for a lane tokenAnyone
getWrapperForToken(token)Wrapper for a lane tokenAnyone
getShareOFTForToken(token)Hub ShareOFT for a lane tokenAnyone
getGaugeControllerForToken(token)Gauge for a lane tokenAnyone
getTokenForVault(vault) / getTokenForShareOFT(shareOFT)Reverse lookupsAnyone
isTokenRegistered(token) / isTokenActive(token)Registration and active statusAnyone
getAllTokens() / getTokensPaginated(offset, limit)Registered tokens (use the paginated form for large lists)Anyone
getRemoteOFTPeer(token, eid) / getRemoteOFTPeerBytes32(token, eid)Remote ShareOFT peer on an EVM chain or SolanaAnyone

Chain config​

FunctionWhat it returnsWho can call
getLayerZeroEndpoint(chainId)LayerZero endpoint for a chain ID (uint256)Anyone
getEidForChainId(chainId) / getChainIdForEid(eid)Chain ID and LayerZero EID mappingAnyone
isHubChain()Whether the current chain is the hubAnyone
getLotteryManager(chainId)Shared LotteryManager for a chainAnyone

Registration and writes​

FunctionWhat it doesWho can call
registerToken(token, name, symbol, creator, pool, poolFee)Creates the record for a lane tokenOwner, or an authorized factory with an approved codehash
setVault / setWrapperForToken / setShareOFTForTokenBinds stack contracts to a tokenOwner or authorized factory
setRemoteOFTPeer / setRemoteOFTPeerBytes32Records a remote ShareOFT peer (one-shot; a chain uses either the address form or the bytes32 form)Owner or authorized factory
setLotteryManager(chainId, manager)Sets the shared LotteryManager for a chainOwner

Events​

event TokenRegistered(
address indexed token,
string name,
string symbol,
address indexed creator,
address vault,
address shareOFT,
address wrapper
);

Gotchas​

  • Resolve live vaults through 0x7779…4626, not the greenfield 0xB395… that DeploymentBatcher.registry() returns.
  • getLayerZeroEndpoint takes a uint256 chain ID, not a LayerZero EID. Use getEidForChainId to convert.
  • Authorized factories are re-checked against their pinned codehash on every write, so a factory with changed code cannot write.
  • Remote peer writes are one-shot per token and chain. Changing a peer needs the owner (removeRemoteOFTPeer / removeRemoteOFTPeerBytes32) or live rebind enabled for that token.

Source​