06 — Docs
Contracts
Not yet deployed.
Contracts
Not yet deployed. When they are, the addresses go here and into deployments/mainnet.json.
| contract | address |
|---|---|
PairLaunchpad | — |
FeeVault | — |
QuoteRegistry | — |
CompositeQuoteGate | — |
EkuboQuoteGate | — |
PairToken class | — |
01What they talk to
| address | |
|---|---|
| Ekubo core — the launch venue | 0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b |
| Ekubo oracle extension (measurement only) | 0x005e470ff654d834983a46b8f29dfa99963d5044b993cb7b9c92243a69dab38f |
| Pragma oracle | 0x02a85bd616f912537c50a49a4076db02c00b29b2cdc8a197ce92ed1837fa875b |
| STRK (launch fee) | 0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d |
Every address above must be verified on a block explorer before a deployment points at it.
02The calls worth knowing
PairLaunchpad.launch(cfg) — the whole launch. Takes ticks, not prices; the SDK plans the
range. Needs an approval of the launch fee (and of the dev buy, if any) in the same multicall.
PairLaunchpad.predict_token(creator, salt) — where a launch will land. The token takes no
constructor arguments, so its address is a pure function of the salt and the class hash, and a
creator can mine a salt that puts the coin below the pair asset.
FeeVault.collect(token) — sweeps a coin's fees and pays everyone. Anyone may call it.
FeeVault.claim(token) — withdraws a payout the vault could not push.
FeeVault.set_fee_route(token, route) / set_fee_recipient(token, recipient) — the
creator's own settings.
QuoteRegistry.status(quote) — whether a coin may be paired against, and why not.
EkuboQuoteGate.watch(token) / poke(token) — put a coin forward for witnessing, and take
a reading. Both permissionless.
03Where the liquidity is
There is no lock contract and no locked LP token. The position is a slot in Ekubo's core keyed by
the vault's address, and the vault has no code path that reduces it. Read it with
core.get_position(pool_key, { salt: token, owner: vault, bounds }).