Bỏ qua để đến nội dung

Bắt đầu

Hướng dẫn này là bệ phóng đưa bạn vào hệ sinh thái TRON. Vào cuối bài viết này, bạn sẽ có một hợp đồng thông minh được triển khai và hiểu biết vững chắc về các công cụ cơ bản, cách quản lý tài nguyên và kết nối mạng an toàn. Chúng tôi giả định bạn đã có kiến thức cơ bản về JavaScript và Solidity — bắt đầu xây dựng nào.

Điều kiện tiên quyết: Bộ công cụ của bạn

Phần tiêu đề “Điều kiện tiên quyết: Bộ công cụ của bạn”

Trước khi viết bất kỳ mã nào, hãy đảm bảo môi trường cục bộ của bạn có những yếu tố thiết yếu sau:

  • Node.js v18 hoặc mới hơn (node --version)
  • npm hoặc yarn
  • Tiện ích mở rộng trình duyệt TronLink (cầu nối của bạn với mạng lưới)

Bước 1 — Tạo Hộp cát Phát triển của bạn (Ví)

Phần tiêu đề “Bước 1 — Tạo Hộp cát Phát triển của bạn (Ví)”

Bạn không bao giờ nên trộn lẫn tiền cá nhân của mình với môi trường phát triển. Các công cụ phát triển yêu cầu quyền truy cập vào private key để ký các đợt triển khai và bằng cách tạo một ví “sandbox” riêng biệt, độc lập, bạn hoàn toàn loại bỏ rủi ro vô tình đốt TRX thật trong một tập lệnh thử nghiệm bị lỗi.

  1. Mở TronLink và nhấp vào biểu tượng tài khoản → Add AccountCreate Account.
  2. Đặt tên rõ ràng cho nó, như “Dev - Testnet”.
  3. Sao lưu cụm từ hạt giống (seed phrase). Đúng, nó là một ví dev, nhưng mất quyền truy cập có nghĩa là mất lịch sử testnet của bạn và phải cấu hình lại mọi thứ.
  4. Sao chép địa chỉ ví (tiền tố T, 34 ký tự). Đây là danh tính của bạn trên mạng lưới.

Bước 2 — Nạp nhiên liệu với TRX Testnet

Phần tiêu đề “Bước 2 — Nạp nhiên liệu với TRX Testnet”

Mọi thao tác thay đổi blockchain (như triển khai hợp đồng) đều tiêu thụ tài nguyên mạng (Năng lượng và Băng thông). Trên Mainnet, điều này tốn TRX thật. Trên một testnet, bạn sử dụng “TRX Testnet” miễn phí, vô giá trị để mô phỏng các chi phí này mà không gặp rủi ro tài chính.

TRON duy trì hai mạng testnet công khai chính:

  • Nile: Testnet tiên tiến nhất. Nó thường chứa các bản nâng cấp giao thức mới nhất, biến nó thành nơi tốt nhất để kiểm tra các tính năng mới.
  • Shasta: Testnet ổn định. Nó phản ánh môi trường mainnet một cách hoàn hảo, rất tuyệt vời cho giai đoạn dàn dựng cuối cùng.

Đối với việc phát triển chung và bám sát hướng dẫn này, chúng ta sẽ sử dụng Nile vì đây là hộp cát tiêu chuẩn cho các nhà phát triển mới. Hãy cấp vốn cho ví của bạn:

  1. Truy cập vào Nile Faucet.
  2. Dán địa chỉ ví dev mới của bạn, hoàn thành reCAPTCHA và nhấp vào Obtain.
  3. Xác minh khoản nạp: Kiểm tra số dư của bạn trên Nile Explorer (TRONSCAN).

Bước 3 — Cài đặt TronBox (Trung tâm Chỉ huy của bạn)

Phần tiêu đề “Bước 3 — Cài đặt TronBox (Trung tâm Chỉ huy của bạn)”

Biên dịch Solidity xuống bytecode và đẩy nó lên blockchain một cách thủ công qua các yêu cầu HTTP thô rất tẻ nhạt và dễ sinh lỗi. TronBox là framework tiêu chuẩn giúp tự động hóa quá trình biên dịch, triển khai và luồng thử nghiệm, giữ cho dự án của bạn được tổ chức gọn gàng.

Terminal
# Task: Cài đặt framework TronBox toàn cầu để bạn có thể sử dụng nó từ bất kỳ thư mục nào.
npm install -g tronbox
tronbox --version

Hãy tạo một thư mục làm việc sạch sẽ:

Terminal
# Task: Khởi tạo một dự án TronBox mới để tạo cấu trúc thư mục cần thiết.
mkdir my-tron-project
cd my-tron-project
tronbox init

