日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ERC20协议API接口规范

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ERC20协议API接口规范 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注意:

  • 當要實現一個滿足 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接口规范的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。