引言

在合约盛行的年代,各式各样的协议应开发者需求而生,今天我们讨论一个潜力巨大的合约协议——ERC777。

ERC777介绍

ERC-777代币来自最初的EIP(以太坊改进建议)——https://eips.ethereum.org/EIPS/eip-777,由Jacques Dafflon、Jordi Baylina和Thomas Shababi编写。名称中的777实际上没有任何意义,只是由于 githubissues的当前索引生成。这个提议的最初动机是提供比当前ERC-20规范具有更少摩擦的事务。如果您在该领域工作的时间足够长,您就会知道维护自己钥匙和钱包的个人之间的交易很容易。您还知道,一旦您偏离了这个简单的用例,事情就会变得更加困难。有些人甚至声称ERC777标准是ERC20标准的有效继承者。ERC777标准规范在 EIP777(以太坊改进提案)文件中有详尽描述。

ERC777应用场景

这里先讨论ERC777适合哪些运营场景,以便读者有大致概念,至于设计细节优缺点,我们后文讨论。

天然气(GAS)消费解决方案

在交易所或dApp上使用钱包时,一个常见的问题是支付交易的天然气费。用户不希望或不需要关心是哪个块阻止了他们的事务,只要它是合理的速度就行了。使用“运营商”可以让您作为dApp或交易所所有者来管理消费成本,以维护用户体验。

所有权与支出

ERC20标准的优点之一是有很多代币与之兼容。这为它的开发和用户采用提供了一个很好的生态系统基础。然而,当您拥有以太坊钱包时,每个地址构成一个具有唯一公钥/私钥的帐户,如果您在一个交易所拥有数千名用户,但是您没有该用户资金的私钥,您如何提供结算呢?运营商将是一个很好的用例,因为它并不真正构成所有权,但将允许您为交易结算转移资金。需要注意的是,地址可以在任何时候添加/删除运营商,所以这是一件棘手的事情。

ERC777解决了哪些ERC20的问题?

ERC20的优缺点我们在后文有详细讨论,这里了解过合约的也都对于ERC20有基本概念略过。

假设您希望允许第三方帐户(或合约)使用您的代币。最常见的需求是在使用去中心化交易所智能合约交易代币时。

此过程中的第一步是你需要通过调用ERC20智能合约上的approve方法函数来批准转账账户并设置他们有权获得的资金限额。除了用你的资金信任第三方之外,你还需要确保支出限额始终足以满足所需的交易。

ERC-777标准希望通过引入运营商的概念来解决第三方支出问题。在服务体系结构中,运营商是一个众所周知的概念,因为它们是具有执行特定任务的特定权限帐户。

ERC777运营商

ERC777标准通过引入运营商的概念来解决上述问题。像往常一样,运营商是某些具有执行特定任务权限的帐户。在ERC777标准下,有两类运营商:

1.默认运营商

2.指定运营商

一个指定运营商是允许代表另一个地址发送和销毁代币的地址。 一个默认运营商是允许代表所有代币持有者发送和销毁代币的地址。

任意ERC777代币持有者地址可以通过调用authorizeOperator方法函数授权给一个指定运营商获得权限。与此类似,任意ERC777代币持有者都可以通过调用revokeOperator方法函数撤运营商地址的授权(包括默认运算符)。

在易代币的ERC777实现中, 默认运营商是用于部署代币的地址。

利用运营商功能的另一个小的(并且不太明显的)好处是用户不再需要担心交易费Gas价格。现在可以将其委托给运营商。

ERC777挂钩 - 一个额外的安全机制

ERC777挂钩是与转账方和接收方帐户绑定(挂钩)的代码段。实质上,它们是智能合约实例:

  1. IERC777Sender接口有一个函数tokensToSend
  2. IERC777Recipient接口有一个函数tokensReceived

这两个接口的智能合约的地址实例存储在ERC1820注册表中,与它们“挂钩”的地址配对。

如果转账地址在注册表中具有匹配的IERC777Sender实例,则在执行交易之前将调用其tokensToSend函数。如果未找到匹配的实例,则转移交易将照常进行。

如果接收地址在注册表中具有匹配的IERC777Recipient实例,则在执行交易后将调用其tokensReceived函数。如果接收地址是普通地址且未找到匹配的实例,则转账将照常进行。但是,如果收件人地址是合约地址,并且未找到匹配的实例,则将取消转账交易

在下图中,你可以看到“挂钩”转账调用的流程。

