什麼是 ERC-20?
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。這些函數定義了代幣的基本屬性和行為,使得開發者可以在以太坊上創建自己的代幣,並且可以方便地與其他應用程序集成。
totalSupply:獲取代幣的總供應量。
balanceOf:獲取指定帳戶的代幣餘額。
allowance:獲取擁有者授權給另一個帳戶的代幣數量。
transfer:從當前帳戶轉移代幣到另一個帳戶。
approve:授權另一個帳戶可以從當前帳戶轉移代幣。
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。
合約代碼
主要合約實現 contracts/token/ERC20/ERC20.sol
這邊詳細說明各個功能介面實現後所具備的功能,舉例來說你希望合約具有 Burnable
(讓擁有者可以自己銷毀代幣的功能),需要具備以下方法:
burn(amount)
burnFrom(account, amount)
Wizard
快速參考與部屬自己的 ERC-20 其實相當簡單 OpenZeppelin Wizard 提供簡單介面讓你快速實現,並且可以基於他們的實現加以調整符合自己想法。
取好 Name, Symbol
配置 premit(預先mint)給 owner(creator)
配置需要的功能
Open in Remix 開啟線上編輯器
到 remix editor 檢查無誤後,選到 “DEPLOY & RUN TRANSACTIONS”
injected provider: metamask
選取想要部屬的測試鏈,並到 faucet 領取一些加密貨幣(原生貨幣)作為 gas fee
部屬並到鏈上 scan 查看合約部屬狀況
在 metamask import token by smart contract address
開始使用
寫在後面
在本文中介紹了 ERC-20 相關機制與定義,當然還有許多特別的玩法跟功能,但這部分就得自己編寫智能合約和配置好相關規則,而且寫完後一定要送審批跟嚴格測試,畢竟過去已經有相當多的 DEX 或是合約具有漏洞被各種突破,但反過來說也有很多解決方案,只要細心的把該防堵的跟配置做好,生態系養起來就會讓代幣具有價值。