DeFi on Bitcoin Part 2: NFT and Marketplace
OpenSea on Bitcoin
In part 2 of the series, we illustrate how to build non-fungible tokens (NFT) and sell them directly on Bitcoin.
In a basic setup, an NFT contract is simply a table with two columns: an ID, uniquely representing a non-fungible asset, and its rightful owner.
The following contract implements such a basic NFT contract, similar to ERC721 token standard in Ethereum.
It is very similar to the fungible token contract we have developed. The most notable difference is the token table at Line 6, mapping ID to its owner, instead of owner to token balance.
Let us sell some NFTs in exchange for bitcoins. This is akin to swapping fungible tokens. Instead, we swap an NFT for bitcoins.
In the following example, Alice only signs if the payment amount meets her price requirement, in the second output of tx2. Bob only signs if he becomes the new owner of NFT with id 1, in the first output of tx2. Again, the sale is non-custodial and atomic.
There are a variety of ways to extend the sale. We list a few examples:
- sell NFT in exchange for other tokens: the second output of tx2 should contain the payment to Alice in tokens (fungible or not), not bitcoins, which is funded by a different tx1.
- platform fee: a third output can be added to tx2 that pays the marketplace a fee, say, 3% of the amount of the second output.