就在一年前的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多代币标准的人们!
评论
查看更多