Executing Trades
rereqs
const OPTION_BOOK = '0xd58b814C7Ce700f251722b5555e25aE0fa8169A1';
const USDC = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const YOUR_REFERRER = '0x...'; // unique address for your platformWhy the referrer matters
referrer mattersTags positions created via your platform.
Enables client-side filtering for portfolio views.
Tracks referral fees in
OrderFilled.
Always pass your
YOUR_REFERRERas the 3rd arg tofillOrder().
Minimal ABIs (v2)
const OPTION_BOOK_ABI = [
{
"inputs":[
{"components":[
{"internalType":"address","name":"maker","type":"address"},
{"internalType":"uint256","name":"orderExpiryTimestamp","type":"uint256"},
{"internalType":"address","name":"collateral","type":"address"},
{"internalType":"bool","name":"isCall","type":"bool"},
{"internalType":"address","name":"priceFeed","type":"address"},
{"internalType":"address","name":"implementation","type":"address"},
{"internalType":"bool","name":"isLong","type":"bool"},
{"internalType":"uint256","name":"maxCollateralUsable","type":"uint256"},
{"internalType":"uint256[]","name":"strikes","type":"uint256[]"},
{"internalType":"uint256","name":"expiry","type":"uint256"},
{"internalType":"uint256","name":"price","type":"uint256"},
{"internalType":"uint256","name":"numContracts","type":"uint256"},
{"internalType":"bytes","name":"extraOptionData","type":"bytes"}
],"internalType":"struct OptionBook.Order","name":"order","type":"tuple"},
{"internalType":"bytes","name":"signature","type":"bytes"},
{"internalType":"address","name":"referrer","type":"address"}
],
"name":"fillOrder","outputs":[{"internalType":"address","name":"optionAddress","type":"address"}],
"stateMutability":"nonpayable","type":"function"
},
{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"referrer","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},
{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimFees","outputs":[],"stateMutability":"nonpayable","type":"function"}
];
const ERC20_ABI = [
{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},
{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},
{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}
];Trade Flow (ethers v5-style)
Notes
Never modify order fields (signature will break).
USDC is 6 decimals:
parseUnits(x, 6).Round down contracts (
Math.floor(… * 1e6)).
Last updated