TronBox tạo ra một cấu trúc tiêu chuẩn cho bạn:

  • /contracts/: Nơi chứa các tệp Solidity thô của bạn.
  • /migrations/: Các tập lệnh chỉ định chính xác cách thức các hợp đồng của bạn nên được triển khai.
  • /test/: Nơi bạn sẽ viết các bài kiểm tra để đảm bảo logic của bạn không có lỗ hổng.
  • tronbox.js: Tệp cấu hình gốc.

TronBox cần biết nơi để triển khai các hợp đồng của bạn (các endpoint của mạng lưới) và ai sẽ trả phí cho việc triển khai (private key của ví dev của bạn). Chúng tôi sử dụng các biến môi trường (.env) để nhúng private key một cách linh hoạt nhằm tránh việc nó bị hardcode vào các tệp mã nguồn của bạn.

Thay thế nội dung của tronbox.js bằng cấu hình này:

tronbox.js
// Task: Chỉ định cho TronBox cách kết nối với mạng Nile testnet một cách an toàn.
module.exports = {
networks: {
nile: {
privateKey: process.env.PRIVATE_KEY_NILE,
userFeePercentage: 100,
feeLimit: 1000000000,
fullHost: 'https://nile.trongrid.io',
network_id: '3',
},
mainnet: {
privateKey: process.env.PRIVATE_KEY_MAINNET,
userFeePercentage: 100,
feeLimit: 1000000000,
fullHost: 'https://api.trongrid.io',
network_id: '1',
},
},
compilers: {
solc: {
version: '0.8.18',
},
},
};

Tạo một tệp .env trong thư mục gốc của dự án của bạn (và thêm nó vào .gitignore ngay lập tức!):

.env
# Task: Lưu trữ an toàn private key testnet của bạn ra khỏi quản lý mã nguồn.
PRIVATE_KEY_NILE=your_nile_dev_wallet_private_key_here

(Để lấy private key của bạn: Mở TronLink → chọn tài khoản dev của bạn → nhấp vào menu ba chấm → Export Account).


Bước 5 — Viết & Biên dịch Hợp đồng Đầu tiên của Bạn

Phần tiêu đề “Bước 5 — Viết & Biên dịch Hợp đồng Đầu tiên của Bạn”

Máy ảo TRON (TVM) tương thích cao với Máy ảo Ethereum (EVM). Điều này có nghĩa là chúng ta viết các hợp đồng của mình bằng Solidity. Khi chúng ta biên dịch, TronBox dịch mã Solidity con người có thể đọc được này thành bytecode mà máy có thể đọc được và tạo ra một ABI (Giao diện Nhị phân Ứng dụng), đóng vai trò như một “cuốn sổ tay” hướng dẫn cách các frontend có thể tương tác với hợp đồng.

Tạo một tệp mới tại contracts/SimpleStorage.sol:

SimpleStorage.sol
// Task: Định nghĩa một hợp đồng tối giản giúp lưu trữ và truy xuất một số duy nhất.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract SimpleStorage {
uint256 private value;
// Các Event cho phép các frontend lắng nghe những thay đổi trên blockchain
event ValueSet(uint256 indexed newValue, address indexed setter);
// Các hàm 'external' có thể được gọi bởi người dùng hoặc các hợp đồng khác
function set(uint256 _value) external {
value = _value;
emit ValueSet(_value, msg.sender);
}
// 'view' có nghĩa là hàm này đọc dữ liệu nhưng không thay đổi blockchain
function get() external view returns (uint256) {
return value;
}
}

Bây giờ, hãy yêu cầu TronBox biên dịch nó:

Terminal
# Task: Dịch mã Solidity thành bytecode sẵn sàng cho TVM và ABI.
tronbox compile

Nhìn vào bên trong thư mục build/contracts/. TronBox vừa tạo ra các tạo tác cần thiết cho việc triển khai.


Bước 6 — Lập bản đồ Triển khai (Di trú)

Phần tiêu đề “Bước 6 — Lập bản đồ Triển khai (Di trú)”

Blockchain là một cỗ máy trạng thái. “Di trú” đơn giản có nghĩa là dịch chuyển blockchain từ trạng thái hiện tại sang một trạng thái mới bao gồm hợp đồng của bạn. Tập lệnh di trú cho TronBox biết chính xác những hợp đồng nào cần triển khai và theo thứ tự nào.

Tạo migrations/2_deploy_simple_storage.js:

2_deploy_simple_storage.js
// Task: Hướng dẫn TronBox triển khai hợp đồng SimpleStorage.
const SimpleStorage = artifacts.require('SimpleStorage');
module.exports = function (deployer) {
deployer.deploy(SimpleStorage);
};

