diff --git a/content/concepts/images/v4-nft-1.PNG b/content/concepts/images/v4-nft-1.PNG new file mode 100644 index 00000000..bf850be6 Binary files /dev/null and b/content/concepts/images/v4-nft-1.PNG differ diff --git a/content/concepts/images/v4-nft-1.png b/content/concepts/images/v4-nft-1.png deleted file mode 100644 index a45eb96c..00000000 Binary files a/content/concepts/images/v4-nft-1.png and /dev/null differ diff --git a/content/concepts/images/v4-nft-2.png b/content/concepts/images/v4-nft-2.png deleted file mode 100644 index 379f67e2..00000000 Binary files a/content/concepts/images/v4-nft-2.png and /dev/null differ diff --git a/content/concepts/v4-nft.md b/content/concepts/v4-nft.md index 86012c64..de49c40e 100644 --- a/content/concepts/v4-nft.md +++ b/content/concepts/v4-nft.md @@ -1,30 +1,37 @@ -### What is NFT? +### NFTS -A non-fungible token stored on the blockchain represents a unique asset. NFTs can represent images, videos, digital art, or any piece of information. NFTs can be traded and allow transfer of ownership and copyright. +A non-fungible token stored on the blockchain represents a unique asset. NFTs can represent images, videos, digital art, or any piece of information. NFTs can be traded and allow transfer of ownership and copyright. [EIP-721](https://eips.ethereum.org/EIPS/eip-721) defines an interface for handling NFTs on Ethereum blockchain. The creator of the NFT can deploy a new contract on Ethereum or any Blockchain supporting NFT related interface and also, transfer the ownership through the transaction(s). -### How are NFTs handled in the Blockchain world? +### Terminology -[EIP-721](https://eips.ethereum.org/EIPS/eip-721) defines an interface for handling NFTs on Ethereum blockchain. The creator of the NFT can deploy a new contract on Ethereum or any Blockchain supporting NFT related interface and also, transfer the ownership through the transaction(s). +- **Base IP** means the artifact being copyrighted. Represented by the {ERC721 address, tokenId} from the publish transactions. -### How will Ocean Protocol support the NFT market? +- **Base IP holder** means the holder of the Base IP. Represented as the the actor that did the initial "publish" action. -Ocean Protocol defines an [ERC721Factory](https://github.com/oceanprotocol/contracts/blob/v4Hardhat/contracts/ERC721Factory.sol) contract, allowing users to deploy ERC721 contract instances on any supported networks.The deployed contract can be associated with Metadata information that describes the unique asset. The Metadata is also stored on-chain. The [Metadata](https://github.com/oceanprotocol/contracts/blob/v4Hardhat/contracts/metadata/Metadata.sol) contract will contain information about the NFT, and associated access rights defined through roles. +- **Sub-licensee** is the holder of the sub-license. Represented as the entity that controls address ERC721.\_owners[tokenId=x]. -![Image 1](images/v4-nft-1.png) +- **To Publish**: Claim copyright or exclusive base license -### Combining ERC721 and ERC20 +- **To Sub-license**:Transfer one (of many) sub-licenses to new licensee: ERC20.transfer(to=licensee, value=1.0) -ERC20 interface represents fungible tokens. ERC721 and ERC20 combined together can be used for sub-licensing. These sub-licenses can be traded on any AMM as the underlying contract is ERC20 compliant. +### Supporting NFT using Ocean Protocol -Ocean Protocol's [ERC721Template](https://github.com/oceanprotocol/contracts/blob/v4Hardhat/contracts/templates/ERC721Template.sol) provides functionality to create comibinations of ERC721 and ERC20 contract pairs, each of this pair can represent a different sub-license. +Ocean Protocol defines an [ERC721Factory](https://github.com/oceanprotocol/contracts/blob/v4main/contracts/ERC721Factory.sol) contract, allowing **Base IP holders** to create their own ERC721 instances on any supported networks. The deployed contract stores Metadata, ownership, sub-license information, permissions. The creater of the contract can also create and mint ERC20 token instances for sub-licensing the **Base IP**. -![Combining ERC721 and ERC20](images/v4-nft-2.png) +### Sub licensing the Base IP +ERC721 tokens are non-fungiable, thus cannot be used for automatic price discovery like ERC20 tokens. ERC721 and ERC20 combined together can be used for sub-licensing. Ocean Protocol's [ERC721Template](https://github.com/oceanprotocol/contracts/blob/v4main/contracts/templates/ERC721Template.sol) solves this problem by using ERC721 for tokenizing the **Base IP** and tokenzing sub-licenses by using ERC20. Thus, sub-licenses can be traded on any AMM as the underlying contract is ERC20 compliant. + +### Use case + +Alice is author of a book. Alice wants to hold the copyright of her work but, allow others to read her book. So, She creates 2 versions of her book namely: digital copy, physcial copy. She assigns Bob as the manager for the digital edition of the book. Here, **Base IP** is the book. **Base IP holder** is Alice and Bob is **Sub-licensee** for digital edition of the book. Alice tokensises her work by performing **Publish** action i.e _ERC721.safeMint(to=aliceWalletAddress, tokenid=1)_. Alice also creates a sub-licenses of her book by creating two ERC20 tokens and transerfers the digital copy token to Bob's wallet. + +![Image 1](images/v4-nft-1.PNG) ### Other References - https://en.wikipedia.org/wiki/Non-fungible_token -- https://blog.oceanprotocol.com/nfts-ip-3-combining-erc721-erc20-b69ea659115e -- https://blog.oceanprotocol.com/nfts-ip-2-leveraging-erc20-fungibility-bcee162290e3 - https://blog.oceanprotocol.com/nfts-ip-1-practical-connections-of-erc721-with-intellectual-property-dc216aaf005d +- https://blog.oceanprotocol.com/nfts-ip-2-leveraging-erc20-fungibility-bcee162290e3 +- https://blog.oceanprotocol.com/nfts-ip-3-combining-erc721-erc20-b69ea659115e - https://blog.oceanprotocol.com/on-difficult-to-explain-fungibility-sightings-in-nfts-26bc18620f70