“ERC721協議”能否用於供應鏈可追溯性和完整性?
據我了解,ERC721,也稱為 NFT(不可替代令牌)是每個都是唯一的令牌。單個令牌通常帶有元數據。
它們通常是不可分割的(ERC20 通常只有 1*10-18,但 ERC721 可以是 1 的倍數)。一個例子:一個你有庫存的遊戲。庫存中的所有不同物品都可以視為 NFT,其中您有 5 支箭、一把劍、一條魚等。
另一個例子當然是 CryptoKitties。kitty 是一種 NFT,其元數據不可分割(你不能賣掉你貓的一半……) ELI5:彼此獨特的可交易資產。房屋、汽車、稀有/獨特的收藏品。棒球可以作為 NFT 交易,其中棒球具有與所有投球者、簽名者等相關的元數據。
事實上,每個代幣都可以附加元數據,這意味著我們可以在元數據中儲存與工廠、供應鏈、生產鏈、生產商等相關的特定數據作為完整性證明,對吧?
假設我們談論的是 pils 或疫苗或肉類或任何大規模生產的任何東西的生產線,我們可以通過在我們可以發送的元數據中儲存特定數據(生產者、生產日期時間、唯一標識符)來確保產品的完整性在我們的區塊鏈中的交易中,然後通過我們的區塊鏈瀏覽器隨時驗證元數據。
ERC721 是否可以實現所有這些場景,還是我只是在想像?
簡短回答:是的,可以使用支持 ERC721 供應鏈標準的不可替代代幣 (NFT)。
長答案:是的!但首先要做的事情。ERC721 只是一個標準化介面,可確保使用 NFT 的應用程序之間的某些互操作性。如果每個合約都有自己的一套規則和方法,就很難支持數百種不同的不可替代代幣合約。現在,即使您選擇 ERC721 標準,也有很多方法可以實現可應用於供應鏈的 NFT 代幣合約。
一個簡單的例子:每個 NFT 代表一個產品,並且可以保存一個元數據記錄列表(鏈上):
- 第一個元數據記錄是工廠和產品資訊(位置、時間戳、材料等)。
- 當該產品被發送到倉庫時,我們會在(鏈上)新的元數據與運輸公司和倉庫資訊(包括提貨和交貨時間)一起列印。
- 在我們的產品到達商店之前,上一步可能會重複幾次。這裡發生了同樣的事情——我們添加了另一條關於商店、日期等的元數據記錄。
這一切看起來都不錯,但實際上我們在鏈上推送的所有元數據加起來非常快!因此,第一步是減小大小——我們只儲存原始數據的散列摘要,而不是原始元數據。讓我們稱它們為證明:
- 工廠:
- 元數據:
hash({"companyName": "Foo", "address": "...", ...}) -> "proof1"
- NFT 元數據是一個證明列表:
["proof1"]
- 交貨1:
- 元數據:
hash({"companyName": "Bar", "timestamp": "...", "containerNo": "...", ...}) -> "proof2"
- NFT 元數據:
["proof1", "proof2"]
- 倉庫 1:
- 元數據:
hash({"companyName": "Bar", "address": "...", ...}) -> "proof3"
- NFT 元數據:
["proof1", "proof2", "proof3"]
…
- 10號倉庫:
- NFT 元數據:
["proof1", "proof2", "proof3", ..., "proof10"] <- A chain of "proofs"
這比將原始元數據儲存在鏈上要好得多。但是,現在我們必須將原始數據儲存在鏈下某個地方,讓相關方可以查詢和驗證(通過使用鏈上的證明)。你可以更進一步研究側鏈,以進一步降低在鏈上傳輸和儲存數據的成本。
免責聲明:我是為不可替代代幣開發開源 0xcert 協議的團隊的一員。支持的案例之一是供應鏈(使用 ERC721 NFT:https ://github.com/0xcert/ethereum/blob/master/contracts/tokens/ChainableXcert.sol ),上面的範例簡要描述了它。它目前正在大力開發(可能需要一個月後發布 alpha 版本),但它可能仍然有用/有趣。歡迎您瀏覽/打開 PR/Issue:https ://github.com/0xcert/ethereum