Đã đến lúc biến nó thành hiện thực. Bằng cách chạy lệnh migrate, TronBox sẽ xây dựng một giao dịch triển khai, ký nó bằng private key trong .env của bạn và phát nó lên mạng Nile. Mạng lưới sẽ khấu trừ TRX Testnet (Năng lượng/Băng thông) để lưu trữ bytecode của hợp đồng của bạn vĩnh viễn.

Terminal
# Task: Phát hợp đồng của bạn lên mạng lưới để đưa nó vào hoạt động.
source .env # Tải private key của bạn vào phiên làm việc của terminal
tronbox migrate --network nile

Quan sát terminal. TronBox sẽ xuất ra một địa chỉ hợp đồng đã được triển khai (bắt đầu bằng T...). Sao chép địa chỉ này.

Kiểm tra thành quả: Đi đến nile.tronscan.org và tìm kiếm địa chỉ hợp đồng mới của bạn. Bạn sẽ thấy lượng Năng lượng chính xác đã được tiêu thụ và giao dịch triển khai đã được xác minh. Bạn chính thức đã hiện diện trên TRON.


Một hợp đồng thông minh không mấy hữu ích nếu không ai có thể nói chuyện với nó. tronweb là SDK JavaScript chính thức. Chúng ta sử dụng nó để kết nối một tập lệnh Node.js (hoặc một frontend React) trực tiếp với blockchain nhằm thực thi các hàm set()get() của chúng ta.

Đầu tiên, cài đặt SDK:

Terminal
# Task: Thêm SDK TronWeb vào dự án của bạn để cho phép giao tiếp với blockchain.
npm install tronweb

Tạo scripts/interact.js:

interact.js
// Task: Sử dụng TronWeb để đọc từ và ghi vào hợp đồng live của bạn.
import TronWeb from "tronweb"
// Khởi tạo TronWeb với endpoint Nile và key dev của bạn
const tronWeb = new TronWeb({
fullHost: 'https://nile.trongrid.io',
privateKey: process.env.PRIVATE_KEY_NILE,
});
const CONTRACT_ADDRESS = 'T...'; // Dán địa chỉ đã được triển khai của bạn vào đây!
async function main() {
// Tải ABI để TronWeb biết những hàm nào tồn tại
const contract = await tronWeb.contract().at(CONTRACT_ADDRESS);
console.log('Thực thi thao tác ghi...');
// .send() tạo ra một giao dịch, đốt Năng lượng, và thay đổi trạng thái blockchain
const tx = await contract.set(42).send();
console.log('Hash giao dịch:', tx);
console.log('Thực thi thao tác đọc...');
// .call() là một truy vấn cục bộ, miễn phí tới một node. Nó không làm thay đổi trạng thái.
const result = await contract.get().call();
console.log('Giá trị hiện đang được lưu trữ on-chain:', result.toString());
}
main().catch(console.error);

Chạy tập lệnh tương tác của bạn:

Terminal
# Task: Thực thi tập lệnh để trò chuyện với Nile testnet.
node scripts/interact.js

Xin chúc mừng! Bạn đã hoàn thành thành công toàn bộ vòng đời phát triển DApp trên TRON. Bạn hiện có:

  • Một ví TRON cho nhà phát triển an toàn được cấp vốn bằng TRX Testnet.
  • TronBox được cấu hình để quản lý các bản biên dịch và triển khai của bạn.
  • Một Hợp đồng thông minh đang hoạt động chạy trên Nile testnet.
  • Một tập lệnh Node.js sử dụng tronweb để đọc và ghi vào blockchain.

Bạn đã có nền tảng. Bây giờ là lúc để xây dựng một cái gì đó phức tạp hơn.


Cơ bản về Solidity

Cần ôn lại ngôn ngữ này? Xem lại cú pháp Solidity, khả năng tương thích EVM và các mẫu thiết kế dành riêng cho TRON.

Đọc Tài liệu giới thiệu →

Hợp đồng Thông minh

Đã sẵn sàng viết các logic phức tạp? Đi sâu vào các hành vi đặc thù của TVM và các kỹ thuật tối ưu hóa Năng lượng.

Khám phá Hợp đồng thông minh TVM →

tronweb SDK

Muốn xây dựng một frontend? Nhận tài liệu tham khảo đầy đủ về quản lý tài khoản, ký giao dịch và lắng nghe sự kiện.

Làm chủ SDK →

Mô hình phí & Tài nguyên

Tự hỏi tại sao việc triển khai tốn Năng lượng? Tìm hiểu cách mô hình tài nguyên của TRON khác biệt so với Phí mạng truyền thống.

Hiểu về Phí TRON →