@ anywalletkit/wallet-tron (英语)
Tron 账户 m/44'/195'/0'/0/i (BIP-44 — TronLink 默认值),由金色来支撑
向量在 @anywalletkit/conformance。没有子网:全节点的 HTTP API 构建
raw_data账户检查,模拟,标志 txID 与高贵的秒256k1
和广播.
安装
npm install @anywalletkit/wallet-tron
# or: pnpm add @anywalletkit/wallet-tron · yarn add @anywalletkit/wallet-tron
时间: @ anywalletkit/wallet-tron (英语)发表于 发布工作流程 与出处.
import WalletManagerTron from '@anywalletkit/wallet-tron'
const wallet = new WalletManagerTron(seedPhrase, { provider: ['https://api.trongrid.io', 'https://tron-rpc.example'], headers: { 'TRON-PRO-API-KEY': key } })
const account = await wallet.getAccount(0)
await account.transfer({ recipient: 'T…', amount: 1_000_000n }) // 1 TRX (sun)
await account.transfer({ token: USDT_TRC20, recipient: 'T…', amount: 1_000_000n }) // TRC-20
await account.sendTransaction({ contractAddress, functionSelector: 'approve(address,uint256)', parameters: [...] })
const sig = await account.sign('hello') // TIP-191, 0x + r||s||v (27/28)
wallet.dispose()
provider 是一个或多个全节点urls(或自定义的运输);列表按顺序失效,以及
之后每个 url 请求时间 timeoutMs (违约15 000)。 一个没有回答的广播
重排为同一签名字节( 1) txID,接受过一次)到下一个提供者
DUP_TRANSACTION_ERROR 计数为已接受; 当节点回答时, 它会扔出
BroadcastUnknownError 与 txID ——看好,不要再建设和签署. 太阳是
从 url 提供者中读取,而不进行四舍五入(高于 2^53 的提示要精确); 自定义运输
拒绝转移超过 2^53 - 1 太阳
节点建立它.
签名前会发生什么
每个 signTransaction 编号 : sendTransaction 编号 : transfer 穿过同一个大门:
- 硬检查 (单位:千美元)
UnsafeTransactionError,带有code- 一份合同;owner_address是这个账户;ref_block_bytes编号 :ref_block_hash提供方的参考文献 屏蔽所配置网络的块(ref-block-mismatch; Tron 签名约束于其 ——离线,除非allowOfflineTestnetSigning: true(单位:千美元)offline-network(三);raw_data.data最多512个字节(memo(三);expiration未来的未来和 最多24小时; 没有 TRX / TRC-20 转到零地址, 除非allowBurn: true· ;fee_limit加紧执行transactionMaxFee财务报告和审定财务报表WriteOptions.maxFee,以及fee_limit加减 带宽/备忘/激活费不在上限内(fee-limit(无)AccountPermissionUpdateContract(掌声) 账户的密钥结束),除非allowPermissionChanges: true(单位:千美元)permission-change; 无合同类型 钱包无法解码, 除非allowUndecodedContracts: true(单位:千美元)undecoded-contract· ;VoteWitnessContract仅重新分配选票并签字)。 同样的检查运行在signRaw,哪个 带WriteOptions并保存交易上的签名( 多相码联合签名) : 收费上限 它通过提供商定价字节 并拒绝合同呼叫fee_limit, (中文(简体) ), 或在没有供应商的情况下进行的任何交易。 合同呼叫参数必须与functionSelector签名和编码每个ABI字(encodeCall) (中文(简体) ). - 模拟 (单位:千美元)
SimulationError关闭simulate: false:合同电话通过/wallet/triggerconstantcontract且还原理由为ABI-解码(Error(string), (中文(简体) ),Panic);TRX转账检查余额是否包括金额+费用. - 费用估计 编辑
transferMaxFee编号 :transactionMaxFee盖.
describeTransaction(tx) 告诉你交易是做什么的,离线: trx-transfer, (中文(简体) ),
trc20-transfer, (中文(简体) ), trc20-approve, (中文(简体) ), contract-call, (中文(简体) ), freeze, (中文(简体) ), unfreeze ——已解码
收款人/金额/支出人和警告(unlimited-approve, (中文(简体) ), zero-address, (中文(简体) ), memo-fee, (中文(简体) ),
expired) (中文(简体) ). account.describeTransactionOnline(tx) 添加 unactivated-recipient。 。 。 .
收费
account.estimateFee(tx) → { bandwidth, energy, trxBurn, breakdown }时 trxBurn 实值
寄件者在输入/ 免费资源后实际支付的( 日) :
- 带宽 点=序列大小(
raw_data+ protobuf 信封 + 65字节签名)- 64字节结果储备——268个TRX转让,~345个TRC-20转让. 被绑住
带宽首先使用,然后是免费的每日津贴,否则
getTransactionFee每分太阳.
- 64字节结果储备——268个TRX转让,~345个TRC-20转让. 被绑住
带宽首先使用,然后是免费的每日津贴,否则
- 能源 =:
energy_used常有的呼唤;没有遮住的能量被烧毁 时间getEnergyFee。 。 。 .fee_limit默认为能×价格×1.2(封顶于transactionMaxFee和电话maxFee) (中文(简体) ). - 账户创建 (TRX转到一个隐形地址):
getCreateNewAccountFeeInSystemContract(1 TRX)加getCreateAccountFee(0.1 TRX) 除非悬浮带宽覆盖字节—— 创建时不接受免费带宽. - 备忘 (单位:千美元)
raw_data.data:getMemoFee(1 TRX) (中文(简体) ).
quoteSendTransaction 编号 : quoteTransfer 返回时 { fee: trxBurn, activationFee, estimate }。 。 。 .
备忘录raw_data.data(中文(简体) )
transfer({ …, memo }), (中文(简体) ), { to, value, memo } 和与 memo 附 录
文本作为节点所构建的 protobuf 字段 10 raw_data。记录在
其犬类位置(在 expiration,在 contract)所以说 txID 我们签了
等于从它自己的再序列化中重排的 Java-tron ; JSON 广播
带有与 raw_data.data (hex) (英语). 备忘录费getMemoFee, 1 TRX) (中文(简体) )
带宽显示在 estimateFee,以及 describeTransaction 报告
备忘 memo-fee 警告 警告他们 备忘录被封为 512 UTF-8 字节; 附加
一到已经包含的交易 raw_data.data 被拒绝.
签名人
通过一秒256k1的账号 Signer 从 @anywalletkit/core: 种子路径
使用a LocalSigner (零时 dispose()(三); new WalletManagerTron(signer) 包装
一个外部的(硬件、MPC、后端)。 交易请求 ecdsa-recoverable
结束 sha256(raw_data) 内容 tron-tx, TIP-191 信息与 tron-message。 。 。 .
一个衍生 SeedSigner 时间 m/44'/195'/0'/0 产量 getAccount(i) 儿童;任何
其他签名符是 getAccount(0) 只有这个. WalletAccountTron.fromPrivateKey(…) 留着
生键形.
活动历史
createTronHistory 是链子 HistorySource (单位:千美元)@anywalletkit/core在特龙格里德上空.
import { createTronHistory } from '@anywalletkit/wallet-tron/history'
const history = createTronHistory({ apiKey: process.env.TRONGRID_KEY })
const page = await history.listActivity('TVSz6xJL2M53HDZyFTeDcGCmEDdwmU4zbv', { limit: 25 })
const older = await history.listActivity(address, { cursor: page.cursor })
const one = await history.getTransaction(page.items[0].hash, address)
history.explorerTxUrl(one.hash) // https://tronscan.org/#/transaction/…
| 选项 | 默认 | 说明 |
|---|---|---|
apiUrl | https://api.trongrid.io (树根/ 无根由 network(中文(简体) ) | 任意TronGrid相容的主机. |
apiKey | 无 | TRON-PRO-API-KEY。无密钥 TronGrid 允许 每个终点1个请求/s (答复) request rate exceeded the allowed_rps(1)) (中文(简体) ). |
network | mainnet | tron:0x2b6653dc /shasta/无. |
rateLimit | 1 rps 无密钥, 10 有密钥 | |
fetch, (中文(简体) ), timeoutMs | 全球,15 000 |
名单. GET /v1/accounts/{a}/transactions 财务报告和审定财务报表 GET /v1/accounts/{a}/transactions/trc20,两者 limit, (中文(简体) ), order_by=block_timestamp,desc, (中文(简体) ), fingerprint 继续并 min_timestamp 何时 since 由 txID: a 合并而成 TriggerSmartContract 加上它的TRC-20是一行 ChainTx 其标志性腿出自TRC-20排行token =合同, standard: 'trc20', (中文(简体) ), symbol, (中文(简体) ), decimals 从 token_info) (中文(简体) ). 仅从TRC-20列表中得知的转会(有人的电话将信使移到地址)是自己的一行: confirmed,没有 fee,没有 call,没有 block。 。 。 . TransferContract ——本地转移和 nativeValue· ; TransferAssetContract * 与TRC-10 id的转会 token· ; TriggerSmartContract → call.to =合同(基数58), call.selector = 前4个字节 data, (中文(简体) ), call.data =: 0x + 数据, call.method = 'transfer' 页:1 a9059cbb, (中文(简体) ), nativeValue =: call_value其他系统合同(冻结、表决、代表.) call.method =合同类型, call.to =接受者或拥有者. internal_transactions 与TRX调用值成为本土转移. fee =: ret[0].fee (倒计时) net_fee + energy_fee, (中文(简体) ), status 从 contractRet, (中文(简体) ), block =: blockNumber。 。 。 .
咒语. 每个名单都按自己的内容阅读 meta.fingerprint。一个交易的行共享块时间戳,所以一个页面从两个列表中取下个时间戳的行,通过txID将其合并并按txID顺序发出;当它们不适合时 limit,页面结束在时间戳内。 光标是基数64 JSON { v: 2, n, s: { tx, trc20 }, t?, g? }: 每个 API 请求的行 n 采取的立场(适用于整个清单,不论 limit 之后的几页询问),每个列表中,各页所持未读行的指纹,以及其中被消耗的指纹数量(cnull 加上——仅部分散发的时间戳——其价值 t 及其已发行的交易 g。没有丢失或重复,但许多行都共享时间戳;一个指纹的API不会推进(一个网关丢弃参数)结束列表,而不是循环,一个呼叫中一个列表的500多页无法通过 HistoryUnavailableError (光标仍然可用)而不是剪去列表; a v: 1 拒绝使用早先版本的光标(再次开始列表).
单笔交易. POST /wallet/gettransactionbyid + 键 POST /wallet/gettransactioninfobyid (两项请求):准确 fee, (中文(简体) ), status 从 receipt.result,从信息中阻断/时间,解码为 TRC-20 从 Transfer 日志(符号 / 小数未知)。 信息端点是 没有 在列表时被调用——仅限TRC-20行的收费保持不变(由对方支付),地址自身交易的收费已经在列表行中.
装入 test/fixtures/history/ 2026年10月14日从 api.trongrid.io (无键,有节奏):测试钱包的 /transactions 页面(TRX入/出,TRC-10空投)及其空出 /trc20 由于测试钱包没有TRC-20或合同活动 TCanhfMgr9RsFRoxkJ8YkJD8Faha85a14p (钱包对应方:USDT) transfer 通过 TriggerSmartContract)和全节点 gettransactionbyid 编号 : gettransactioninfobyid 那笔UDT的转帐 目前还没有协议模块确认Tron交易,所以没有识别器交叉检查.