夏天已经悄然过去,除了是时候制定下第四季度的个人计划之外,回顾一下今年的一些重大事件也是好的,比如,由Jordi Baylina、Jacques Dafflon和Thomas Shababi开发的ERC-777代币标准,该标准旨在代替当前最流行的代币标准ERC-20[1]。Jordi于7月20日参加德国DappCon论坛时表示,ERC-777标准已经基本完成开发,并将于8月份全面发布。
然而,八月已经结束,ERC-777标准的开发团队似乎对于发布这个以太坊区块链上的全新标准缄口不言–或者准备给公众来个惊喜?尽管从7月份开始,GitHub[2]上面就没有出现有关ERC-777的更新信息。
Baylina上周的一篇推文或许可以带给我们一些线索。其团队成员Jacques Dafflon的回复内容更是给了很多人一颗定心丸,尽管我们依旧不清楚该新标准何时将会发布。
Jacques在推文中表示,由于该团队未预料到工作量和反馈量大的问题,且自己之前专注于ERC-777新标准的论文[3]的撰写。导致延误了该新标准的工作,并希望能尽快完成并发布ERC-777标准。推文内容如下:
当下,我们不妨了解这一新标准制定的背景。
为什么需要改变ERC-20这个全球最受欢迎的代币标准?有超过60,000个项目基于此标准而立足–包括资本总额超过45亿美元的EOS,以及号称全球最大的加密货币交易所Binance。要回答这个问题,就有必要比较一下现有标准ERC-20和新标准ERC-777,然后评估一下两个标准的应用风险。
以太坊的成功
虽然比特币被认为是世界上最受欢迎的加密货币,但以太坊不仅是仅次于比特币的加密货币,同时也是促成2016至2017年加密货币市场的繁荣。如果没有以太坊这个平台,就不会出现“to the moon”的说法(寓意币价涨到月球上),也就不会在短短数月内吸引诸多传统投资者和数百万普通人进入加密货币领域,使加密货币不再仅限于作为电脑极客们的娱乐方式。
以太坊区块链的主要优点包括开发应用程序的过程极为简单,且使用智能合约发行代币的过程是也是不费吹灰之力的。现在,创建一个代币(即发行一个新的加密货币),可以在一分钟内完成。这也导致了ICO(首次代币发行)的爆炸式增长。同时,ICO市场发展的另一个重要因素就是使用了统一的代币标准ERC-20。
ERC-20标准
在代币实现标准化之前,以太坊开发者必须为每种代币创建单独的基于Solidity语言的智能合约。事实上,每次都必须创建一种新的、独特的智能合约。每当需要支持一种新的代币时,交易所或钱包的创始人就需要编写一个独特的新代码。市面上出现的代币种类越多,这个过程就越繁琐。此外,这些在独特的智能合约上发行的代币,彼此之间的兼容性也很差。
因此,以太坊开发者们为所有的代币创建了统一的标准ERC-20,其中ERC代表“Ethereum Request for Comment”,即“以太坊征求意见/请求评论”,可以理解为以太坊开发者征求大家意见的协议提案,而20是分配给此提案的编号,该编号是任意选择的。
2015年推出的ERC-20标准彻底改变了加密货币行业,成为了规定哪些函数和事项必须在智能合约中执行的核心指南。新币的发行、交易和兑现从未如此简单。
该标准规定了一个智能合约必须包含的六个强制参数,以实现三个主要功能:
1、设置代币初始分配情况的函数:
totalSupply — 限定了某种代币的最大供应量,当达到这个数量时,该智能合约就会停止发行该代币。
balance0f — 用于获取指定账户(address)的余额的函数。
2、实现代币转移的函数:
transfer –用于将一定数量的代币从原账户转移到新账户的函数
transferFrom –用于实现用户之间代币转移的函数
3、执行管理的函数:
approve –为智能合约检查代币的可用性的函数
allowance –用于确定某个账户是否有足额的代币来完成转账的函数
该标准一经制定,各大交易所和钱包就得以统一代码,从而兼容任何基于ERC-20标准的代币。使用以太坊(ETH)的应用程序也就如雨后春笋般涌现,这也是预料之中的事情。
ERC-20标准面临的挑战
去中心化网络的开发者首先是程序员,然后才是商人。因此,他们在制定决策时,基本总是遵循形式逻辑。例如,有些开发者可能对“51%的攻击”不以为然,因为他们觉得代币本身会贬值,或者认为黑客攻击的成本要远高于从中获得的利润。但似乎黑客攻击的发起者有着完全不同的逻辑思维,单单在本年度就已经发生了很多次黑客攻击。
而且,之前开发者认为,代币的功能仅限于ICO阶段,除此之外毫无用处。但事实并非如此——有些团队,甚至是那些不会编程的团队,已经开始探索区块链的更多可能性了。例如,已经出现了一些用于消遣的代币,也就是俗称的无用币(Useless Token)。
ERC-20标准支持的其他自定义功能甚至可能损害用户的资金安全。例如,一些开发者通过同时执行“approve”函数和“transferFrom”函数,就可以对交易账户进行重复扣费(recharge)。
这笔被扣走的资金会从发送方(sender)的账户中被转走,但又不会记入其交易余额(exchange balance)中,因为接收方(recipient)的智能合约存款的功能并没有被确定。问题在于,以太坊开发者没有提供这种转移资金的选择,也没有禁止这种转移操作,且区块链最初并不支持合约的自动识别交易的功能。其结果是,加密货币持有者们损失了数百万美元,这些资金永远消失在区块链网络中–如果未完成的交易没有被发送方立即取消,那么资金就会消失。
ERC-20智能合约代币转移漏洞
安全审计员Dexaran注意到了ERC-20标准的这种缺陷,随后开发了ERC-223标准并增加了“tokenFallback”函数–如果“transferFrom”函数未被执行,合约就会启动“tokenFallback”函数。
此外,在Solidity语言更新之后,德国的Solidity语言开发者Lucas Cremer于今年6月份检测到了ERC-20标准的另一个漏洞[4]。
他研究的结果表明,很大一部分ERC-20代币–作者称之为“bad taokens(拙劣币)”–在transfer函数的返回值(return values)方面有着不一样的呈现方式:这些代币的合约transfer函数不会返回任何内容。这影响到了很多在Binance和OmiseGo等交易平台上交易的代币。Corner认为,人们需要关注的是这些受影响的代币资产可能会开始以一种不可预计的方式运行,同时警告需要“尽快”修复这一漏洞。
ERC-777:对ERC-20缺陷的重击
由于数以万计的代币、交易所和钱包都与ERC-20标准紧密相关,而该标准的缺陷又是积重难返。因此,以太坊开发者们早已决定发布一种全新的代币标准ERC-777。
针对ERC-777的EIP(Ethereum Improvement Proposals,即以太坊改进提案)已于2017年11月20日公布,并得到了以太坊社区的普遍认可。但如果要完全发挥该新标准的作用,还需要一个辅助的ERC-820协议,为创建智能合约的统一记录表确定规则。通过这个中心化的记录表,ERC-20的主要问题,即无法判断智能合约执行的函数,将得以解决。
那ERC-820是如何运行的?任何会描述其函数的智能合约都可以一次性进行登记,且执行交易时,区块链能够应用该记录表来确认操作是否可行。如果用户试图对代币执行一个无效的操作,那这些代币将依旧留存在账户中,而不会凭空消失。
在柏林DappCon会议上,Jodi Baylina和Jacques Dafflon对ERC-777标准的细节进行了阐述,表示该新标准通过调用“hook”函数来通知和允许智能合约账户对代币借贷的控制。具体来说,ERC-777界定了两个hook函数:“tokensToSend”(告知代币的发送)和“tokensReceived”(告知代币的接收)。这些函数与ERC-820协同运行,从而提供ERC-20所不具备的自动识别功能。因此,就可以检测某种代币是否拥有具体的特征,以便执行或拒绝相关操作。这使得智能合约变得更加智能。
ERC-777标准将解决接收方代币丢失的问题,即当代币被发送至某个不支持接收或无法管理资产的智能合约中时,这些代币也不会丢失。这一问题早已造成以太坊社区丢失了价值数百万美元的代币,其中很大一部分代币似乎被永远困在一些顶级的ICO项目合约中。下图展示了在一些项目的合约中困住的代币价值:
防止代币因不正确的交易操作而带来的代币丢失,并不知这个新标准的唯一创新之处,因为该新标准致力于使区块链得以进一步发展。
例如,ERC-777的创建者们首次创建了 “trusted operator(可信运算符)” 函数,该函数可以代替持有者转移或者销毁代币。这是通过执行 “authorizeOperator” 函数来实现的,且可以用来完成快速、自动的以太币(ETH)支付。
此外,该新标准还允许用户通过 “ITokenRecipient” 函数在“白名单”和“黑名单”中查看接收账户/地址是否可用。同时,上文提到的“hook”函数可以根据情况来监测代币的动态,这使用户可以屏蔽某些账户地址,也可以执行更多其他的操作–包括代币发送者和接收者对交易过程的干预。
如果你想了解更多有关ERC-777的细节内容,可以在这个以太坊GitHub上进行查阅:https://eips.ethereum.org/EIPS/eip-777。
ERC-20的谢幕
ERC-777标准兼容ERC-20,之前基于ERC-20标准的任何项目都可以毫无障碍地转移到新标准上。可以想象,当前这些使用基于旧标准的代币的交易所和钱包,也将欣然接受ERC-777标准。在实践中,在新标准上发行代币的程序更加简化,这可能又将带来加密货币行业的相关活动的激增,就像2016至2017年由旧标准引发的热潮一样。
此外,新标准也将显著增强以太坊区块链系统的功能,使之受到更多开发者的青睐。开发者对这一新标准的激烈讨论便很好地说明了这一点。
ERC-777标准还包含了完全重新设计的函数和逻辑,这将避免在执行智能合约时,与其他的代币标准发送交叉或产生混淆。
至于ERC-777标准的缺点,倒是有一个:它依赖于一个中心化的智能合约记录表——这与区块链的去中心化理念不太相符。要确保这个记录表的安全,还需以太坊开发者们采取其他额外的措施。
也许一个全新的、有发展前景的代币标准将给以太坊网络的发展带来新的动力,尤其将对以太币(ETH)自7月份以来价格一路走低的情况得以改善。在新标准正式发布之前,或许我们唯一能做的就是静候以太坊团队的佳音,他们定会不负众望的。
作者:Julia Magas
编译:Hulin
原文链接:https://cointelegraph.com/news/summer-is-ending-will-ethereums-erc-20-pass-the-governance-to-erc-777
参考链接:
[1]https://cointelegraph.com/explained/erc-20-tokens-explained
[2]https://github.com/jacquesd/ERC777
[3]https://github.com/jacquesd/master-thesis/blob/master-pdf/JacquesDafflon-masterthesis.pdf
[4]https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca
本文转载自微信公众平台Unitimes,查看原文