Irrevocable.bid provides a toolset for NFT sellers to guarantee a certain price floor with a pre-auction agreement with a Guarantor. For the guarantee, Guarantors get a profit split above the floor.
The trustless tool aims to galvanize the “Veblen” that is rooted in these unique assets by improving the bargaining power of the consignor during the auction process. Before the auction starts, the consignor can enter into the event knowing that 1) the NFT will sell at a certain price and 2) that the investing public knows that there is public demand for the asset of sale. This is similar to doing a "put option" with profit share, but is designed for the uncertainties of the "hammer price" (auction) instead of the "spot price" (public exchange).
The consignors determine the % of profit split, while the Guarantor guarantees the minimum price that the NFT will sell at. The NFT and guarantee capital are put into escrow vaults and the auction is initiated directly from the smart contract vault via the auctionplace's API. The consignor has the button to execute the guarantee at anytime during the auction should the bidding be lackluster. If the bid ends at a higher price, the surplus is split between the Guarantor and Consignor onchain.
Front end - typescript/react, d3.js, ethers.js, covalent api, raribles issuance
Backend - hardhat, solidity, ethers.js, typescript, metamask/infura, usdc/circle, wyvern
WIP components include upshots, aave (nft lending) and thegraph (subgraph to query all guarantees) for a "medici" leaderboard.
To make our design trustless, our architecture is structured using time-expiring vaults that interact directly with the auctionplace. This is generally how the profit split mechanism can work with the Wyvern protocol as the 1) payment address needs to be distributed to the smart contract parameters, and 2) so that the Guarantor doesnt have withdrawal ability to negate the contract. The consignor has a lot of the contract control.
We used a "key-in-hole" acceptance bid-ask system (the guarantor has to send back a "confirmation code" back to the consignor). This was a quietly ingenious way to not only receive/review bid, but also a way for the contract to be multi-lateral-> a consignor can technically send the offer to multiple guarantee-ing suitors.
First we issue an NFT on Rarible, and we select & deposit the NFT via the Covalent API NFT dashboard, and create the contract by establishing the profit share percentage. There was some conflict as we are currently Rinkeby and Covalent is only on Kovan/Mainnet. The module is done but separated from our current Rinkeby app. This step can really reduce a lot of the steps for the user.
Next, as the guarantor deposits and commits his payment token, Upshot's metrics can be helpful for the guarantor to set a suitable guaranteed price floor. We were able to pre-assign and utilize multiple payment options, and USDC was an easy integration.
During the auction, the consignor controls the key button that allows the person to fulfill the Irrevocable Bid or guarantee.