Từ lúc ra mắt, Blockchain Ethereum đã gây sức hút cho rất nhiều Developer, Project manager, chủ doanh nghiệp khởi tạo dự án riêng để chạy các Smart contract mang tính bất biến, tiếp cận dòng vốn trên toàn cầu. Vậy cách tạo coin mạng ERC20 cụ thể ra sao? Cần những kiến thức gì về smart contract.. cùng tham khảo bài viết bên dưới để biết nhé!
Trong bài viết này chúng ta sẽ tìm hiểu về:
- Token ERC20 là gì
- Các chức năng cơ bản của nó
- Source code khởi tạo
- Kiểm tra thông tin và xác minh Contract trên Etherscan
- Mint & Burn Token

Nội dung chính
ToggleToken ERC20 là gì?
Token ERC20 là 1 tiêu chuẩn được xây dựng trên máy ảo EVM của Ethereum giúp người dùng dễ dàng triển khai các smart contract và tạo được những token có những chức năng mình mong muốn. Ngày xưa khi BTC phát triển theo hướng trở thành 1 loại tiền tệ thì Ethereum đã rẽ hướng sang phát triển nền tảng mạnh về smart contract, giúp nhiều token được khởi tạo và hoạt động trên mạng lưới. Đến nay đã có hàng ngàn token như vậy được tạo ra trên network Ethereum và đều được gọi là token ERC20.
Khi nhiều token được tạo ra như thế, mạng lưới Ethereum cũng hưởng lợi không nhỏ từ phí giao dịch, bất kể token nào sử dụng để gửi/nhận đều phải tốn phí là ETH.
Ethereum có nhiều tiêu chuẩn, tuy nhiên phổ biến nhất là ERC-20 và ERC-721. Các stablecoin phổ biến hiện nay như USDT, USDC, DAI đa phần cũng đều được tạo trên ERC20.
Các chức năng cơ bản của Token ERC20
Đã muốn tạo token thì bạn phải hiểu luật chơi của nó trước đã..
9 quy tắc bắt buộc
function name() public view returns (string) function symbol() public view returns (string) function decimals() public view returns (uint8) function totalSupply() public view returns (uint256) function balanceOf(address _owner) public view returns (uint256 balance) function transfer(address _to, uint256 _value) public returns (bool success) function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) function approve(address _spender, uint256 _value) public returns (bool success) function allowance(address _owner, address _spender) public view returns (uint256 remaining)
Token Name: Tên của token.
Symbol: Ký hiệu token.
Decimal (up to 18): Số thập phân nhỏ nhất sau dấu phẩy.
TotalSupply: Tổng lượng token được phát hành.
BalanceOf: Check số dư token trong địa chỉ ví.
Transfer: Chức năng này sẽ quản lý việc chuyển token vào địa chỉ ví user.
TransferFrom: Cho phép người nắm giữ token có thể chuyển tiền cho nhau.
Approve: Kiểm tra các giao dịch và so sánh với TotalSupply để đảm bảo không thiếu/ thừa token.
Allowance: Kiểm tra số dư token xem ví có đủ token để chuyển đi hay không.
Và 2 event quan trọng trong hợp đồng
event Transfer(address indexed _from, address indexed _to, uint256 _value) event Approval(address indexed _owner, address indexed _spender, uint256 _value)
Bản chất để 1 giao dịch xảy ra là các address đó phải có balances để chuyển cho nhau, vậy balances đó xuất hiện từ đâu? Sao các ví lại có số dư để chuyển cho nhau -> Token được tạo ra mới buộc phải có những thứ như: Name, Symbol & TotalSupply
Thì lúc này ví nào khởi tạo hợp đồng sẽ nhận được toàn bộ lượng token đó, và dùng nó để chuyển cho các ví khác.. từ đây hệ sinh thái mới hình thành, mọi người sẽ có token và trao đổi với nhau thông qua mạng lưới Ethereum.
Khi chuyển tiền như vậy sẽ có 2 sự kiện quan trọng là Approval và Transfer. Để tiến hành chuyển coin luôn phải có sự đồng ý của chủ sở hữu ví, đó là lý do tại sao bạn thường thấy giao dịch trên metamask chúng ta luôn phải approve trước khi transfer.
Lúc transfer thực sự xảy ra, mạng lưới chỉ cần cộng thêm Balances cho ví nhận (recipient) và trừ bớt balances trên ví chuyển (sender) là xong 1 event. Các giao dịch này đều được lưu trữ trên blockchain của Ethereum.
Hướng dẫn tạo đồng coin riêng trên mạng ERC20
Bước 1: bạn truy cập trang remix.ethereum.org

Bước 2: Chọn vào “Create new file” để tạo tập tin và đặt tên theo định dạng abc.sol, trong ví dụ này mình sẽ đặt là TokenERC20.sol


