Overview
Takers execute against maker-provided rung liquidity using MAOB’s taker entrypoints.
From MAOB.sol, taker entrypoints are:
Buy base tokens (spend quote tokens)
buyBaseExactOut(baseAmount, maxQuoteIn, maxRung, deadline)buyBaseExactOut(baseAmount, maxQuoteIn, deadline)(traverses all rungs)buyBaseTargetIn(quoteIn, minBaseOut, maxRung, deadline)buyBaseTargetIn(quoteIn, minBaseOut, deadline)(traverses all rungs)
Sell base tokens (receive quote tokens)
sellBaseTargetIn(baseAmount, minQuoteOut, maxRung, deadline)sellBaseTargetIn(baseAmount, minQuoteOut, deadline)(traverses all rungs)sellBaseExactOut(quoteOut, maxBaseIn, maxRung, deadline)sellBaseExactOut(quoteOut, maxBaseIn, deadline)(traverses all rungs)
Common parameters
maxRung
Taker calls can restrict traversal to a highest rung index.
- Lower
maxRunglimits how far from the midpoint you are willing to cross. - Using the overloads without
maxRungtraverses all configured rungs.
deadline
All taker functions accept a deadline:
- If
deadline == 0, the deadline check is disabled. - Otherwise, the call reverts if
block.timestamp > deadline.
Minimum quote token checks (minQuoteTaker)
MAOB enforces a minimum quote token amount check for taker safety:
- For “buy exact out” and “sell target in”, MAOB evaluates the trade value at the mid price and requires it to meet
minQuoteTaker. - For “buy target in” and “sell exact out”, the input/desired quote token values are validated directly.
Buy base tokens
Buy exact base tokens out
buyBaseExactOut(baseAmount, maxQuoteIn, ...) buys an exact amount of base tokens, spending up to maxQuoteIn quote tokens.
- If rung liquidity requires more than
maxQuoteIn, the call reverts. - MAOB charges a taker fee in base tokens, and transfers fee to
feeCollector.
Return values:
quoteUsed: actual quote tokens spent (gross)baseFeePaid: base token fee amount
Buy with a quote token budget (target in)
buyBaseTargetIn(quoteIn, minBaseOut, ...) spends up to quoteIn quote tokens, buying as much base tokens as possible, requiring at least minBaseOut base tokens (after fee).
Return values:
baseOut: base tokens received (after fee)baseFeePaid: base token fee amount
Sell base tokens
Sell base tokens (target in)
sellBaseTargetIn(baseAmount, minQuoteOut, ...) sells up to baseAmount base tokens into bids and requires at least minQuoteOut quote tokens (after fee).
MAOB charges a taker fee in quote tokens.
Return values:
quoteOut: quote tokens received (after fee)quoteFeePaid: quote token fee amount
Sell for a target quote token out (exact out)
sellBaseExactOut(quoteOut, maxBaseIn, ...) attempts to receive at least quoteOut net quote tokens (after fee), spending up to maxBaseIn base tokens.
Return values:
baseUsed: base tokens spentquoteFeePaid: quote token fee amount
Failure modes to expect
MAOB__TakerPaused()if taker actions are paused.MAOB__InvalidDeadline()if deadline is set and has passed.MAOB__InsufficientLiquidity()if not enough rung liquidity exists within traversal.MAOB__MaxQuoteExceeded()/MAOB__MaxBaseExceeded()if slippage guards are breached.MAOB__OracleStale()/MAOB__OraclePriceMissing()/MAOB__OracleOutOfRange()if oracle data is unusable.