Skip to main content
Decentralized perpetual futures exchange (Curie v2) on Optimism. Concentrated-liquidity virtual AMM with cross-margin trading.

What it offers

  • deposit: Deposit collateral into Vault for trading
  • withdraw: Withdraw collateral from Vault
  • openPosition: Open a leveraged perpetual position
  • closePosition: Close an existing perpetual position

Notes

  • Virtual AMM (vAMM) based pricing - no actual liquidity pools
  • Cross-margin trading - all positions share the same collateral
  • isBaseToQuote: true = short (sell base for quote), false = long (buy base with quote)
  • Deposit collateral to Vault first, then trade via ClearingHouse
  • sqrtPriceLimitX96 = 0 means no price limit (market order)

Its names in a program

On Optimism, PerpetualProtocol is a namespace: its contracts need no import.

Deployments

ABI

ClearingHouseABI

import ClearingHouseABI from "./protocols/perpetual-protocol/ClearingHouseABI.json"; Speaks for: clearingHouse.
  • openPosition((address baseToken, bool isBaseToQuote, bool isExactInput, uint256 amount, uint256 oppositeAmountBound, uint256 deadline, uint160 sqrtPriceLimitX96, bytes32 referralCode) params) returns (uint256 base, uint256 quote)
  • closePosition((address baseToken, uint160 sqrtPriceLimitX96, uint256 oppositeAmountBound, uint256 deadline, bytes32 referralCode) params) returns (uint256 base, uint256 quote)
  • getAccountValue(address trader) view returns (int256)

VaultABI

import VaultABI from "./protocols/perpetual-protocol/VaultABI.json"; Speaks for: vault.
  • deposit(address token, uint256 amount)
  • withdraw(address token, uint256 amount)
  • getFreeCollateral(address trader) view returns (uint256)

Next steps