MatchingEngine
The MatchingEngine
contract is an on-chain matching engine for executing orders. It allows users to trade assets using limit and market orders.
State Variables
feeTo
address
Address of the fee recipient.
feeDenom
uint256
Denominator for calculating the fee.
feeNum
uint256
Numerator for calculating the fee.
orderbookFactory
address
Address of the orderbook factory contract.
lFeeToken
address
Address of the listing fee token.
lFeeAmount
uint256
Listing fee token amount in 1e18.
membership
address
Address of the membership contract.
accountant
address
Address of the accountant contract.
Events
OrderCanceled
OrderCanceled
Event emitted when an order is canceled.
orderbook
address
The address of the orderbook contract.
id
uint256
The ID of the canceled order.
isBid
bool
Flag indicating whether the order is a bid or ask.
owner
address
The address of the order owner.
OrderMatched
OrderMatched
Event emitted when an order is matched.
orderbook
address
The address of the orderbook contract.
id
uint256
The ID of the matched order.
isBid
bool
Flag indicating whether the order is a bid or ask.
sender
address
The address of the sender executing the order.
owner
address
The address of the order owner.
amount
uint256
The amount of the order executed.
price
uint256
The price at which the order was matched.
PairAdded
PairAdded
Event emitted when a trading pair is added to the orderbook.
orderbook
address
The address of the orderbook contract.
base
address
The address of the base asset in the trading pair.
quote
address
The address of the quote asset in the trading pair.
Functions
initialize
initialize
Initializes the matching engine with the orderbook factory and listing requirements.
Parameters
orderbookFactory_
address
Address of the orderbook factory contract.
feeToken_
address
Address of the listing fee token.
feeAmountOne_
uint256
Listing fee token amount in 1e18 (scaled decimal).
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.
setListingFee
setListingFee
Sets the listing requirements.
Parameters
feeToken_
address
Address of the listing fee token.
feeAmountOne_
uint256
Listing fee token amount in 1e18 (scaled decimal).
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.
setOrderbookFactory
setOrderbookFactory
Sets the address of the orderbook factory.
orderbookFactory_
address
Address of the orderbook factory contract.
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.
setMembership
setMembership
Sets the address of the membership contract.
membership_(address)
: Address of the membership contract.
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.
setAccountant
setAccountant
Sets the address of the accountant contract.
accountant_(address)
: Address of the accountant contract.
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.
setFee
Sets the fee numerator and denominator of trading.
feeNum_(uint256)
: The numerator of the fee fraction.feeDenom_(uint256)
: The denominator of the fee fraction.
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.The fee numerator and denominator must be valid.
setFeeTo
Sets the fee recipient.
feeTo_(address)
: Address of the fee recipient.
Requirements:
The caller must have the
DEFAULT_ADMIN_ROLE
.
marketBuy
marketBuy
Executes a market buy order, buying the base asset using the quote asset at the best available price in the orderbook up to n
orders, and makes an order at the market price.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
amount
uint256
The amount of quote asset to be used for the market buy order.
isMaker
bool
Boolean indicating if an order should be made at the market price in the orderbook.
n
uint32
The maximum number of orders to match in the orderbook.
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully executed, otherwisefalse
.
marketSell
marketSell
Executes a market sell order, selling the base asset for the quote asset at the best available price in the orderbook up to n
orders, and makes an order at the market price.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
amount
uint256
The amount of quote asset to be used for the market buy order.
isMaker
bool
Boolean indicating if an order should be made at the market price in the orderbook.
n
uint32
The maximum number of orders to match in the orderbook.
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully executed, otherwisefalse
.
limitBuy
limitBuy
Executes a limit buy order, places a limit order in the orderbook for buying the base asset using the quote asset at a specified price, and makes an order at the limit price.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
amount
uint256
The amount of quote asset to be used for the market buy order.
isMaker
bool
Boolean indicating if an order should be made at the market price in the orderbook.
n
uint32
The maximum number of orders to match in the orderbook.
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully executed, otherwisefalse
.
limitSell
limitSell
Executes a limit sell order, places a limit order in the orderbook for selling the base asset for the quote asset at a specified price, and makes an order at the limit price.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
amount
uint256
The amount of quote asset to be used for the market buy order.
isMaker
bool
Boolean indicating if an order should be made at the market price in the orderbook.
n
uint32
The maximum number of orders to match in the orderbook.
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully executed, otherwisefalse
.
makeBuy
makeBuy
Stores a bid order in the orderbook for the base asset using the quote asset, with a specified price at
.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
amount
uint256
The amount of quote asset to be used for the bid order.
at
uint256
The price at which the bid order will be stored in the bid-ask spread.
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully executed, otherwisefalse
.
makeSell
makeSell
Stores an ask order in the orderbook for the quote asset using the base asset, with a specified price at
.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
amount
uint256
The amount of quote asset to be used for the bid order.
at
uint256
The price at which the bid order will be stored in the bid-ask spread.
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully executed, otherwisefalse
.
addPair
addPair
Creates an orderbook for a new trading pair and returns its address.
Parameters
base
address
Address of the base asset for the trading pair.
quote
address
Address of the quote asset for the trading pair.
Returns
book
: The address of the newly created orderbook.
cancelOrder
cancelOrder
Cancels an order in an orderbook by the given order ID and order type.
Parameters
orderbook
address
The address of the orderbook to cancel the order in.
orderId
uint256
The ID of the order to cancel.
isBid
bool
Boolean indicating if the order to cancel is an ask order (false for bid order).
uid
uint32
User ID associated with the order (optional).
Returns
true
if the order was successfully canceled, otherwisefalse
.
getOrderbookById
getOrderbookById
Returns the address of the orderbook with the given ID.
Parameters
id
uint256
The ID of the orderbook to retrieve
Returns
The address of the orderbook.
getBaseQuote
getBaseQuote
Returns the base and quote asset addresses for the given orderbook.
Parameters
orderbook
address
The address of the orderbook to retrieve assets for.
Returns
base
address
The address of the base asset.
quote
address
The address of the quote asset.
getFee
getFee
Returns the fee numerator and denominator.
Returns:
numerator(uint256)
: The fee numerator.denominator(uint256)
: The fee denominator.
getFeeTo
getFeeTo
Returns the address of the fee recipient.
Returns:
The address of the fee recipient.
getOrderbookFactory
getOrderbookFactory
Returns the address of the orderbook factory contract.
Returns:
The address of the orderbook factory contract.
getListingFee
getListingFee
Returns the listing fee token address and amount.
Returns:
feeToken(address)
: The address of the listing fee token.feeAmount(uint256)
: The listing fee token amount.
getMembership
getMembership
Returns the address of the membership contract.
Returns:
The address of the membership contract.
getAccountant
getAccountant
Returns the address of the accountant contract.
Returns:
The address of the accountant contract.
Last updated