什么是ERC
ERC 全称是 Ethereum Request for Comment, 它表示以太坊开发者提交的一系列协议提按(参见 ERC | Ethereum Improvement Proposals)。ERC20(常用写法 ERC-20)指的是序号为20的ERC协议标准,协议细节参考:EIP-20: Token Standard (ethereum.org)。
ERC20
以我们最常用的 ERC20代币:USDT 为例, 我们可以通过钱包软件(小狐狸扩展钱包或TokenPocket钱包)给别人发送一定数量的USDT, 这是因为USDT 实现了 ERC20标准中的 transfer 方法,给别人发送 USDT 本质是在与 USDT 合约交互,调用了 USDT合约中的 transfer 方法。同时每个地址的 USDT余额也记录在了这个合约里,所谓转账,就是改动这个合约里的转出者和接收者的余额。
有时,我们不仅需要通过钱包进行 ERC20 转账,也需要支持让其他合约转走我们账户里的ERC20代币,这时 ERC20标准中的 approve 方法就起作用了。 approve 的作用是,告诉你的ERC20代币合约,我授权某某地址可以转账我某某数量个此代币。授权好之后,某某地址就可以在任意时间通过调用 ERC20标准中的 transferFrom 方法转走你的代币。这里有一个风险警告,任何时间都不要给任何地址授权无上限的额度,这样等于把你家保险柜的钥匙送给了人家;而且要定期检查并取消授权,保护自己资金不被盗。
我们要说一个代币是ERC20代币或兼容ERC20标准,主要看它的合约代码里面是否按标准实现了这几个方法:
name 代币名称symbol 代币符号decimals 精度totalSupply 代币总供应量balanceOf 查询某个地址代币余额tranfer 直接转账approve 授权allowance 授权额度查询transferFrom 划转他人账户ERC20代币Transfer 转账事件Approval 额度授权事件可以看出来,ERC20标准还是比较简单的。
ERC721
我们都知道,我的 1USDT和你的 1USDT 是没有区别的,大家都能接受他们的互换,这个特性叫做同质化,即本质相同,没有独特性。NFT 是啥? 它全称是 Non-fungible Token ,意味非同质化代币,见名之义,很好理解。目前主流的 NFT标准 有两类: ERC721 和 ERC1155 。
ERC721 标准需要实现如下方法,参考 EIP-721: Non-Fungible Token Standard (ethereum.org)
name 这组NFT的名字,类似于ERC20symbol 这组NFT的符号, 类似于ERC20tokenURI 这组NFT中具体某个NFT的URIbalanceOf 查询某个地址拥有这组NFT中的多少个 ,类似于ERC20approve 授权某个地址可以转走某个NFTgetApproved 查询某个NFT授权给了哪个地址safeTransferFrom 转账 ,所谓安全转账,只是多了一道检查,检查接收者如果为合约是否实现了接收接口transferFrom 转账setApprovalForAll 添加 *** 作员,管理你所拥有的NFTisApprovedForAll 检查某个地址是否为另一个地址的 *** 作员ownerOf 查询某个NFT 的所有者Transfer 转账事件,但要指定要转的NFT 的 tokenId, 因为 ERC721标准中的每个NFT代币都有唯一IDApproval 授权事件ApprovalForAll 添加 *** 作员事件请注意:谁可以转走你的 ERC721 NFT: 你、你授权到的地址、你设置的 *** 作员
ERC1155
ERC1155 标准需要实现如下方法,参考 EIP-1155: Multi Token Standard (ethereum.org)
uri 返回某个NFT的URIbalanceOf 查询某个地址某类NFT的数量balanceOfBatch 批量查询某个地址某类NFT数量setApprovalForAll 添加 *** 作员,管理你所拥有的NFTisApprovedForAll 检查某个地址是否为另一个地址的 *** 作员safeTransferFrom 转账safeBatchTransferFrom 批量转账,同时转多种NFT请注意:谁可以转走你的 ERC1155 NFT: 你、你设置的 *** 作员
ERC1155 标准中不支持授权某个地址转移指定的某个代币,ERC1155 中的代币的性质是可以变化的,当某个代币总数量为1时,这个就是非同质化的,当它的数量大于1时,又变成了同质化的。这一组代币中,既有同质化的也有非同质化的,非同质化的也可能变成同质化的,这一切取决 mint 铸造方法如何实现。因此,当你决定要投资 ERC1155 资产时一定要谨慎,要阅读它的合约源代码,不然你以为某个 ERC1155代币 是独一无二的,结果第二天项目方就给你 mint 出上万个,让你血本无归。
结尾
综上,我个人感觉还是 ERC721 标准的NFT 比较可靠, ERC1155 可变性太强。有人说,在开发游戏的时候既需要NFT, 又需要ERC20,此时选择ERC1155 最合适,我不敢苟同,因为 ERC1155 作为 ERC20 使用时,并不能在各大 SWAP 里交易,作为 NFT 时,又具有变成同质化的风险。
感谢阅读,点击查看更多博客内容
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)