ERC20通证标准是什么?
ERC20 通证标准(ERC20 Token Standard)是通过以太坊创建通证时的一种规范。按照 ERC20 的规范可以编写一个智能合约,创建“可互换通证”。它并非强制要求,但遵循这个标准,所创建的通证可以与众多交易所、钱包等进行交互,它现在已被行业普遍接受。
现在,以太坊已经沿用比特币的提法,对比特币系统的改进提案现在被称为 BIP(Bitcoin Improvement Proposals),然后加上编号。与通证相关的标准沿用 ERC 的形式,但均被纳入 EIP(Ethereum Improvement Proposals)序列之中,以太坊EIP 的标准序列包括 Core(核心改进)、Networking(网络层改进)、Interface(接口改进)、ERC(应用层意见征集)。
图1:ERC20 智能合约程序的方法与事件
现在 ERC20 的文档见:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
除了 ERC20 之外,以太坊受关注的通证标准还有 ERC721。与 ERC20 不同,ERC721 是一种不可互换的通证标准(Non-fungible Token Standard,NFT)。
ERC20 的通证是可互换的、同质的,而 ERC721 的通证是不可互换的、非同质的;ERC20 通证是可无限分割细分的,而 ERC721 通证的最小单位是 1,无法再分割细分。
2018 年 6 月,ERC721 最终被以太坊社区正式接受,成为最终标准。之前大热的加密猫(cryptokitties,谜恋猫)所遵循的就是 ERC721 标准。
ERC 是什么
ERC 是 Ethereum Request for Comment 的缩写,20 是编号。征求修正意见书(Request for Comment,RFC)是互联网工程任务组(IETF)发布的一系列工作备忘录,后来演变为用来记录互联网规范、协议、过程等的标准文件。比如,常见的互联网协议的RFC编号分别是:IP,791;TCP,793;SMTP,2821。现在,以太坊已经沿用比特币的提法,对比特币系统的改进提案现在被称为 BIP(Bitcoin Improvement Proposals),然后加上编号。与通证相关的标准沿用 ERC 的形式,但均被纳入 EIP(Ethereum Improvement Proposals)序列之中,以太坊EIP 的标准序列包括 Core(核心改进)、Networking(网络层改进)、Interface(接口改进)、ERC(应用层意见征集)。
以太坊的改进提案网址为:https://eips.ethereum.org。
ERC20 是什么
ERC20 通证标准最早由以太坊开发者费边·沃格尔斯特勒在开源社区中提出,后来以太坊创始人维塔利克(人称“V神”)撰写了第一版文档,当时名为“标准化合约API”(Standardized_Contract_APIs)。最早的讨论文档见:https://github.com/ethereum/EIPs/issues/20。遵循 ERC20 标准,基于以太坊创建的通证是通用的,可以被以太坊和区块链世界的多数其他应用所使用。除了官方实现外,现在在以太坊网络中已经有了多种符合 ERC20 标准的软件实现。
详解 ERC20 通证标准
遵循ERC20通证标准可以编写智能合约。它需要实现的通证方法包括:可选的 name、symbol、decimals,必须有的 balanceOf、transfer、transferFrom、approve、allowance。它需要实现的事件响应包括 Transfer、Approve(见图1)。图1:ERC20 智能合约程序的方法与事件
现在 ERC20 的文档见:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
除了 ERC20 之外,以太坊受关注的通证标准还有 ERC721。与 ERC20 不同,ERC721 是一种不可互换的通证标准(Non-fungible Token Standard,NFT)。
ERC20 的通证是可互换的、同质的,而 ERC721 的通证是不可互换的、非同质的;ERC20 通证是可无限分割细分的,而 ERC721 通证的最小单位是 1,无法再分割细分。
2018 年 6 月,ERC721 最终被以太坊社区正式接受,成为最终标准。之前大热的加密猫(cryptokitties,谜恋猫)所遵循的就是 ERC721 标准。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频
优秀文章
- 学习Java之前为什么建议先学C语言
- C++ deque获取(访问)元素方法详解
- C# Random类
- 马哥教育Linux运维视频教程全集(初级、中级和高级,共200讲,73GB)
- JSP Page指令:页面指令
- Struts2 ActionContext.getApplication()方法:获取Map类型的application对象
- Hibernate hibernate.default_schema属性:指定默认的表空间
- Spring getBeansOfType方法:获取指定类型的JavaBean
- Python docstring(文档字符串):给代码添加注释
- Go语言make和new关键字的区别及实现原理