TRC-10
TRC-10 是 TRON 协议支持的原生 Token 标准。新 Token 项目请改用 TRC-20,在 DeFi 集成度上更有优势。
前置阅读
TRC-10 是 TRON 网络的协议层 Token 标准,不依赖 TVM。任意账户可发行一个 TRC-10 Token(每账户限一次),发行时燃烧 1,024 TRX。
发行 TRC-10 Token
发行 TRC-10 Token 时需燃烧 1,024 TRX,且每个账户只能发行一次。新 Token 项目建议改用 TRC-20。TRC-10 发行使用 AssetIssueContract 交易,下方给出 HTTP API 与 TronWeb SDK 两种实现。
使用 HTTP API
全节点 HTTP endpoint wallet/createassetissue 创建未签名的 TRC-10 发行交易。下面使用 visible: true,因此地址和字符串字段可以直接使用 Base58Check 与明文格式。开始时间必须晚于当前链头时间;示例将发行窗口设置为从一小时后开始,持续 24 小时。
BASE_URL=https://api.shasta.trongrid.io # 示例——可替换为任意 TRON 节点(TronGrid、第三方或自托管)
OWNER_ADDRESS="YOUR_SHASTA_ADDRESS"
START_TIME=$(($(date +%s) * 1000 + 3600000))
END_TIME=$((START_TIME + 86400000))
curl -X POST ${BASE_URL}/wallet/createassetissue \
-H 'Content-Type: application/json' \
--data-binary @- <<JSON
{
"owner_address": "${OWNER_ADDRESS}",
"name": "ExampleToken",
"abbr": "EXT",
"total_supply": 100000000,
"trx_num": 1,
"num": 1,
"precision": 6,
"start_time": ${START_TIME},
"end_time": ${END_TIME},
"description": "Example TRC-10 token",
"url": "https://example.com",
"free_asset_net_limit": 0,
"public_free_asset_net_limit": 0,
"visible": true
}
JSON收到未签名交易后,用所有者私钥签名并广播。签名与广播流程见交易。
使用 TronWeb SDK
const { TronWeb } = require('tronweb');
const privateKey = process.env.PRIVATE_KEY;
if (!/^[0-9a-fA-F]{64}$/.test(privateKey || '')) {
throw new Error('Set PRIVATE_KEY to a 64-character Shasta test private key');
}
const tronWeb = new TronWeb({
fullHost: 'https://api.shasta.trongrid.io',
privateKey
});
async function main() {
const createAssetAddress = tronWeb.defaultAddress.base58;
const saleStart = Date.now() + 60 * 60 * 1000;
const saleEnd = saleStart + 24 * 60 * 60 * 1000;
const trcOptions = {
name: 'ExampleToken',
abbreviation: 'EXT',
description: 'Example TRC-10 token',
url: 'https://example.com',
totalSupply: 100000000,
trxRatio: 1,
tokenRatio: 1,
saleStart,
saleEnd,
freeBandwidth: 0,
freeBandwidthLimit: 0,
frozenAmount: 0,
frozenDuration: 0,
precision: 6
};
const unsignedTransaction = await tronWeb.transactionBuilder.createAsset(
trcOptions,
createAssetAddress
);
const signedTransaction = await tronWeb.trx.sign(unsignedTransaction, privateKey);
const result = await tronWeb.trx.sendRawTransaction(signedTransaction);
console.log('Broadcast result:', result);
}
main().catch(error => {
console.error(error);
process.exitCode = 1;
});转账 TRC-10 Token
使用 TransferAssetContract 交易类型——这与 TRX 转账(使用 TransferContract)和 TRC-20 转账(调用智能合约的 transfer 函数)不同。
使用 HTTP API
全节点 HTTP endpoint wallet/transferasset 创建一笔未签名的 TRC-10 转账:
BASE_URL=https://api.shasta.trongrid.io # 示例——可替换为任意 TRON 节点(TronGrid、第三方或自托管)
curl -X POST ${BASE_URL}/wallet/transferasset -d '{
"owner_address": "41d1e7a6bc354106cb410e65ff8b181c600ff14292",
"to_address": "41e552f6487585c2b58bc2c9bb4492bc1f17132cd0",
"asset_name": "0x6173736574497373756531353330383934333132313538",
"amount": 100
}'创建未签名交易后,对其签名并广播。详情请参见交易。
使用 TronWeb SDK
const { TronWeb } = require('tronweb');
const privateKey = process.env.TRON_PRIVATE_KEY;
if (!/^[0-9a-fA-F]{64}$/.test(privateKey || '')) {
throw new Error('请通过 TRON_PRIVATE_KEY 提供 64 个十六进制字符的 Shasta 测试账户私钥');
}
const tronWeb = new TronWeb({
fullHost: 'https://api.shasta.trongrid.io',
privateKey
});
const fromAddress = tronWeb.defaultAddress.base58;
const toAddress = "TM2TmqauSEiRf16CyFgzHV2BVxBejY9iyR";
const tokenID = "1000088";
const amount = 1000;
// 创建未签名的 TRC-10 转账交易
const tradeobj = await tronWeb.transactionBuilder.sendToken(
toAddress,
amount,
tokenID,
fromAddress
);
// 签名
const signedtxn = await tronWeb.trx.sign(tradeobj, privateKey);
// 广播
const receipt = await tronWeb.trx.sendRawTransaction(signedtxn);
console.log('Receipt:', receipt);查询 TRC-10 余额
使用 HTTP API
全节点 HTTP endpoint wallet/getaccount 返回账户信息;TRC-10 余额出现在响应的 assetV2 数组中:
BASE_URL=https://api.shasta.trongrid.io # 示例——可替换为任意 TRON 节点(TronGrid、第三方或自托管)
curl -X POST ${BASE_URL}/wallet/getaccount -d '{
"address": "TM2TmqauSEiRf16CyFgzHV2BVxBejY9iyR",
"visible": true
}'使用 TronWeb SDK
const address = "TM2TmqauSEiRf16CyFgzHV2BVxBejY9iyR";
// TRC-10 余额位于返回账户信息的 assetV2 数组中
const account = await tronWeb.trx.getAccount(address);
console.log('TRC-10 balances:', account.assetV2);参考
有关 TRC-10 API endpoint 的完整列表(按账户 / ID / 名称查询、更新 Token 信息、参与发行等),请参见 TRON HTTP API 参考。
相关资源
- TRC-20 —— 新项目推荐的同质化 Token 标准(基于 TVM,兼容 ERC-20)
- 在智能合约中转账 TRC-10 —— 在 Solidity 合约中与 TRC-10 Token 交互
- Token 标准概览
- 交易 —— TRC-10 操作所使用的签名与广播流程
Updated 4 days ago
