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 is minted to the seller.
Shards may exchange hands; however, the main invariant the protocol 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.
Let's suppose a shard trader wants to predict the price of a listed NFT by purchasing some shards.
Since every shard must be listed at all times, there are two things a shard trader must immediately do after purchasing a shard:
1) Specify a predict price (prediction of the future value)
2) Set an expiration date (date the prediction lasts until)
The protocol will then immediately relist the purchased shard(s) at the predict price until the expiration date.
If a shard has not sold by its expiration date, it automatically enters a linear Dutch auction down to 0 or until a buyer is found.
The price linearly decreases over a length of time that the NFT seller specified when creating the listing. Note that this length is the same for all shards per listing.
For this mechanism to be valid, the prices of both the shards and the NFT must be at a price buyers are willing to match.
Let's suppose a shard trader relists their shard(s) at an unrealistically high price no buyer will ever match.
Although the entire NFT is technically still available for buyout, this scenario effectively freezes the asset since no buyer will match an unrealistic price.
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 shard seller and the Waterfall protocol. This discourages unrealistic predict prices and expiration dates.
To buy an NFT listed on Waterfall, the buyer has to match the protocol-determined value at the time of purchase, which we call the current price. The current price of an NFT is the sum of all of its shards' listing prices.
After a buyout occurs, the buyer's funds are transferred into the protocol, and the NFT is transferred to the buyer.
Buyout funds are not distributed upon buyout to the shard owners because of gas limitations on Ethereum.
Instead, the buyout timestamp is marked into the contract, which solidifies the price for each shard at buyout. This allows for a
claim fundsfunction, where shard owners can claim buyout funds in exchange for their corresponding fractions.
Fractions are burned after a shard owner claims their funds.
Note that shard owners are responsible for claiming their buyout funds.