Auction lifecycle

A detailed example of how an order flow auction works

Let's look at how an auction moves through its primary phases.

Phase 0: Auction is created

Wallet A creates and deploys the following auction on the DFlow Chain. This auction is immediately accepting bids from market makers.

Auction Rollover Example 1

Let's breakdown this auction using the auction specs and protocol parameters, a set of factors used to determine auction lengths.

Deployed Auction

Solana Auction Example

When My-Auction-1 is created, both epoch 0 and 1 are active.

Epoch 1 is accepting bids from market makers. The maximum length of an epoch's auctioning period is exactly the same as the previous epoch's delivery period. In other words, the length of an auctioning period is variable and depends on the speed of order delivery.

Phase 1: Auction winner is determined

The auction winner is determined during the auctioning period where the highest bidding market maker receives the right to execute the order flow.

Let's say three market makers participated in epoch 1 and here are their bids. None of them or DFlow can see the bid values.


Bid-reveal scheme

DFlow auctions use a bid-reveal scheme to determine the winner. Initially, market makers submit blind bids into their desired auctions. After a specific time, market makers can no longer submit new bids and to win the order flow, they must reveal their bids by the end of the epoch's auctioning period.

The length of this bidding period is determined by a set of protocol specified parameters. In this case, the length is determined by multiplying the time factor and the delivery period, meaning market makers have 1.4 days of bidding time.

Time factor is set to 70% and notional factor is set to 70%.

Here, Market Maker C is the winner and receives the right to fill $500,000 of SOL-USDC orders from Wallet A.

Phase 2A: Orders are delivered

Wallet A now has a maximum of 3 days to deliver $500,000 of SOL-USDC orders within the range of ($0, 500] to Market Maker C (winner of epoch 1). Note here the active epochs are epoch 1 and 2.

Auction Rollover Example 3

The bid amount will be paid pro rata to the wallet as orders are delivered. For example, if Wallet A delivers a $5,000 order, Wallet A will receive 10 USDC (1% of 1,000 USDC).

Failure to deliver the full amount will result in a pro rata refund to the market maker. For example, if Wallet A delivered 20% of notional size and since Market Maker C paid 1,000 USDC for the flow, the market maker will receive 800 USDC back at the end of the delivery period.

Phase 2B: New auction winner is determined

While epoch 1 is delivering orders, epoch 2 is now accepting bids from market makers. This step is similar to Step 2 with one big difference. Epoch 1's delivery period may end sooner than the predefined length (3 days, in this case) if Wallet A finishes delivery of the full $500,000 of SOL-USDC ahead of time.

Phase 3: Auction cycle repeats

When epoch 1 is done delivering, epoch 2 begins delivering, and epoch 3 starts accepting bids from market makers. Wallets need only set up once and auction will roll over sequentially like described.

Auction Rollover Example 3

What’s Next

Auction proceeds are a meaningful source of revenue for wallets. Find out how payments work.