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
- Protocols: the other protocols, by what they do.
- Protocols and tokens: calling a contract by its namespace, or through its ABI.
- Glossary: the words these pages use, in plain terms.
