The project was built with the idea of bringing quality and visibility to the production process of real world or digital assets. This provides a way for a business to manage their suppliers/workflow ensuring quality when producing goods which they can ultimately provide to their customers. Some examples would be a luxury watch brand producing watches as seen in the demo. Additionally this could be extended to a digital delivery. There are potential applications for this with the supply chain functionality running on a private chain or layer two solution that could create the NFT on the mainnet when ready. The way it works is that a business/person would create the supply chain (an ERC721) token with a fixed limit of mintable tokens (ensuring batch size or forced scarcity) We have a factory that creates supply chain ERC721 contract instances that can then be managed. For each ERC721 contract created, a set of production stages would be configured (e.g. design, develop, quality check and package). Each of these stages would then have suppliers or workers configured who may/may not have a fee associated to that stage. New suppliers can be added at any time. Additionally per stage, a set of signatories or "approvers" would be configured so that each stage would have oversight. Once a token is minted, or an instance of the product created, the contract owner can kick off the supply chain by assigning the first stage someone supply the stage, the cost and who can approve it once viewing IPFS uploaded documents. At each stage before approval, the supplier would be able to upload documentation to IPFS, which the signatory would view and approve. The approval transaction would provide payment (if applicable) and setting of who is dealing with the next stage for supplying and approving. They would be restricted by the owner's configuration. At the final stage, the last approval will unlock the NFT for transfer, as the ERC721 is written in such a way that ownership transfer per token is blocked until the product supply chain/workflow has been completed and signed off. The contract is written in such a way that there is always a fixed mint limit providing a level of scarcity for collectors or for a business to batch their production by supply dynamics. Some extensions we are considering: 1. If your physical asset has been stolen then it can be flagged on the NFT and pawn shops and others can use this to verify before buying second hand. 2. Insurance providers and standards regulating companies can validate company processes 3. Companies wanting to improve visibility on their ethical sourcing could use something like this 4. Reselling NFT market with royalties to the creator if it is an artist Side note: you should be able to create an NFT without stages as a traditional NFT

NFT-ME showcase

How it's made

The project was scaffolded with eth-scaffold which includes a react-app, basic IPFS storage, Hardhat and EthersJS comes with the eth-scaffold and has been used. Additional packages were added such as the ERC721 contracts from OpenZeppelin to provide default implementations. Various functions of this were overridden to cater for our use-case. SafeMath was added for balance manipulation. IPFS is being used for more than just the default NFT data - it is also for the supply chain stage documents. Additional UI tools such as Elastic UI has been used. ENS lookups for addresses is a definite next step. We want to switch to an ERC1167 proxy model to save gas, and ERC712 for visibility of what is being signed. We focused a lot on testing to ensure it works as we expected it to.

Technologies used