This project is a modified auction process. Bids are increased incrementally (i.e. first bidder bids 1 DAI, 2nd bids 2 DAI, first bidder next time will have to bid 3 DAI). However, the point is that the increments are tiny and very affordable for the final buyer. But each bidder will have to pay for the bidding privilege (i.e. by opening up a stream to the seller). The baton (bidding privilege) is more expensive than the increment of the bid price (i.e. to hold the baton the bidder will have to pay 5 DAI per minute). This model is beneficial to both the sellers and bidders - the sellers will get compensated immediately on their items since payment streams are opened to them. The bidders will end up having to pay less for an item in the end as long as they didn't hold the baton for too long.

AuctionFraction showcase

How it's made

Since I don't have much web3 development experience I built the project off scaffold-eth. The streaming of tokens from bidder to seller was done through superfluid. Since the baton gets passed along multiple buyers, that meant that the streams would have to be closed for the old buyer and opened up for the new buyer (i.e. each bid meant there would be 2 superfluid transactions). However, I was able to limit the number of transactions to 1 per bid - I made the new bidder stream the money to the old bidder instead of the original seller (and the original seller finally opened up a stream to the last buyer once the auction closed). I could do this because superfluid nets the streams. On top of that I used polygon - I'm expecting there to be a fair few bids between users in a short amount of time and it wouldn't be feasible on an L1 layer.