因此,挂钩的引入使我们能够增强ERC777代币的转账功能,即使在部署代币之后也是如此。它还提供了取消交易的可能性,如果此交易未满足某些条件。

ERC20和ERC777

ERC20最牛逼的地方在于它提供了一键发币的功能,并且允许钱包、交易所和其他智能合约以一种便捷的方式对接各种代币。(几乎所有支持以太币的钱包,包括Jaxx、MEW、imToken等,都支持 erc-20的代币)。

ERC20的缺陷

虽然ERC20优势很大,也凭借这些优势实现了"垄断",但它也有一些重大缺陷,只不过人们暂时找不到更好的协议来替代它。

当ERC20代币钱包用户向钱包用户发送token时,不会出现问题;但当钱包用户向智能合约发送token时,这些token会永远消失。如果用户不知道这一点,出现操作失误,将会造成token的丢失。

ERC20里有两种操作代币转账的方法,分别是针对账户和智能合约地址。我觉得这里可以理解成个人账户,和一个有智能合约代码的"对公账户":

1.从你的账户把token发到别人的账户,用"Transfer"方法。

2.从你的账户把token发到一个智能合约地址,需要连续调用两个方法:"approve "和"transferFrom"。也就是两步:

a. 授权(approve):我允许这个智能合约账户来转我的token

b. 转币(Transfer):从我的账户转xxx token过去

这看起来没什么问题,但如果有人在操作的时候,不小心在一个"私对公"的转账功能里面,错用了"Transfer"呢?下面的错误就会发生:

举个例子,假设A把代币从钱包转到B智能合约,假设A转代币的时候错用了Transfer,结果就是A的余额减少了,而B那边其实收到了币,但由于使用了错误的转账方法,没有显示到账。

ERC777的优势

在ERC20之后,提出过很多新的提案,来试图改进它,如ERC223、ERC677。但是它们要么会出现新的重大漏洞,要么只是略对ERC作了修改,并无实质上的创新。直到ERC777的出现,才看到了新时代来临的曙光,ERC777标准将允许代币持有者获得更多的控制权和更容易的交易。

降费提速:在ERC777标准中,一些高级交易——比如在去中心化交易合约中进行代币兑换——能够在一次交易中完成,而不是像过去那样分成两笔交易才能完成,这样的话,不仅代币兑换成本大幅降低(更便宜),而且兑换速度也能变得更快。

向后兼容:ERC777兼容与ERC20兼容的所有应用程序,包括EtherDelta,IDEX,0x等。它具有ERC20所有的功能,同时还有附加功能

避免代币丢失:ERC777相对于ERC20的另一个优势是,防止以太币生态系统中不必要的加密货币损失。因为与ERC777兼容的地址能够拒绝某些特定类型的Token传入事件,例如来自黑名单地址的Token传入事件。

支持发送数据:ERC777可以像以太坊那样发送交易数据,调用智能合约的功能,使得可以使用超出以太坊本地可定制容量的Token。

ERC777的缺点

ERC777的新功能确实带来一些小缺点:

  1. 由于它使用挂钩,转账交易费用略高
  2. 持有代币需更谨慎的审查,因为你必须信任你选择的运营商

使用易代币创建你自己的ERC777代币!

ERC-777 代币合约的功能

ERC-777 代币合约具有很多功能,可以让用户查找账户余额,并且在不同条件下将代币从一个账户转到另一个账户上。这些函数的详情如下。

totalSupply()函数说明了所有地址持有的代币总量。如果有新的代币被铸造出来,这个值就会增加,如果已有的代币被销毁,这个值就会减少。

balanceOf() 函数说明了特定地址所持有的代币数量。要注意的是,任何人都可以询问任意地址的余额,因为区块链上的所有数据都是公开的。

send()函数将一定数量的代币从信息发送方的地址转到另一个地址上。相比于 ERC-20 代币,ERC-777 代币的发送功能更完善,详情见后文。

burn() 函数会销毁信息发送方所持有的一部分代币。相比于 ERC-20 代币,ERC-777 代币的销毁功能更完善,详情见后文。

authorizeOperator() 函数允许消息发送方将自己的代币授权给另一个地址(译者注:即给运营者授权)。

revokeOperator() 函数可以将撤销现有运营者控制消息发送方代币的权限。

isOperatorFor() 说明了某个地址是否是某个代币持有者的运营者。

只要发送方拥有某个账户的运营者权限,就可以通过 operatorSend() 函数将一定数量的代币从那个账户发送至另一个账户。

