提到以太坊,我们脑海中出现的第一个关键词也许就是“gas费”。如今各大区块链项目主网上线,所用的宣传方向往往也离不开gas这个单词。居高不下的gas费一直是区块链交易,尤其是游走于币圈各个领域的投资者的一个痛点。随着区块链项目的增多以及市场规模的扩大,区块链上的交易数目以及平均交易的Gas消耗也随着增加。Gasnow中Gas价格历史数据
近期,随着市场的起起落落以及主网升级、Layer2解决方案等因素,以以太坊为首的区块链网络gas费持续下降。那么除了以上因素以外,是否可以从代码或者智能合约设计角度去减少完成特定功能必须的交易数目,从而优化项目以及整个区块链的交易成本和环境呢?今天本文要为大家介绍的就是这一主题:对比可兼容最常见的代币协议ERC20的几种协议,包括ERC777, ERC1363以及ERC2612。
本文将通过分析几种协议中代币转账操作所需要交易数目,帮助大家发现其中的最优选择!
ERC20
当前完成ERC20协议代币的转账操作需要分两步:approve()以及transfer()/tranferFrom()。
因此必须分成两个交易并支付两份Gas: 即第一个交易完成授权,第二个交易完成转账。 为了解决“两步走”的问题,当前主要提案有ERC777, ERC1363以及ERC2612,其中前两者已经完善,ERC2612仍在优化阶段。ERC20中主要的参与者为代币发送者sender以及代币接收者receiver。
下文中将以Alice为代币发送者sender,Bob为代币接收者receiver为例,为大家直观展示操作简要流程图。
ERC20代币转账操作简要流程图
ERC777
ERC777尝试引入operator的概念来规避掉“两步走”的问题。operator在被sender授权之后,在该ERC777代币合约中,sender可通过operator将代币发送给receiver。在发送代币的交易中,sender无需支付gas,发送代币交易的gas会由operator支付。
ERC777代币转账操作简要流程图
ERC1363
ERC1363引入启发自ERC20中approve(), transfer()和tranferFrom()的高级函数:approveAndCall(),transfer