Introduction

Waterfall is an on-chain NFT (ERC-721) trading and pricing protocol. The mechanism intends to provide price discovery and instant price querying for NFTs that are listed on the protocol (i.e. it does not appraise any NFTs that isn't being sold).

When an NFT is listed on the protocol, it fractionalizes the NFT into a specified number of shards: ERC-1155 tokens that represent predictions on the NFT's future valuation. They may exchange hands however, but the main invariant the mechanism maintains is that all shards must be listed at all times. In other words, each shard has a price that anyone can match to acquire it. This remains true until somebody decides to buyout the NFT, which pays out each of the shard owners and transfers the NFT out of the protocol to the buyer.

Listing NFTs

To list an NFT for sale on Waterfall, a seller must specify the number of shards and initial parameters to list the NFT. Upon listing, the NFT is transferred to the protocol, and the specified number of shards (represented by ERC-1155 tokens) are minted to the seller. After this, the main invariant the protocol maintains is that every shard must be listed at all times (i.e. anyone can acquire it by matching the price). Then, the price of the NFT is the sum of all shards' listings.

Trading NFT shards (predicting NFT prices)

Suppose some shard trader wants to predict the price of a listed NFT by purchasing some shards. Since every shard must be listed at all times, they must specify a predict price (prediction of the future value by some date), and an expiration date (date the prediction lasts until) when purchasing. The protocol will then immediately relist the purchased shards at the predict price until the expiration date.

Automatic Dutch Auction

If a shard has not sold by its expiration date, they automatically start Dutch auctioning down to 0. The price linearly decreases over some length of time that the NFT seller specified when creating the listing. Note that this length is the same for all shards per listing.

Fee

For this mechanism to be valid, the prices of both the shards and the NFT must be at some price buyers are willing to match. Suppose some shard trader relists their shard at a price nobody will ever match. Although the entire NFT is available for buyout, this scenario effectively freezes the asset. To solve this, the mechanism takes a percentage fee of the relist predict price, which increases the further the expiration period is into the future. Upon placing a prediction, the fee is distributed to the corresponding seller and the Waterfall protocol. This discourages unrealistic predict prices and expiration dates.

Buyouts

To buy an NFT listed on Waterfall, the buyer has to match the protocol-determined value at the time of purchase (i.e. the sum of the shards' listings). Then, the funds are transferred into the protocol, and the NFT is transferred to the buyer.

Claiming Buyout Funds

Buyout funds are not distributed upon buyout to the shard owners (gas limit). Instead, the buyout timestamp is marked into the contract, which solidifies the price for each shard at buyout. This allows for a claim funds function, where shard owners can claim buyout funds in exchange for their corresponding fractions (these are burned). Note that shard owners are responsible for claiming their buyout funds.