- Sản phẩm & Dịch vụSản phẩm & Dịch vụ
- Giải phápGiải pháp
- Bảng giáBảng giá
- Công tyCông ty
- Tài liệuTài liệu
vi
vi
Chuyên mục với các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.
Senior Cybersecurity Expert
My passion is hunting down the latest attack trends—ransomware, APTs, you name it—while passing on knowledge to help businesses forge ironclad defenses. I’ve left my mark on data encryption projects and intrusion detection tools now widely used across Vietnam. I’m the shadow that strikes before the enemy does. @#@ Đam mê của tôi là nghiên cứu các xu hướng tấn công mới nhất như ransomware và APTs, đồng thời chia sẻ kiến thức để giúp doanh nghiệp xây dựng chiến lược phòng thủ hiệu quả. Tôi từng đóng góp vào các dự án mã hóa dữ liệu và phát triển công cụ phát hiện xâm nhập được sử dụng rộng rãi tại Việt Nam.
Thảo luận (0)
Đăng nhập để thảo luận
Khi tôi bắt đầu dấn thân vào blockchain cuối năm 2018, ICO (Initial Coin Offering) đang trên đà bùng nổ mạnh mẽ. Có những dự án kêu gọi vài trăm nghìn đô chỉ trong vài phút, cộng đồng thì thảo luận cực kỳ sôi nổi. Trực tiếp code hợp đồng ICO, tổ chức whitelist, tôi từng chứng kiến những lúc “cháy hàng” và cũng không ít lần đền bù khi soft-cap không đạt. Sau vài năm chinh chiến, tôi sẽ chia sẻ lại quy trình thực tế nhất để tự tay tạo ICO Token – từ lý thuyết đến deployment – đồng thời tránh những “ổ gà” pháp lý, kỹ thuật và marketing qua bài viết này.

Tôi thấy ICO giống như “crowdsale 2.0” – code smart contract bán token, quản lý whitelist, phân phối token tự động. Ưu điểm lớn nhất là tiếp cận vốn nhanh, toàn cầu; nhược điểm là áp lực compliance và dễ gặp scam nếu không minh bạch.
| Bước | Nội dung | Tips |
|---|---|---|
| 1. Thiết kế Tokenomics | – Xác định tổng cung (totalSupply) – Phân bổ: tam, advisor, community, liquidity – Vesting và unlock schedule | Chia 10% team vesting 12 tháng, 20% liquidity, 70% bán ICO/airdrop. Giữ vesting để tránh dump giá. |
| 2. Viết Smart Contract ICO | – Dựa trên OpenZeppelin ERC20 – Whitelist, pause/unpause, refund soft-cap – Audit code (tự test + thuê audit) | Audit ít nhất 2 bên: internal và external. Tôi từng “cháy” 5 ETH phí gas vì error fallback—hãy test kỹ! |
| 3. Deploy & Verify | – Dùng Hardhat/Truffle + Alchemy/Infura – Deploy testnet (Goerli/Rinkeby), verify Etherscan | Luôn verify source để tăng độ tin cậy với nhà đầu tư. |
| 4. KYC & Whitelist | – Tích hợp KYC (nếu cần) – Form đăng ký wallet, thu thập address | Dùng Google Forms + Script tự động addWhitelist. Tôi từng lọc được 200 address bot chỉ trong 30 phút. |
| 5. Launch ICO | – Mở bán (unpause) – Monitor gas, lượng ETH đổ vào, feedback | Theo dõi real-time trên Tenderly/BlockScout. Sẵn sàng pause nếu phát hiện bất thường. |
| 6. Hậu ICO & Listing | – Rút vốn (nếu soft-cap đạt) hoặc refund – Listing trên DEX/CEX– Add liquidity | Chuẩn bị sẵn pool Uniswap V2/V3 ngay khi ICO kết thúc để tránh “rug pull” perception. |
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; import "@openzeppelin/contracts/access/Ownable.sol";contract MyICOToken is ERC20, Pausable, Ownable { uint public rate = 1000; // 1 ETH đổi 1000 token uint public softCap = 50 ether; uint public hardCap = 200 ether; uint public raised; mapping(address=>bool) public whitelist;
constructor() ERC20("MyICOToken","MIT") { _mint(address(this), 1_000_000 * 10**decimals()); } modifier onlyWhitelisted() { require(whitelist[msg.sender], "Chua duoc whitelist"); _; } function buy() external payable onlyWhitelisted whenNotPaused { require(raised + msg.value <= hardCap, "Vuot hardCap"); raised += msg.value; uint tokens = msg.value * rate; _transfer(address(this), msg.sender, tokens); } function addWhitelist(address user) external onlyOwner { whitelist[user]=true; } function pauseICO() external onlyOwner { _pause(); } function unpauseICO() external onlyOwner { _unpause(); } function withdraw() external onlyOwner { require(raised >= softCap, "Chua dat softCap"); payable(owner()).transfer(address(this).balance); } function refund() external whenPaused { require(raised < softCap, "Khong the refund"); uint bal = balanceOf(msg.sender); require(bal>0, "Khong co token"); _transfer(msg.sender,address(this),bal); payable(msg.sender).transfer(bal / rate); }}
Xem thêm: Cách viết smart contract trên Polygon
Dưới đây là chi tiết các sai lầm thường gặp và cách xử lý, chúng ta cùng điểm qua để không mắc phải nhé:
| Sai lầm | Dấu hiệu | Cách xử lý |
|---|---|---|
| Lỗi overflow/underflow | Token số lượng lớn bị tính sai | Dùng Solidity ^0.8 (tự check overflow) |
| Bot “cày” whitelist | Hàng ngàn address ảo | Thêm CAPTCHA / KYC cơ bản |
| Gas spike lúc launch | Tx liên tục fail, user phàn nàn | Giảm rate, pause rồi resume theo batch |
| Không verify contract | Nhà đầu tư không tin tưởng | Luôn verify lên Etherscan ngay |
Có thể bạn quan tâm: Gửi ether từ smart contract tới address
Tổ chức một initial coin offering thành công yêu cầu sự kết hợp giữa công nghệ, pháp lý, các chương trình marketing và trust. Chứng kiến nhiều dự án chớm nở, chóng tàn, tôi cho rằng“Code chỉ 30%, phần còn lại là xây dựng cộng đồng và giữ chữ tín.” ICO TokenChỉ khi 4 yếu tố này hòa hợp, dự án ICO mới thực sự bền vững. Nếu bạn đang ấp ủ một initial coin offering, hy vọng thông tin này sẽ có ích cho bạn.
Bài viết liên quan: