最近EVM宇宙迎来一个新消息,EIP-3525通过了草稿,已经成为以太智能合约的标准格式(ERC3525)。
过去我们熟悉的ERC721,又称为非同质化代币,每一个代币之间都是独特的,每一个tokenID,也会只有一个,如果用它来发行NFT,每个NFT只会有一个。
另外还有一种叫ERC1155,又叫多通证非同质化代币,每一个tokenID可以指定数量,就像是游戏里面某一把宝剑可以打造20把,如果宝剑是一个NFT,过去通常用ERC1155来实现。
艺术作品也不少用ERC1155来实现,你可以把它当做是复本发行的概念,其实在实体的摄影艺术品上也有类似的概念,同一张照片只冲洗出100张纸质照片,你可以把这100张都视为是一样的作品。
但是不管在游戏还是实体上都有一个问题不好解决,例如这20把宝剑虽然是一样的,但是他可以进阶成别的宝剑,又或者是有一张唱片虽然发行了20万张,但有一张是被歌手在某个重要的演唱会上签过名了。
对ERC1155来说,这20把宝剑都是一样的,你没法独立升级进阶成别的宝剑,就像那20万张唱片,在ERC1155的世界都是一样的。
这时候ERC3525就能发挥他的特性了,ERC3525里面有一个SOLT的设计,解决了这个问题。
===专业术语警告,以下章节包含编程概念,请讨厌编程的宝宝们忍耐一下===
首先,虽然ERC3525听起来是在ERC1155的特性上加上功能,但实际上他是ERC721的延伸。
所以在使用ERC3525时,必须按照ERC721的标准为合约的开发基础,兼容ERC165跟ERC721。
ERC721每一个代币的资料只有ID
ERC1155每一个代币的资料有「ID」跟「Value(数量)」
ERC3525每一个代币的资料除了ID跟Value外还多了SOLT,称之为Semi-Fungible Token,我们将在本文中通称它为SFT
多了SOLT就能够做到这样的功能?这里有个智能合约的思维可以分享一下,在早期还没有ERC1155甚至没有ERC721的时候,就有蛮多项目尝试着用ERC20作为发行授权使用,现在我们习惯了有NFT这样的协议,或许会感到不可思议,但早期还真的有人这样搞过,方法很简单,例如数位唱片发行1万份,就直接发一个限量1万颗的代币就好了。
如果发首歌,就布署两个合约,十首歌就10个合约…..
但随着EVM的普及跟ETH高涨的价格,布署合约的成本越来越高,再加上后来ERC721的出现,这种模式就被舍弃了。
也就是说ERC3525还没出现出现,依然可以解决多通证NFT无法单一提取的问题,那就是新铸造一个ID,然后把旧ID的数量扣掉。
这也就是ERC3525的雏形之一,他引用了ERC721每个代币都是独立的功能,另加上SOLT这个栏位,也就是说如果同样地SOLT,他将视为同一个类型的SFT,并且还对每个代币赋予Value(数量的功能)。
在ERC3525的设计下,只要SOLT是一样的,他们之间可以转移数量,例如:
ID:1,SOLT:XXX剑,VALUE:10
ID:2,SOLT:XXX剑,VALUE:10
这代表XXX剑有20把,这个数量可以是ID转给ID,或是ID转给钱包地址,当他采用ID转钱包时,是直接应用ERC721转移的方法,不需要有什么特别的改动。
但只是这样是不够的,ERC721或是ERC1155中,可以针对某个代币去授权别的合约进行操作,在ERC3525的设计中SOLT是辨识代币的重要元素,自然就会有setApprovalForSlot这样针对SOLT的设计
当你ID转账到ID时,他只有ID后便数量的转移,也就是说以下这两个ID的数量是可以转移的
ID:3,SOLT:YYY剑,VALUE:10
ID:4,SOLT:ZZZ剑,VALUE:10
这也解释了为何可以抽取部分的数量来修正,有点像是下列这样
ID:1,SOLT:YYY剑,VALUE:10
ID:2,SOLT:天降神兵之终极YYY剑,VALUE:10
这是不是很像YYY剑被升级成天降神兵之终极YYY剑呢?
在转账的时候,ID 到 ID比较容易理解,如果收账的ID不存在,就会失败,但是从ID转到地址比较特别,他会先判断收账的地址有没有具备相同合约及SOLT的代币,如果没有,就创建一个代币来接收数量。
如果接收方式一个合约地址,会检查onERC3525Received这个函数,并用这个函数来检查接收方合约是否符合ERC165的标准。
就概念来说,他更像是一个ERC721,但赋予ERC20的数量转账功能,并加上不同SOLT之间也可以转移数量来达到抽取特定数量代币来升级的功能。
ERC3525的代币辨识重点在于SOLT,而不是ID,ID更像是一个控管代币的索引而已,这一点跟ERC721有很大的不同。
ERC3525的设计上虽然用在游戏或是对收藏品落款之类很有帮助,但更大的应用面是在金融产品上,因为ERC3525最直接解决了NFT原本的不可分割性,金融商品有所谓「独立所有权」的需求,但又需要转换跟切割,用个简单的例子,定期存款到期可不可以部分取回?如果是用ERC721来制定,那就只能全部取回,部分取回就得要重新铸造一个新的NFT,但ERC3525却可以轻松做到部分取回,余额开新期定存,或是不取回,利息存回生息。
在真实世界中,我们可以用新的纸本合约完成这件事情,但在智能合约里,虽然ERC20,721,1155也可以用其他方式来解决需求,但却变得相当麻烦,ERC3525的出现则是像健达出奇蛋一样,多个愿望一次满足。
从大家常见的NFT头像来说明,以前一个ERC721的NFT,只能有一个拥有者,但ERC3525下的NFT可以将所有权切割成多分,甚至每一个NFT的个别持有者,可以对自己占有部分的NFT进行DAO投票,弹性变化远远大过于现有的协议。
值得一提的是ERC3525提案者是华人团队,经过一年半的努力,终于让ERC3525成为EVM的标准,这个改进将会大幅度提高EVM的应用弹性,降低很多开发应用时的成本,让万物上链又更进一步。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除