ERC 20 协议的产生(优点):
- 定义统一的函数名:名称、发行量、转账函数、转账事件等
- 以便交易所、钱包进行集成
- 所有实现了这些函数的合约都是 ERC20Token
- ERC20 可以表示任何同质的可以交易的内容: 货币、股票、积分、债券、利息...
- 可以用数量来表示的内容 基本上可以ERC20 表示
ERC 20 的缺点
以下是一个遇到很多次的场景:有一天老板过来找你(开发者),最近存币生息很火,我们也做一个合约吧, 用户打币过来给他计算利息, 看起来是一个很简单的需求,你满口答应说好,结果自己一研究发现,使用 ERC20 标准没办法在合约里记录是谁发过来多少币,从而没法计算利息(因为接收者合约并不知道自己接收到ERC20代币)。
ERC20 标准下,可以通过一个变通的办法,采用两个交易组合完成,方法是:第1步:先让用户把要转移的金额用 ERC20 的approve 授权的存币生息合约(这步通常称为解锁),第2步:再次让用户调用存币生息合约的计息函数,计息函数中通过 transferFrom 把代币从用户手里转移的合约内,并开始计息。
同样由于ERC20 标准没有一个转账通知机制,很多ERC20代币误转到合约之后,再也没有办法把币转移出来,已经有大量的ERC20 因为这个原因被锁死。
另外一个问题是ERC20 转账时,无法携带额外的信息,例如:我们有一些客户希望让用户使用 ERC20 代币购买商品,因为转账没法携带额外的信息, 用户的代币转移过来,不知道用户具体要购买哪件商品,从而展加了线下额外的沟通成本。
如何解决 ERC 20 中存在的问题
使用这个ERC777:send(dest, value, data) 解决。
ERC777 使用 send转账时会分别在持有者和接收者地址上使用ERC1820 的getInterfaceImpleme

ERC20协议在区块链应用中广泛使用,但其存在无法记录转账来源、缺乏转账通知和无法携带额外信息等问题。ERC777通过引入send函数和ERC1820接口注册表来解决这些问题,允许监听和自定义转账行为,同时ERC20 Permit允许线下签名授权。然而,直接解决ERC20误转入合约问题需要重载_afterTokenTransfer方法或引入类似ERC721的安全转账机制。
最低0.47元/天 解锁文章
4222






