Contracts
Perp City markets are deployed permissionlessly through the PerpFactory contract. Each market is its own Perp contract with isolated USDC margin, trading on a Uniswap V4 concentrated-liquidity pool. Per-market modules (fees, funding, pricing, margin ratios, price impact) are pluggable external contracts approved through the ModuleRegistry.
Perp City relies on the Strobe Protocol, a collection of smart contract factories, for permissionless market settlement.
Each market is connected to a beacon oracle from the Strobe BeaconRegistry.
Deployed Contracts
Arbitrum One (mainnet, chain id 42161)
| Contract | Description | Address |
|---|---|---|
| PerpFactory | Creates perp markets; each market is an isolated Perp contract | 0xCE0c5f65A5eDa69A1dFb3f3273749B649abc4eC6 |
| ProtocolFeeManager | Protocol fee configuration | 0x9d0bB98fca4D4913C3851606941B52DDfdB4b9EE |
| ModuleRegistry | Approves module contracts markets may use | 0xa8D623C214F70A6D40Cad299d1fffF9667a97965 |
| Fees | Fee module | 0xBfda8AA80132C51995B37c03D9FE384dcbF0056E |
| Funding | Funding-rate module | 0xB9572a6CdD39965e2d03F13d5559e0CA9fe599D1 |
| Pricing | Pricing module | 0xF4689DA0CaC3f23a04145236Dbfe81C3c58cFe22 |
| MarginRatios | Margin ratio module | 0x8Afca53c52B1F02d76aefB811C6B08F4BD3e4cf9 |
| PriceImpact | Price impact bounds module | 0x71889d6B403DdC5007d1EBaBB52D1fcd5ec04832 |
| BeaconRegistry | Registry of all deployed beacon oracles | 0xBEF280BefeE2Cb28c20D1E4Cc1da999B4DA0f1fD |
| ECDSAVerifierFactory | Factory for ECDSA beacon verifiers | 0x687EeB3E4989441C91BF0D4F797AF4C400803c95 |
| USDC (collateral) | Native Circle USDC on Arbitrum | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 |
| Uniswap V4 PoolManager | Pool singleton markets trade on | 0x360E68faCcca8cA495c1B759Fd9EEe466db9FB32 |
Arbitrum Sepolia (testnet, chain id 421614)
| Contract | Description | Address |
|---|---|---|
| PerpFactory | Creates perp markets | 0xa54F81e7BD5C0d52d6fdE2ba40d0B1123d53E7a7 |
| BeaconRegistry | Registry of all deployed beacon oracles | 0xAA0B2AB577D75bC8ED5380752b612a04896d6f10 |
| Fees | Fee module | 0xa8f7453Fc54E4578dDde12e3DC65b7614938a620 |
| Funding | Funding-rate module | 0x693852A74cF7f5936e1cfD6f3971aE3027b84e7D |
| Pricing | Pricing module | 0xc33205B471a9529fdD0A81fdEA037737Ff5c7A97 |
| MarginRatios | Margin ratio module | 0xB118b54e8b513F6A67fD555348f216d804C0eB89 |
| PriceImpact | Price impact bounds module | 0x0168716E60f5A54e62aec8c20D3caa37e5ce61C2 |
| Testnet USDC | Perp City test collateral token (not Circle USDC) | 0xBEF280BefeE2Cb28c20D1E4Cc1da999B4DA0f1fD |
Testnet modules are lightweight development builds and a testnet ModuleRegistry address is not published; use the module addresses above directly when wiring against Sepolia.
Note: the same address can host different contracts on different chains (the deployer is reused across chains, so contract addresses collide by nonce). Always check the chain a link points to.