波场节点 API 文档
概述
波场节点 API 让你直连我们的 TRON 节点查询链上数据:区块、账户、交易、资源、合约等。它是一个透明代理——请求被原样转发到节点,响应格式与 java-tron 标准 HTTP API 完全一致,因此任何按标准节点接口编写的代码(含 TronWeb 等 SDK 的 HTTP Provider)都可以直接切换到本服务,只需替换域名并附上 apikey。
- 免费开放:注册客户每天百万次请求、每秒 5 次限流,由金融科技机构 CoinePay 赞助、作为面向生态的公益基础设施免费提供,额度足够大部分项目与中小企业使用。
- 两类端点:
/node/wallet/{method}走 fullnode(最新数据),/node/walletsolidity/{method}走 solidity(已固化、不可逆的数据)。 - GET 与 POST 均支持:JSON body 原样转发,响应原样返回。
- 稳定安全:CoinePay 平台钱包的入账核验运行于同一节点,可用性经真实资金业务 7×24 检验。
https://api.trxapi.io?apikey=YOUR_API_KEY1M / day · 5 / s节点原生响应 · 原样转发关于我们的节点
为你服务的并非普通的自建节点:本节点由金融科技机构 CoinePay 运营,是在 TRON 链上注册的验证器(见证人)节点,已进入全网前 127 名的超级代表合伙人行列。节点地址 TCoinepWiWHaeyB7tCnebrmuB9k1WeJrhu,可随时在波场浏览器(Tronscan)查验其注册状态与得票排名。
作为面向生态的公益基础设施,节点数据查询接口由金融科技机构 CoinePay 赞助,向所有注册客户免费开放。TRON 网络分层说明:全网前 27 名为超级代表(Super Representative),第 28–127 名为超级代表合伙人(SR Partner)。
这一节点不仅对外提供查询:CoinePay 平台自身钱包的入账核验同样运行在本节点上——节点的稳定性与安全性长期经受真实资金业务的 7×24 考验,这也是我们将它作为公益基建开放给生态的底气。
TCoinepWiWHaeyB7tCnebrmuB9k1WeJrhu(coinepay)投上一票。得票与排名越高,节点获得的链上激励越多,我们会把它持续投入到免费额度与生态维护中。快速开始
- 在客户中心注册并创建
apikey(与能量 API 共用同一密钥体系;节点查询本身免费,无需充值)。 - 把标准节点接口路径中的域名替换为
https://api.trxapi.io/api/v1/openapi/node,并在 URL 上附加apikey参数:
# standard java-tron endpoint → TRXAPI node proxy # https://.../wallet/getnowblock curl "https://api.trxapi.io/api/v1/openapi/node/wallet/getnowblock?apikey=YOUR_API_KEY"
鉴权与限流
- 鉴权:所有请求通过 URL 参数
apikey鉴权,apikey 在客户中心创建。密钥请只放在服务端,避免泄露完整请求 URL。 - IP 白名单(必填):每个 apikey 必须先在客户中心「API 密钥」页配置允许调用的服务器出口 IP。未配置白名单或来源 IP 不在白名单内时返回
code=503(message 中带有本次请求 IP),白名单外的 IP 还会被临时封禁,加入白名单即可立即解封。 - 限流:注册客户默认每天百万次请求、每秒 5 次,足够大部分项目与中小企业使用。超限返回
code=429,请降低频率或次日再试;如需更高额度,请联系 [email protected]。 - 计费:节点查询免费(成本由 CoinePay 赞助承担),不消耗预付余额。
- 只想试用?可以先用下文的免 apikey 公共 RPC,无需注册。
fullnode 端点
/api/v1/openapi/node/wallet/{method}fullnode 直连转发到 fullnode 的 /wallet/{method},返回最新链上数据(含尚未固化的最新区块)。适合查询实时状态:最新区块、账户余额与资源、链参数,以及构造 / 广播交易等标准 wallet 接口。
| 参数 | 必填 | 说明 |
|---|---|---|
apikey | 是 | 商户密钥,在客户中心创建获取 |
{method} | 是 | java-tron 标准 HTTP API 接口名(路径最后一段),如 getnowblock、getaccount、gettransactionbyid |
| JSON body | 视方法而定 | POST 时按标准接口要求传 JSON,原样转发(如 getaccount 需要 address 与 visible) |
solidity 端点
/api/v1/openapi/node/walletsolidity/{method}solidity 直连转发到 solidity 节点的 /walletsolidity/{method},只返回已固化(不可逆)的数据。适合对一致性要求高的场景:入账确认、对账、交易终局性判断。同名方法与 fullnode 的差异仅在数据固化程度。
免 apikey 公共 RPC
https://api.trxapi.io 本身就是一个标准 TRON 节点地址,不需要 apikey、不需要注册:路径与 java-tron 完全一致,TronWeb 等 SDK 把 fullHost 指向它即可直接使用。
https://api.trxapi.io/wallet/{method}→ fullnode(最新数据)https://api.trxapi.io/walletsolidity/{method}→ solidity(已固化数据)https://api.trxapi.io/jsonrpc→ JSON-RPC(以太坊兼容接口,仅 POST,详见下一节)- GET 与 POST 均支持,请求与响应原样转发。
- 限额(按来源 IP):每 6 秒 2 次、每天 10 万次,超出返回 HTTP 429 与节点风格的
{"Error": "…"}。公共流量与 apikey 商户的额度完全隔离,不会互相影响。 - 适合试用、开发调试和低频查询;生产环境请注册并使用带 apikey 的
/api/v1/openapi/node/…,额度高得多。
# no apikey needed curl "https://api.trxapi.io/wallet/getnowblock" # TronWeb const tronWeb = new TronWeb({ fullHost: 'https://api.trxapi.io' });
JSON-RPC 接口(以太坊兼容)
/api/v1/openapi/node/jsonrpcJSON-RPC 直连转发到节点内置的以太坊兼容 JSON-RPC 接口,请求与响应原样转发。ethers.js / web3.js / web3.py 等 EVM 生态工具可直接接入。与 HTTP 端点使用同一 apikey、IP 白名单与配额。
- 带 apikey:
POST https://api.trxapi.io/api/v1/openapi/node/jsonrpc?apikey=YOUR_API_KEY——与 HTTP 端点同一套鉴权、IP 白名单与每日 / 每秒配额,用量合并统计。 - 免 apikey:
POST https://api.trxapi.io/jsonrpc——与免密 HTTP 共用按 IP 限额(每 6 秒 2 次、每天 10 万次)。 - 批量调用:支持 JSON 数组批量请求。带 apikey 单次最多 20 条,每条计 1 次配额,因此单批条数不能超过你的每秒配额(默认 5 次/秒);免 apikey 单次最多 5 条。使用 ethers v6 时请把
batchMaxCount设为不超过每秒配额的值(默认 5)。 - 链 ID:主网
0x2b6653dc(十进制 728126428)。JSON-RPC 中的地址为 20 字节十六进制:TRON 十六进制地址去掉开头的41,再加0x。 - 可用方法:
eth_blockNumber、eth_chainId、eth_syncing、eth_gasPrice、eth_getBalance、eth_getCode、eth_getStorageAt、eth_call、eth_estimateGas、eth_getBlockByNumber、eth_getBlockByHash、eth_getBlockTransactionCountByNumber、eth_getBlockTransactionCountByHash、eth_getTransactionByHash、eth_getTransactionByBlockNumberAndIndex、eth_getTransactionByBlockHashAndIndex、eth_getTransactionReceipt、eth_getBlockReceipts、eth_getLogs、eth_newFilter、eth_newBlockFilter、eth_getFilterChanges、eth_getFilterLogs、eth_uninstallFilter、net_version、net_listening、net_peerCount、web3_clientVersion、web3_sha3,以及 TRON 扩展方法buildTransaction(构造未签名交易)。 - 不支持:
eth_sendRawTransaction、eth_getTransactionCount等(TRON 交易模型与以太坊不同,java-tron 未实现)。广播交易请用 HTTP 端点的broadcasttransaction/broadcasthex。仅放行eth_/net_/web3_命名空间,其他方法返回-32601。 - 错误格式:统一为标准 JSON-RPC 错误对象
{jsonrpc, id, error:{code, message}}。鉴权与配额类错误的error.code沿用本文业务码(501 / 503 / 429 / 500)。免 apikey 按 IP 超限时与免密 HTTP 相同,返回 HTTP 429 与{"Error": "…"}。单次响应上限 4MB,eth_getLogs请控制区块范围。
# eth_blockNumber (with apikey) curl -X POST "https://api.trxapi.io/api/v1/openapi/node/jsonrpc?apikey=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' # → {"jsonrpc":"2.0","id":1,"result":"0x5365080"} # no apikey (public, per-IP limits) curl -X POST "https://api.trxapi.io/jsonrpc" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' // ethers v6 — USDT balanceOf via eth_call const provider = new ethers.JsonRpcProvider( 'https://api.trxapi.io/api/v1/openapi/node/jsonrpc?apikey=YOUR_API_KEY', 728126428, { staticNetwork: true, batchMaxCount: 5 }); const usdt = new ethers.Contract('0xa614f803b6fd780986a42c78ec9c7f77e6ded13c', ['function balanceOf(address) view returns (uint256)'], provider); console.log(await usdt.balanceOf('0x...')); # web3.py from web3 import Web3 w3 = Web3(Web3.HTTPProvider("https://api.trxapi.io/api/v1/openapi/node/jsonrpc?apikey=YOUR_API_KEY")) print(w3.eth.block_number)
常用方法参考
下表列出最常用的标准方法(均以 {method} 形式接在端点路径后)。方法名、参数与响应字段均遵循 java-tron 标准 HTTP API,完整清单与字段含义请以 TRON 官方开发者文档为准。
区块
| method | HTTP | 说明 |
|---|---|---|
getnowblock | GET / POST | 获取最新区块 |
getblockbynum | POST | 按区块高度获取区块(body: {"num": 12345}) |
getblockbyid | POST | 按区块哈希获取区块 |
getblockbylatestnum | POST | 获取最近 N 个区块 |
getblock | POST | 按高度或哈希获取区块,detail:false 时只返回交易 ID,体积小得多 |
getblockbylimitnext | POST | 按高度区间批量获取区块(startNum ~ endNum,左闭右开) |
gettransactioncountbyblocknum | POST | 查询某区块包含的交易数 |
账户与资源
| method | HTTP | 说明 |
|---|---|---|
getaccount | POST | 查询账户信息与 TRX 余额(body: {"address":"T...","visible":true}) |
getaccountresource | POST | 查询账户能量 / 带宽资源余量——监控能量到账的常用接口 |
getaccountnet | POST | 查询账户带宽使用情况 |
getdelegatedresourcev2 | POST | 查询两个地址间的资源委托关系(Stake 2.0) |
validateaddress | POST | 校验 TRON 地址格式是否有效 |
getdelegatedresourceaccountindexv2 | POST | 查询某地址委托出去 / 收到委托的对方地址列表(Stake 2.0) |
getcandelegatedmaxsize | POST | 查询某地址当前最多可委托的能量 / 带宽(type:0 带宽,1 能量) |
getavailableunfreezecount | POST | 查询剩余可发起的解质押次数 |
getcanwithdrawunfreezeamount | POST | 查询指定时间点可提取的已解质押 TRX |
交易
| method | HTTP | 说明 |
|---|---|---|
gettransactionbyid | POST | 按交易哈希查询交易内容(body: {"value":"txid"}) |
gettransactioninfobyid | POST | 查询交易执行结果、所在区块、能量消耗——核验委托订单 txid 的常用接口 |
gettransactioninfobyblocknum | POST | 查询某区块内全部交易的执行信息 |
broadcasttransaction | POST | 广播已在本地签名的交易 |
broadcasthex | POST | 按十六进制原文广播已签名交易 |
createtransaction | POST | 构造未签名的 TRX 转账交易(需本地签名后广播) |
getpendingsize | GET / POST | 查询节点交易池中待打包的交易数 |
gettransactionlistfrompending | GET / POST | 列出交易池中待打包交易的 ID |
gettransactionfrompending | POST | 按交易 ID 查询交易池中的待打包交易 |
合约与链参数
| method | HTTP | 说明 |
|---|---|---|
triggerconstantcontract | POST | 只读调用合约(不上链、免费)——查询 TRC20 余额常用 |
triggersmartcontract | POST | 构造合约调用交易(需本地签名后广播) |
getcontract | POST | 查询合约信息与 ABI |
getchainparameters | GET / POST | 查询链参数(含能量单价等动态参数) |
getenergyprices | GET / POST | 查询历史能量单价 |
listwitnesses | GET / POST | 列出全部见证人(可看到我们的节点) |
getnodeinfo | GET / POST | 查询节点运行状态与版本信息 |
estimateenergy | POST | 暂不支持(返回 this node does not support estimate energy)——可用 triggerconstantcontract 响应中的 energy_used 估算 |
getcontractinfo | POST | 查询合约信息、ABI 与能量分摊参数 |
getbandwidthprices | GET / POST | 查询历史带宽单价 |
getmemofee | GET / POST | 查询备注(memo)手续费 |
getburntrx | GET / POST | 查询全网累计销毁的 TRX |
getReward | POST | 查询地址可领取的投票奖励(注意大小写:getReward) |
getBrokerage | POST | 查询见证人的分成比例(注意大小写:getBrokerage) |
getnextmaintenancetime | GET / POST | 查询下一个维护期(票数结算)时间 |
getpaginatedproposallist | POST | 分页查询链上提案(offset / limit) |
调用示例
GET:查询最新区块
curl "https://api.trxapi.io/api/v1/openapi/node/wallet/getnowblock?apikey=YOUR_API_KEY"
POST:查询账户(solidity,已固化数据)
curl -X POST "https://api.trxapi.io/api/v1/openapi/node/walletsolidity/getaccount?apikey=YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","visible":true}'
POST:查询账户资源(监控能量到账)
curl -X POST "https://api.trxapi.io/api/v1/openapi/node/wallet/getaccountresource?apikey=YOUR_API_KEY" \ -d '{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","visible":true}' # response (excerpt) — EnergyLimit / EnergyUsed show delegated energy { "freeNetLimit": 600, "EnergyLimit": 65000, "EnergyUsed": 0, ... }
Python:查询 TRC20(USDT)余额
# read-only contract call via triggerconstantcontract (free, not broadcast) import requests BASE = "https://api.trxapi.io/api/v1/openapi/node" KEY = "YOUR_API_KEY" r = requests.post(f"{BASE}/wallet/triggerconstantcontract?apikey={KEY}", json={ "owner_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", "contract_address": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t", # USDT (TRC20) contract "function_selector": "balanceOf(address)", "parameter": "0000000000000000000000000000000000000000000000000000000000000000", # ABI-encoded holder address "visible": True, }) print(r.json()["constant_result"]) # hex-encoded uint256 balance
Node.js:封装一个轻量客户端
// Node.js 18+ — auth is a URL query param, so append it per request const BASE = 'https://api.trxapi.io/api/v1/openapi/node'; const KEY = process.env.TRXAPI_KEY; async function node(path, body) { const res = await fetch(`${BASE}/${path}?apikey=${KEY}`, body ? { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) } : undefined); return res.json(); } const block = await node('wallet/getnowblock'); const acct = await node('walletsolidity/getaccount', { address: 'TR7NHqjeKQx...', visible: true });
POST:核验能量订单的 txid(与能量 API 配合)
# txid comes from the /getenergy response or the order query curl -X POST "https://api.trxapi.io/api/v1/openapi/node/walletsolidity/gettransactioninfobyid?apikey=YOUR_API_KEY" \ -d '{"value":"a1b2c3d4..."}' # the receipt shows the containing block, execution result and energy usage — # an independent on-chain proof that the delegation really happened
常见用例
1. 充值入账确认(交易所 / 商户)
用 walletsolidity 的已固化数据判断入账,避免链上回滚导致资损:
- 用户充值后,按 txid 调用
/node/walletsolidity/gettransactioninfobyid——solidity 端能查到即代表交易已不可逆;TRC20 转账需同时确认receipt.result为 SUCCESS。 - 批量对账可按块高遍历:solidity 端
getblockbynum拉块,gettransactioninfobyblocknum拉整块交易的执行信息。
2. 能量到账监控(配合能量 API)
下单租能量后,调用 /node/wallet/getaccountresource 查看 EnergyLimit / EnergyUsed,确认委托能量已到账、余量足够本次转账;再用订单返回的 txid 走 gettransactioninfobyid 留存链上凭证。
3. TRC20 余额查询(钱包 / 风控)
用 triggerconstantcontract 只读调用合约的 balanceOf(address)——不上链、不消耗资源,适合高频余额巡检;某笔交易内的代币转账明细,可从 gettransactioninfobyid 返回的 log(Transfer 事件)中解析。
4. 自托管钱包 / 代付系统的转账流水线
createtransaction(构造未签名 TRX 转账)或 triggersmartcontract(构造 TRC20 转账)→ 在你自己的环境完成签名 → broadcasttransaction 广播。私钥全程不离开你的服务器。
5. 链参数与成本测算
用 getchainparameters / getenergyprices 获取实时能量单价等动态参数,测算「直接燃烧 vs 租赁能量」的成本差,为你自己的定价与路由决策提供数据。
限流与错误处理
- 成功:返回节点原生响应——原样转发、零改写,没有额外的信封包装。
- 超限:超出每秒频率或当日总量时返回
code=429。收到 429 后请指数退避(如 1s → 2s → 4s),并检查是否有失控的轮询循环。 - 鉴权失败:
apikey缺失、无效或被禁用时返回code=501。 - 方法/参数错误:节点对非法方法或参数的报错会原样返回,同样为节点原生格式。
| code | message | 说明 |
|---|---|---|
| — | 节点原样响应 | 请求成功时直接返回 TRON 节点的原始响应 |
429 | 超出限额 / Rate limited | 超出每秒频率或当日请求总量限额,请降低频率或次日再试,可联系客服提额 |
503 | IP 不在白名单 / IP not whitelisted | 来源 IP 不在该 apikey 的白名单(含未配置白名单),message 中带有本次请求 IP;白名单外的 IP 会被临时封禁 |
501 | 账户禁用 / Account disabled | apikey 不存在或已被禁用 |
最佳实践
- 资金入账用 solidity:充值确认、对账等资金场景一律以
walletsolidity(已固化数据)为准,避免链上回滚造成误判。 - 控制轮询频率:TRON 出块间隔约 3 秒,比 3 秒更快的轮询没有意义;批量监控多个地址时合并调度,避免触发 5 次/秒限流。
- 私钥永远在本地:本服务只转发查询与广播;交易签名必须在你自己的环境完成。任何要求提交私钥或助记词的「节点服务」都是诈骗(参见安全说明)。
- 与能量 API 配合:下单租能量后,用
getaccountresource核验能量到账,用gettransactioninfobyid核验订单返回的 txid——形成不依赖任何单方说法的对账闭环。 - 留意动态参数:能量单价等链参数会变化,可通过
getchainparameters/getenergyprices获取实时值,用于你自己的成本测算。