Trong lập trình Smart Contract và phát triển blockchain, việc triển khai và kiểm thử token ERC20 trên một mạng lưới thử nghiệm như Rinkeby là một bước quan trọng. Điều này giúp nhà phát triển hiểu rõ cách token hoạt động trước khi triển khai chính thức trên mạng lưới Ethereum. Bài viết này sẽ hướng dẫn chi tiết cách triển khai và kiểm thử một token ERC20 sử dụng Rinkeby Testnet.
Chuẩn bị
Trước khi bắt đầu, bạn cần chuẩn bị một số công cụ và tài nguyên sau:
- Node.js và npm: Cài đặt Node.js và npm từ trang web chính thức.
- Truffle Framework: Một framework phổ biến để phát triển Ethereum Smart Contracts. Cài đặt bằng lệnh
npm install -g truffle
. - MetaMask: Một ví Ethereum có thể tương tác với Rinkeby Testnet. Cài đặt MetaMask như một tiện ích mở rộng trên trình duyệt.
- Ether từ Rinkeby Faucet: Để triển khai contract, bạn cần một lượng nhỏ Ether từ Rinkeby. Bạn có thể yêu cầu Ether miễn phí từ Rinkeby Faucet.
Bước 1: Tạo Project với Truffle
- Khởi tạo Project: Tạo một thư mục mới cho dự án và khởi tạo Truffle bằng lệnh
truffle init
. - Cài đặt OpenZeppelin: Sử dụng OpenZeppelin để tạo token ERC20 một cách dễ dàng. Cài đặt bằng lệnh
npm install @openzeppelin/contracts
.
Bước 2: Viết Smart Contract
Tạo một file mới trong thư mục contracts
với tên MyToken.sol
và thêm mã sau:
solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor() ERC20("MyToken", "MTK") {
_mint(msg.sender, 1000 * (10 ** uint256(decimals())));
}
}
Bước 3: Cấu hình Truffle
Chỉnh sửa file truffle-config.js
để thêm cấu hình cho Rinkeby Testnet. Bạn sẽ cần sử dụng MetaMask để lấy thông tin ví và Infura cho việc kết nối với Rinkeby.
javascript
const HDWalletProvider = require('@truffle/hdwallet-provider');
const infuraKey = "INFURA_PROJECT_ID";
const fs = require('fs');
const mnemonic = fs.readFileSync(".secret").toString().trim();
module.exports = {
networks: {
rinkeby: {
provider: () => new HDWalletProvider(mnemonic, `https://rinkeby.infura.io/v3/$infuraKey`),
network_id: 4, // Rinkeby's id
gas: 5500000, // Rinkeby has a lower block limit than mainnet
confirmations: 2, // # of confs to wait between deployments. (default: 0)
timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
},
},
// Truffle's other configurations...
};
Bước 4: Triển khai Contract
- Tạo Migration: Tạo một file migration mới trong thư mục
migrations
để triển khaiMyToken
. - Triển khai: Sử dụng lệnh
truffle migrate --network rinkeby
để triển khai token lên Rinkeby Testnet.
Bước 5: Kiểm Thử Token
Sau khi triển khai, bạn có thể sử dụng Truffle Console hoặc MetaMask để tương tác và kiểm thử token:
- Truffle Console: Sử dụng
truffle console --network rinkeby
để tương tác với contract. - Kiểm tra Số Dư: Sử dụng hàm
balanceOf
để kiểm tra số dư token của một địa chỉ. - Chuyển Token: Sử dụng hàm
transfer
để chuyển token giữa các địa chỉ.
Kết luận
Triển khai và kiểm thử token ERC20 trên Rinkeby Testnet là một bước quan trọng trong quá trình phát triển Smart Contract, giúp đảm bảo tính năng và an toàn của token trước khi triển khai chính thức. Qua bài viết này, bạn đã có cái nhìn tổng quan về quy trình triển khai và kiểm thử token ERC20, từ việc chuẩn bị môi trường phát triển đến việc triển khai và tương tác với token trên mạng lưới thử nghiệm.