2019独角兽企业重金招聘Python工程师标准>>>

1

摘要

ERC20 中文版简单总结即:代币的标准接口。

下面的标准允许在智能合约中代币的标准API的实现。 该标准提供了转账代币的基本功能,并允许批准代币,以便其他链上第三方可以使用这些代币。

2

动机

标准接口允许以太坊上的任一代币可以被其他应用程序重用:从钱包转到去中心化的交易所。

3

规范

代币

方法

注意: 调用者必须处理 returns (bool success) 返回的 false 。调用者一定不能假设从不返回 false !

name

返回代币的名字 - 比如 "MyToken" 。Returns the name of the token - e.g. "MyToken".

可选的 - 该方法可以用来改善可用性, 但接口及其他合约一定不能期望这些值存在。(译者注:即不能假设 name 一定可以返回代币名字)

function name() view returns (string name)

symbol

返回代币的标识符。 如 “HIX”。

可选的 - 该方法可以用来改善可用性, 但接口及其他合约一定不能期望这些值存在。(译者注:即不能假设 name 一定可以返回代币名字)

function symbol() view returns (string symbol)

decimals

返回代币使用的小数点位数 - 如 8 ,意思是代币数量除以 100000000 以得到代表用户的最小单位。

可选的 - 该方法可以用来改善可用性, 但接口及其他合约一定不能期望这些值存在。(译者注:即不能假设 name 一定可以返回代币名字)

function decimals() view returns (uint8 decimals)

totalSupply

返回全部的代币供应量。Returns the total token supply.

function totalSupply() view returns (uint256 totalSupply)

balanceOf

返回 _owner 地址的账户余额。

function balanceOf(address _owner) view returns (uint256 balance)

transfer

转账 _value 数量的代币给地址 _to , 且一定会触发 Transfer 事件。 如果 _from 账户余额不足,则该方法应该 throw 。

注意 值为0的转账必须当做正常转账处理且触发 Transfer 事件。

function transfer(address _to, uint256 _value) returns (bool success)

transferFrom

从 _from 地址转账 _value 给地址 _to ,且必须触发 Transfer 事件。

transferFrom 方法用于取款工作流,允许合约代表你来转账代币。 比如这可以用于允许合约代币你来转账代币,或以子货币来收取费用。 如果 _from 账户没有有意的通过某种机制授权消息的发送者,则该方法应该 throw 。

注意 值为0的转账必须当做正常转账处理且触发 Transfer 事件。

function transferFrom(address _from, address _to, uint256 _value) returns (bool success)

approve

允许 _spender 从你的账户多次取款,最大额度为 _value 。如果该方法再次调用,会用 _value 重新当前的额度。

注意:为了防止攻击向量,如这个这里所述 以及 这里讨论,客户应该确保创建用户接口,为相同花费者设置其他值的最大额度前,首先设置当前额度为 0 。 尽管合约本身不应该强制如此,然而这是为了允许向后兼容之前部署的合同。

function approve(address _spender, uint256 _value) returns (bool success)

allowance

返回 _spender 还被允许从 _owner 提款的额度。

function allowance(address _owner, address _spender) view returns (uint256 remaining)

Events

Transfer

代币转账时必须触发,包括价值为0的转账。

创建新代币的合约,在代币创建时应该触发 Transfer 事件,并将 _from 地址设为 0x0 。

event Transfer(address indexed _from, address indexed _to, uint256 _value)

Approval

任何成功的调用 approve(address _spender, uint256 _value) 都必须触发该事件。

event Approval(address indexed _owner, address indexed _spender, uint256 _value)

4

实现

已经有许多 ERC20 兼容的代币部署在以太坊网络上。 不同的团队编写了不同的实现,这些团队有不同的权衡:从节约 gas 到提高安全性。

可用的示例实现如下:

https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/token/ERC20/StandardToken.sol

https://github.com/ConsenSys/Tokens/blob/master/contracts/eip20/EIP20.sol

再次调用"approve"前增加强制设为0的实现:

https://github.com/Giveth/minime/blob/master/contracts/MiniMeToken.sol

5

历史

与该标准有关的历史链接:

**Vitalik Buterin的原始提议: **

https://github.com/ethereum/wiki/wiki/Standardized_Contract_APIs/499c882f3ec123537fc2fccd57eaa29e6032fe4a

**Reddit discussion: **

https://www.reddit.com/r/ethereum/comments/3n8fkn/lets_talk_about_the_coin_standard/

**Original Issue #20: **

https://github.com/ethereum/EIPs/issues/20

本文作者:HiBlock区块链技术布道群-Bob

原文发布于GitHub

原文地址:

https://github.com/bobjiang/EIPs/blob/master/EIPS-CN/eip-20.md

