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