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
| Role | Lookup from a lane token (creator coin or agent token) to its contract stack, plus LayerZero and DEX config per chain |
| Deployed | Shared, one per chain |
| Standard(s) | None (protocol index) |
| Key relationships | CreatorOVault, 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
| Function | What it returns | Who can call |
|---|---|---|
getVaultForToken(token) | Vault for a lane token | Anyone |
getWrapperForToken(token) | Wrapper for a lane token | Anyone |
getShareOFTForToken(token) | Hub ShareOFT for a lane token | Anyone |
getGaugeControllerForToken(token) | Gauge for a lane token | Anyone |
getTokenForVault(vault) / getTokenForShareOFT(shareOFT) | Reverse lookups | Anyone |
isTokenRegistered(token) / isTokenActive(token) | Registration and active status | Anyone |
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 Solana | Anyone |
Chain config
| Function | What it returns | Who can call |
|---|---|---|
getLayerZeroEndpoint(chainId) | LayerZero endpoint for a chain ID (uint256) | Anyone |
getEidForChainId(chainId) / getChainIdForEid(eid) | Chain ID and LayerZero EID mapping | Anyone |
isHubChain() | Whether the current chain is the hub | Anyone |
getLotteryManager(chainId) | Shared LotteryManager for a chain | Anyone |
Registration and writes
| Function | What it does | Who can call |
|---|---|---|
registerToken(token, name, symbol, creator, pool, poolFee) | Creates the record for a lane token | Owner, or an authorized factory with an approved codehash |
setVault / setWrapperForToken / setShareOFTForToken | Binds stack contracts to a token | Owner or authorized factory |
setRemoteOFTPeer / setRemoteOFTPeerBytes32 | Records 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 chain | Owner |
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 greenfield0xB395…thatDeploymentBatcher.registry()returns. getLayerZeroEndpointtakes auint256chain ID, not a LayerZero EID. UsegetEidForChainIdto 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.