就在一年前的2018年6月17日,我將ERC-1155代幣標準的第一個版本發布到以太坊的Github庫中,并開放了一個問題窗口供評論和反饋。
從那時起,該標準得到了令人難以置信的大量支持,擁有了來自社區的50多個修訂版本和400條評論,并幫助將ERC-1155塑造成有史以來最強大的以太坊代幣標準。
今天,我很自豪地與大家分享ERC-1155已經發展到最終的狀態,并且已經成為以太坊的官方代幣標準。
現在它已經被以太坊社區封為“最終版”,不再需要對ERC-1155做任何更改。它是可替代資產和不可替代資產的新公認標準,開發社區可以滿懷信心地開始構建集成了ERC-1155資產的應用程序,并相信當前的標準是經得起時間檢驗的。
以太坊的改進建議
幾年前,以太坊社區就向以太坊生態系統引入新的改進建議達成一致。一個問題由一個社區成員在以太坊 GitHub頁面上提出,并描述了一個新的特性、流程,該特性、流程將使區塊鏈及其周邊社區受益。
在Enjin,自2017年以來,我們一直在內部構建一種我們稱之為“單一代幣合同”的東西。我們意識到現有的ERC-20和ERC-721代幣標準對于我們所設想的游戲項目類型不夠靈活。
最終,我們意識到這種結構對于游戲和其他行業都有一些不可思議的好處和用例,如果我們想讓這些新的代幣成為現實,我們必須將其標準化。
創建一個標準意味著更大的以太坊社區將開始支持這種新的代幣,并且它將為更快地在錢包、交換、游戲和使用標記的區塊鏈資產的新項目中采用鋪平道路。
ERC-1155在一個智能合約中支持無限數量的可替換和不可替換代幣。
一個智能合約可以管理無限數量的代幣
雖然ERC-20和ERC-721代幣需要為每個新的代幣“類”部署一個新的智能合約,但ERC-1155背后的核心概念是一個智能合約可以管理無限數量的代幣。
把它想象成一個自動售貨機,里面有各種各樣的蘇打水、果汁,甚至零食。客戶使用一個安全接口與機器交互(插入硬幣,按下按鈕),機器就會分發他們選擇的商品。同樣的道理,一份ERC-1155游戲合同可以包含多種物品,從武器和盔甲到健康藥水、魔法卷軸等等。
每一項都可以是“可替換的”,有多個副本可用。可替換代幣用于可分割的貨幣(大多數ERC-20代幣),對于不需要區分的可堆疊項目,它們也非常有用。
一種代幣稱為不可替換代幣(NFT)。這種結構允許每個代幣都有自己獨特的參數。電子游戲中的寵物龍可以是NFT,并且擁有自己獨特的名稱、權力級別和豐富的游戲歷史。
批量傳輸
使用ERC-1155,可以在一個交易中發送多個代幣——這大大節省了GAS成本,并避免了在單個傳輸中等待每個塊的需要。
使用ERC-1155的項目還可以構建具有相同基本設計的原子交換,允許用戶使用絕對安全的代幣來交換另一種代幣,而不涉及任何中間方。
進一步優化
一些作者進一步的實驗已經導致了更多的優化!
沙箱開發人員羅南·桑福德(Ronan Sandford)能夠在一個塊中生成超過1500個代幣,同時通過他們的ERC-1155實現保留了真正的所有權。
Horizon Games開發人員Phillippe Castonguay使用了一種名為Balance Packing的技術(將16個分辨率較低的代幣存儲在一個ID中),與常規轉賬相比,節省了80-90%的GAS費用。
Phillippe還能夠通過ERC-1155令牌實現超過每秒155資產轉移速度!
經濟數據
ERC-1155多代幣標準的主要特征是在一個智能合約中實例化多個代幣。這意味著“創建”一個新的代幣類型可以像調用一個函數一樣簡單,該函數將一個新ID添加到可用的代幣池中。
相比之下,使用ERC-20和721標準創建一個新的代幣類型意味著編輯代碼并將一個全新的合約部署到以太坊區塊鏈上的一個地址。部署一份合約需要耗費大量的gas(ETH),因為數據存儲在全球共享的區塊鏈上的成本自然很高。大多數ERC-20合約都基于完全相同的代碼,只因此沒有必要編寫其余的代碼。這意味著以太坊的25,000多個節點中的每一個節點都會被冗余代碼弄得亂七八糟,這些代碼將永遠留在那里!
每次啟動新代幣時,還需要通知每個新的ERC-20或ERC-721合約地址的操作開銷。100個新的代幣意味著100個新的合同要看——因為每一個錢包和每一個軟件都必須知道這個代幣的存在。
因此,盡管前兩個標準適用于狹義的用例——不管是單一貨幣還是單一類別的NFT——但絕大多數創作者都將受益于ERC-1155,因為該標準將能夠動態地創建新代幣,并代表一個以上的“類型”,而不會重復相同的合同。
嚴格的規則將使代幣變得更加可靠
ERC-1155代幣標準的一個令人難以置信的特性是需要遵循一組嚴格規則來實現。
ERC-1155代幣是第一種代幣類型,它可以通過簡單地向地址發送代幣來執行確定性智能合約功能。
只要向DEX交換地址發送一個代幣,交換器就可以立即將另一個代幣返回到發送者的地址。類似地,區塊鏈游戲可以在從用戶接收到ERC-1155代幣后立即執行游戲功能。代幣可以被包裝、轉換、制作或托管,而不需要訪問ABI或直接與智能合約交互。
這種功能最初是在ERC-223中提出的,但是這個標準沒有流行起來。ERC-721也實現了“safeTransferFrom”,但是有一個致命的問題,那就是對所有的傳輸都不嚴格要求,這意味著用戶可能會永久地丟失他們的代幣,而合約作者在發送代幣時不能依賴于有保證的執行。
在ERC-1155中嚴格執行此功能的決定意味著智能合約和代幣的可靠網絡現在可以開始構建在此強大功能的基礎上。所有用戶需要做的就是將他們的代幣發送到一個地址,以觸發一個可怕的事件鏈。
元數據
去年對ERC-1155標準的主要更新之一是決定將所有關于代幣的元數據移動到外部JSON文件。這在很大程度上受到了ERC-721元數據擴展的啟發,但是我們進行了一些改進。
不再有遺留元數據
符號: 在ERC-20和ERC-721標準中找,因為這不是虛擬項目/資產的相關數據。這些3個字母的符號通常只用于股票交易和貨幣交易,但當您標記更一般的項目時,它們就沒有那么有用了。
名稱: 也從核心標準中刪除。為什么?在許多用例中,將名稱存儲在區塊鏈上是多余的。相反,現在可以在JSON元數據標準中定義每個代幣的名稱。
ID替換
通過使用替換字符串“_id_”,ERC-1155 協定現在可以指向無限數量的代幣 URI,而無需在鏈上存儲任何額外的數據。這甚至可以用來指向一個網頁服務,該服務為數據庫中的每個代幣動態生成代幣JSON。{id}字符串也可以在JSON本身中用于自動鏈接到每個代幣的圖像。這大大減少了開發人員為大量代幣集合顯示元數據所需的開銷。
本地化
由于代幣信息是以JSON格式定義的,所以現在可以使用{locale}對多種語言進行本地化。錢包和支持多種語言的軟件可以顯示代幣名稱、圖像和任何其他數據的替代版本。
定位
隨著以太坊生態系統的不斷發展,許多dapps依賴于傳統的數據庫和explorer API服務來檢索和分類數據。ERC-1155標準保證智能合與發出的事件日志將提供足夠的數據來創建所有當前代幣余額的準確記錄。數據庫或資源管理器可以偵聽事件,并能夠為合約中的每個ERC-1155代幣提供索引和分類搜索。
智能合約不再需要維護每個代幣ID的索引,而且ID不需要以任何方式連續。
這與枚舉(瀏覽鏈上所有代幣的能力)截然不同,但它帶來了顯著的效率優勢,甚至允許對每個代幣鑄幣、刻錄和傳輸進行完整的標準化記錄。直到今天,這還不可能以標準化的方式實現,這將允許對代幣進行深度數據分析和豐富的代幣探索者等酷炫的生態系統好處。
想象一下,無論分析的是哪個智能合約,您都能夠倒帶并快速向前穿越時間,分析完全不同的ERC-1155代幣的使用模式和生命周期。
代幣所有者將能夠了解更多關于其資產的信息,比如特定的代幣是在什么時候生成的,在未來,可能會開發一些工具,為構建在此技術之上的公司提供有用的見解。
結論
ERC-1155標準是區塊鏈社區一年努力工作的成果。如果您計劃實現ERC-1155,您可以在這里查看整個標準以及每個決策背后的基本原理。
您也可以查看討論歷史訪問原始問題:
要創建自己的ERC-1155代幣合約,Enjin的官方參考實現在GitHub上是開源的:
ERC-1155:智能合約示例實現。通過在github.com上創建一個帳戶,為enjin/erc-1155的開發做出貢獻
您可以使用此代碼作為您自己的智能合約的起點。您還可以考慮使用Enjin平臺,這是為開發人員和非開發人員提供的功能最豐富的區塊鏈開發工具集。
創造者:
以下作者使ERC-1155成為了現實:
· Witek Radomski
· Andrew Cooke
· Eric Binet
· James Therien
· Philippe Castonguay
· Ronan Sandford
這些令人驚嘆的人們都為多代幣標準EIP規范做出了重要的貢獻和改進,我衷心感謝每一位作者的幫助和奉獻,使ERC-1155變得比我們想象的更加強大,更有前途。
最后,我們要感謝令人驚嘆的以太坊社區,并感謝每一個參與他們的反饋,以最終確定新的ERC-1155多代幣標準的人們!
評論
查看更多