Rubicon Market
Fees
Protocol Fee: 0.002%
Paid by takers (buyers) to the protocol. Paid in the token sent from the taker to the contract.
Maker Rebate: 0.038%
Paid by the taker to the maker (seller), the address that owns the filled offer during a buy.
The Total Taker Fee is equal to the sum of the Protocol Fee and the Maker Rebate. All market fees (rebates) are paid in the token the buyer is paying to fill an offer.
Total Taker Fee: 0.04%
Total fee paid by trades that "take" liquidity from the order book (a buy). Paid in the token sent to the contract from the taker.
Querying the Fees
Use these view functions to query the fee values. Please note that "getFeeBPS" is a semantic misnomer and the integer value it returns is a pip, 1 / 100,000, and represents the input to the protocol fee. This is maintained for backward compatibility and will be fixed in future updates.
function getFeeBPS()
public
view
returns (uint256)
Returns the current protocol fee.
function makerFee()
public
view
returns (uint256)
Returns the current maker fee.
Calculating Fees for a Trade
Use getBuyAmountWithFee()
or getPayAmountWithFee()
to calculate the total amount to send to the contract for a given trade, including fees.
function getBuyAmountWithFee(
IERC20 buy_gem,
IERC20 pay_gem,
uint256 pay_amt
) external view returns (uint256 buy_amt, uint256 approvalAmount) {
uint modifiedAmount = calculateFees(pay_amt, false);
buy_amt = (getBuyAmount(buy_gem, pay_gem, modifiedAmount));
approvalAmount = pay_amt;
return (buy_amt, approvalAmount);
}
Returns buy_amt
, the amount of buy_gem
tokens to send to the contract to receive the pay_amt
amount of the pay_gem
token. Also returns approvalAmount
, the amount of pay_gem
tokens to approve for the interaction, accounting for fees.
function getPayAmountWithFee(
IERC20 pay_gem,
IERC20 buy_gem,
uint256 buy_amt
) public view returns (uint256 pay_amt, uint256 approvalAmount) {
pay_amt = (getPayAmount(pay_gem, buy_gem, buy_amt));
uint modifiedAmount = calculateFees(pay_amt, true);
approvalAmount = modifiedAmount;
return (pay_amt, approvalAmount);
}
Returns pay_amt
, the amount of pay_gem
tokens to send to the contract to receive the buy_amt
amount of the buy_gem
token. Also returns approvalAmount
, the amount of buy_gem
tokens to approve for the interaction, accounting for fees.
Network Fees
Rubicon order books are on-chain, all transactions must pay network fees (gas) in ETH. Transactions on L2 networks like Arbitrum (opens in a new tab) and Optimism (opens in a new tab) are 50-100x cheaper than equivalent ones on Ethereum Mainnet.