Documentation

Overview

What Armory deploys on ApeChain, how the four systems fit together, and where to start if you want to build on them.

On this page

Armory is a DEX on ApeChain. It runs two AMMs, an aggregator that routes across every venue on the chain, a set of lockers, and a CCIP bridge into the chain from Base, Ethereum, Robinhood, Arbitrum, BNB Chain and HyperEVM.

All of it is deployed, all of it is callable by anyone, and none of it is permissioned at the point of use. These pages document the contracts so you can build against them directly rather than through our interface.

The four systems

DEX

Two automated market makers. V2 is constant-product, a Uniswap V2 fork, and is the simplest thing to integrate against. V3 is concentrated liquidity, a Uniswap V3 fork, with four fee tiers including a 2.5% tier intended for new launches.

Both are byte-level forks of contracts you have already read. The init code hashes are published on their respective pages, so you can compute pair and pool addresses off chain without a factory call.

Aggregator

ArmoryTradeManager executes a trade against any registered venue behind one interface. It ships with adapters for Armory V2 and V3 and for Camelot V2 and V3, addressed by a dexId.

The adapter interface is public. If you run a venue on ApeChain, you can write an adapter against ITradeAdapter and have it routed to.

Lockers

Token, LP and V3 position locks, with vesting. The part worth your attention is ArmoryLockRouter: it adds liquidity and locks it in a single transaction, which is what a launch actually needs.

The fee split on a locked position is delegated to a module contract, and the module interface is open. You can write your own and have it approved.

Bridge

ChainHop moves ERC20s and ERC721s between ApeChain, Base, Ethereum, Robinhood, Arbitrum, BNB Chain and HyperEVM over Chainlink CCIP. Not every pair is a direct lane: ApeChain reaches Robinhood, BNB Chain and HyperEVM through Base, and the vault routes those for you as real two-leg hops.

The chain

ContractAddressApeScan
WAPE0x48b6…B557
Wrapped APE. Not ours, but every router path and every aggregator route is anchored to it.

Armory deploys to ApeChain mainnet, chain id 33139. There is no testnet deployment. Native APE is the gas token and the quote asset for most pairs; WAPE above is its ERC20 wrapper, and the routers wrap and unwrap around it so you can pass native value in and get native value out.

Every deployed address is listed on the addresses page.

Before you integrate

Check configurable state before submitting

Adapter registration, pause flags, fee receivers, routes and module approvals can change on chain. Read the relevant getter while building a transaction instead of assuming a listed contract is ready for every operation.

Three conventions hold across everything documented here.

  • Deadlines and slippage are yours. No contract in this system picks a default for you. A call with a past deadline reverts, and a call with a zero minimum output will fill at any price.
  • Native APE is handled at the periphery. Core contracts only ever see WAPE. The routers and the trade manager wrap on the way in and unwrap on the way out.
  • Quoters are not view functions. QuoterV2 reverts internally to return its answer. Simulate it, never call it inside a transaction.