區塊鏈 - ERC20 介紹
ERC 20 是什麼?
ERC20 是以太坊區塊鏈上代幣標準的一種協議,為智能合約提供了統一的介面,使得各種代幣能夠在不同的去中心化應用(DApps)中互操作。這個標準包含了一組必要的方法,使得代幣的創建和交易變得一致且容易。
“ERC” 的全名是 “Ethereum Request for Comment”,中文翻譯是 “以太坊徵集修正意見書”。ERC 是以太坊社群用來提出和討論改進提案的標準。這些提案通常涉及智能合約標準、應用程序介面(API)或協議的改進。
其中,ERC20 是最著名的一個標準,定義了在以太坊區塊鏈上實現可互操作的代幣所需的基本介面。這個標準使得各種代幣能夠在不同的去中心化應用中方便地進行交易和互操作。
此外,還有其他一些常見的 ERC 標準,例如:
ERC721:非同質化代幣(NFT)的標準,適用於獨特的資產如收藏品、遊戲內物品等。
ERC1155:多代幣標準,允許單一合約中管理多種代幣,包括同質化代幣和非同質化代幣。
ERC20 標準的關鍵方法
totalSupply: 在不需要支付 ETH 礦工費的情況下查詢代幣的總供應量。
1
function totalSupply() external view returns (uint256);
balanceOf: 查詢指定地址擁有的代幣數量。
1
function balanceOf(address account) external view returns (uint256);
transfer: 從調用者的賬戶轉移指定數量的代幣到目標地址。
1
function transfer(address recipient, uint256 amount) external returns (bool);
allowance: 查詢代幣所有者允許花費者花費的剩餘代幣數量。
1
function allowance(address owner, address spender) external view returns (uint256);
approve: 允許指定的花費者從調用者的賬戶中提取代幣。
1
function approve(address spender, uint256 amount) external returns (bool);
transferFrom: 從一個賬戶轉移指定數量的代幣到另一個賬戶,這個操作由有花費權限的賬戶調用。
1
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
ERC20 標準的事件
Transfer: 在代幣轉移時觸發。
1
event Transfer(address indexed from, address indexed to, uint256 value);
Approval: 在代幣所有者批准花費者可以花費的代幣數量變更時觸發。
1
event Approval(address indexed owner, address indexed spender, uint256 value);
實作練習
開發 ERC20_Metadata.sol
這個練習是可以讓我們部屬自己的ERC20 代幣,可以自己取代幣名字、跟代幣簡稱
1 | // SPDX-License-Identifier: MIT |
部屬
在部屬的時候填入name、symbol可以進行部屬
成功部屬結果
鑄造(Mint)和燒毀(Burn)新代幣
這個實作例子我們可以鑄造新代幣跟燒毀新代幣,並且有以下功能
- 只有部屬合約的人才可以鑄造/燃燒代幣
- 轉帳的合約不能是address(0)
- 鑄造/燃燒代幣時,總發行量也會增加/減少。
- 指定某帳戶增加/銷毀代幣
1 | // SPDX-License-Identifier: MIT |
部屬
測試鑄造 10000
測試查詢餘額會增加
測試燒毀 1000
測試查詢餘額會減少