Order flow auction

Introducing a market-driven approach to selling order flow

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.

What is an order flow auction

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.

Auction Overview

In practice, wallets create many auctions to batch and tranche their order flow.

How is an auction structured

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.

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.

Epoch 0

At any point in time, there will always be two active epochs n and n+1. Epoch n is delivering while epoch n+1 is accepting bids from market makers.

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.

Generic Epoch

An auction repeats itself automatically when the previous delivery period is completed and therefore is considered perpetual.

What’s Next

Every auction has a set of standardized parameters. Find out more below.