Bước 3: Copy mã nguồn vào file token đã tạo để tùy chỉnh smart contract
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract SangLuu is ERC20, ERC20Burnable, Ownable {
constructor() ERC20("SangLV", "SLV") Ownable (msg.sender) {
_mint(msg.sender, 100000000 * 10 ** decimals());
}
function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
}


Bạn có thể thay đổi những thông tin bên dưới bao gồm: Name, Symbol và ToltalSupply để tạo ra token mà bạn mong muốn.

Bước 4: Tiếp theo chọn Compiler để check xem contract có báo lỗi gì không


Bước 5: Kiểm tra xong nếu mọi thứ đều bình thường chỗ Compiler sẽ hiện tick xanh, sau đó bạn nhấn tiếp vào tab bên dưới để đi sang phần [Deploy Token]

Bước 6: Ở bước Deploy này bạn chú ý chọn đúng những thao tác sau
- Chọn vào tab Remix VM
- Chọn mục Injected Provider
- Kết nối với ví Metamask



Bước 7: Nhấn Deploy để public Smart contract Token lên mạng ERC và đợi cho mạng lưới xác nhận.

Lưu ý: phải có số dư tối thiểu trên ví ít nhất 200 đô ETH để làm phí tạo token

Với lưu lượng mạng thông thường thì chỉ cần mất 50-70 đô là tạo thành công, nhưng khi mạng bận, nhiều người sử dụng, phí có thể dao động lên tới 150 đô cho 1 lần Deploy hợp đồng. Nên nếu thấy đắt quá, bạn có thể chọn thời điểm khác để Deploy hợp đồng. Còn chịu chơi luôn thì cứ Accept rồi tiếp tục thôi kk 😆
Bước 8: Sau đó bấm vào chỗ hoạt động trên ví Metamask để kiểm tra tiến độ Deploy của lệnh anh em vừa thực hiện.

Bước 9: Nhấn vào Contract đã tạo để kiểm tra thông tin token đã đúng chưa, chứ sai là hơi mệt.. bút sa gà chết!

Bạn sẽ thấy được thông tin đầy đủ token mình đã tạo trên Etherscan (Block explorer của mạng ETH)


Xác minh contract Token trên Etherscan
Bước tiếp theo để dự án được chất lượng, người dùng tin tưởng ae nên verify contract Token của mình trên trang https://etherscan.io/
Contract Token khi xác minh thành công nó sẽ hiện tích xanh như bên dưới

Cách xác minh cụ thể ae có thể theo dõi trong bài viết này:
Burn và mint Token ERC20
Để burn đi số token đã tạo ban đầu, anh em có thể chọn Write contract -> mục số 2 burn -> điền số lượng vào ô amount.
Sau đó chọn [Connect to web3] để kết nối với ví Metamask của anh em, rồi nhấn [Write] để thực hiện. Trong ví dụ bên dưới mình sẽ burn thử 50K token, bạn nhớ điền 18 số 0 phía sau nhé.


Mint token cũng vậy, bạn chỉ cần chọn vào function mint ở mục số 6 để thao tác


Sau khi Mint thì mình chỉ còn 55 triệu Token, mặc dù đã tạo 100 triệu ban đầu.. suy ra các tính năng trên contract Token phải được define sẵn ngay từ đầu nếu muốn sử dụng về sau, chứ code trên hợp đồng sau khi public thì chúng ta không thể sửa xóa được nữa. (một số dự án họ cũng có thể chọn Renounce Ownership – bỏ quyền sở hữu hợp đồng để không thể tương tác với những tính năng trên).
Ae có thể vọc thoải mái 2 tính năng này.. mint hoặc burn để cảm nhận rõ nét cách hoạt động của nó, nhưng nhớ để ý tiền trên ví, vì phí trên mạng ERC cũng tương đối chát..
Kết luận
Anh em chỉ cần lấy contract của token nhập vào ví Metamask là thấy số dư token hiển thị ngay. Lúc này bạn có thể dùng toàn bộ số token trên để chuyển cho bất kỳ ai nhưng để cho ngon lành, anh em có thể add nó lên pool Uniswap để mọi người có thể mua bán được.
Còn có rất nhiều chức năng khác có thể triển khai trên token ERC20, và mình sẽ hướng dẫn thêm cho các bạn ở các bài viết kế tiếp.
➤ Cách upload Logo Token lên Bscscan và Etherscan
➤ Cách list coin lên sàn mới nhất
➤ Cách listing Token lên Coinmarketcap
➤ Bitcoin Ordinals là gì? Cách đúc NFT trên Bitcoin
➤ Kiến thức Crypto căn bản – 3 Tư duy Coin người mới cần khắc sâu