加微信baobaotalk_com,加入技术布道群

线下活动推荐

技术工坊|解密区块链DApp的代码逻辑,从请求到数据存储都要经历什么?(上海)

技术沙龙|利用IPFS,去中心化存储如何让钱包更安全?(南京)

转载于:https://my.oschina.net/u/3782027/blog/1837407

区块链100讲:ERC20 中文版相关推荐

  1. 区块链100讲:据说,80%的人都搞不懂哈希算法

    2019独角兽企业重金招聘Python工程师标准>>> 前面的<区块链100讲>介绍了区块链.算力.挖矿等,几乎每一讲都会提到一个词哈希(Hashing).聊到区块链的时 ...

  2. 区块链100讲:不做码农做矿工,该怎么和爹妈解释

    说起区块链和比特币的时候都会提到一个词"挖矿",还有个角色叫"矿工",等等,区块链不是属于技术圈吗?怎么和挖矿扯上关系了?只听说过管IT圈儿的人叫码农,怎么还有 ...

  3. 区块链100讲:带你走进EOS的存储系统

    2019独角兽企业重金招聘Python工程师标准>>> 1 海量数据 在一个完全去中心化的区块链系统中,每个节点如果想验证某一笔交易是否正确,则必须下载完整的区块链数据,随着时间的推 ...

  4. 区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!

    2019独角兽企业重金招聘Python工程师标准>>> 区块链100讲上期我们讲了哈希算法和公开密钥算法,说到哈希算法提到了一个名词"Merkle tree",梅 ...

  5. 区块链100讲:Truffle——一个更简单的部署智能合约的方法

    本期<区块链100讲>我们将介绍一个更简单的部署智能合约的方法:Truffle. 1 什么是Truffle ? Truffle是针对基于以太坊的Solidity语言的一套开发框架.本身基于 ...

  6. 区块链100讲:V神·以太坊上的分片

    五月初,以太坊创始人"V神"Vitalik Buterin表示,以太坊的内部扩展解决方案--分片已经接近完成.以太坊分片旨在将以太坊分成几个并发网络,从而使整个网络更加高效地扩展, ...

  7. 区块链100讲:能够证明你是你的数字签名和多重签名

    随着区块链相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将无处不在.要保护数字出版物版权,实现去中心化,解决业界多年来版权保护不力的难题.无论数字资产,还是数字出版版权,都是有明确 ...

  8. 区块链100讲:从村里的账本来看什么是区块链

    2019独角兽企业重金招聘Python工程师标准>>> 很久以前就有个想法,把区块链的技术和概念整理成一个体系化的知识图谱,方便大家查阅和学习,大话已说出去很久,却一直没有践行(pa ...

  9. 区块链100讲:智能合约审计指南

    智能合约代码的审计,目前还不是技术社区内经常会讨论的主题.今年3月6日,发表在博客网站[Schneier on Security]上的一篇博客(原文链接:[https://www.schneier.c ...

最新文章

  1. Java JIT在运行JDK代码时是否作弊?
  2. java.io.CharConversionException: Not an ISO 8859-1 character:
  3. 浅读设计模式 - 1
  4. 6.29 Vue 第二天 学习笔记
  5. gcc的警告提示信息
  6. go build编译不同环境
  7. Bootstrap CSS 编码规范之Class 命名规范
  8. Centos下安装Oracle12c
  9. 【车牌识别】基于matlab车辆出入库计时系统【含Matlab源码 469期】
  10. linux服务器安装cuda,在Linux下安装Cuda5
  11. ps盖印图层在哪里_盖印图层在哪
  12. 【Unity】超级坦克大战(十三)闯关流程:关卡界面逻辑
  13. 关于数据库表、视图、存储过程、函数、分区表等的创建使用
  14. maya阿诺德渲染失败_Arnold 批渲染失败
  15. Java中Switch选择语句的用法
  16. 【工大SCIR笔记】自然语言处理领域的数据增广方法
  17. 数据的计算(大数据)
  18. 关于修改手机绑定那些事!
  19. 当它们在吃屎时,它们在吃什么?——童子屎居然延年益寿
  20. 股票 | 基金 | 大盘 | 历史行情数据批量在线下载Excel,随用随下

热门文章

  1. snmpwalk命令常用方法
  2. 215.数组中的第K个最大元素/347. 前 K 个高频元素
  3. Centos升级Python2.7.12
  4. java util 中set,List 和Map的使用
  5. CodeForces 173B Chamber of Secrets spfa
  6. 在plist文件中增删改查
  7. Standard C Episode 1
  8. sql学习之笔记(时间)季度的第一天
  9. 最大化BEA WebLogic Cluster的性能、可用性和安全
  10. 什么是k-NN算法?怎样实现?终于有人讲明白了