ERC-20 是以太坊上的一種標準協議,用於創建和交換可互操作的代幣。它定義了一組規則和函數,使開發者能夠在以太坊區塊鏈上創建代幣,並在兼容 ERC-20 的錢包和交易所中進行交易。

TL;DR

發行 ERC-20 代幣本身不難,如何讓代幣具有價值跟共識性,讓別人認同其價值、營銷手段跟生態系才是關鍵,在做任何投資和操作一定要 DYOR 跟知道其原理和遊戲規則再進場,畢竟生成一個空氣或土狗代幣不用到 2 分鐘。

定義

ERC-20是以太坊的一種協議(智能合約),用於約定和規範代幣的發行。目前主流代幣都是基於這個協議進行開發的,當然比較早期的代幣沒有,而額外延伸了 Wrapped 的方式,下面會說明 WETH 與 ETH 之間的關係。

WETH vs ETH 作為擁有智能合約實現層的 Ethereum 鏈卻沒有自己的 ERC-20 代幣(token) 而 ETH 卻是作為加密貨幣的存在真的不好進行交易,所以衍伸了打包代幣,其目的都是將貨幣或沒有在這條鏈上發行的代幣進行打包,方便使用 ERC-20 標準進行投資與交易。所以後續看到 wrapped 絕大部分都是為了這個目的,可以透過 DEX 進行交換打包代幣等方式換取。

實現

ERC-20協議規定了代幣必須實現的6個函數,包括totalSupply、balanceOf、allowance、transfer、approve和transferFrom。這些函數定義了代幣的基本屬性和行為,使得開發者可以在以太坊上創建自己的代幣,並且可以方便地與其他應用程序集成。

  1. totalSupply:獲取代幣的總供應量。
  2. balanceOf:獲取指定帳戶的代幣餘額。
  3. allowance:獲取擁有者授權給另一個帳戶的代幣數量。
  4. transfer:從當前帳戶轉移代幣到另一個帳戶。
  5. approve:授權另一個帳戶可以從當前帳戶轉移代幣。
  6. transferFrom:從一個帳戶轉移代幣到另一個帳戶,前提是該帳戶已經得到了擁有者的授權。

但最主要還是實現核心幾個介面就是定義為 ERC-20:

There are a few core contracts that implement the behavior specified in the EIP:

  • IERC20: the interface all ERC20 implementations should conform to.

  • IERC20Metadata: the extended ERC20 interface including the name, symbol and decimals functions.

  • ERC20: the implementation of the ERC20 interface, including the name, symbol and decimals optional standard extension to the base interface.

整體來說只要在 smart contract (智能合約) 實現這個 interface 那麼就可以稱之為 ERC-20。

合約代碼

OpenZeppelin ERC20

主要合約實現 contracts/token/ERC20/ERC20.sol

這邊詳細說明各個功能介面實現後所具備的功能,舉例來說你希望合約具有 Burnable(讓擁有者可以自己銷毀代幣的功能),需要具備以下方法:

  • burn(amount)
  • burnFrom(account, amount)

Wizard

快速參考與部屬自己的 ERC-20 其實相當簡單 OpenZeppelin Wizard 提供簡單介面讓你快速實現,並且可以基於他們的實現加以調整符合自己想法。

  1. 取好 Name, Symbol
  2. 配置 premit(預先mint)給 owner(creator)
  3. 配置需要的功能
  4. Open in Remix 開啟線上編輯器
  5. 到 remix editor 檢查無誤後,選到 “DEPLOY & RUN TRANSACTIONS”
  6. injected provider: metamask
  7. 選取想要部屬的測試鏈,並到 faucet 領取一些加密貨幣(原生貨幣)作為 gas fee
  8. 部屬並到鏈上 scan 查看合約部屬狀況
  9. 在 metamask import token by smart contract address
  10. 開始使用

寫在後面

在本文中介紹了 ERC-20 相關機制與定義,當然還有許多特別的玩法跟功能,但這部分就得自己編寫智能合約和配置好相關規則,而且寫完後一定要送審批跟嚴格測試,畢竟過去已經有相當多的 DEX 或是合約具有漏洞被各種突破,但反過來說也有很多解決方案,只要細心的把該防堵的跟配置做好,生態系養起來就會讓代幣具有價值。