defaultOperators()函数提供了一个代币运营者合约列表,列表中的运营者均已得到所有代币的全部权限;关于这个功能,可以参见下文的 “代币运营者合约” 一节。

本文对ERC777合约已做较为详细的讲解,详解 ERC-777 代币合约的发送功能后面我们用一篇文章讲解。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表CSDN网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。

深入浅出ERC777合约相关推荐

  1. 以太坊智能合约Demo

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战demo示例快速入门,用demo例 ...

  2. 智能合约开发solidity编程语言实例

    智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ...

  3. ERC-777 和风险缓解

    ERC-777 和风险缓解 代币是其区块链原生的数字资产,为了提供交互性.可用性和统一性,引入了代币标准,创建代币的最广泛使用的标准ERC20.ERC-20 和 ERC-777中,它们都是以太坊区块链 ...

  4. 深入浅出谈以太坊智能合约

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 1什么是合约? 合约是代码(它的功能)和数据(它的状态)的集合,存在于以太坊区块链的特定地址. 合约账户能够在彼此之间传 ...

  5. 比特币脚本及交易分析 - 智能合约雏形

    最新内容会更新在主站深入浅出区块链社区 原文链接:比特币脚本及交易分析 - 智能合约雏形 大家都有转过账,每笔交易是这样的:张三账上减¥200,李四账上加¥200. 在比特币区块链中,交易不是这么简单 ...

  6. 智能合约开发环境搭建及Hello World合约

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...

  7. 智能合约语言 Solidity 教程系列9 - 错误处理

    这是Solidity教程系列文章第9篇介绍Solidity 错误处理. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文 ...

  8. 智能合约语言 Solidity 教程系列8 - Solidity API

    这是Solidity教程系列文章第8篇介绍Solidity API,它们主要表现为内置的特殊的变量及函数,存在于全局命名空间里. <!-- more --> 写在前面 Solidity 是 ...

  9. 美链BEC合约漏洞技术分析 1

    这两天币圈链圈被美链BEC智能合约的漏洞导致代币价值几乎归零的事件刷遍朋友圈.这篇文章就来分析下BEC智能合约的漏洞 <!-- more --> 漏洞攻击交易 我们先来还原下攻击交易,这个 ...

  10. BSN智能合约开发培训-CITA(三)

    1 智能合约的定义 1994年,计算机科学家和密码学家 Nick Szabo 首次提出"智能合约"概念.它早于区块链概念的诞生.Szabo 描述了什么是"以数字形式指定的 ...

最新文章

  1. Android之9图的制作
  2. 河南版权登记,给自己的“孩子”一个身份证
  3. HDU - 3829 Cat VS Dog(最大独立集-二分图最大匹配)
  4. 用户sa 登陆失败 SQLServer 错误18456----解决方法
  5. 微人事项目实战的数据库脚本_EMP微前端实战之cocos2d线上项目
  6. Nvidia GPU驱动与CUDA、Ubuntu内核兼容性问题的解决日志
  7. 对话罗伟:5G背景下 物联网领域最大挑战在于商业模式
  8. JNA调用DLL函数遇到的几个问题
  9. 笔记《Hbase 权威指南》
  10. mysql嵌套查询实例_MySQL嵌套查询实例详解_MySQL
  11. QQ连连看6.0 逆向分析
  12. 信息系统集成监理费收取标准_信息工程监理取费参考标准.doc
  13. 电脑怎么录制玩王者荣耀的过程
  14. Error: Cound not create the Java Virtual Machine. Error: A fatal exception has occurred. Program wil
  15. python 矩阵特征值分解_特征值分解和奇异值分解
  16. 智能园区中的身份识别的原理是什么?
  17. 面向对象:继承(经典类新式类继承原理、属性查找)、派生
  18. 感性女生和理性男生的区别
  19. 磁力链接方式下载完全攻略
  20. 计算机网络—CSMA/CD协议

热门文章

  1. 徕卡 sl android app,相机入魔 徕卡SL DPReview测评结论
  2. 泛微OA流程明细表取值并校验
  3. 新一批交通强国试点工作启动
  4. 小成本创造高回报?这家企业的创新培训模式有点牛
  5. 郑码输入法 字根记忆表 一般根变通处理
  6. 小米、Vivo、Oppo后台弹出界面和锁屏权限检测
  7. 计算机自动关机原理,电脑自动关机什么原因 电脑自动关机是怎么回事
  8. html span向上对齐,css也能让span靠左布局
  9. Intel CPU(i3、i5、i7、i9)型号、性能详细解读
  10. 在线LOGO的设计工具推荐