注意:

  • 当要实现一个满足 ERC-20 接口标准的 Token 智能合约时,该合约必须满足以下内容实现
  • API 规范使用 Solidity 0.4.17(或以上版本)的语法
  • 调用者必须处理 returns (bool success) 返回false , 不能假定false不会返回。

一、可选函数

- 可选函数: name

函数返回代币的名称 - 如 “MyToken” 或 “我的代币”

此函数是可选函数,但是这个函数可以提高代币可用性,不过调用者不能假定这个函数存在。

function name() public view returns (string)

- 可选函数: symbol

函数返回代币的代号(通常为字母缩写),如 “HIX”,“UPT”。

此函数是可选函数,但是这个函数可以提高代币可用性,不过调用者不能假定这个函数存在。

function symbol() public view returns (string)

- 可选函数: decimals

返回令牌使用的小数位数 - 例如"8",意味着将令牌量除以"100000000"以获取其用户表示形式。

此函数是可选函数,但是这个函数可以提高代币可用性,不过调用者不能假定这个函数存在。

function decimals() public view returns (uint8)

二、必须函数

函数: totalSupply

返回总令牌供应量。

function totalSupply() public view returns (uint256)

函数: balanceOf

返回帐户(通过参数"_owner")的余额。

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

函数: transfer

向 _to 地址转移 _value 数量的代币,函数必须触发事件 Transfer 。

如果调用方的帐户余额没有足够的令牌,则该函数需要抛出异常。

注意 转移0个代币也是正常转移动作,同样需要触发 Transfer 事件。

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

函数: transferFrom

从 _from 向 _to 地址转移 _value 数量的代币,函数必须触发事件 Transfer 。

transferFrom 函数,可以允许第三方代表我们转移代币。

如果 _from 账号没有授权调用帐户转移代币,则该函数需要抛出异常。

注意 转移0个代币也是正常转移动作,同样需要触发 Transfer 事件。

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

函数: approve

授权 _spender 可以从我们账户最多转移代币的数量 _value,可以多次转移,总量不超过 _value 。

这个函数可以再次调用,以覆盖授权额度 _value 。

注意: 为了阻止向量攻击(这里有描述和讨论),调用者可以在调整授权额度时,先设置为0,然后在设置为一个其他额度。

简单描述下:向量攻击, 假如 Alice 开始时给Bob授权了 N, 现在 Alice 想调整为 M ,于是发起了一笔调整授权的交易,这时Bob观察到了这笔交易, 迅速通过 transferFrom 交易(用更高的手续费,矿工优先打包)把 N 个币转移走,待 Alice 调整授权的交易打包后,Bob 又获得了 M 个授权。 这就相当于Bob 获得了 N + M个授权, 而不是 Alice 想要的 M个授权。

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

函数: allowance

查询 _owner 授权给 _spender 的额度。

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

三、事件Events

- 事件:Transfer

当有代币转移时(包括转移0),必须触发 Transfer 事件。

如果是新产生代币,触发 Transfer 事件的 _from 应该设置为 0x0 。

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

- 事件:Approval
approve(address _spender, uint256 _value) 函数成功执行时,必须触发 Approval 事件。

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

ERC20协议API接口规范相关推荐

  1. RESTful API接口规范

    RESTful规范 Restful API是目前比较成熟的一套互联网应用程序的API设计理念,Rest是一组架构约束条件和原则,如何Rest约束条件和原则的架构,我们就称为Restful架构,Rest ...

  2. RESTful API接口规范及使用

    RESTful API接口规范及使用 REST 指的是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是 RESTful. 非Rest设计,以往我们都会这么写:以不同的URL进行不通的 ...

  3. 协议开发 中移动CMPP2.0协议API(三)

    协议开发 中移动CMPP2.0协议API(三) 云网(jimzj@21cn.com) 接上篇... 五.发送接口 对于API来说,最重要的一部分就是去做发送数据了.通过SOCKET套接字与网关相连接后 ...

  4. 智能家居开源生态—正确的HTTP API 接口规范以及设备类插件实现

    一.HTTP API 接口规范 接口鉴权 使用smartassistant接口,需将用户凭证smart-assistant-token,放在http请求的header中.格式如下: "sma ...

  5. restful api接口规范_如何理解RESTful API设计规范?

    作者:涂根华 https://www.cnblogs.com/tugenhua0707/p/12153857.html RESTful是目前最流行的API设计规范,它是用于Web数据接口的设计.从字面 ...

  6. restful api接口规范_Restful API设计规范

    RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义.RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源 ...

  7. HTTP API接口规范

    1 概述 本文档简要介绍了一些 HTTP + JSON 的 API 设计实践. 1.1 名词 简称 全称 备注 HTTP Hyper Text Transfer Protocol 超文本传输协议 HT ...

  8. java接口设计规范_关于团队API接口规范设计

    这篇文章主要介绍我在一家移动互联网企业的做的接口规范文档,这篇文档帮助团队内部的协作起到很大的作用.可能文章内容会掺杂个人对接口的理解,各位大佬望批评指正. 更新记录 2019-09-21 marke ...

  9. 微信mac协议API

    个人微信详细通信API接口列表分享 1.基础消息类型 1.客户端发送的心跳包 HeartBeatReq = 1001; 2.消息接收确认回复(接收或拒绝接收) MsgReceivedAck = 100 ...

最新文章

  1. Windows 10或成为最后一个Windows版本
  2. 非法ip通过ssh成功登录,自动结束会话
  3. python 动态类型_python学习--动态类型
  4. Django Cookie于Session
  5. kodi教程 linux,Kodi 设置教程 | Homepage of Zhikun Zhang
  6. 基于matlab和proe的曲面建模,两个基础曲面建模实例教你Proe曲面建模技巧和思路...
  7. linux dm9000网卡驱动,ARM-Linux驱动--DM9000网卡驱动分析(三)
  8. delphi 安装控件时提示系统找不到指定的模块的解决
  9. Maven第5篇:手把手教你搭建私服
  10. 【第008问 Unity中什么是UV?】
  11. php的网页服务器根目录,php获得网站根目录的几个方法
  12. ArcGIS Pro 关于地震数据可视化制作流程(附练习数据下载)
  13. FRP 内网穿透下载配置
  14. typora修改主题字体、代码块字体、行内块代码字体大小、引用块字体大小、代码块背景颜色、文章可写区域宽度以及修改教程
  15. 大屏页面使用transform属性scale进行缩放,高德地图点击事件失效,地图展示模糊
  16. 视频中地点位置标题文字标记介绍动画AE字幕模板
  17. 外包程序猿的漫漫人生路
  18. 七大设计原则之开闭原则
  19. 爸爸给4岁女儿的遗书 10年后女儿回了信(感人)
  20. 2021-10-26 数据存储的基本原理

热门文章

  1. 《网页设计与制作》的编写过程1
  2. Android 设置应用的底部导航栏(虚拟按键)背景颜色
  3. 流量累计程序 博途v15编写的西门子流量累计程序,封装好的FB块直接可以拿来用
  4. 2.操作符流程控制循环
  5. JQuery、Ajax基础语法
  6. 第44章 通过GoogleAuthenticator插件执行登录操作
  7. 基于html+css的图展示104
  8. docker删除/var/lib/docker/overlay2 后无法创建镜像,或者拉取镜像
  9. 显示器尺寸和分辨率大小
  10. 基于单片机十字路口交通灯系统(含原理图)-资料