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