Double-sided auctions for any asset pair

Button Auctions is a permissionless auctions market. It differs from other offerings in that it is double-sided. This means that users can join any auction as both a buyer or a seller. Double Auctions are a way for large numbers of buyers and sellers to find a fair price and transact.

Primary Market

Auctions markets are primary markets for new financial products. They are the prime method for initial price discovery. The U.S. government uses auctions as a primary market for treasury bills, notes, and bonds. Investors use the information from these concluded auctions to trade these new assets on secondary markets.

We've adapted Button Auctions to make sense in a high latency, high transaction cost, and non-private environment. The purpose of Button Auctions is to find a fair price for any pair of ERC-20 tokens. Button Auctions provide a path for new tokens and illiquid pairs to be traded at a fair price without slippage. The benefit of our protocol is that it allows liquidity to exist from the start. Auctions do not rely on market makers or liquidity providers.

Double Auctions

Auctions can be created permissionlessly by any user for any pair of ERC-20 tokens. After an auction is created, anyone can join either side by placing a 'bid' (buy) or an 'ask" (sell) order. This makes Button Auctions similar to a Central Limit Order Book (CLOB), but sales are non-continuous. Double Auctions are beneficial because they are fair and competitive (no preferential treatment), and transparent (no private information). [chart image]

Button Auctions is game theory optimal, MEV resistant, and cost effective (zero slippage). There is one "clearing price", which is found at the conclusion of the auction. Every market participant receives the same price, so users are incentivized to place orders at their true preference. It is also capital efficient in that there are no “dead” assets locked away. Orders placed outside the clearing price are thrown out.

Clearing Mechanism

The contract finds the clearing price once the auction period has concluded. The clearing price is the price at which the number of units sold equals the number of units bought. It will always be somewhere in the portion where the asks and bids overlap.

We can visualize the bids and asks flows:

The clearing mechanism has to prioritize the highest bids and the lowest asks. One algorithm could be to count off the units from the end of each curve until you arrive at the same price. This process can be best visualized through a cumulative supply and demand curve:

Since these are not continuous curves, the "intersections" is the cent price at which the difference between the curves is the smallest, even if all the bids/asks at that specific price cannot be fully filled.


After an auction is settled, users redeem their bid/ask deposit slips to receive a combination of the two assets (Token X and Token Y). For unfilled ticks, their slips will be redeemable for the same collateral they deposited. For filled ticks, it will be redeemed to the corresponding number of Token X/Y in the bid/ask.

Orders are filled at the same price or better. Because of this, one order will receive a combination of their bid asset and their original collateral.

Use Cases

Real world examples of double-auctions are markets that have multiple sellers and buyers for a fungible asset, such as electricity markets and certain stock exchanges. Use cases that double auctions could be good for include new tokens, claims on locked assets (unvested, bankruptcy-related), wrapped NFTs, and many more. You could also imagine a DAO wanting to raise capital or diversify their treasury without putting immediate sell pressure on the market, and getting the same price or better on their governance tokens.

Last updated