Skip to content

EVM Contracts (V3)

Ekubo Protocol V3 is the open-source EVM deployment of Ekubo. The source code lives at EkuboProtocol/evm-contracts and is licensed under the Ekubo DAO Shared Revenue License. The authoritative deployment table and ABIs are published with each GitHub release — the tables below reflect release v3.2.0.

  • Core is an ownerless, permissionless singleton holding all pools and tokens, using flash accounting and the “till” pattern. All interactions start with lock(); Core calls back into your contract, which performs swaps and position updates and settles net balances at the end. Native ETH is supported directly as address(0) (so ETH is always token0).
  • Pool types — a pool’s configuration is packed into a single word (PoolConfig: extension, fee, and pool-type parameters):
    • Concentrated liquidity — tick-spacing-parameterized, as on Starknet
    • Stableswap — liquidity concentrated around a configurable center tick with an amplification factor
    • Full range — a zero-amplification stableswap pool; the cheapest option
  • Fees are a uint64 binary fraction of 2^64 (e.g. 0.3% = 55340232221128654). See Price representation for fee and price encodings.
  • Extensions customize pool behavior at eight lifecycle call points. On EVM, an extension’s call points are encoded in the top byte of its own address (extensions are deployed by mining an address with the right bits).
  • Periphery (Positions, Orders, Router, Incentives, …) is where protocol fees are applied — Core itself takes no fees. The canonical Positions deployment applies a 10% protocol fee to collected swap fees (for the Ekubo DAO) and no withdrawal fee.

For the design rationale, read the V3 whitepaper.

These contracts are deployed at the same address on every supported chain (Ethereum, Base, Arbitrum, MegaETH, Monad, Optimism, Ink, Robinhood Chain, Unichain, Polygon, and BNB Smart Chain). Anyone can deploy them to another compatible network with the DeployAll script. Note: chains must support EIP-7939 (CLZ) for the contracts to function.

Contract Address (every chain) Description
Core 0x00000000000014aA86C5d3c41765bb24e11bd701 The singleton AMM: all pools, positions, and token custody
MEVCapture 0x5555fF9Ff2757500BF4EE020DcfD0210CFfa41Be Extension charging extra fees on price-moving swaps, directing that value to LPs
Oracle 0x517E506700271AEa091b02f42756F5E174Af5230 Extension recording on-chain price history for token pairs (vs native ETH)
TWAMM 0xd47f1B1eDCfEaBb08F6eBd8FC337c27E636C75BA Time-weighted AMM extension powering DCA orders
BoostedFees (concentrated) 0xd4B54d0ca6979Da05F25895E6e269E678ba00f9e Extension streaming boosted fee rewards to concentrated-liquidity pools
BoostedFees (stableswap) 0x948b9C2C99718034954110cB61a6e08e107745f9 Same, for stableswap pools
ManualPoolBooster 0xddb1758118F65e13a91497015B8cB26801402761 Permissionless funding of boosted-fee campaigns for specific pools
Incentives 0xC52D2656cb8C634263E6A15469588beB9C3Bb738 Distributes liquidity incentive campaigns
TokenWrapperFactory 0xAA166592922C4020cEfA23448054AD070211790a Wraps non-standard tokens for safe use with Ekubo
MEVCaptureRouter (legacy) 0xd26f20001a72a18C002b00e6710000d68700ce00 Legacy v3.1.1 router for MEVCapture pools (superseded by the configurable Router)
Contract Address (every chain) Description
CoreDataFetcher 0xF68F25CA6C817733b7B15a42191AE72A34d56a2B Pool state, prices, positions, saved balances
QuoteDataFetcher 0x5a3F0F1dA4Ac0c4b937d5685f330704c8e8303f1 Batched data for computing swap quotes
TWAMMDataFetcher 0xDEFe25E56a7891CC4c0E1401879f3dC81F1Cc4A6 DCA order and TWAMM state
IncentivesDataFetcher 0x69F9eCfa84CF0C41bE9F68b557b07b6b89d71eD0 Incentive campaign state
PriceFetcher 0xFE0Aa09c1CC2bA299b3AaFA52716bE00f40F1D6d Oracle price reads for many tokens at once
TokenDataFetcher 0x305Cf9A34dCb265522780D1D64544d3f7C450407 Token metadata and balances
BoostedFeesDataFetcher 0x50DabB063ab0B62a33abf49f1357f0981cec241F Boosted-fees campaign state

Deployed on Ethereum, Base, Arbitrum, MegaETH, and Monad. The Positions deployment charges a 10% swap protocol fee for the Ekubo DAO (and no withdrawal fee).

Contract Address Description
Positions 0x02D9876A21AF7545f8632C3af76eC90b5ad4b66D ERC-721 manager for liquidity positions (v3.1.1 deployment — remains canonical)
Orders 0x3325428adB409c239E88ca472F50b0efe00E98B4 ERC-721 manager for DCA orders (v3.1.1 deployment)

Contracts added or reworked in v3.2.0 are configuration-specific and have no universal address — their addresses are per deployment:

  • Ve33, VeToken, Ve33Positions, Ve33Periphery, Ve33EmissionRateScheduler, and Ve33DataFetcher — the Ve33 token-governed liquidity system (each instance is deployed around its own stake token, e.g. STONX on Robinhood Chain)
  • SignedExclusiveSwap — extension for controller-signed EIP-712 swaps (integration guide)
  • Router — configurable router executing Core swaps and forwarding to MEVCapture / Ve33 pools
  • PoolKeyIndex — optional registry for discovering initialized pool keys by pool ID, token, or extension
  • Auctions — on-chain auctions (whitepaper)
  • MintableERC20 — owner-mintable token used by deployments that need one (e.g. a Ve33 stake token)

Audit reports for the EVM contracts are linked on the Audits page.