与币安智能链生态系统中广泛采用的BEP20标准不同,ERC777标准通常被称为城里的新生儿。一个潜力巨大的孩子。有些人甚至声称ERC777标准是BEP20标准的有效继承者。ERC777标准规范在EIP777(币安智能链改进提案文件中有详尽描述。
在这篇博文中,我们将探讨这些大胆的主张是否合理,并与BEP20标准相比,对ERC777的优势(以及一些缺点)进行深入概述。
假设您希望允许第三方帐户(或合约)使用您的代币。最常见的需求是在使用去中心化交易所智能合约交B代币一键发币时。
此过程中的第一步是你需要通过调用BEP20智能合约上的approve
方法函数来批准转账账户并设置他们有权获得的资金限额。除了用你的资金信任第三方之外,你还需要确保支出限额始终足以满足所需的交易。
ERC777标准通过引入运营商的概念来解决上述问题。像往常一样,运营商是某些具有执行特定任务权限的帐户。在ERC777标准下,有两类运营商:
任意ERC777代币持有者地址可以通过调用authorizeOperator
方法函数授权给一个指定运营商获得权限。与此类似,任意ERC777代币持有者都可以通过调用revokeOperator
方法函数撤运营商地址的授权(包括默认运算符)。
在B代币一键发币的ERC777实现中, 默认运营商是用于部署代币的地址。
利用运营商功能的另一个小的(并且不太明显的)好处是用户不再需要担心交易费Gas价格。现在可以将其委托给运营商。
ERC777挂钩是与转账方和接收方帐户绑定(挂钩)的代码段。实质上,它们是智能合约实例:
tokensToSend
tokensReceived
这两个接口的智能合约的地址实例存储在ERC1820注册表中,与它们“挂钩”的地址配对。
如果转账地址在注册表中具有匹配的IERC777Sender
实例,则在执行交易之前将调用其tokensToSend
函数。如果未找到匹配的实例,则转移交易将照常进行。
如果接收地址在注册表中具有匹配的IERC777Recipient
实例,则在执行交易后将调用其tokensReceived
函数。如果接收地址是普通地址且未找到匹配的实例,则转账将照常进行。但是,如果收件人地址是合约地址,并且未找到匹配的实例,则将取消转账交易。
在下图中,你可以看到“挂钩”转账调用的流程。
因此,挂钩的引入使我们能够增强ERC777代币的转账功能,即使在部署代币之后也是如此。它还提供了取消交易的可能性,如果此交易未满足某些条件。
ERC777的新功能确实带来一些小缺点:
使用B代币一键发币创建你自己的ERC777代币!
如果你已完成本教程的学习,我们建议你按照以下教程进行操作: