Triển khai mã thông báo TRC-20 với TronWeb và TronBox — TRON Wiki

Triển khai mã thông báo TRC-20 với TronWeb và TronBox

12 phút đọc · ⌘K tìm kiếm

Triển khai mã thông báo TRC-20 trên TRON cho phép bạn tạo nội dung có thể thay thế tương thích với TronLink, SunSwap và các sàn giao dịch hỗ trợ danh sách TRC-20 tùy chỉnh. Phản ánh tiêu chuẩn ERC-20 — Tính vững chắc trên TVM với các tập lệnh triển khai TronBox hoặc TronWeb.

Hướng dẫn này đi từ mã hợp đồng đến triển khai mạng chính và xác minh TronScan.

TRC-20 yêu cầu {#tiêu chuẩn}

Giao diện tối thiểu (xem Solidity trên TRON):

  • name(), symbol(), decimals()
  • totalSupply(), balanceOf(address)
  • transfer(address,uint256), approve(address,uint256), transferFrom(...)
  • Sự kiện: Transfer, Approval

Sử dụng OpenZeppelin ERC20 được điều chỉnh cho chuỗi công cụ TRON cho mã thông báo sản xuất.

Thiết lập dự án với TronBox

npm install -g tronbox
tronbox init

Cấu trúc:

contracts/
  MyToken.sol
migrations/
  2_deploy_token.js
tronbox.js

Định cấu hình mạng trong tronbox.js — Shasta và mainnet fullHost trỏ tới TronGrid.

Tài liệu tham khảo đầy đủ về TronBox: Hợp đồng thông minh TronBox.

Hợp đồng mẫu

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract MyToken is ERC20 {
    constructor(uint256 initialSupply) ERC20("My Token", "MTK") {
        _mint(msg.sender, initialSupply * 10 ** decimals());
    }
}

Điều chỉnh decimals() mặc định (18) so với USDT (6) dựa trên trường hợp sử dụng.

Tập lệnh di chuyển

const MyToken = artifacts.require('MyToken');

module.exports = async function (deployer) {
  await deployer.deploy(MyToken, 1000000); // 1M tokens
};

Triển khai tới Shasta

  1. Địa chỉ người triển khai quỹ với Shasta TRX (vòi).
  2. Đặt khóa riêng trong tronbox.js hoặc env (không bao giờ cam kết).
  3. Chạy:
tronbox compile
tronbox migrate --network shasta
  1. Lưu ý địa chỉ hợp đồng đã triển khai từ đầu ra.
  2. Kiểm tra transfer qua TronWeb hoặc TronIDE.

Triển khai vào mạng chính

Trước chuyến bay:

  • [ ] Đánh giá bảo mật — bảo mật hợp đồng thông minh
  • [ ] Đủ TRX/Năng lượng cho người triển khai
  • [] Tham số cuối cùng của hàm tạo (tên, nguồn cung cấp, quản trị viên)
  • [] Không có khóa riêng kiểm tra trong repo
tronbox migrate --network mainnet

Chỉ triển khai với TronWeb

Giải pháp thay thế không có TronBox — biên dịch cục bộ, triển khai mã byte:

const contract = await tronWeb.contract().new({
  abi,
  bytecode,
  feeLimit: 1_000_000_000,
  callValue: 0,
  parameters: [1000000],
});
console.log(contract.address);

Xác minh trên TronScan

  1. Mở địa chỉ hợp đồng trên TronScan.
  2. Xác minh hợp đồng — nguồn tải lên, phiên bản trình biên dịch, tối ưu hóa.
  3. Người dùng có thể đọc name/symbol và tin tưởng vào mã byte phù hợp.

Mã thông báo chưa được xác minh gây ra sự nghi ngờ giả USDT-style từ người dùng.

Sau triển khai

  • Chỉ cung cấp bổ sung cho việc đúc tiền nếu hệ thống mã thông báo yêu cầu — tài liệu công khai
  • Tạo tính thanh khoản SunSwap nếu muốn giao dịch công khai
  • Gửi thông tin mã thông báo cho người khám phá (quy trình khác nhau)
  • Tích hợp truy vấn số dư trong ứng dụng của bạn

Chi phí và năng lượng

Hợp đồng lớn tiêu thụ nhiều năng lượng hơn. Đóng băng TRX trên tài khoản người triển khai trước khi di chuyển để giảm tình trạng cháy TRX.

Danh sách kiểm tra sau triển khai

Sau khi triển khai: xác minh nguồn trên TronScan, chuyển quyền sở hữu sang multisig, ghi lại số thập phân và giới hạn cung cấp một cách công khai, kiểm tra chuyển/phê duyệt trên bản sao Shasta trước và thêm logo mã thông báo qua gửi TronScan nếu có thể để hiển thị ví.

Tham số Tokenomics

Quyết định trước khi triển khai: decimals (thường là 6 hoặc 18), totalSupply, tính năng đúc, khả năng tạm dừng và danh sách đen. Mỗi quyền là một bề mặt tấn công nếu các phím bị xâm phạm. Nhiều mã thông báo cộng đồng sử dụng nguồn cung cố định với quyền sở hữu bị từ bỏ - ghi lại lựa chọn của bạn một cách công khai để chủ sở hữu biết các giả định về độ tin cậy.

Danh sách kiểm tra khắc phục sự cố

Nếu có sự cố xảy ra trên TRON, hãy xử lý nó như một vấn đề gỡ lỗi có cấu trúc: xác nhận txid chính xác trên chuỗi, xác minh địa chỉ hợp đồng mục tiêu và chỉ sau đó mới quyết định xem liệu lỗi có thể phục hồi được hay không. Trên TRON, nhiều vấn đề “bí ẩn” chỉ đơn giản là một trong số: sai mạng (mainnet so với testnet), hợp đồng mã thông báo sai (USDT giả / mã thông báo có tên tương tự), không đủ tài nguyên (OUT_OF_ENERGY / băng thông) hoặc độ trễ giao diện người dùng/trình lập chỉ mục giữa ví và trình khám phá.

Bắt đầu với các bước kiểm tra dựa trên chuỗi sau:

  • Luôn sao chép toàn bộ txid/hash từ ví hoặc explorer của bạn.
  • Xác nhận trạng thái kết quả tx trên TronScan (SUCCESS, REVERT, OUT_OF_ENERGY hoặc vẫn đang chờ xử lý).
  • Kiểm tra xem địa chỉ người nhận/hợp đồng có khớp với nội dung bạn định gửi hay không.
  • Nếu đó là lệnh gọi hợp đồng, hãy xác nhận rằng bộ chọn chức năng và các tham số phù hợp với tiêu chuẩn mã thông báo mà bạn cho rằng mình đang sử dụng (TRC-20 so với TRC-10 so với BEP-20 trên BSC).

Sau đó áp dụng đường dẫn sửa lỗi cho danh mục của bạn:

  • Xác nhận trạng thái và thông số giao dịch.
  • Xác minh địa chỉ (hợp đồng mã thông báo, người nhận, bộ định tuyến/người chi tiêu).
  • Thêm hoặc ủy quyền tài nguyên (Năng lượng/Băng thông) khi lỗi do tài nguyên.

###Những lỗi thường gặp

Các mẫu này gây ra hầu hết các lỗi ở cấp độ người dùng:

  • Sử dụng địa chỉ mainnet trên testnet (hoặc ngược lại).
  • Sao chép ký hiệu mã thông báo thay vì địa chỉ hợp đồng TRC-20 thực tế.
  • Ký sai địa chỉ phê duyệt/chi tiêu do liên kết UI độc hại hoặc lỗi thời.
  • Thử lại mà không thay đổi đầu vào bị lỗi (ví dụ: REVERT tiếp tục hoàn nguyên cho đến khi bạn sửa được tham số).Nếu bạn không chắc chắn, đừng “gửi lại”. Thực hiện một thay đổi có kiểm soát, xác minh trên TronScan rồi tiếp tục.

##Câu hỏi thường gặp

Làm cách nào để biết liệu giao dịch có thực sự được xác nhận hay không?

Sử dụng TronScan và kiểm tra trạng thái kết quả tx. Nhãn “đang chờ xử lý” của ví có thể bị trễ; trạng thái dây chuyền là nguồn gốc của sự thật. Sao chép txid và xác minh SUCCESS/REVERT/OUT_OF_ENERGY, không chỉ văn bản giao diện người dùng.

Tại sao giao diện người dùng khác với TronScan?

Một số ví và dApp sử dụng các bộ chỉ mục hoặc lớp bộ đệm khác nhau. Độ trễ ngắn giữa phát sóng và lập chỉ mục là bình thường; so sánh txid và đợi chuỗi ổn định trước khi kết luận thất bại.

Tôi nên làm gì sau REVERT?

Dừng và giải mã cuộc gọi thất bại. Hầu hết REVERT đều do tham số không hợp lệ, địa chỉ hợp đồng sai, thiếu phê duyệt hoặc không khớp giữa tiêu chuẩn và phương thức mã thông báo. Khắc phục nguyên nhân rồi ký lại.

Ký phê duyệt không giới hạn có an toàn không?

Phê duyệt không giới hạn chỉ an toàn đối với các địa chỉ chi tiêu đáng tin cậy mà bạn đã xác minh (nguồn đã xác minh, bộ định tuyến chính xác và hợp đồng mã thông báo dự kiến). Để thử nghiệm, hãy ưu tiên phê duyệt có giới hạn và thu hồi sau khi bạn hoàn thành.

TRON yêu cầu những tài nguyên gì cho cuộc gọi hợp đồng?

Việc thực thi hợp đồng thông minh chủ yếu tiêu thụ Năng lượng, trong khi byte giao dịch tiêu thụ Băng thông. Nếu bạn nhận được OUT_OF_ENERGY, hãy thêm/đóng băng/ủy thác Năng lượng. Nếu băng thông cạn kiệt, hãy tập trung vào việc giữ đủ chất lỏng TRX để phân bổ byte và tài nguyên.

Làm cách nào để giảm phiếu hỗ trợ?

Hiển thị cho người dùng thông báo rõ ràng về “điều gì đã xảy ra” dựa trên trạng thái chuỗi và liên kết trực tiếp đến hướng dẫn có liên quan (đang chờ xử lý, không thành công, hết năng lượng hoặc xác minh). Lưu trữ txid để bạn có thể hòa giải nhanh chóng.

Hướng dẫn liên quan {#có liên quan}

Câu hỏi thường gặp

Chi phí triển khai TRX là bao nhiêu?

Việc triển khai tiêu tốn Năng lượng và TRX tùy thuộc vào quy mô hợp đồng - thường là hàng chục đến hàng trăm TRX nếu Năng lượng không bị đóng băng. Hãy thử nghiệm trên Shasta trước.

Mã thông báo TRC-20 đã triển khai có tự động được liệt kê trên SunSwap không?

Không. Bất kỳ ai cũng có thể tạo một nhóm, nhưng việc niêm yết trên các giao diện người dùng và sàn giao dịch chính yêu cầu các quy trình xem xét và thanh khoản riêng biệt.

TRC-20 vs TRC-10?

TRC-20 là mã thông báo hợp đồng thông minh Solidity. TRC-10 là phát hành tài sản gốc không có logic hợp đồng đầy đủ. USDT là TRC-20.

Tôi có thể tạo bản sao USDT không?

Về mặt kỹ thuật thì có; có vấn đề về pháp lý và đạo đức. Những kẻ lừa đảo làm điều này — không triển khai các biểu tượng lừa đảo.

Phiên bản trình biên dịch nào?

So khớp Solidity được TronBox hỗ trợ — chọn tronbox compile --helpTVM đã giải thích.