/* ---- Google Analytics Code Below */

Friday, March 03, 2023

Interesting Auction Tech

Worked on some auction tech way back when, so this interested me.  Not to say I fully understand it, but like to see new and differ ways of valuing  things.  

Through the looking glass: A cross-chain sealed-bid auction using Aztec Connect,    Michael Zhu

AUCTION DESIGN, TABLE OF CONTENTS

How it works, Hiding bids via “splitting”

Aztec Connect for anonymous bidding

InputValue

How it compares, Gas costs, User experience, Privacy

Editor’s note: This piece is part of our ongoing series on all things auctions for web3. Part 1 was an overview of technical challenges (and opportunities) specific to designing on-chain auctions. Part 2 was a piece on clearing the market and avoiding gas wars. Part 3 and Part 4 explore how auction theory translates into practice by introducing two implementations of sealed-bid auctions. 

Over the course of this series, we’ve explored different strategies for bridging the gap between auction theory and what can be built on-chain, each with its unique nuances. In particular, we’ve focused on implementing sealed-bid, second-price (Vickrey) auctions, which have been used for decades in sales of art, timber, and ad space. But we rarely see them implemented trustlessly using smart contracts, in part due to the difficulty of implementing private bids. The transparent nature of public blockchains can prevent dishonest intermediaries from censoring bids or manipulating auction results; but they also impose challenges on developers, who must find novel solutions for protecting their users’ privacy. 

In our previous auction implementations, we’ve used two approaches to keeping on-chain bids private: The first (OverCollateralizedAuction) conceals bid values using overcollateralization (where bidders lock up more collateral than required by the bid), protecting privacy at the expense of capital efficiency. This led us to our second design (SneakyAuction), which uses the CREATE2 opcode to camouflage bids among other transfers on the blockchain. But empirical analysis showed that this approach would not be effective at hiding very large bids that deviate from amounts typically transacted on Ethereum. 

In this post, we return with a novel cross-chain approach (called AztecConnectAuction) that can provide privacy to bids of any size, without requiring extra collateral. Relying on multiple blockchains achieves functionality that wouldn’t be possible on any single chain alone, and provides a different set of benefits and tradeoffs for developers to consider when implementing their own protocols. In our case, we use Aztec Connect to leverage the anonymity of Aztec’s ZK rollup, while retaining the benefits of Ethereum L1 settlement. 

We’ve added the implementation to our Auction Zoo repository on GitHub, alongside our previous auction implementations. We hope you’ll build on these, share your ideas, and send us your feedback.

How it works

First a quick refresher on the Vickrey auction: Bidders submit private bids (traditionally for a single item) to the auctioneer in sealed envelopes. The highest bidder wins, but pays the second-highest bid. To translate these characteristics on-chain, our new auction follows the same blueprint as before: Bids are collateralized and committed to during the “bidding phase”, in such a way that doesn’t reveal their precise values until they are revealed in the subsequent “reveal phase”. Once the reveal phase is over, the auction can be ended and the winning bidder pays the seller in the amount of the second-highest bid (the Vickrey payment rule). Our auction implementations differ in how they keep bids hidden during the bidding phase — this time, we will use a mechanism that is capital efficient even for large bids. 

Hiding bids via “splitting”

In OverCollateralizedAuction, privacy relied on overcollateralization to hide the exact bid value. In SneakyAuction, we were able to achieve bid privacy by using the CREATE2 opcode to hide the intent of a bid transaction — the value of the transaction is publicly visible, but the transaction is indistinguishable from a normal ETH transfer.

An alternative approach is to obfuscate the value of a bid by splitting it into multiple, unlinkable transactions. Imagine an auctioneer receives three checks for $100, $200, and $300, each signed with invisible ink. All three could have been signed by the same bidder, tendering a bid for $600. Or, they could be three separate bids, signed by three respective bidders. Or, there might be two bidders, one of whom has split their bid into two checks. Even if the check amounts are public, the underlying bid values are hidden until the signatures are revealed.   ....

No comments: