由Jordi Baylina、Jacques Dafflon和Thomas Shababi创造的ERC777可能会取代ERC20成为全新的以太坊代币标准。
有关ERC777的EIP(以太坊改进协议)是在去年11月20日被提出的,此后一直在寻求社区的意见。上周,Baylina和Dafflon在DappCon大会上谈到了这个新的代币标准,他们对ERC777的优势和功能进行了全面的分析。Baylina透露,这个代币标准即将进入最后的开发阶段,预计能够在今年8月宣告完成。不过,最终的决定依然在社区手中。一旦ERC777开发完成,开发者可以自由选择是否采用这一标准。
ERC777的开发者表示,与ERC20相比,这种全新的代币标准是可定制的,能够实现更快速且更顺畅的交易。同时它还是和ERC20向后兼容的,这一点能够解决开发者的后顾之忧。全新的以太坊代币标准不在少数,但ERC777似乎更受社区的喜爱。
与合约的直观交互
ERC777能够部署“send”函数(和以太币的运作方式类似)进行直接交易以及与EDCC(或者智能合约)的交易。而ERC20只允许“transfer”函数,需要通过两笔交易进行代币的交易,第一笔用于请求交易获批,第二笔才是通过代币合约真正执行交易。
相比之下,ERC777的运作方式完全不同。通过“send”函数,ERC777代币能够调用通用的无主且受信的合约ERC820,ERC820本质上是一个信息记录表,通过这个信息表,代币能够判断与其交互的合约是否能够兼容。如果这是一个不兼容的合约或者没有记录在案的合约,交易就会被取消。这时候,代币发送方就要采用ERC20的“transfer”函数。不过,任意合约和地址都只需要在ERC820合约进行一次登记——这项工作任何人都能完成,最终的信息将会完全公开。
除了优化交易流程之外,这种“send”函数能够让ERC20代币持有者直接向智能合约转移代币,而无需提前获得批准。
Hook函数
与ERC20相比,ERC777的另一个优势就是“hook”。Baylina解释说,“hook函数能够在转账中被调用。”换句话说,hook能够说明一笔交易的参数,在交易完成前后将通知发送给交易双方。
除此之外,ERC777代币合约还能控制某代币在特定交易环境中的行为或者允许交易双方干预交易过程。举个例子,hook函数可以在交易发送之前提醒发送方,允许其取消交易。同样的,这种代币合约还能屏蔽特定的地址或者代币类型。
Hook函数还可以指定代币的处理方式。Baylina就给出了一个例子,如何通过这个功能让每笔交易的固定部分用作慈善事业。
这些hook函数依然需要依靠ERC820这个登记表。举个例子,如果某代币合约的功能是拒绝具备某函数的代币,那么这个代币合约就会调用ERC820来评估其是否真的具备这类函数。同样的,如果某代币不在这个登记表上,交易就会被取消,并且转向ERC20的交易模式。这样一来,ERC777就具备了ERC20的所有功能,即使其普及度仍然不高,也能够具备完善的运作功能。由于这种向后兼容性,开发者采用这种新的代币标准所需承担的风险几乎为零。
更顺畅的运作
ERC777和ERC20的另一个重大差异就在于“操作点”(operator)的使用。ERC777提案指出:
一个operator是一个地址,其能够代表另一个地址发送并且销毁代币。
代币持有者能够指定operator,它可以是合约或者常规的地址。为防止安全风险,代币持有者能够随时停止operator的运作。
这样就能实现一系列不同的功能,包括自动支付到合约或者一个受信的地址。Baylina说,你可以进行账单的预计约支付,或者将代币从冷钱包转移到热钱包。
这个代币标准还有“默认操作点”(default operator)的功能,能够帮助慈善机构或金融服务供应商分配代币持有者的资产,比如让代币持有者的特定交易触发捐赠功能。
Baylina说,一个default operator可以自动收集gas成本,减轻交易发送方的负担。代币持有者能够随时撤销default operator操作。然而,我们很难确保那些新人对这一功能是完全了解并有能力使用的,这样可能构成安全和道德问题。