Fees
Last updated
The fee structure consists of four components: gas fees, risk coverage, opportunity costs for fillers, and system costs.
Under the design of CCTP Express, users only sign an off chain message to submit an order, paying no gas fee. Fillers pay gas fee to initiate order at the origin chain, and transfer fund to the user at the destination chain. These gas fees are chargeable to the users.
This fee acts as an insurance to cover the reorg risk exposed to the fillers. There is chance that the origin chain reorg after the filler transferred fund to the user at the destination chain.
An user specifies an initiateDeadline
when he creates an order, fillers can initiate an order again at the origin chain before this initiateDeadline
in case there is a reorg. Hence, the shorter the deadline, the higher reorg risk is exposed to the filler. This insurance fee is designed to varies with the initiateDeadline
to cover this risk:
Where:
f(t) is the insurance fee which is a function varies with t
V is the trading volume, representing the maximum insurance fee
e is the base of the natural logarithm
k is a constant that control the descending rate of the fee
t is the time between order creation time and the initiateDeadline
T is the time required for finality on the origin chain
The insurance fee varies with the initiateDeadline
- it decreases with the increment of time between the order creation time and the initiateDeadline:
t = 0
f(t) -> V
0 < t < T
f(t) decreases with t, the rate of descending increases
t = T
f(t) = V/2
t > 2T
f(t) -> 0
As the initiateDeadline
does not impact the order fill time, a normal user is expected to set an initiateDeadline
long enough to avoid paying any insurance fee.
Fillers use their own funds to pay users on the destination chain and are repaid at a later time. This process incurs a capital cost due to the forfeiture of alternative yield opportunities.
System costs includes gas fees for repayment and rebalancing via CCTP. These overhead expenses are distributed among multiple transactions, as the Datadaemon processes transactions in batches.