文章前言
在经典的ERC-20场景中,如果用户想要授权给第三方账户或者智能合约进行转账操作,那么需要通过两个事务来完成整个转账的操作,在这里需要注意的是在授权是需要指定对应的amount数量,那么当每次进行授权转账时都需要进行一次查询或者让A用户再次授权给B用户:
- A用户授权B用户可以操作A用户amount数量的token
- B用户获得A用户的授权之后调用转账函数进行转账
ERC-777标准引入了运营商的概念来解决授权给第三方账户或智能合约进行转账操作的问题,在ERC-777中运营商有两种类型:
- 常规运营商:一个地址,允许代表另一个地址发送和记录代币
- 默认运营商:一个地址,允许所有代币持有者发送和记录代币
优势对比
ERC-777与ERC-20对比具有以下优势:
- 采用接口send(dest,value,data)发送代币,先前兼容
- 任何合约都可以定义收到代币时触发的tokensReceived事件,避免ERC20代币中的双重调用问题
- 合约和常规地址可以通过注册一个tokensToSend或tokensReceivedFunction函数来控制或拒绝发送或接收的代币,避免ERC20代币中存在的代币卡死问题
- 代币持有者可以授权或回收管理其代币的操作员权限,这些操作员通常是交易所合约或自动收费系统中的支付处