對於 web3 開發的初學者來說,開發並部署自己的代幣是開始建構鏈上軟體、提升 Solidity 技能以及了解 web3 開發生命週期最熱門的方式之一。
在以太坊中,有各種代幣標準,這些標準是代幣必須遵循的預定義規則集,以確保與以太坊網路及其他 dapp 的相容性、合規性和互通性。
這些標準包括:用於同質化代幣的 ERC-20、用於非同質化代幣(NFT)的 ERC-721、用於多代幣類型的 ERC-1155、用於進階代幣功能的 ERC-777、用於證券型代幣的 ERC-1400,以及用於代幣化金庫的 ERC-4626。
在本篇文章中,我們將利用 OpenZeppelin 開發一個 ERC-20 代幣。OpenZeppelin 是一個提供安全且經過測試的標準智能合約模板實作的函式庫。我們將逐步介紹如何設定開發環境、撰寫代幣合約,以及在 Linea 二層網路上部署合約。
步驟一:使用 Hardhat 設定開發環境
在開始開發以太坊代幣之前,您需要先設定開發環境。本篇文章將使用 Hardhat。請依照以下步驟操作:
安裝 Node.js 和 npm:Node.js 是一個 JavaScript 執行環境,npm 是其套件管理工具。請從 Node.js 官方網站 下載並安裝。
建立新的 Hardhat 專案:開啟終端機,為您的專案建立一個新目錄並進入該目錄。接著執行:
mkdir my-token
cd my-token
npm init -y
npm install --save-dev hardhat
npx hardhat
安裝必要的 Hardhat 外掛程式和 OpenZeppelin 合約:
npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
步驟二:建立您的以太坊代幣
請依照以下步驟建立一個簡單的 ERC-20 代幣:
建立代幣合約:在您的 Hardhat 專案中,進入 contracts 目錄並建立一個名為 MyToken.sol 的新檔案。開啟此檔案並定義您的代幣合約:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
此智能合約使用 OpenZeppelin 的函式庫,建立了一個名為「MyToken」、代號為「MTK」的 ERC-20 代幣。部署後,它會鑄造由部署者指定的初始代幣供應量,並將其分配至部署者的地址。
撰寫部署腳本:在 scripts 目錄中,建立一個名為 deploy.js 的新檔案,並新增以下程式碼以部署您的合約:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy(1000000);
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
上述腳本使用 Hardhat 和 ethers.js 部署「MyToken」智能合約,並以 1,000,000 個代幣的供應量進行初始化。它會取得部署者的地址並部署合約。
在本地編譯並部署您的合約:在終端機中,將您的合約編譯並部署至 Hardhat 提供的本地區塊鏈:
npx hardhat compile
npx hardhat run scripts/deploy.js --network localhost
步驟三:將您的代幣合約部署至 Linea 測試網
現在我們已在本地開發並部署了 ERC-20 代幣,接下來要使用 Infura 和 MetaMask 將其部署至 Linea 測試網。請依照以下步驟,讓您的代幣在 Linea 測試網上線。
設定 Infura 帳戶:Infura 提供便捷的各種區塊鏈網路及其測試網存取服務。建立一個新專案,從支援的網路選單中選擇 Linea Sepolia 測試網,並複製專案 ID。
設定 MetaMask:開啟您的 MetaMask 錢包並進入網路設定區塊。在下拉選單中,確認「顯示測試網路」已開啟,然後選擇 Linea Sepolia 測試網。
取得 Linea Sepolia ETH:部署合約時,您需要 Linea Sepolia ETH 來支付 gas 費用。您可以前往 Linea Sepolia 官方水龍頭 取得一些 Linea ETH。
更新 Hardhat 設定:在您的 Hardhat 專案中,更新 hardhat.config.js 以加入 Linea 測試網設定:
require("@nomiclabs/hardhat-ethers");
require("dotenv").config();
module.exports = {
solidity: "0.8.0",
networks: {
lineaTestnet: {
url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
accounts: [`0x${process.env.PRIVATE_KEY}`],
chainId: 59141
}
}
};
確認您的 .env 檔案包含必要的環境變數:
INFURA_PROJECT_ID=your_infura_project_id
PRIVATE_KEY=your_private_key
將您的合約部署至 Linea Sepolia 測試網
現在,執行以下指令將您的代幣合約部署至 Linea 測試網:
npx hardhat compile
npx hardhat run scripts/deploy.js --network lineaTestnet
此腳本將使用連接至 MetaMask 的帳戶,把您的 ERC-20 代幣合約部署至 Linea 測試網。
透過 MetaMask Developer 提升您的 web3 dapp 開發能力
透過掌握以太坊代幣開發的基礎知識、設定開發環境,並遵循最佳實踐,您就能成功開發並部署自己的以太坊代幣。無論是建立新的加密貨幣還是將資產代幣化,以太坊都提供了將您的想法付諸實現所需的工具和生態系統。
如需更進階的開發需求,例如以太坊登入(SIWE)、EIP-6963 支援,以及透過 Snaps 與 MetaMask 的無縫整合,請造訪 MetaMask Developer 開發者入口網站。該平台提供全面的工具、API 和 SDK 套件,旨在簡化使用者引導流程,並讓開發者能夠為 MetaMask 使用者打造獨特的無需許可錢包連接及 dapp 內體驗。