连接到 TRON 网络
选择 Mainnet、Shasta、Nile 或本地节点 endpoint,并用 TronWeb 或 Trident 连接 TRON 网络。
前置阅读
在 TRON 上开发,第一步是选定要连接的网络。测试阶段通常使用 Shasta 或 Nile;生产环境使用 Mainnet;需要完整控制权时,可以运行自己的全节点。
连接方式本身很简单:确定 endpoint,用 SDK 初始化客户端,然后再构造、签名和广播交易。本文先给出常用 endpoint,再给出 TronWeb 和 Trident 的最小初始化示例。
常用 HTTP endpoint
以下 endpoint 可用于快速开发和测试:
| 网络 | 全节点 HTTP endpoint |
|---|---|
| Mainnet | https://api.trongrid.io |
| Shasta 测试网 | https://api.shasta.trongrid.io |
| Nile 测试网 | https://nile.trongrid.io |
| 本地节点 | http://127.0.0.1:8090 或 http://localhost:8090 |
TronGrid 是常用的托管节点服务。Mainnet 请求通常需要 TRON-PRO-API-KEY;测试网适合入门、调试和教程演练。更多网络参数见 Networks。
JavaScript(TronWeb)接入
TronWeb 是常用的 JavaScript SDK,适合浏览器 DApp、Node.js 脚本和后端服务。它封装了交易构造、签名、广播和合约调用。
const { TronWeb } = require('tronweb');
const privateKey = process.env.TRON_PRIVATE_KEY;
const apiKey = process.env.TRON_PRO_API_KEY;
if (privateKey && !/^[0-9a-fA-F]{64}$/.test(privateKey)) {
throw new Error('请通过 TRON_PRIVATE_KEY 提供 64 个十六进制字符的账户私钥');
}
const options = {
fullHost: 'https://api.shasta.trongrid.io',
// Mainnet: https://api.trongrid.io
// Nile: https://nile.trongrid.io
headers: apiKey ? { 'TRON-PRO-API-KEY': apiKey } : {}
};
if (privateKey) options.privateKey = privateKey;
const tronWeb = new TronWeb(options);示例从环境变量读取可选的私钥和 TronGrid API Key。只读调用无需配置私钥;需要签名时,前端 DApp 应通过 TronLink 等钱包请求用户授权,后端服务应使用密钥管理系统或隔离签名服务,不要把私钥写进代码或提交到版本库。
Java(Trident)接入
Trident 是 TRON 的 Java SDK,适合 Java 后端、交易所系统、托管钱包和批处理任务。它支持地址生成、交易构造、签名、广播,并封装了常用 gRPC 调用。以下示例根据 TRON_NETWORK 只创建一个客户端;未设置时连接 Shasta。连接主网时还必须设置 TRON_PRO_API_KEY。
import org.tron.trident.core.ApiWrapper;
import java.util.Locale;
String privateKey = System.getenv("TRON_PRIVATE_KEY");
if (privateKey == null || !privateKey.matches("[0-9a-fA-F]{64}")) {
throw new IllegalArgumentException("TRON_PRIVATE_KEY must contain 64 hexadecimal characters");
}
String network = System.getenv("TRON_NETWORK");
if (network == null || network.trim().isEmpty()) {
network = "shasta";
}
ApiWrapper client;
switch (network.trim().toLowerCase(Locale.ROOT)) {
case "shasta":
client = ApiWrapper.ofShasta(privateKey);
break;
case "nile":
client = ApiWrapper.ofNile(privateKey);
break;
case "mainnet": {
String apiKey = System.getenv("TRON_PRO_API_KEY");
if (apiKey == null || apiKey.trim().isEmpty()) {
throw new IllegalArgumentException("TRON_PRO_API_KEY is required for mainnet");
}
client = ApiWrapper.ofMainnet(privateKey, apiKey);
break;
}
case "custom": {
String fullNode = System.getenv("TRON_FULLNODE_GRPC");
String solidityNode = System.getenv("TRON_SOLIDITY_GRPC");
if (fullNode == null || fullNode.trim().isEmpty()
|| solidityNode == null || solidityNode.trim().isEmpty()) {
throw new IllegalArgumentException(
"TRON_FULLNODE_GRPC and TRON_SOLIDITY_GRPC are required for a custom network"
);
}
client = new ApiWrapper(fullNode, solidityNode, privateKey);
break;
}
default:
throw new IllegalArgumentException("Unsupported TRON_NETWORK: " + network);
}公共节点、托管服务与自建节点
公共 endpoint 可以让你马上开始开发,但会受到速率限制、可用性和索引能力约束。生产环境建议在以下方案中选择:
- 托管节点服务:上线快,适合多数 DApp、钱包和后台服务。
- 自建全节点:控制权最高,适合交易所、索引器、风控系统和高频服务。
- 混合方案:主路径使用自建节点,托管服务作为备用 endpoint。
需要自建节点时,先读节点与客户端,再按部署全节点或 SR 节点操作。
相关资源
- 领取测试网 Token —— 在发起第一笔交易前先申请测试网 TRX
- 发送第一笔交易 —— 基于 TronWeb endpoint 的端到端 TRX 转账示例
- 签名与广播工作流 —— TronWeb 背后的底层调用流程
Updated 28 days ago
