DFlow introduces a standardized method for wallets to route order flow to market makers. The way wallets route orders is through on-chain order flow auctions (OFAs) that represent a batch of orders from a specific source. Market makers then compete by bidding into auctions to win rights to execute orders and bid amounts from winning auctions are sent to the wallets as they deliver orders.
An order flow auction represents a batch of orders of a specific grade and runs perpetually. Auction parameters determine the grade and characteristics of a batch of orders and are used by market makers to price auctions. Wallets can create multiple auctions at the same time to auction off orders containing different tokens (e.g. ETH-USDC, ETH-BTC, USDC-USDT).
An auction is perpetual because wallets only need to set up an auction once and as orders start being delivered, an epoch number is automatically incremented to identify the vintage of the auction. An epoch is incremented based on the length, which is determined by the delivery period (which is one of the many auction parameters) and the rate at which orders are delivered.
Each auction is comprised of sequential epochs and at any point in time, there are two active epochs. The current epoch will be delivering orders in the Delivery Period and the next epoch will be accepting bids from market makers in the Auctioning Period.
Auction winners are determined in a bid-reveal scheme during the Auctioning Period. The bid-reveal scheme works by first allowing market makers to submit blind bids and later having them reveal their bids. At the end of this period, the highest bidder will be the auction winner and will begin receiving order flow. All other bid amounts are returned to respective market makers.
Note the auctioning period always takes place before the delivery period for a given epoch. In other words, market makers are pricing order flow to be delivered at a later date. This ensures a low latency trading experience and eliminates the speculation that market makers can see order details before paying for order flow. Market makers price order flow based on the parameters and external factors such as market conditions.
The length of an epoch's auctioning period is determined exactly by the length of previous epoch's delivery period.
The epoch in the delivery period will be delivering order flow to the winning market maker for order execution. The delivery period is the maximum length allowed for order delivery and is predetermined by wallets. (This is only true if wallets integrate via the fully-managed service; otherwise, delivery periods are determined by DFlow.)
The realized length of delivery period may be shorter because it is the shorter of (1) the specified delivery period and (2) the time it takes for notional size to be delivered.
Updated about 1 month ago
Every auction has a set of standardized parameters. Find out more below.