Try   HackMD

How Gnosis Batch Auction Works

  • Imagine a pile of tokens to be sold in an auction
  • Sort all bids by price from highest to lowest
  • If there are bids with the same price, sort them from low bid amount to high bid amount
  • Start virtually distributing to bidders starting at the top of the list using the price of highest bid (while respecting participant’s max price)
  • At the first iteration, you’d distribute tokens only to the top bid
  • At the second iteration you’d distribute tokens to the first two bids using the price of the second bid
  • Repeat until you’re able to distribute all tokens
  • The first time all tokens are gone, sets the final clearing price and the list of participants who will get token

Example

Pile has 15 tokens
At the end of the auction there are 4 bids, ordered by price:

Bid No. Bid size Bid price
1 2 20
2 4 11
3 5 11
4 3 2
5 7 0.5
6 5 0.3

First iteration

Distribute using price of 20 to the first bidder
Bidder 1 gets 2/20=0.1 tokens
Can’t distribute to bidder number two because he’s not willing to pay 20
14.9 tokens remaining

Second iteration

Distribute using price of 11 to the first two bidders
Bidder 1 gets 2/11=0.181 tokens
Bidder 2 gets 4/11=0.363 tokens
14.456 tokens remaining

Third iteration

Distribute using price of 11 to the first three bidders
Bidder 1 gets 2/11=0.181 tokens
Bidder 2 gets 4/11=0.363 tokens
Bidder 3 gets 5/11=0.454 tokens
14.001 tokens remaining

Fourth iteration

Distribute using price of 2 to the first four bidders
Bidder 1 gets 2/2=1 tokens
Bidder 2 gets 4/2=2 tokens
Bidder 3 gets 5/2=2.5 tokens
Bidder 4 gets 3/2=1.5 tokens
Can’t distribute to bidder number five because he’s not willing to pay 2
8 tokens remaining

Fifth iteration

Distribute using price of 0.5 to the first five bidders
Bidder 1 gets 2/0.5=4 tokens
Bidder 2 gets 4/0.5=8 tokens
Bidder 3 gets 5/0.5=10 tokens
Bidder 4 gets 3/0.5=6 tokens
Bidder 5 gets 7/0.5=14 tokens
(more than) All tokens were distributed

Final Outcome

Clearing price of the auction is 0.5
Bider distribution:
Bidder 1 gets 4 tokens
Bidder 2 gets 8 tokens
Bidder 3 gets the remaining 3 tokens (and 3.5 bidding token refund)
Bidders 4, 5 and 6 doesn't get any tokens (and full bidding token refund)