<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://blog.catfee.io/zh-Hans/</id>
    <title>CatFee Blog Blog</title>
    <updated>2026-10-28T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://blog.catfee.io/zh-Hans/"/>
    <subtitle>CatFee Blog Blog</subtitle>
    <icon>https://blog.catfee.io/zh-Hans/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[从 TRON 与 Ethereum 源码看交易排序：为什么先代理能量，转账仍可能先执行？]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy"/>
        <updated>2026-10-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[深入 java-tron 与 Geth 源码，解释广播顺序、区块执行顺序与 nonce 的区别，分析能量代理和 USDT 转账的竞态，以及 CatFee 无感能量与能量直达的接入取舍。]]></summary>
        <content type="html"><![CDATA[<p>先购买能量，再发送 USDT，为什么转账仍然可能燃烧 TRX，甚至因为能量不足而失败？</p>
<p>在钱包、交易所和支付系统的代码里，这个流程往往只有两步：先广播资源代理交易，再广播用户的转账交易。两次请求顺序明确，第一笔还返回了成功，看起来应该没有问题。</p>
<p>问题在于：<strong>应用提交请求的顺序，不等于出块节点最终执行交易的顺序。</strong></p>
<p>常见的解释是“波场没有 nonce，所以不能按顺序打包；以太坊有 nonce，所以可以”。这句话抓住了一个差异，却省略了最关键的适用范围：TRON 会按区块内的交易顺序执行，只是不提供 Ethereum 那样的发送账户 nonce 约束；Ethereum 的 nonce 约束同一账户的交易，也不会自动替不同账户建立业务依赖。</p>
<p>对于能量服务，真正需要解决的是：<strong>当用户交易开始执行时，它依赖的资源状态是否已经生效，而且仍然足够。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="阅读范围把共识规则节点策略与产品能力分开">阅读范围：把共识规则、节点策略与产品能力分开<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E9%98%85%E8%AF%BB%E8%8C%83%E5%9B%B4%E6%8A%8A%E5%85%B1%E8%AF%86%E8%A7%84%E5%88%99%E8%8A%82%E7%82%B9%E7%AD%96%E7%95%A5%E4%B8%8E%E4%BA%A7%E5%93%81%E8%83%BD%E5%8A%9B%E5%88%86%E5%BC%80" class="hash-link" aria-label="阅读范围：把共识规则、节点策略与产品能力分开的直接链接" title="阅读范围：把共识规则、节点策略与产品能力分开的直接链接">​</a></h2>
<p>本文以两个固定版本作为可复核的源码样本：<a href="https://github.com/tronprotocol/java-tron/tree/GreatVoyage-v4.8.0" target="_blank" rel="noopener noreferrer">java-tron GreatVoyage-v4.8.0</a> 和 <a href="https://github.com/ethereum/go-ethereum/tree/v1.15.11" target="_blank" rel="noopener noreferrer">go-ethereum v1.15.11</a>。这些版本用于定位具体实现，不代表所有线上节点都运行同一版本。节点升级、链上参数和出块服务策略需要分别核对。</p>
<p>Ethereum 部分主要讨论普通 EOA 发送交易的 nonce 语义，不展开 EIP-7702 授权等也可能改变账户 nonce 的路径。文中的算法片段是依据源码整理的伪代码，不是可以直接替换客户端实现的代码。</p>
<p>产品部分依据 CatFee 官方接入资料；等待确认、资源预留、重试状态机等内容属于本文提出的工程建议，不应理解成所有产品模式都已经提供相同保证。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="一先区分三种顺序">一、先区分三种“顺序”<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%B8%80%E5%85%88%E5%8C%BA%E5%88%86%E4%B8%89%E7%A7%8D%E9%A1%BA%E5%BA%8F" class="hash-link" aria-label="一、先区分三种“顺序”的直接链接" title="一、先区分三种“顺序”的直接链接">​</a></h2>
<p>假设资源提供方为地址 <code>P</code>，用户为地址 <code>U</code>，定义两笔交易：</p>
<ul>
<li><code>D</code>：由 <code>P</code> 签名，向 <code>U</code> 代理 ENERGY。</li>
<li><code>T</code>：由 <code>U</code> 签名，调用 USDT 合约完成转账。</li>
</ul>
<p>业务希望得到 <code>D → T</code>，但这里至少存在三种顺序。</p>
<table><thead><tr><th>顺序</th><th>谁决定</th><th>能说明什么</th></tr></thead><tbody><tr><td>应用广播顺序</td><td>钱包或业务后端</td><td>应用先提交了哪一笔请求</td></tr><tr><td>节点接收与选取顺序</td><td>各个节点及出块节点的本地策略</td><td>某个节点先看到了、先选择了哪一笔交易</td></tr><tr><td>区块中的执行顺序</td><td>最终被接受的区块交易列表</td><td>哪一笔状态变更先发生</td></tr></tbody></table>
<p>同一个 RPC 接口先返回 <code>D</code> 的受理结果，再接收 <code>T</code>，不能推出所有出块节点都已经看到了 <code>D</code>。网络传播路径不同、节点排队不同，两笔交易到达实际出块节点的先后也可能不同。</p>
<p>即使两笔交易进入同一个区块，也必须继续检查区块内的位置：<code>[D, T]</code> 与 <code>[T, D]</code> 对资源消耗可以产生不同结果。不能只比较区块高度。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="二tron-源码没有发送账户-nonce但有明确的执行顺序">二、TRON 源码：没有发送账户 nonce，但有明确的执行顺序<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%BA%8Ctron-%E6%BA%90%E7%A0%81%E6%B2%A1%E6%9C%89%E5%8F%91%E9%80%81%E8%B4%A6%E6%88%B7-nonce%E4%BD%86%E6%9C%89%E6%98%8E%E7%A1%AE%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F" class="hash-link" aria-label="二、TRON 源码：没有发送账户 nonce，但有明确的执行顺序的直接链接" title="二、TRON 源码：没有发送账户 nonce，但有明确的执行顺序的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="交易结构中的-timestamp-和-tapos-都不是排队号码">交易结构中的 timestamp 和 TAPOS 都不是排队号码<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%BA%A4%E6%98%93%E7%BB%93%E6%9E%84%E4%B8%AD%E7%9A%84-timestamp-%E5%92%8C-tapos-%E9%83%BD%E4%B8%8D%E6%98%AF%E6%8E%92%E9%98%9F%E5%8F%B7%E7%A0%81" class="hash-link" aria-label="交易结构中的 timestamp 和 TAPOS 都不是排队号码的直接链接" title="交易结构中的 timestamp 和 TAPOS 都不是排队号码的直接链接">​</a></h3>
<p>在 <code>protocol/src/main/protos/core/Tron.proto</code> 中，<code>Transaction.raw</code> 定义了引用区块、过期时间、合约内容、时间戳和费用上限等字段，却没有普通交易的发送账户递增 nonce。可以直接查看<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/protocol/src/main/protos/core/Tron.proto#L432-L445" target="_blank" rel="noopener noreferrer">交易原始数据结构</a>。</p>
<p>理解这些字段时，容易发生三种混淆：</p>
<ul>
<li><code>timestamp</code> 是交易时间信息，不是全网认可的先来先服务凭证。</li>
<li><code>ref_block_bytes</code>、<code>ref_block_hash</code> 用于 TAPOS 引用区块检查，不表示“必须等上一笔业务交易完成”。</li>
<li><code>expiration</code> 决定交易有效期，不表示有效期更早的交易必须先执行。</li>
</ul>
<p><code>Manager.validateTapos()</code> 检查引用区块是否匹配；<code>validateCommon()</code> 检查交易大小和有效期；<code>processTransaction()</code> 还执行重复交易与签名等校验。这条处理链没有 Ethereum 式的“交易 nonce 必须等于发送账户当前 nonce”的检查。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L777-L838" target="_blank" rel="noopener noreferrer">TAPOS 与通用校验源码</a>、<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1462-L1509" target="_blank" rel="noopener noreferrer">交易处理入口</a>。</p>
<p>因此，仅仅把 <code>D</code> 的时间戳设得比 <code>T</code> 更早，或者让它们引用同一个区块，都没有建立 <code>D → T</code> 依赖。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="本地队列有顺序不代表全网广播有顺序">本地队列有顺序，不代表全网广播有顺序<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E6%9C%AC%E5%9C%B0%E9%98%9F%E5%88%97%E6%9C%89%E9%A1%BA%E5%BA%8F%E4%B8%8D%E4%BB%A3%E8%A1%A8%E5%85%A8%E7%BD%91%E5%B9%BF%E6%92%AD%E6%9C%89%E9%A1%BA%E5%BA%8F" class="hash-link" aria-label="本地队列有顺序，不代表全网广播有顺序的直接链接" title="本地队列有顺序，不代表全网广播有顺序的直接链接">​</a></h3>
<p>java-tron 并不是把交易完全随机打乱。</p>
<p>在这个版本的 <code>Manager</code> 初始化逻辑中，关闭交易排序时，待处理与重推队列采用 <code>LinkedBlockingQueue</code>；启用排序时，则采用带比较器的 <code>PriorityBlockingQueue</code>。这说明客户端本身存在本地排队和排序策略。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L488-L494" target="_blank" rel="noopener noreferrer">队列初始化源码</a>。</p>
<p>但本地 FIFO 只描述某个队列的操作顺序。它不保证不同节点拥有相同队列，也不保证请求进入应用、RPC 节点和出块节点的顺序一致。内部排序字段也不是用户可以依赖的链上账户序号。</p>
<p><code>Manager.generateBlock()</code> 进一步说明了为什么不能把打包理解为机械地搬运一个全网 FIFO 队列：它从 <code>pendingTransactions</code> 和 <code>rePushTransactions</code> 中选取候选交易，检查出块时间和区块大小，执行交易，再将成功通过该处理流程的候选加入区块。超过剩余空间的候选可以被跳过，以尝试容纳更小的交易；处理异常也可能使候选未被加入。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1609-L1700" target="_blank" rel="noopener noreferrer">区块生成源码</a>。</p>
<p>这是一套<strong>基于本地候选集和当前状态的区块构建流程</strong>，不是对应用提交顺序的承诺。</p>
<p>这里的“通过处理”还要与“合约业务成功”区分：交易可以被纳入区块并留下失败回执。是否发生 USDT 转账，要继续检查执行结果。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="区块确定后tron-按交易列表推进状态">区块确定后，TRON 按交易列表推进状态<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E5%8C%BA%E5%9D%97%E7%A1%AE%E5%AE%9A%E5%90%8Etron-%E6%8C%89%E4%BA%A4%E6%98%93%E5%88%97%E8%A1%A8%E6%8E%A8%E8%BF%9B%E7%8A%B6%E6%80%81" class="hash-link" aria-label="区块确定后，TRON 按交易列表推进状态的直接链接" title="区块确定后，TRON 按交易列表推进状态的直接链接">​</a></h3>
<p>在 <code>Manager.processBlock()</code> 中，可以看到客户端遍历 <code>block.getTransactions()</code>，逐笔调用 <code>processTransaction()</code>。因此，TRON 的链上执行具有明确的交易顺序。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1803-L1823" target="_blank" rel="noopener noreferrer">区块处理源码</a>。</p>
<p>用状态转换表示：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">区块顺序为 [D, T]：S0 --执行 D--&gt; S1 --执行 T--&gt; S2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">区块顺序为 [T, D]：S0 --执行 T--&gt; S1' --执行 D--&gt; S2'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>如果 <code>D</code> 成功更新了 <code>U</code> 的资源状态，那么排在它后面的 <code>T</code> 可以基于更新后的状态执行。两笔交易可以在同一区块内完成这一过程，并不天然要求跨两个区块。</p>
<p>准确的结论是：<strong>TRON 能执行有序交易，但普通广播接口没有替应用强制建立这两笔交易的先后关系。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="三ethereum-源码nonce-为什么能够约束同一账户">三、Ethereum 源码：nonce 为什么能够约束同一账户<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%B8%89ethereum-%E6%BA%90%E7%A0%81nonce-%E4%B8%BA%E4%BB%80%E4%B9%88%E8%83%BD%E5%A4%9F%E7%BA%A6%E6%9D%9F%E5%90%8C%E4%B8%80%E8%B4%A6%E6%88%B7" class="hash-link" aria-label="三、Ethereum 源码：nonce 为什么能够约束同一账户的直接链接" title="三、Ethereum 源码：nonce 为什么能够约束同一账户的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="真正的约束发生在状态转换校验中">真正的约束发生在状态转换校验中<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E7%9C%9F%E6%AD%A3%E7%9A%84%E7%BA%A6%E6%9D%9F%E5%8F%91%E7%94%9F%E5%9C%A8%E7%8A%B6%E6%80%81%E8%BD%AC%E6%8D%A2%E6%A0%A1%E9%AA%8C%E4%B8%AD" class="hash-link" aria-label="真正的约束发生在状态转换校验中的直接链接" title="真正的约束发生在状态转换校验中的直接链接">​</a></h3>
<p>Geth 的 <code>core/state_transition.go</code> 中，<code>preCheck()</code> 读取发送账户的当前 nonce，并与交易携带的 nonce 比较。简化为：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">expected = state.nonce(transaction.sender)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">if transaction.nonce &gt; expected:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    返回 ErrNonceTooHigh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">if transaction.nonce &lt; expected:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    返回 ErrNonceTooLow</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">继续检查余额、费用等条件</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这不是钱包约定，也不仅是交易池优化，而是交易能否在当前链上状态下执行的校验。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/core/state_transition.go#L304-L319" target="_blank" rel="noopener noreferrer">nonce 校验源码</a>。</p>
<p>例如 Alice 的当前 nonce 为 <code>42</code>，她签署了：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">A：Alice，nonce = 42</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">B：Alice，nonce = 43</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>即使节点先收到 <code>B</code>，也不能直接把它作为 Alice 的下一笔有效普通交易执行。账户 nonce 尚未推进时，执行会遇到 <code>ErrNonceTooHigh</code>。它能否留在交易池等待前序交易，还取决于节点的交易池策略和容量。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geth-的选取策略在账户之间比价格在账户内部保留-nonce-顺序">Geth 的选取策略在账户之间比价格，在账户内部保留 nonce 顺序<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#geth-%E7%9A%84%E9%80%89%E5%8F%96%E7%AD%96%E7%95%A5%E5%9C%A8%E8%B4%A6%E6%88%B7%E4%B9%8B%E9%97%B4%E6%AF%94%E4%BB%B7%E6%A0%BC%E5%9C%A8%E8%B4%A6%E6%88%B7%E5%86%85%E9%83%A8%E4%BF%9D%E7%95%99-nonce-%E9%A1%BA%E5%BA%8F" class="hash-link" aria-label="Geth 的选取策略在账户之间比价格，在账户内部保留 nonce 顺序的直接链接" title="Geth 的选取策略在账户之间比价格，在账户内部保留 nonce 顺序的直接链接">​</a></h3>
<p><code>miner/ordering.go</code> 中的 <code>transactionsByPriceAndNonce</code> 保存每个账户按 nonce 排列的交易列表，再把各账户当前可选的头部交易放入价格堆。选中某账户的一笔交易后，<code>Shift()</code> 才将该账户的下一笔交易推进到头部。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/miner/ordering.go#L86-L147" target="_blank" rel="noopener noreferrer">交易选择结构与 Shift 实现</a>。</p>
<p>因此，不同账户之间可以按有效小费等条件竞争，同一账户的后续交易不能仅凭更高小费绕过尚未满足的 nonce。其他区块构建者可以采用不同的选择策略，但最终区块仍须满足执行层校验；Geth 在处理区块交易时也逐笔应用交易，并将执行层错误返回给上层验证流程。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/core/state_processor.go#L93-L106" target="_blank" rel="noopener noreferrer">区块交易执行源码</a>。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="nonce-不等于上一笔业务一定成功">nonce 不等于“上一笔业务一定成功”<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#nonce-%E4%B8%8D%E7%AD%89%E4%BA%8E%E4%B8%8A%E4%B8%80%E7%AC%94%E4%B8%9A%E5%8A%A1%E4%B8%80%E5%AE%9A%E6%88%90%E5%8A%9F" class="hash-link" aria-label="nonce 不等于“上一笔业务一定成功”的直接链接" title="nonce 不等于“上一笔业务一定成功”的直接链接">​</a></h3>
<p>普通合约调用路径会在进入 EVM 调用前推进发送者 nonce。如果交易已经被合法纳入区块，即使合约执行随后回滚，发送账户的 nonce 仍然会被消耗。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/core/state_transition.go#L481-L509" target="_blank" rel="noopener noreferrer">nonce 更新与 EVM 调用</a>。</p>
<p>所以，<code>A</code> 使用 nonce <code>42</code>，<code>B</code> 使用 nonce <code>43</code>，表达的是发送账户的状态顺序，不是“只有 A 的业务成功，B 才允许执行”。同 nonce 替换也意味着：消耗 <code>42</code> 的交易，未必是应用最初设想的那笔 <code>A</code>。</p>
<p>涉及授权、兑换或支付时，仍需检查前序回执，或在合约中验证必要条件。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="跨账户时nonce-不能自动解决依赖">跨账户时，nonce 不能自动解决依赖<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E8%B7%A8%E8%B4%A6%E6%88%B7%E6%97%B6nonce-%E4%B8%8D%E8%83%BD%E8%87%AA%E5%8A%A8%E8%A7%A3%E5%86%B3%E4%BE%9D%E8%B5%96" class="hash-link" aria-label="跨账户时，nonce 不能自动解决依赖的直接链接" title="跨账户时，nonce 不能自动解决依赖的直接链接">​</a></h3>
<p>能量场景里，<code>D</code> 由资源提供方 <code>P</code> 签名，<code>T</code> 由用户 <code>U</code> 签名。两者原本就是不同发送账户。</p>
<p>即使设计一个 Ethereum 上的类似流程，例如“服务商先给用户补 ETH，用户再发送代币”，两个账户的 nonce 也不会自动建立跨账户顺序。如果用户已有足够 ETH，用户交易完全可能先执行；如果余额不足，后续可执行性取决于余额状态，而不是服务商 nonce 对用户产生了约束。</p>
<table><thead><tr><th>能力</th><th>TRON 普通交易</th><th>Ethereum 普通 EOA 交易</th></tr></thead><tbody><tr><td>按区块内列表顺序执行</td><td>支持</td><td>支持</td></tr><tr><td>保证全网按广播时间排序</td><td>不保证</td><td>不保证</td></tr><tr><td>通过发送账户 nonce 约束连续交易</td><td>无对应的普通交易 nonce 机制</td><td>有</td></tr><tr><td>自动建立不同发送账户的业务依赖</td><td>不提供</td><td>nonce 不提供</td></tr><tr><td>保证前序业务成功、后序才执行</td><td>需要额外机制</td><td>仍需要额外机制</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="四能量代理与-usdt-转账竞态发生在哪里">四、能量代理与 USDT 转账：竞态发生在哪里<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E5%9B%9B%E8%83%BD%E9%87%8F%E4%BB%A3%E7%90%86%E4%B8%8E-usdt-%E8%BD%AC%E8%B4%A6%E7%AB%9E%E6%80%81%E5%8F%91%E7%94%9F%E5%9C%A8%E5%93%AA%E9%87%8C" class="hash-link" aria-label="四、能量代理与 USDT 转账：竞态发生在哪里的直接链接" title="四、能量代理与 USDT 转账：竞态发生在哪里的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="代理到账是链上状态变更">代理到账，是链上状态变更<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%BB%A3%E7%90%86%E5%88%B0%E8%B4%A6%E6%98%AF%E9%93%BE%E4%B8%8A%E7%8A%B6%E6%80%81%E5%8F%98%E6%9B%B4" class="hash-link" aria-label="代理到账，是链上状态变更的直接链接" title="代理到账，是链上状态变更的直接链接">​</a></h3>
<p>在 <code>DelegateResourceActuator</code> 中，代理操作更新资源代理记录，并增加接收账户的 <code>acquiredDelegatedFrozenV2BalanceForEnergy</code> 等状态。它改变的是参与资源计算的账户数据，不是向业务系统发放一张“未来一定能用”的凭证。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java#L282-L324" target="_blank" rel="noopener noreferrer">代理执行源码</a>。</p>
<p>这也意味着，“拿到代理交易 Hash”“广播接口受理”“代理交易上链成功”“资源在所选确认级别可用”，是不同阶段。</p>
<p>接收节点处理待确认交易时可能已经做过本地执行，但这些本地状态不能代替所有出块节点上的正式执行状态。应用必须说清楚自己读的是哪个节点、哪条分支、哪个确认级别的数据。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="转账根据执行时的资源状态获得预算并结算">转账根据执行时的资源状态获得预算并结算<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E8%BD%AC%E8%B4%A6%E6%A0%B9%E6%8D%AE%E6%89%A7%E8%A1%8C%E6%97%B6%E7%9A%84%E8%B5%84%E6%BA%90%E7%8A%B6%E6%80%81%E8%8E%B7%E5%BE%97%E9%A2%84%E7%AE%97%E5%B9%B6%E7%BB%93%E7%AE%97" class="hash-link" aria-label="转账根据执行时的资源状态获得预算并结算的直接链接" title="转账根据执行时的资源状态获得预算并结算的直接链接">​</a></h3>
<p><code>VMActuator.getAccountEnergyLimitWithFixRatio()</code> 根据账户可用资源、余额和 <code>fee_limit</code> 等条件计算执行预算；<code>ReceiptCapsule.payEnergyBill()</code> 则处理资源使用及不足部分的费用。合约创建者承担部分消耗等分支也会影响具体结果。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/actuator/src/main/java/org/tron/core/actuator/VMActuator.java#L555-L594" target="_blank" rel="noopener noreferrer">执行预算计算</a>、<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java#L260-L313" target="_blank" rel="noopener noreferrer">能量结算源码</a>。</p>
<p>这里的 <code>fee_limit</code> 不能当作 Ethereum 的优先小费。提高它会影响允许的执行预算，却没有表达“等待某笔代理交易”或“把这笔交易排在某笔交易之后”的语义；把它设得很低，也不能让节点自动等待能量到账。</p>
<p>如果 <code>T</code> 比 <code>D</code> 更早执行，就不能使用 <code>D</code> 尚未带来的资源。随后可能出现：</p>
<table><thead><tr><th>执行时的条件</th><th>可能结果</th></tr></thead><tbody><tr><td>用户原本已有足够资源</td><td>转账成功，但并未使用这次稍后到账的代理资源</td></tr><tr><td>资源不足，TRX 余额与执行预算允许补足</td><td>转账可能成功，同时产生能量费用</td></tr><tr><td>可用资源与允许的付费预算不足</td><td>可能执行失败，例如出现 <code>OUT_OF_ENERGY</code>；部分情况也可能在其他校验阶段被拒绝</td></tr></tbody></table>
<p>“能量晚到”不等于“一定失败”，也不等于“失败就不收费”。具体费用应依据实际回执判断，不能用一个固定燃烧数额概括所有情况。</p>
<p>更关键的是：<strong>后到的代理不会追溯修改已经执行的转账，也不会自动退回该次执行已经产生的资源费用。</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="即使-d-先执行也可能没有足够能量留给-t">即使 D 先执行，也可能没有足够能量留给 T<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E5%8D%B3%E4%BD%BF-d-%E5%85%88%E6%89%A7%E8%A1%8C%E4%B9%9F%E5%8F%AF%E8%83%BD%E6%B2%A1%E6%9C%89%E8%B6%B3%E5%A4%9F%E8%83%BD%E9%87%8F%E7%95%99%E7%BB%99-t" class="hash-link" aria-label="即使 D 先执行，也可能没有足够能量留给 T的直接链接" title="即使 D 先执行，也可能没有足够能量留给 T的直接链接">​</a></h3>
<p>代理资源属于接收账户的可用资源，并没有天然绑定到某一笔 USDT 交易 Hash。假设另一笔交易 <code>X</code> 插在中间：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">D：资源到账</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">X：同一用户地址的另一笔合约调用消耗资源</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">T：目标转账开始执行，剩余资源不足</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>所以，可靠系统必须同时处理两个问题：资源先到账，以及到账资源不会被未计入预算的并发交易消耗。只保证代理先广播，两个问题都没有完整解决。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="五可行的解决方法明确每一层保证">五、可行的解决方法：明确每一层保证<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%BA%94%E5%8F%AF%E8%A1%8C%E7%9A%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%E6%98%8E%E7%A1%AE%E6%AF%8F%E4%B8%80%E5%B1%82%E4%BF%9D%E8%AF%81" class="hash-link" aria-label="五、可行的解决方法：明确每一层保证的直接链接" title="五、可行的解决方法：明确每一层保证的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方法一以链上状态作为放行条件">方法一：以链上状态作为放行条件<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E6%96%B9%E6%B3%95%E4%B8%80%E4%BB%A5%E9%93%BE%E4%B8%8A%E7%8A%B6%E6%80%81%E4%BD%9C%E4%B8%BA%E6%94%BE%E8%A1%8C%E6%9D%A1%E4%BB%B6" class="hash-link" aria-label="方法一：以链上状态作为放行条件的直接链接" title="方法一：以链上状态作为放行条件的直接链接">​</a></h3>
<p>对于能够接受额外等待的业务，最直接的方案是建立明确的广播闸门：</p>
<ol>
<li>暂存已签名的业务交易 <code>T</code>，暂不向其他节点广播。</li>
<li>广播代理交易 <code>D</code>，保存其 Hash。</li>
<li>查询 <code>D</code> 的链上执行结果，并等待业务所需的确认级别。</li>
<li>在一致的链状态视图下，检查 <code>U</code> 的可用资源与在途交易预算。</li>
<li>满足条件后广播 <code>T</code>，继续跟踪其链上结果。</li>
</ol>
<p>“某个 FullNode 的最新区块已经包含 D”和“D 已进入固化区块”提供不同程度的确定性。等待更强确认会增加延迟；依据最新区块提前放行，则应处理重组导致代理状态消失的情况。这里应使用与业务风险匹配的确认策略，而不是把一次成功查询当成不可逆结果。</p>
<p>资源检查也应关注可用量，例如结合 <code>EnergyLimit</code>、<code>EnergyUsed</code> 和在途消耗判断，而不是只看一个资源总额度。估算还要考虑合约状态变化、动态能量成本和带宽需求。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方法二提前准备资源并按地址管理并发">方法二：提前准备资源，并按地址管理并发<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E6%96%B9%E6%B3%95%E4%BA%8C%E6%8F%90%E5%89%8D%E5%87%86%E5%A4%87%E8%B5%84%E6%BA%90%E5%B9%B6%E6%8C%89%E5%9C%B0%E5%9D%80%E7%AE%A1%E7%90%86%E5%B9%B6%E5%8F%91" class="hash-link" aria-label="方法二：提前准备资源，并按地址管理并发的直接链接" title="方法二：提前准备资源，并按地址管理并发的直接链接">​</a></h3>
<p>对高频热钱包，可以提前建立资源余量，将补充过程移出单笔转账的关键路径。系统根据交易速率和补充延迟设置阈值，在低于阈值之前发起补充。</p>
<p>一个便于理解的容量规划关系是：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">目标资源余量 ≈ 峰值交易速率 × 补充耗时 × 单笔估算消耗 + 安全余量</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到��剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这是业务容量模型，不是协议公式。实际配置应采用监控数据，并计入尚未确认的交易。</p>
<p>同一地址的多笔转账可以通过业务队列或资源预留账本协调；如果只在本地加锁，钱包外部发出的交易仍可能消耗同一地址资源，因此需要尽量统一广播入口，并持续校正链上余额。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方法三同节点广播与短暂等待作为概率优化">方法三：同节点广播与短暂等待，作为概率优化<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E6%96%B9%E6%B3%95%E4%B8%89%E5%90%8C%E8%8A%82%E7%82%B9%E5%B9%BF%E6%92%AD%E4%B8%8E%E7%9F%AD%E6%9A%82%E7%AD%89%E5%BE%85%E4%BD%9C%E4%B8%BA%E6%A6%82%E7%8E%87%E4%BC%98%E5%8C%96" class="hash-link" aria-label="方法三：同节点广播与短暂等待，作为概率优化的直接链接" title="方法三：同节点广播与短暂等待，作为概率优化的直接链接">​</a></h3>
<p>将 <code>D</code>、<code>T</code> 交给同一广播入口，先提交 <code>D</code>，等待短暂间隔再提交 <code>T</code>，可以减少路径分散和传播时间差带来的影响。</p>
<p>但 <code>sleep(2000)</code> 只能表示时钟走过了两秒，不能证明某个包含 <code>D</code> 的区块已被接受。节点队列积压、传播延迟、出块时机变化或交易校验失败，都可能超过这个等待窗口。</p>
<p>这一方法适合与其他措施组合；如果业务要求“资源未确认就绝不放行”，条件必须是链上状态，而不能只有固定延时。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="方法四与出块方协调排序或设�计真正的链上依赖">方法四：与出块方协调排序，或设计真正的链上依赖<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E6%96%B9%E6%B3%95%E5%9B%9B%E4%B8%8E%E5%87%BA%E5%9D%97%E6%96%B9%E5%8D%8F%E8%B0%83%E6%8E%92%E5%BA%8F%E6%88%96%E8%AE%BE%E8%AE%A1%E7%9C%9F%E6%AD%A3%E7%9A%84%E9%93%BE%E4%B8%8A%E4%BE%9D%E8%B5%96" class="hash-link" aria-label="方法四：与出块方协调排序，或设计真正的链上依赖的直接链接" title="方法四：与出块方协调排序，或设计真正的链上依赖的直接链接">​</a></h3>
<p>如果能与实际构建区块的一方建立专用通道，可以约定模拟并按 <code>[D, T]</code> 顺序纳入候选区块。但这属于特定服务的调度约定，需要定义覆盖范围、是否允许部分纳入、失败处理和交易外泄后的行为，不能从普通 RPC 的返回值推导出来。</p>
<p>Ethereum 生态中的 Flashbots <code>eth_sendBundle</code> 提供有序交易包及模拟等接口，并允许配置可回滚交易。这类服务能力与账户 nonce 是不同层次的机制，也不意味着只要提交就必然被纳入区块。<a href="https://docs.flashbots.net/flashbots-auction/advanced/rpc-endpoint#eth_sendbundle" target="_blank" rel="noopener noreferrer">Flashbots Bundle 接口</a>。</p>
<p>对本文分析的 TRON 普通交易路径，不能把两笔独立交易放进一个数组，就认为获得了同等保证。<code>Transaction.raw.contract</code> 虽然采用 repeated 类型，但 <code>Manager.processTransaction()</code> 在该版本中要求顶层 contract 数量恰好为 1。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1470-L1477" target="_blank" rel="noopener noreferrer">单合约数量检查</a>。</p>
<p>因此，不能简单拼接 <code>DelegateResourceContract</code> 和 <code>TriggerSmartContract</code> 来实现原子交易。自建合约可以把自己能控制的业务操作放入一次调用并验证依赖，但还要解决调用者身份、资产授权和启动执行所需的资源，不能据此声称任意已有用户交易都能被无改动地合并。</p>
<p>从协议演进角度，也可以研究显式前序交易引用或原子交易包。不过，这需要明确依赖有效期、前序失败与替换语义、跨账户授权以及节点资源限制，属于协议设计议题，而非现有广播接口的隐藏参数。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="六catfee-无感能量把资源准备放到广播入口">六、CatFee 无感能量：把资源准备放到广播入口<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E5%85%ADcatfee-%E6%97%A0%E6%84%9F%E8%83%BD%E9%87%8F%E6%8A%8A%E8%B5%84%E6%BA%90%E5%87%86%E5%A4%87%E6%94%BE%E5%88%B0%E5%B9%BF%E6%92%AD%E5%85%A5%E5%8F%A3" class="hash-link" aria-label="六、CatFee 无感能量：把资源准备放到广播入口的直接链接" title="六、CatFee 无感能量：把资源准备放到广播入口的直接链接">​</a></h2>
<p>多数钱包和应用并不希望每次转账都自行维护资源询价、下单、传播等待和异常分支。CatFee 无感能量针对的是这一接入成本：业务侧照常构造、签名交易，将已签名交易发送到专属广播入口，由服务完成资源准备与后续广播。<a href="https://docs.catfee.io/seamless-energy/introduction" target="_blank" rel="noopener noreferrer">无感能量产品说明</a>。</p>
<p>其分工可以表示为：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">钱包或应用：构造并签名 T</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CatFee 广播入口：识别资源需求，准备资源，按策略转发原始 T</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TRON 网络：校验、打包、执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">业务系统：根据回执判断转账是否成功</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这种方式保留原交易的地址、金额、合约参数和签名，不要求把私钥交给服务商。对于能够独立配置广播节点的系统，查询接口可以继续使用原节点，广播路径则切换到 CatFee；API KEY 模式按接入文档配置 <code>CF-NODE-KEY</code>。<a href="https://docs.catfee.io/seamless-energy/api-integration" target="_blank" rel="noopener noreferrer">API 接入说明</a>。</p>
<p>这里有一个必须如实说明的边界：CatFee 当前 FAQ 提到，服务会等待约 2 秒再转发原交易，以尽量让资源先到账。这个等待应理解为资源交付与传播的协调措施，不能等同于 TRON 新增了 nonce、共识级交易包或不可逆确认保证。<a href="https://docs.catfee.io/seamless-energy/faq" target="_blank" rel="noopener noreferrer">无感能量 FAQ</a>。</p>
<p>同一份 FAQ 还说明了失败策略：能量预估、下单或能量交易广播失败时，服务不会继续转发原交易；会员余额不足且明确配置“继续广播”属于例外。对希望严格控制额外燃烧成本的业务，这个配置需要与成本策略一致。</p>
<p><strong>无感能量的价值，是减少应用自行编排资源准备的工作量；交易最终是否成功，仍由链上执行决定。</strong> 对更严格的确认要求，应核实接入方案的放行条件，不能仅凭“无感”这一名称假定所有确认级别都已覆盖。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="七catfee-能量直达把代理交易交给你的交易调度系统">七、CatFee 能量直达：把代理交易交给你的交易调度系统<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E4%B8%83catfee-%E8%83%BD%E9%87%8F%E7%9B%B4%E8%BE%BE%E6%8A%8A%E4%BB%A3%E7%90%86%E4%BA%A4%E6%98%93%E4%BA%A4%E7%BB%99%E4%BD%A0%E7%9A%84%E4%BA%A4%E6%98%93%E8%B0%83%E5%BA%A6%E7%B3%BB%E7%BB%9F" class="hash-link" aria-label="七、CatFee 能量直达：把代理交易交给你的交易调度系统的直接链接" title="七、CatFee 能量直达：把代理交易交给你的交易调度系统的直接链接">​</a></h2>
<p>如果业务已经具备自有节点、统一交易队列和确认策略，希望自己控制每一步，能量直达提供了另一种分工。</p>
<p>Transaction Handoff（能量直达）的核心是：<strong>CatFee 返回已签名、尚未广播的资源代理交易，由合作方自行广播。</strong> 它交付的不只是一个能量订单状态，而是可以纳入业务系统调度流程的代理交易数据。<a href="https://docs.catfee.io/api-reference/transaction" target="_blank" rel="noopener noreferrer">能量直达 API 介绍</a>、<a href="https://docs.catfee.io/api-reference/transaction/create-transaction" target="_blank" rel="noopener noreferrer">创建代理交易说明</a>。</p>
<p>这意味着，接入方可以把代理交易 <code>D</code> 和用户交易 <code>T</code> 放在同一业务状态机内，统一选择节点、设置确认阈值、处理过期和失败。</p>
<p>下面是本文建议的严格放行流程，<strong>不是接口自动保证的默认行为</strong>：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">1. 估算用户交易的资源需求，创建能量直达订单。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. 保存订单编号、客户端订单编号、代理交易数据与 Hash。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. 广播 CatFee 返回的代理交易 D。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">4. 等待 D 执行成功并达到业务要求的确认级别。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">5. 检查资源余量，计入同一地址的其他在途交易。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">6. 检查 T 尚未过期，再广播用户原始交易 T。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">7. 分别跟踪资源交付、订单结算和 T 的业务结果。</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>创建订单使用 <code>POST /v1/mate/open/transaction</code>；查询时应区分订单编号与代理交易 Hash。请求结果不确定时，可使用原 <code>client_order_id</code> 查询订单，避免盲目生成新业务编号重复下单。<a href="https://docs.catfee.io/api-reference/transaction/create-transaction" target="_blank" rel="noopener noreferrer">创建接口</a>、<a href="https://docs.catfee.io/api-reference/transaction/get-transaction" target="_blank" rel="noopener noreferrer">订单查询接口</a>。</p>
<p>能量直达并不会改变 TRON 共识规则。拿到两笔签名交易后立即连续广播，仍然存在前面分析的竞态；它的价值在于把代理交易的广播控制权交给接入方，让更严格的放行条件和自有调度策略有了实施入口。</p>
<p>支付方面，官方资料区分合作方余额支付和需申请开通的终端用户支付。资源交付、资源费用结算、用户业务交易成功应分别记录，不能混成一个“成功”状态。<a href="https://docs.catfee.io/solutions/transaction-handoff" target="_blank" rel="noopener noreferrer">能量直达方案说明</a>。</p>
<table><thead><tr><th>集成诉求</th><th>更适合评估的方案</th><th>业务侧仍需负责</th></tr></thead><tbody><tr><td>保留现有签名流程，减少逐笔资源编排</td><td>CatFee 无感能量</td><td>广播入口配置、失败策略、业务回执与重试处理</td></tr><tr><td>自己决定代理交易何时广播、等待何种确认</td><td>CatFee 能量直达</td><td>代理广播、确认闸门、资源并发预算与交易状态机</td></tr><tr><td>高频地址希望降低逐笔补充造成的等待</td><td>提前配置资源余量，结合补充服务</td><td>容量规划、阈值监控与在途资源管理</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="八落地时重试与观测决定最后一公里">八、落地时，重试与观测决定最后一公里<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy#%E5%85%AB%E8%90%BD%E5%9C%B0%E6%97%B6%E9%87%8D%E8%AF%95%E4%B8%8E%E8%A7%82%E6%B5%8B%E5%86%B3%E5%AE%9A%E6%9C%80%E5%90%8E%E4%B8%80%E5%85%AC%E9%87%8C" class="hash-link" aria-label="八、落地时，重试与观测决定最后一公里的直接链接" title="八、落地时，重试与观测决定最后一公里的直接链接">​</a></h2>
<p>排序方案只有与异常恢复结合，才适合生产环境。</p>
<p>首先，广播超时不能直接解释为交易失败。节点可能已经接收甚至打包了交易，只是响应没有返回。应先按原 Hash 查询状态；需要重发时，在有效期内重发同一笔已签名交易，避免未确认原交易结果就构造一笔新交易，造成重复转账。</p>
<p>其次，等待资源会消耗交易的有效期。若已签名交易过期，广播服务不能自行修改 <code>expiration</code> 后继续使用原签名。需要由原签名方重新构造、签名，并在业务幂等记录中关联新旧交易，确认旧交易不再可能执行。</p>
<p>再次，应记录能定位竞态的证据：</p>
<ul>
<li>代理与业务交易各自的 Hash、广播结果和时间。</li>
<li>两笔交易所在区块的高度、区块 Hash、区块内位置与确认状态。</li>
<li>业务交易的执行结果，以及 <code>energy_usage_total</code>、<code>energy_fee</code>、<code>net_fee</code> 等回执字段。</li>
<li>广播前的资源快照、估算结果和同地址其他在途交易。</li>
</ul>
<p>如果观察到 <code>T</code> 的位置早于 <code>D</code>，可以直接排查顺序问题；如果 <code>D</code> 已先执行而 <code>T</code> 仍然燃烧 TRX，则应继续检查代理数量、估算偏差、并发消耗、资源回收和合约资源分担，而不是把所有问题归咎于打包顺序。</p>
<p>对接入验收，可以在测试环境分别构造 <code>[D, T]</code>、<code>[T, D]</code>、<code>[D, X, T]</code> 三类执行顺序，并覆盖节点滞后、请求超时、交易过期和代理成功但业务失败的情况。重点验证状态机能否给出正确处理结果，而不是只看正常路径的一次转账是否成功。</p>
<p>TRON 能量服务的工程价值，最终体现在资源交付和交易执行之间的衔接。理解 nonce 的边界，才能判断哪些依赖由协议保障，哪些需要系统自己建立。CatFee 无感能量把常见编排集中到广播入口，能量直达则让拥有自建交易基础设施的团队掌握代理交易调度权；两种方式对应不同的集成需求，都应围绕同一个条件设计：<strong>在目标交易执行之前，让它需要的资源真正可用。</strong></p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="Ethereum" term="Ethereum"/>
        <category label="交易排序" term="交易排序"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[从 TRON 与 Ethereum 源码看交易排序：为什么先代理能量，转账仍可能先执行？]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en"/>
        <updated>2026-10-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[深入 java-tron 与 Geth 源码，解释广播顺序、区块执行顺序与 nonce 的区别，分析能量代理和 USDT 转账的竞态，以及 CatFee 无感能量与能量直达的接入取舍。]]></summary>
        <content type="html"><![CDATA[<p>先购买能量，再发送 USDT，为什么转账仍然可能燃烧 TRX，甚至因为能量不足而失败？</p>
<p>在钱包、交易所和支付系统的代码里，这个流程往往只有两步：先广播资源代理交易，再广播用户的转账交易。两次请求顺序明确，第一笔还返回了成功，看起来应该没有问题。</p>
<p>问题在于：<strong>应用提交请求的顺序，不等于出块节点最终执行交易的顺序。</strong></p>
<p>常见的解释是“波场没有 nonce，所以不能按顺序打包；以太坊有 nonce，所以可以”。这句话抓住了一个差异，却省略了最关键的适用范围：TRON 会按区块内的交易顺序执行，只是不提供 Ethereum 那样的发送账户 nonce 约束；Ethereum 的 nonce 约束同一账户的交易，也不会自动替不同账户建立业务依赖。</p>
<p>对于能量服务，真正需要解决的是：<strong>当用户交易开始执行时，它依赖的资源状态是否已经生效，而且仍然足够。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="scope-and-source-versions">阅读范围：把共识规则、节点策略与产品能力分开<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#scope-and-source-versions" class="hash-link" aria-label="阅读范围：把共识规则、节点策略与产品能力分开的直接链接" title="阅读范围：把共识规则、节点策略与产品能力分开的直接链接">​</a></h2>
<p>本文以两个固定版本作为可复核的源码样本：<a href="https://github.com/tronprotocol/java-tron/tree/GreatVoyage-v4.8.0" target="_blank" rel="noopener noreferrer">java-tron GreatVoyage-v4.8.0</a> 和 <a href="https://github.com/ethereum/go-ethereum/tree/v1.15.11" target="_blank" rel="noopener noreferrer">go-ethereum v1.15.11</a>。这些版本用于定位具体实现，不代表所有线上节点都运行同一版本。节点升级、链上参数和出块服务策略需要分别核对。</p>
<p>Ethereum 部分主要讨论普通 EOA 发送交易的 nonce 语义，不展开 EIP-7702 授权等也可能改变账户 nonce 的路径。文中的算法片段是依据源码整理的伪代码，不是可以直接替换客户端实现的代码。</p>
<p>产品部分依据 CatFee 官方接入资料；等待确认、资源预留、重试状态机等内容属于本文提出的工程建议，不应理解成所有产品模式都已经提供相同保证。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="three-different-meanings-of-transaction-order">一、先区分三种“顺序”<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#three-different-meanings-of-transaction-order" class="hash-link" aria-label="一、先区分三种“顺序”的直接链接" title="一、先区分三种“顺序”的直接链接">​</a></h2>
<p>假设资源提供方为地址 <code>P</code>，用户为地址 <code>U</code>，定义两笔交易：</p>
<ul>
<li><code>D</code>：由 <code>P</code> 签名，向 <code>U</code> 代理 ENERGY。</li>
<li><code>T</code>：由 <code>U</code> 签名，调用 USDT 合约完成转账。</li>
</ul>
<p>业务希望得到 <code>D → T</code>，但这里至少存在三种顺序。</p>
<table><thead><tr><th>顺序</th><th>谁决定</th><th>能说明什么</th></tr></thead><tbody><tr><td>应用广播顺序</td><td>钱包或业务后端</td><td>应用先提交了哪一笔请求</td></tr><tr><td>节点接收与选取顺序</td><td>各个节点及出块节点的本地策略</td><td>某个节点先看到了、先选择了哪一笔交易</td></tr><tr><td>区块中的执行顺序</td><td>最终被接受的区块交易列表</td><td>哪一笔状态变更先发生</td></tr></tbody></table>
<p>同一个 RPC 接口先返回 <code>D</code> 的受理结果，再接收 <code>T</code>，不能推出所有出块节点都已经看到了 <code>D</code>。网络传播路径不同、节点排队不同，两笔交易到达实际出块节点的先后也可能不同。</p>
<p>即使两笔交易进入同一个区块，也必须继续检查区块内的位置：<code>[D, T]</code> 与 <code>[T, D]</code> 对资源消耗可以产生不同结果。不能只比较区块高度。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="inside-tron-ordered-execution-without-a-sender-nonce">二、TRON 源码：没有发送账户 nonce，但有明确的执行顺序<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#inside-tron-ordered-execution-without-a-sender-nonce" class="hash-link" aria-label="二、TRON 源码：没有发送账户 nonce，但有明确的执行顺序的直接链接" title="二、TRON 源码：没有发送账户 nonce，但有明确的执行顺序的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="timestamps-and-tapos-do-not-assign-a-place-in-the-queue">交易结构中的 timestamp 和 TAPOS 都不是排队号码<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#timestamps-and-tapos-do-not-assign-a-place-in-the-queue" class="hash-link" aria-label="交易结构中的 timestamp 和 TAPOS 都不是排队号码的直接链接" title="交易结构中的 timestamp 和 TAPOS 都不是排队号码的直接链接">​</a></h3>
<p>在 <code>protocol/src/main/protos/core/Tron.proto</code> 中，<code>Transaction.raw</code> 定义了引用区块、过期时间、合约内容、时间戳和费用上限等字段，却没有普通交易的发送账户递增 nonce。可以直接查看<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/protocol/src/main/protos/core/Tron.proto#L432-L445" target="_blank" rel="noopener noreferrer">交易原始数据结构</a>。</p>
<p>理解这些字段时，容易发生三种混淆：</p>
<ul>
<li><code>timestamp</code> 是交易时间信息，不是全网认可的先来先服务凭证。</li>
<li><code>ref_block_bytes</code>、<code>ref_block_hash</code> 用于 TAPOS 引用区块检查，不表示“必须等上一笔业务交易完成”。</li>
<li><code>expiration</code> 决定交易有效期，不表示有效期更早的交易必须先执行。</li>
</ul>
<p><code>Manager.validateTapos()</code> 检查引用区块是否匹配；<code>validateCommon()</code> 检查交易大小和有效期；<code>processTransaction()</code> 还执行重复交易与签名等校验。这条处理链没有 Ethereum 式的“交易 nonce 必须等于发送账户当前 nonce”的检查。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L777-L838" target="_blank" rel="noopener noreferrer">TAPOS 与通用校验源码</a>、<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1462-L1509" target="_blank" rel="noopener noreferrer">交易处理入口</a>。</p>
<p>因此，仅仅把 <code>D</code> 的时间戳设得比 <code>T</code> 更早，或者让它们引用同一个区块，都没有建立 <code>D → T</code> 依赖。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="a-local-queue-does-not-establish-global-order">本地队列有顺序，不代表全网广播有顺序<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#a-local-queue-does-not-establish-global-order" class="hash-link" aria-label="本地队列有顺序，不代表全网广播有顺序的直接链接" title="本地队列有顺序，不代表全网广播有顺序的直接链接">​</a></h3>
<p>java-tron 并不是把交易完全随机打乱。</p>
<p>在这个版本的 <code>Manager</code> 初始化逻辑中，关闭交易排序时，待处理与重推队列采用 <code>LinkedBlockingQueue</code>；启用排序时，则采用带比较器的 <code>PriorityBlockingQueue</code>。这说明客户端本身存在本地排队和排序策略。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L488-L494" target="_blank" rel="noopener noreferrer">队列初始化源码</a>。</p>
<p>但本地 FIFO 只描述某个队列的操作顺序。它不保证不同节点拥有相同队列，也不保证请求进入应用、RPC 节点和出块节点的顺序一致。内部排序字段也不是用户可以依赖的链上账户序号。</p>
<p><code>Manager.generateBlock()</code> 进一步说明了为什么不能把打包理解为机械地搬运一个全网 FIFO 队列：它从 <code>pendingTransactions</code> 和 <code>rePushTransactions</code> 中选取候选交易，检查出块时间和区块大小，执行交易，再将成功通过该处理流程的候选加入区块。超过剩余空间的候选可以被跳过，以尝试容纳更小的交易；处理异常也可能使候选未被加入。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1609-L1700" target="_blank" rel="noopener noreferrer">区块生成源码</a>。</p>
<p>这是一套<strong>基于本地候选集和当前状态的区块构建流程</strong>，不是对应用提交顺序的承诺。</p>
<p>这里的“通过处理”还要与“合约业务成功”区分：交易可以被纳入区块并留下失败回执。是否发生 USDT 转账，要继续检查执行结果。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="once-a-block-is-accepted-its-transaction-order-matters">区块确定后，TRON 按交易列表推进状态<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#once-a-block-is-accepted-its-transaction-order-matters" class="hash-link" aria-label="区块确定后，TRON 按交易列表推进状态的直接链接" title="区块确定后，TRON 按交易列表推进状态的直接链接">​</a></h3>
<p>在 <code>Manager.processBlock()</code> 中，可以看到客户端遍历 <code>block.getTransactions()</code>，逐笔调用 <code>processTransaction()</code>。因此，TRON 的链上执行具有明确的交易顺序。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1803-L1823" target="_blank" rel="noopener noreferrer">区块处理源码</a>。</p>
<p>用状态转换表示：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">区块顺序为 [D, T]：S0 --执行 D--&gt; S1 --执行 T--&gt; S2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">区块顺序为 [T, D]：S0 --执行 T--&gt; S1' --执行 D--&gt; S2'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>如果 <code>D</code> 成功更新了 <code>U</code> 的资源状态，那么排在它后面的 <code>T</code> 可以基于更新后的状态执行。两笔交易可以在同一区块内完成这一过程，并不天然要求跨两个区块。</p>
<p>准确的结论是：<strong>TRON 能执行有序交易，但普通广播接口没有替应用强制建立这两笔交易的先后关系。</strong></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="inside-ethereum-how-nonces-constrain-a-senders-transactions">三、Ethereum 源码：nonce 为什么能够约束同一账户<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#inside-ethereum-how-nonces-constrain-a-senders-transactions" class="hash-link" aria-label="三、Ethereum 源码：nonce 为什么能够约束同一账户的直接链接" title="三、Ethereum 源码：nonce 为什么能够约束同一账户的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-constraint-is-enforced-during-state-transition-validation">真正的约束发生在状态转换校验中<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#the-constraint-is-enforced-during-state-transition-validation" class="hash-link" aria-label="真正的约束发生在状态转换校验中的直接链接" title="真正的约束发生在状态转换校验中的直接链接">​</a></h3>
<p>Geth 的 <code>core/state_transition.go</code> 中，<code>preCheck()</code> 读取发送账户的当前 nonce，并与交易携带的 nonce 比较。简化为：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">expected = state.nonce(transaction.sender)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">if transaction.nonce &gt; expected:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    返回 ErrNonceTooHigh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">if transaction.nonce &lt; expected:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    返回 ErrNonceTooLow</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">继续检查余额、费用等条件</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这不是钱包约定，也不仅是交易池优化，而是交易能否在当前链上状态下执行的校验。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/core/state_transition.go#L304-L319" target="_blank" rel="noopener noreferrer">nonce 校验源码</a>。</p>
<p>例如 Alice 的当前 nonce 为 <code>42</code>，她签署了：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">A：Alice，nonce = 42</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">B：Alice，nonce = 43</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>即使节点先收到 <code>B</code>，也不能直接把它作为 Alice 的下一笔有效普通交易执行。账户 nonce 尚未推进时，执行会遇到 <code>ErrNonceTooHigh</code>。它能否留在交易池等待前序交易，还取决于节点的交易池策略和容量。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="geth-selects-across-accounts-while-preserving-nonce-order-within-each-account">Geth 的选取策略在账户之间比价格，在账户内部保留 nonce 顺序<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#geth-selects-across-accounts-while-preserving-nonce-order-within-each-account" class="hash-link" aria-label="Geth 的选取策略在账户之间比价格，在账户内部保留 nonce 顺序的直接链接" title="Geth 的选取策略在账户之间比价格，在账户内部保留 nonce 顺序的直接链接">​</a></h3>
<p><code>miner/ordering.go</code> 中的 <code>transactionsByPriceAndNonce</code> 保存每个账户按 nonce 排列的交易列表，再把各账户当前可选的头部交易放入价格堆。选中某账户的一笔交易后，<code>Shift()</code> 才将该账户的下一笔交易推进到头部。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/miner/ordering.go#L86-L147" target="_blank" rel="noopener noreferrer">交易选择结构与 Shift 实现</a>。</p>
<p>因此，不同账户之间可以按有效小费等条件竞争，同一账户的后续交易不能仅凭更高小费绕过尚未满足的 nonce。其他区块构建者可以采用不同的选择策略，但最终区块仍须满足执行层校验；Geth 在处理区块交易时也逐笔应用交易，并将执行层错误返回给上层验证流程。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/core/state_processor.go#L93-L106" target="_blank" rel="noopener noreferrer">区块交易执行源码</a>。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="consuming-a-nonce-does-not-mean-the-preceding-operation-succeeded">nonce 不等于“上一笔业务一定成功”<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#consuming-a-nonce-does-not-mean-the-preceding-operation-succeeded" class="hash-link" aria-label="nonce 不等于“上一笔业务一定成功”的直接链接" title="nonce 不等于“上一笔业务一定成功”的直接链接">​</a></h3>
<p>普通合约调用路径会在进入 EVM 调用前推进发送者 nonce。如果交易已经被合法纳入区块，即使合约执行随后回滚，发送账户的 nonce 仍然会被消耗。<a href="https://github.com/ethereum/go-ethereum/blob/v1.15.11/core/state_transition.go#L481-L509" target="_blank" rel="noopener noreferrer">nonce 更新与 EVM 调用</a>。</p>
<p>所以，<code>A</code> 使用 nonce <code>42</code>，<code>B</code> 使用 nonce <code>43</code>，表达的是发送账户的状态顺序，不是“只有 A 的业务成功，B 才允许执行”。同 nonce 替换也意味着：消耗 <code>42</code> 的交易，未必是应用最初设想的那笔 <code>A</code>。</p>
<p>涉及授权、兑换或支付时，仍需检查前序回执，或在合约中验证必要条件。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="separate-accounts-do-not-share-a-nonce-sequence">跨账户时，nonce 不能自动解决依赖<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#separate-accounts-do-not-share-a-nonce-sequence" class="hash-link" aria-label="跨账户时，nonce 不能自动解决依赖的直接链接" title="跨账户时，nonce 不能自动解决依赖的直接链接">​</a></h3>
<p>能量场景里，<code>D</code> 由资源提供方 <code>P</code> 签名，<code>T</code> 由用户 <code>U</code> 签名。两者原本就是不同发送账户。</p>
<p>即使设计一个 Ethereum 上的类似流程，例如“服务商先给用户补 ETH，用户再发送代币”，两个账户的 nonce 也不会自动建立跨账户顺序。如果用户已有足够 ETH，用户交易完全可能先执行；如果余额不足，后续可执行性取决于余额状态，而不是服务商 nonce 对用户产生了约束。</p>
<table><thead><tr><th>能力</th><th>TRON 普通交易</th><th>Ethereum 普通 EOA 交易</th></tr></thead><tbody><tr><td>按区块内列表顺序执行</td><td>支持</td><td>支持</td></tr><tr><td>保证全网按广播时间排序</td><td>不保证</td><td>不保证</td></tr><tr><td>通过发送账户 nonce 约束连续交易</td><td>无对应的普通交易 nonce 机制</td><td>有</td></tr><tr><td>自动建立不同发送账户的业务依赖</td><td>不提供</td><td>nonce 不提供</td></tr><tr><td>保证前序业务成功、后序才执行</td><td>需要额外机制</td><td>仍需要额外机制</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-race-between-energy-delegation-and-a-usdt-transfer">四、能量代理与 USDT 转账：竞态发生在哪里<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#the-race-between-energy-delegation-and-a-usdt-transfer" class="hash-link" aria-label="四、能量代理与 USDT 转账：竞态发生在哪里的直接链接" title="四、能量代理与 USDT 转账：竞态发生在哪里的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="delegation-becomes-useful-through-a-state-change">代理到账，是链上状态变更<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#delegation-becomes-useful-through-a-state-change" class="hash-link" aria-label="代理到账，是链上状态变更的直接链接" title="代理到账，是链上状态变更的直接链接">​</a></h3>
<p>在 <code>DelegateResourceActuator</code> 中，代理操作更新资源代理记录，并增加接收账户的 <code>acquiredDelegatedFrozenV2BalanceForEnergy</code> 等状态。它改变的是参与资源计算的账户数据，不是向业务系统发放一张“未来一定能用”的凭证。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/actuator/src/main/java/org/tron/core/actuator/DelegateResourceActuator.java#L282-L324" target="_blank" rel="noopener noreferrer">代理执行源码</a>。</p>
<p>这也意味着，“拿到代理交易 Hash”“广播接口受理”“代理交易上链成功”“资源在所选确认级别可用”，是不同阶段。</p>
<p>接收节点处理待确认交易时可能已经做过本地执行，但这些本地状态不能代替所有出块节点上的正式执行状态。应用必须说清楚自己读的是哪个节点、哪条分支、哪个确认级别的数据。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="the-transfers-execution-budget-depends-on-the-state-available-at-execution">转账根据执行时的资源状态获得预算并结算<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#the-transfers-execution-budget-depends-on-the-state-available-at-execution" class="hash-link" aria-label="转账根据执行时的资源状态获得预算并结算的直接链接" title="转账根据执行时的资源状态获得预算并结算的直接链接">​</a></h3>
<p><code>VMActuator.getAccountEnergyLimitWithFixRatio()</code> 根据账户可用资源、余额和 <code>fee_limit</code> 等条件计算执行预算；<code>ReceiptCapsule.payEnergyBill()</code> 则处理资源使用及不足部分的费用。合约创建者承担部分消耗等分支也会影响具体结果。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/actuator/src/main/java/org/tron/core/actuator/VMActuator.java#L555-L594" target="_blank" rel="noopener noreferrer">执行预算计算</a>、<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/chainbase/src/main/java/org/tron/core/capsule/ReceiptCapsule.java#L260-L313" target="_blank" rel="noopener noreferrer">能量结算源码</a>。</p>
<p>这里的 <code>fee_limit</code> 不能当作 Ethereum 的优先小费。提高它会影响允许的执行预算，却没有表达“等待某笔代理交易”或“把这笔交易排在某笔交易之后”的语义；把它设得很低，也不能让节点自动等待能量到账。</p>
<p>如果 <code>T</code> 比 <code>D</code> 更早执行，就不能使用 <code>D</code> 尚未带来的资源。随后可能出现：</p>
<table><thead><tr><th>执行时的条件</th><th>可能结果</th></tr></thead><tbody><tr><td>用户原本已有足够资源</td><td>转账成功，但并未使用这次稍后到账的代理资源</td></tr><tr><td>资源不足，TRX 余额与执行预算允许补足</td><td>转账可能成功，同时产生能量费用</td></tr><tr><td>可用资源与允许的付费预算不足</td><td>可能执行失败，例如出现 <code>OUT_OF_ENERGY</code>；部分情况也可能在其他校验阶段被拒绝</td></tr></tbody></table>
<p>“能量晚到”不等于“一定失败”，也不等于“失败就不收费”。具体费用应依据实际回执判断，不能用一个固定燃烧数额概括所有情况。</p>
<p>更关键的是：<strong>后到的代理不会追溯修改已经执行的转账，也不会自动退回该次执行已经产生的资源费用。</strong></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="correct-ordering-alone-may-still-leave-the-transfer-short-of-energy">即使 D 先执行，也可能没有足够能量留给 T<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#correct-ordering-alone-may-still-leave-the-transfer-short-of-energy" class="hash-link" aria-label="即使 D 先执行，也可能没有足够能量留给 T的直接链接" title="即使 D 先执行，也可能没有足够能量留给 T的直接链接">​</a></h3>
<p>代理资源属于接收账户的可用资源，并没有天然绑定到某一笔 USDT 交易 Hash。假设另一笔交易 <code>X</code> 插在中间：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">D：资源到账</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">X：同一用户地址的另一笔合约调用消耗资源</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">T：目标转账开始执行，剩余资源不足</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>所以，可靠系统必须同时处理两个问题：资源先到账，以及到账资源不会被未计入预算的并发交易消耗。只保证代理先广播，两个问题都没有完整解决。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="practical-approaches-and-the-guarantees-they-provide">五、可行的解决方法：明确每一层保证<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#practical-approaches-and-the-guarantees-they-provide" class="hash-link" aria-label="五、可行的解决方法：明确每一层保证的直接链接" title="五、可行的解决方法：明确每一层保证的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="gate-the-transfer-on-observed-chain-state">方法一：以链上状态作为放行条件<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#gate-the-transfer-on-observed-chain-state" class="hash-link" aria-label="方法一：以链上状态作为放行条件的直接链接" title="方法一：以链上状态作为放行条件的直接链接">​</a></h3>
<p>对于能够接受额外等待的业务，最直接的方案是建立明确的广播闸门：</p>
<ol>
<li>暂存已签名的业务交易 <code>T</code>，暂不向其他节点广播。</li>
<li>广播代理交易 <code>D</code>，保存其 Hash。</li>
<li>查询 <code>D</code> 的链上执行结果，并等待业务所需的确认级别。</li>
<li>在一致的链状态视图下，检查 <code>U</code> 的可用资源与在途交易预算。</li>
<li>满足条件后广播 <code>T</code>，继续跟踪其链上结果。</li>
</ol>
<p>“某个 FullNode 的最新区块已经包含 D”和“D 已进入固化区块”提供不同程度的确定性。等待更强确认会增加延迟；依据最新区块提前放行，则应处理重组导致代理状态消失的情况。这里应使用与业务风险匹配的确认策略，而不是把一次成功查询当成不可逆结果。</p>
<p>资源检查也应关注可用量，例如结合 <code>EnergyLimit</code>、<code>EnergyUsed</code> 和在途消耗判断，而不是只看一个资源总额度。估算还要考虑合约状态变化、动态能量成本和带宽需求。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="provision-resources-ahead-of-demand-and-coordinate-concurrency-by-account">方法二：提前准备资源，并按地址管理并发<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#provision-resources-ahead-of-demand-and-coordinate-concurrency-by-account" class="hash-link" aria-label="方法二：提前准备资源，并按地址管理并发的直接链接" title="方法二：提前准备资源，并按地址管理并发的直接链接">​</a></h3>
<p>对高频热钱包，可以提前建立资源余量，将补充过程移出单笔转账的关键路径。系统根据交易速率和补充延迟设置阈值，在低于阈值之前发起补充。</p>
<p>一个便于理解的容量规划关系是：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">目标资源余量 ≈ 峰值交易速率 × 补充耗时 × 单笔估算消耗 + 安全余量</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这是业务容量模型，不是协议公式。实际配置应采用监控数据，并计入尚未确认的交易。</p>
<p>同一地址的多笔转账可以通过业务队列或资源预留账本协调；如果只在本地加锁，钱包外部发出的交易仍可能消耗同一地址资源，因此需要尽量统一广播入口，并持续校正链上余额。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="use-a-shared-broadcast-path-and-a-short-delay-to-reduce-the-race-window">方法三：同节点广播与短暂等待，作为概率优化<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#use-a-shared-broadcast-path-and-a-short-delay-to-reduce-the-race-window" class="hash-link" aria-label="方法三：同节点广播与短暂等待，作为概率优化的直接链接" title="方法三：同节点广播与短暂等待，作为概率优化的直接链接">​</a></h3>
<p>将 <code>D</code>、<code>T</code> 交给同一广播入口，先提交 <code>D</code>，等待短暂间隔再提交 <code>T</code>，可以减少路径分散和传播时间差带来的影响。</p>
<p>但 <code>sleep(2000)</code> 只能表示时钟走过了两秒，不能证明某个包含 <code>D</code> 的区块已被接受。节点队列积压、传播延迟、出块时机变化或交易校验失败，都可能超过这个等待窗口。</p>
<p>这一方法适合与其他措施组合；如果业务要求“资源未确认就绝不放行”，条件必须是链上状态，而不能只有固定延时。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinate-with-a-block-producer-or-encode-an-explicit-dependency">方法四：与出块方协调排序，或设计真正的链上依赖<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#coordinate-with-a-block-producer-or-encode-an-explicit-dependency" class="hash-link" aria-label="方法四：与出块方协调排序，或设计真正的链上依赖的直接链接" title="方法四：与出块方协调排序，或设计真正的链上依赖的直接链接">​</a></h3>
<p>如果能与实际构建区块的一方建立专用通道，可以约定模拟并按 <code>[D, T]</code> 顺序纳入候选区块。但这属于特定服务的调度约定，需要定义覆盖范围、是否允许部分纳入、失败处理和交易外泄后的行为，不能从普通 RPC 的返回值推导出来。</p>
<p>Ethereum 生态中的 Flashbots <code>eth_sendBundle</code> 提供有序交易包及模拟等接口，并允许配置可回滚交易。这类服务能力与账户 nonce 是不同层次的机制，也不意味着只要提交就必然被纳入区块。<a href="https://docs.flashbots.net/flashbots-auction/advanced/rpc-endpoint#eth_sendbundle" target="_blank" rel="noopener noreferrer">Flashbots Bundle 接口</a>。</p>
<p>对本文分析的 TRON 普通交易路径，不能把两笔独立交易放进一个数组，就认为获得了同等保证。<code>Transaction.raw.contract</code> 虽然采用 repeated 类型，但 <code>Manager.processTransaction()</code> 在该版本中要求顶层 contract 数量恰好为 1。<a href="https://github.com/tronprotocol/java-tron/blob/GreatVoyage-v4.8.0/framework/src/main/java/org/tron/core/db/Manager.java#L1470-L1477" target="_blank" rel="noopener noreferrer">单合约数量检查</a>。</p>
<p>因此，不能简单拼接 <code>DelegateResourceContract</code> 和 <code>TriggerSmartContract</code> 来实现原子交易。自建合约可以把自己能控制的业务操作放入一次调用并验证依赖，但还要解决调用者身份、资产授权和启动执行所需的资源，不能据此声称任意已有用户交易都能被无改动地合并。</p>
<p>从协议演进角度，也可以研究显式前序交易引用或原子交易包。不过，这需要明确依赖有效期、前序失败与替换语义、跨账户授权以及节点资源限制，属于协议设计议题，而非现有广播接口的隐藏参数。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="catfee-seamless-energy-resource-preparation-at-the-broadcast-boundary">六、CatFee 无感能量：把资源准备放到广播入口<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#catfee-seamless-energy-resource-preparation-at-the-broadcast-boundary" class="hash-link" aria-label="六、CatFee 无感能量：把资源准备放到广播入口的直接链接" title="六、CatFee 无感能量：把资源准备放到广播入口的直接链接">​</a></h2>
<p>多数钱包和应用并不希望每次转账都自行维护资源询价、下单、传播等待和异常分支。CatFee 无感能量针对的是这一接入成本：业务侧照常构造、签名交易，将已签名交易发送到专属广播入口，由服务完成资源准备与后续广播。<a href="https://docs.catfee.io/seamless-energy/introduction" target="_blank" rel="noopener noreferrer">无感能量产品说明</a>。</p>
<p>其分工可以表示为：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">钱包或应用：构造并签名 T</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CatFee 广播入口：识别资源需求，准备资源，按策略转发原始 T</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">TRON 网络：校验、打包、执行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        ↓</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">业务系统：根据回执判断转账是否成功</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>这种方式保留原交易的地址、金额、合约参数和签名，不要求把私钥交给服务商。对于能够独立配置广播节点的系统，查询接口可以继续使用原节点，广播路径则切换到 CatFee；API KEY 模式按接入文档配置 <code>CF-NODE-KEY</code>。<a href="https://docs.catfee.io/seamless-energy/api-integration" target="_blank" rel="noopener noreferrer">API 接入说明</a>。</p>
<p>这里有一个必须如实说明的边界：CatFee 当前 FAQ 提到，服务会等待约 2 秒再转发原交易，以尽量让资源先到账。这个等待应理解为资源交付与传播的协调措施，不能等同于 TRON 新增了 nonce、共识级交易包或不可逆确认保证。<a href="https://docs.catfee.io/seamless-energy/faq" target="_blank" rel="noopener noreferrer">无感能量 FAQ</a>。</p>
<p>同一份 FAQ 还说明了失败策略：能量预估、下单或能量交易广播失败时，服务不会继续转发原交易；会员余额不足且明确配置“继续广播”属于例外。对希望严格控制额外燃烧成本的业务，这个配置需要与成本策略一致。</p>
<p><strong>无感能量的价值，是减少应用自行编排资源准备的工作量；交易最终是否成功，仍由链上执行决定。</strong> 对更严格的确认要求，应核实接入方案的放行条件，不能仅凭“无感”这一名称假定所有确认级别都已覆盖。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="catfee-transaction-handoff-bring-delegation-into-your-own-transaction-pipeline">七、CatFee 能量直达：把代理交易交给你的交易调度系统<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#catfee-transaction-handoff-bring-delegation-into-your-own-transaction-pipeline" class="hash-link" aria-label="七、CatFee 能量直达：把代理交易交给你的交易调度系统的直接链接" title="七、CatFee 能量直达：把代理交易交给你的交易调度系统的直接链接">​</a></h2>
<p>如果业务已经具备自有节点、统一交易队列和确认策略，希望自己控制每一步，能量直达提供了另一种分工。</p>
<p>Transaction Handoff（能量直达）的核心是：<strong>CatFee 返回已签名、尚未广播的资源代理交易，由合作方自行广播。</strong> 它交付的不只是一个能量订单状态，而是可以纳入业务系统调度流程的代理交易数据。<a href="https://docs.catfee.io/api-reference/transaction" target="_blank" rel="noopener noreferrer">能量直达 API 介绍</a>、<a href="https://docs.catfee.io/api-reference/transaction/create-transaction" target="_blank" rel="noopener noreferrer">创建代理交易说明</a>。</p>
<p>这意味着，接入方可以把代理交易 <code>D</code> 和用户交易 <code>T</code> 放在同一业务状态机内，统一选择节点、设置确认阈值、处理过期和失败。</p>
<p>下面是本文建议的严格放行流程，<strong>不是接口自动保证的默认行为</strong>：</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">1. 估算用户交易的资源需求，创建能量直达订单。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. 保存订单编号、客户端订单编号、代理交易数据与 Hash。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. 广播 CatFee 返回的代理交易 D。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">4. 等待 D 执行成功并达到业务要求的确认级别。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">5. 检查资源余量，计入同一地址的其他在途交易。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">6. 检查 T 尚未过期，再广播用户原始交易 T。</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">7. 分别跟踪资源交付、订单结算和 T 的业务结果。</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>创建订单使用 <code>POST /v1/mate/open/transaction</code>；查询时应区分订单编号与代理交易 Hash。请求结果不确定时，可使用原 <code>client_order_id</code> 查询订单，避免盲目生成新业务编号重复下单。<a href="https://docs.catfee.io/api-reference/transaction/create-transaction" target="_blank" rel="noopener noreferrer">创建接口</a>、<a href="https://docs.catfee.io/api-reference/transaction/get-transaction" target="_blank" rel="noopener noreferrer">订单查询接口</a>。</p>
<p>能量直达并不会改变 TRON 共识规则。拿到两笔签名交易后立即连续广播，仍然存在前面分析的竞态；它的价值在于把代理交易的广播控制权交给接入方，让更严格的放行条件和自有调度策略有了实施入口。</p>
<p>支付方面，官方资料区分合作方余额支付和需申请开通的终端用户支付。资源交付、资源费用结算、用户业务交易成功应分别记录，不能混成一个“成功”状态。<a href="https://docs.catfee.io/solutions/transaction-handoff" target="_blank" rel="noopener noreferrer">能量直达方案说明</a>。</p>
<table><thead><tr><th>集成诉求</th><th>更适合评估的方案</th><th>业务侧仍需负责</th></tr></thead><tbody><tr><td>保留现有签名流程，减少逐笔资源编排</td><td>CatFee 无感能量</td><td>广播入口配置、失败策略、业务回执与重试处理</td></tr><tr><td>自己决定代理交易何时广播、等待何种确认</td><td>CatFee 能量直达</td><td>代理广播、确认闸门、资源并发预算与交易状态机</td></tr><tr><td>高频地址希望降低逐笔补充造成的等待</td><td>提前配置资源余量，结合补充服务</td><td>容量规划、阈值监控与在途资源管理</td></tr></tbody></table>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="production-reliability-depends-on-retries-and-observability">八、落地时，重试与观测决定最后一公里<a href="https://blog.catfee.io/zh-Hans/2026/10/28/tron-ethereum-transaction-ordering-energy-en#production-reliability-depends-on-retries-and-observability" class="hash-link" aria-label="八、落地时，重试与观测决定最后一公里的直接链接" title="八、落地时，重试与观测决定最后一公里的直接链接">​</a></h2>
<p>排序方案只有与异常恢复结合，才适合生产环境。</p>
<p>首先，广播超时不能直接解释为交易失败。节点可能已经接收甚至打包了交易，只是响应没有返回。应先按原 Hash 查询状态；需要重发时，在有效期内重发同一笔已签名交易，避免未确认原交易结果就构造一笔新交易，造成重复转账。</p>
<p>其次，等待资源会消耗交易的有效期。若已签名交易过期，广播服务不能自行修改 <code>expiration</code> 后继续使用原签名。需要由原签名方重新构造、签名，并在业务幂等记录中关联新旧交易，确认旧交易不再可能执行。</p>
<p>再次，应记录能定位竞态的证据：</p>
<ul>
<li>代理与业务交易各自的 Hash、广播结果和时间。</li>
<li>两笔交易所在区块的高度、区块 Hash、区块内位置与确认状态。</li>
<li>业务交易的执行结果，以及 <code>energy_usage_total</code>、<code>energy_fee</code>、<code>net_fee</code> 等回执字段。</li>
<li>广播前的资源快照、估算结果和同地址其他在途交易。</li>
</ul>
<p>如果观察到 <code>T</code> 的位置早于 <code>D</code>，可以直接排查顺序问题；如果 <code>D</code> 已先执行而 <code>T</code> 仍然燃烧 TRX，则应继续检查代理数量、估算偏差、并发消耗、资源回收和合约资源分担，而不是把所有问题归咎于打包顺序。</p>
<p>对接入验收，可以在测试环境分别构造 <code>[D, T]</code>、<code>[T, D]</code>、<code>[D, X, T]</code> 三类执行顺序，并覆盖节点滞后、请求超时、交易过期和代理成功但业务失败的情况。重点验证状态机能否给出正确处理结果，而不是只看正常路径的一次转账是否成功。</p>
<p>TRON 能量服务的工程价值，最终体现在资源交付和交易执行之间的衔接。理解 nonce 的边界，才能判断哪些依赖由协议保障，哪些需要系统自己建立。CatFee 无感能量把常见编排集中到广播入口，能量直达则让拥有自建交易基础设施的团队掌握代理交易调度权；两种方式对应不同的集成需求，都应围绕同一个条件设计：<strong>在目标交易执行之前，让它需要的资源真正可用。</strong></p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="Ethereum" term="Ethereum"/>
        <category label="交易排序" term="交易排序"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 速充风控升级公告：停止偷能量]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy"/>
        <updated>2026-03-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 速充风控升级说明：回溯实际留存能量，对超过 10,000 能量的差额执行补偿扣费，并在速充前校验余额。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="停止偷能量" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIHZpZXdCb3g9IjAgMCAxNjAwIDkwMCIgZmlsbD0ibm9uZSIgeG1sOmxhbmc9InpoLUhhbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHRpdGxlPkNhdEZlZSDpgJ/lhYXpo47mjqfljYfnuqfvvJrlgZzmraLlgbfog73ph488L3RpdGxlPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJiZyIgeDE9IjE2MCIgeTE9IjcwIiB4Mj0iMTQ2MCIgeTI9Ijg2MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMxQzBBMEEiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU1IiBzdG9wLWNvbG9yPSIjM0ExMDEwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzZEMUExQSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYWNjZW50IiB4MT0iMjIwIiB5MT0iMjEwIiB4Mj0iMTM2MCIgeTI9Ijc2MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNGRjZBNkEiIHN0b3Atb3BhY2l0eT0iMC41Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGQzI2QSIgc3RvcC1vcGFjaXR5PSIwLjIiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgoKICA8cmVjdCB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIGZpbGw9InVybCgjYmcpIi8+CiAgPHJlY3QgeD0iMTEyIiB5PSI5MCIgd2lkdGg9IjEzNzYiIGhlaWdodD0iNzIwIiByeD0iMjgiIGZpbGw9IiMyMjBCMEIiIGZpbGwtb3BhY2l0eT0iMC42NSIgc3Ryb2tlPSIjRkY4QThBIiBzdHJva2Utb3BhY2l0eT0iMC42Ii8+CiAgPHJlY3QgeD0iMTQwIiB5PSIxMTgiIHdpZHRoPSIxMzIwIiBoZWlnaHQ9IjY2NCIgcng9IjI0IiBmaWxsPSJ1cmwoI2FjY2VudCkiIGZpbGwtb3BhY2l0eT0iMC4yIi8+CgogIDx0ZXh0IHg9IjE5MCIgeT0iMjUwIiBmaWxsPSIjRkZCMEIwIiBmb250LXNpemU9IjM2IiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiIGxldHRlci1zcGFjaW5nPSI0Ij4KICAgIENBVEZFRSDpgJ/lhYXpo47mjqfljYfnuqcKICA8L3RleHQ+CgogIDx0ZXh0IHg9IjE5MCIgeT0iMzkwIiBmaWxsPSIjRkZGRkZGIiBmb250LXNpemU9Ijg2IiBmb250LXdlaWdodD0iNzAwIiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiPgogICAg5YGc5q2i5YG36IO96YePCiAgPC90ZXh0PgoKICA8dGV4dCB4PSIxOTAiIHk9IjQ4MCIgZmlsbD0iI0ZGRTBFMCIgZm9udC1zaXplPSI0MCIgZm9udC1mYW1pbHk9IkFyaWFsLCAmcXVvdDtQaW5nRmFuZyBTQyZxdW90OywgJnF1b3Q7TWljcm9zb2Z0IFlhSGVpJnF1b3Q7LCBzYW5zLXNlcmlmIj4KICAgIOWIqeeUqOaXtumXtOW3rui9rOenu+iDvemHj++8jOWwhuinpuWPkeihpeWBv+aJo+i0ueOAggogIDwvdGV4dD4KCiAgPGxpbmUgeDE9IjE5MCIgeTE9IjU0NSIgeDI9Ijk4MCIgeTI9IjU0NSIgc3Ryb2tlPSIjRkY5QzlDIiBzdHJva2Utd2lkdGg9IjQiLz4KCiAgPHRleHQgeD0iMTkwIiB5PSI2MjAiIGZpbGw9IiNGRkQyRDIiIGZvbnQtc2l6ZT0iMzQiIGZvbnQtZmFtaWx5PSJBcmlhbCwgJnF1b3Q7UGluZ0ZhbmcgU0MmcXVvdDssICZxdW90O01pY3Jvc29mdCBZYUhlaSZxdW90Oywgc2Fucy1zZXJpZiI+CiAgICDpk77kuIrnlZnlrZjlm57muq/moLjnrpcgKyDpgJ/lhYXliY3kvZnpop3moKHpqowKICA8L3RleHQ+CgogIDx0ZXh0IHg9IjE5MCIgeT0iNjgwIiBmaWxsPSIjRkZEMkQyIiBmb250LXNpemU9IjM0IiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiPgogICAg5L+d6Zqc6IO96YeP5ZWG5p2D55uK77yM57u05oqk5YWs5bmz5biC5Zy656ep5bqPCiAgPC90ZXh0Pgo8L3N2Zz4K" title="停止偷能量" width="1600" height="900" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="catfee-速充风控升级请停止利用时间差偷能量">CatFee 速充风控升级：请停止利用时间差偷能量<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy#catfee-%E9%80%9F%E5%85%85%E9%A3%8E%E6%8E%A7%E5%8D%87%E7%BA%A7%E8%AF%B7%E5%81%9C%E6%AD%A2%E5%88%A9%E7%94%A8%E6%97%B6%E9%97%B4%E5%B7%AE%E5%81%B7%E8%83%BD%E9%87%8F" class="hash-link" aria-label="CatFee 速充风控升级：请停止利用时间差偷能量的直接链接" title="CatFee 速充风控升级：请停止利用时间差偷能量的直接链接">​</a></h2>
<p>在 TRON 速充场景中，基础流程是：</p>
<ol>
<li>平台先给客户地址代理能量</li>
<li>随后立即执行回收</li>
</ol>
<p>这套机制的目标是提升成交速度与资金效率。
但我们观察到，少数“撸手”会利用代理与回收之间的时间差，将能量快速转移，造成能量商实际亏损。</p>
<p>这类行为不是“技巧”，而是对平台规则和市场秩序的破坏。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="本次上线的两项风控更新">本次上线的两项风控更新<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy#%E6%9C%AC%E6%AC%A1%E4%B8%8A%E7%BA%BF%E7%9A%84%E4%B8%A4%E9%A1%B9%E9%A3%8E%E6%8E%A7%E6%9B%B4%E6%96%B0" class="hash-link" aria-label="本次上线的两项风控更新的直接链接" title="本次上线的两项风控更新的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-回溯链上留存能量差额超-10000-将补偿扣费">1) 回溯链上留存能量，差额超 10,000 将补偿扣费<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy#1-%E5%9B%9E%E6%BA%AF%E9%93%BE%E4%B8%8A%E7%95%99%E5%AD%98%E8%83%BD%E9%87%8F%E5%B7%AE%E9%A2%9D%E8%B6%85-10000-%E5%B0%86%E8%A1%A5%E5%81%BF%E6%89%A3%E8%B4%B9" class="hash-link" aria-label="1) 回溯链上留存能量，差额超 10,000 将补偿扣费的直接链接" title="1) 回溯链上留存能量，差额超 10,000 将补偿扣费的直接链接">​</a></h3>
<p>CatFee 已上线链上回溯核算机制：</p>
<ul>
<li>系统会根据客户地址的<strong>实际留存能量</strong>进行结算</li>
<li>如果理论应留存与实际留存存在差额，且差额超过 <strong>10,000 能量</strong></li>
<li>系统将执行<strong>补偿扣费</strong>，用于覆盖能量商损失</li>
</ul>
<p>这意味着：通过时间差转移能量，不再是“无成本套利”。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-速充前增加余额前置校验不够余额不执行">2) 速充前增加余额前置校验，不够余额不执行<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy#2-%E9%80%9F%E5%85%85%E5%89%8D%E5%A2%9E%E5%8A%A0%E4%BD%99%E9%A2%9D%E5%89%8D%E7%BD%AE%E6%A0%A1%E9%AA%8C%E4%B8%8D%E5%A4%9F%E4%BD%99%E9%A2%9D%E4%B8%8D%E6%89%A7%E8%A1%8C" class="hash-link" aria-label="2) 速充前增加余额前置校验，不够余额不执行的直接链接" title="2) 速充前增加余额前置校验，不够余额不执行的直接链接">​</a></h3>
<p>在每次速充前，系统会先基于“最大代理能量数”计算本次可能占用的金额，并执行余额检查：</p>
<ul>
<li>若余额满足要求，继续速充</li>
<li>若余额不足，直接不执行速充</li>
</ul>
<p>该机制可以提前拦截高风险订单，避免事后坏账。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="给偷能量行为的明确提醒">给“偷能量”行为的明确提醒<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy#%E7%BB%99%E5%81%B7%E8%83%BD%E9%87%8F%E8%A1%8C%E4%B8%BA%E7%9A%84%E6%98%8E%E7%A1%AE%E6%8F%90%E9%86%92" class="hash-link" aria-label="给“偷能量”行为的明确提醒的直接链接" title="给“偷能量”行为的明确提醒的直接链接">​</a></h2>
<p>请立即停止利用时间差转移能量的行为。</p>
<p>CatFee 将持续升级识别与追偿策略，对异常地址、异常订单和恶意行为进行长期跟踪处理。短期看似“薅到”的收益，最终都会以补偿扣费、风控限制和账户信用损失的形式返还。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="对正常用户和合作方意味着什么">对正常用户和合作方意味着什么<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy#%E5%AF%B9%E6%AD%A3%E5%B8%B8%E7%94%A8%E6%88%B7%E5%92%8C%E5%90%88%E4%BD%9C%E6%96%B9%E6%84%8F%E5%91%B3%E7%9D%80%E4%BB%80%E4%B9%88" class="hash-link" aria-label="对正常用户和合作方意味着什么的直接链接" title="对正常用户和合作方意味着什么的直接链接">​</a></h2>
<ul>
<li>订单成交更稳：高风险订单被前置拦截</li>
<li>结算更公平：按实际留存能量核算</li>
<li>市场更健康：恶意套利空间持续收缩</li>
</ul>
<p>CatFee 会继续投入风控与调度能力建设，保障速充服务长期稳定运行。</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量速充" term="能量速充"/>
        <category label="波场能量" term="波场能量"/>
        <category label="风控" term="风控"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 速充风控升级公告：停止偷能量]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en"/>
        <updated>2026-03-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 速充风控升级说明：回溯实际留存能量，对超过 10,000 能量的差额执行补偿扣费，并在速充前校验余额。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="停止偷能量" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIHZpZXdCb3g9IjAgMCAxNjAwIDkwMCIgZmlsbD0ibm9uZSIgeG1sOmxhbmc9InpoLUhhbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHRpdGxlPkNhdEZlZSDpgJ/lhYXpo47mjqfljYfnuqfvvJrlgZzmraLlgbfog73ph488L3RpdGxlPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJiZyIgeDE9IjE2MCIgeTE9IjcwIiB4Mj0iMTQ2MCIgeTI9Ijg2MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMxQzBBMEEiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU1IiBzdG9wLWNvbG9yPSIjM0ExMDEwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzZEMUExQSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYWNjZW50IiB4MT0iMjIwIiB5MT0iMjEwIiB4Mj0iMTM2MCIgeTI9Ijc2MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNGRjZBNkEiIHN0b3Atb3BhY2l0eT0iMC41Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGQzI2QSIgc3RvcC1vcGFjaXR5PSIwLjIiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgoKICA8cmVjdCB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIGZpbGw9InVybCgjYmcpIi8+CiAgPHJlY3QgeD0iMTEyIiB5PSI5MCIgd2lkdGg9IjEzNzYiIGhlaWdodD0iNzIwIiByeD0iMjgiIGZpbGw9IiMyMjBCMEIiIGZpbGwtb3BhY2l0eT0iMC42NSIgc3Ryb2tlPSIjRkY4QThBIiBzdHJva2Utb3BhY2l0eT0iMC42Ii8+CiAgPHJlY3QgeD0iMTQwIiB5PSIxMTgiIHdpZHRoPSIxMzIwIiBoZWlnaHQ9IjY2NCIgcng9IjI0IiBmaWxsPSJ1cmwoI2FjY2VudCkiIGZpbGwtb3BhY2l0eT0iMC4yIi8+CgogIDx0ZXh0IHg9IjE5MCIgeT0iMjUwIiBmaWxsPSIjRkZCMEIwIiBmb250LXNpemU9IjM2IiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiIGxldHRlci1zcGFjaW5nPSI0Ij4KICAgIENBVEZFRSDpgJ/lhYXpo47mjqfljYfnuqcKICA8L3RleHQ+CgogIDx0ZXh0IHg9IjE5MCIgeT0iMzkwIiBmaWxsPSIjRkZGRkZGIiBmb250LXNpemU9Ijg2IiBmb250LXdlaWdodD0iNzAwIiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiPgogICAg5YGc5q2i5YG36IO96YePCiAgPC90ZXh0PgoKICA8dGV4dCB4PSIxOTAiIHk9IjQ4MCIgZmlsbD0iI0ZGRTBFMCIgZm9udC1zaXplPSI0MCIgZm9udC1mYW1pbHk9IkFyaWFsLCAmcXVvdDtQaW5nRmFuZyBTQyZxdW90OywgJnF1b3Q7TWljcm9zb2Z0IFlhSGVpJnF1b3Q7LCBzYW5zLXNlcmlmIj4KICAgIOWIqeeUqOaXtumXtOW3rui9rOenu+iDvemHj++8jOWwhuinpuWPkeihpeWBv+aJo+i0ueOAggogIDwvdGV4dD4KCiAgPGxpbmUgeDE9IjE5MCIgeTE9IjU0NSIgeDI9Ijk4MCIgeTI9IjU0NSIgc3Ryb2tlPSIjRkY5QzlDIiBzdHJva2Utd2lkdGg9IjQiLz4KCiAgPHRleHQgeD0iMTkwIiB5PSI2MjAiIGZpbGw9IiNGRkQyRDIiIGZvbnQtc2l6ZT0iMzQiIGZvbnQtZmFtaWx5PSJBcmlhbCwgJnF1b3Q7UGluZ0ZhbmcgU0MmcXVvdDssICZxdW90O01pY3Jvc29mdCBZYUhlaSZxdW90Oywgc2Fucy1zZXJpZiI+CiAgICDpk77kuIrnlZnlrZjlm57muq/moLjnrpcgKyDpgJ/lhYXliY3kvZnpop3moKHpqowKICA8L3RleHQ+CgogIDx0ZXh0IHg9IjE5MCIgeT0iNjgwIiBmaWxsPSIjRkZEMkQyIiBmb250LXNpemU9IjM0IiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiPgogICAg5L+d6Zqc6IO96YeP5ZWG5p2D55uK77yM57u05oqk5YWs5bmz5biC5Zy656ep5bqPCiAgPC90ZXh0Pgo8L3N2Zz4K" title="停止偷能量" width="1600" height="900" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="catfee-flash-energy-risk-control-upgrade-stop-exploiting-timing-gaps">CatFee 速充风控升级：请停止利用时间差偷能量<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en#catfee-flash-energy-risk-control-upgrade-stop-exploiting-timing-gaps" class="hash-link" aria-label="CatFee 速充风控升级：请停止利用时间差偷能量的直接链接" title="CatFee 速充风控升级：请停止利用时间差偷能量的直接链接">​</a></h2>
<p>在 TRON 速充场景中，基础流程是：</p>
<ol>
<li>平台先给客户地址代理能量</li>
<li>随后立即执行回收</li>
</ol>
<p>这套机制的目标是提升成交速度与资金效率。
但我们观察到，少数“撸手”会利用代理与回收之间的时间差，将能量快速转移，造成能量商实际亏损。</p>
<p>这类行为不是“技巧”，而是对平台规则和市场秩序的破坏。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="two-risk-control-updates-now-live">本次上线的两项风控更新<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en#two-risk-control-updates-now-live" class="hash-link" aria-label="本次上线的两项风控更新的直接链接" title="本次上线的两项风控更新的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-on-chain-backtracking-settlement-compensation-charge-when-the-gap-exceeds-10000-energy">1) 回溯链上留存能量，差额超 10,000 将补偿扣费<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en#1-on-chain-backtracking-settlement-compensation-charge-when-the-gap-exceeds-10000-energy" class="hash-link" aria-label="1) 回溯链上留存能量，差额超 10,000 将补偿扣费的直接链接" title="1) 回溯链上留存能量，差额超 10,000 将补偿扣费的直接链接">​</a></h3>
<p>CatFee 已上线链上回溯核算机制：</p>
<ul>
<li>系统会根据客户地址的<strong>实际留存能量</strong>进行结算</li>
<li>如果理论应留存与实际留存存在差额，且差额超过 <strong>10,000 能量</strong></li>
<li>系统将执行<strong>补偿扣费</strong>，用于覆盖能量商损失</li>
</ul>
<p>这意味着：通过时间差转移能量，不再是“无成本套利”。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-pre-check-balance-validation-before-flash-energy-insufficient-balance-no-execution">2) 速充前增加余额前置校验，不够余额不执行<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en#2-pre-check-balance-validation-before-flash-energy-insufficient-balance-no-execution" class="hash-link" aria-label="2) 速充前增加余额前置校验，不够余额不执行的直接链接" title="2) 速充前增加余额前置校验，不够余额不执行的直接链接">​</a></h3>
<p>在每次速充前，系统会先基于“最大代理能量数”计算本次可能占用的金额，并执行余额检查：</p>
<ul>
<li>若余额满足要求，继续速充</li>
<li>若余额不足，直接不执行速充</li>
</ul>
<p>该机制可以提前拦截高风险订单，避免事后坏账。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="a-clear-warning-to-energy-thieves">给“偷能量”行为的明确提醒<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en#a-clear-warning-to-energy-thieves" class="hash-link" aria-label="给“偷能量”行为的明确提醒的直接链接" title="给“偷能量”行为的明确提醒的直接链接">​</a></h2>
<p>请立即停止利用时间差转移能量的行为。</p>
<p>CatFee 将持续升级识别与追偿策略，对异常地址、异常订单和恶意行为进行长期跟踪处理。短期看似“薅到”的收益，最终都会以补偿扣费、风控限制和账户信用损失的形式返还。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-this-means-for-normal-users-and-partners">对正常用户和合作方意味着什么<a href="https://blog.catfee.io/zh-Hans/2026/03/08/stop-stealing-tron-flash-energy-en#what-this-means-for-normal-users-and-partners" class="hash-link" aria-label="对正常用户和合作方意味着什么的直接链接" title="对正常用户和合作方意味着什么的直接链接">​</a></h2>
<ul>
<li>订单成交更稳：高风险订单被前置拦截</li>
<li>结算更公平：按实际留存能量核算</li>
<li>市场更健康：恶意套利空间持续收缩</li>
</ul>
<p>CatFee 会继续投入风控与调度能力建设，保障速充服务长期稳定运行。</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量速充" term="能量速充"/>
        <category label="风控" term="风控"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 自动速充正式上线]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy"/>
        <updated>2026-03-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[介绍 CatFee 自动速充的规则触发补能量机制、适用业务场景、阈值与额度配置建议，帮助高频交易和多地址业务管理能量。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="CatFee 自动速充" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIHZpZXdCb3g9IjAgMCAxNjAwIDkwMCIgZmlsbD0ibm9uZSIgeG1sOmxhbmc9InpoLUhhbnMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHRpdGxlPkNhdEZlZSDoh6rliqjpgJ/lhYU8L3RpdGxlPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJiZyIgeDE9IjE4MCIgeTE9IjcwIiB4Mj0iMTQyMCIgeTI9Ijg2MCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwNDE0MjMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU1IiBzdG9wLWNvbG9yPSIjMDcyRTQ4Ii8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzBBNEE2QiIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iZ2xvdyIgeDE9IjMzMCIgeTE9IjIyMCIgeDI9IjEzMjAiIHkyPSI3NjAiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjZEMEZGIiBzdG9wLW9wYWNpdHk9IjAuNTIiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNTRGRkI2IiBzdG9wLW9wYWNpdHk9IjAuMTYiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8ZmlsdGVyIGlkPSJzb2Z0IiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYwMCIgaGVpZ2h0PSI5MDAiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iNDIiLz4KICAgIDwvZmlsdGVyPgogIDwvZGVmcz4KCiAgPHJlY3Qgd2lkdGg9IjE2MDAiIGhlaWdodD0iOTAwIiBmaWxsPSJ1cmwoI2JnKSIvPgoKICA8ZyBvcGFjaXR5PSIwLjU1IiBmaWx0ZXI9InVybCgjc29mdCkiPgogICAgPGNpcmNsZSBjeD0iMzYwIiBjeT0iMjEwIiByPSIxNzAiIGZpbGw9IiMyRUU4RkYiLz4KICAgIDxjaXJjbGUgY3g9IjEyNTAiIGN5PSI2OTAiIHI9IjIxMCIgZmlsbD0iIzUzRkZCRSIvPgogIDwvZz4KCiAgPHJlY3QgeD0iMTE4IiB5PSI5NiIgd2lkdGg9IjEzNjQiIGhlaWdodD0iNzA4IiByeD0iMzQiIGZpbGw9IiMwNDFBMkQiIGZpbGwtb3BhY2l0eT0iMC40NCIgc3Ryb2tlPSIjNkNDQkZGIiBzdHJva2Utb3BhY2l0eT0iMC40NCIvPgogIDxyZWN0IHg9IjEzOCIgeT0iMTE2IiB3aWR0aD0iMTMyNCIgaGVpZ2h0PSI2NjgiIHJ4PSIyOCIgZmlsbD0idXJsKCNnbG93KSIgZmlsbC1vcGFjaXR5PSIwLjE2Ii8+CgogIDx0ZXh0IHg9IjE5MCIgeT0iMjY4IiBmaWxsPSIjOUJEOUZGIiBmb250LXNpemU9IjM4IiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiIGxldHRlci1zcGFjaW5nPSI1Ij4KICAgIENBVEZFRSDkuqflk4Hmm7TmlrAKICA8L3RleHQ+CgogIDx0ZXh0IHg9IjE5MCIgeT0iNDAyIiBmaWxsPSIjRkZGRkZGIiBmb250LXNpemU9Ijk2IiBmb250LXdlaWdodD0iNzAwIiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiPgogICAg6Ieq5Yqo6YCf5YWFCiAgPC90ZXh0PgoKICA8dGV4dCB4PSIxOTAiIHk9IjQ5MiIgZmlsbD0iI0Q1RjVGRiIgZm9udC1zaXplPSI0NCIgZm9udC1mYW1pbHk9IkFyaWFsLCAmcXVvdDtQaW5nRmFuZyBTQyZxdW90OywgJnF1b3Q7TWljcm9zb2Z0IFlhSGVpJnF1b3Q7LCBzYW5zLXNlcmlmIj4KICAgIOWFqOWkqeWAmSBUUk9OIOiDvemHj+iHquWKqOihpeWFhQogIDwvdGV4dD4KCiAgPGxpbmUgeDE9IjE5MCIgeTE9IjU1NiIgeDI9IjgxMiIgeTI9IjU1NiIgc3Ryb2tlPSIjN0FENkZGIiBzdHJva2Utd2lkdGg9IjQiLz4KCiAgPHRleHQgeD0iMTkwIiB5PSI2MjgiIGZpbGw9IiNCQ0VFRkYiIGZvbnQtc2l6ZT0iMzQiIGZvbnQtZmFtaWx5PSJBcmlhbCwgJnF1b3Q7UGluZ0ZhbmcgU0MmcXVvdDssICZxdW90O01pY3Jvc29mdCBZYUhlaSZxdW90Oywgc2Fucy1zZXJpZiI+CiAgICDorr7nva7kuIDmrKHop4TliJnvvIzmjInpnIDoh6rliqjooaXlhYXog73ph4/jgIIKICA8L3RleHQ+CgogIDx0ZXh0IHg9IjE5MCIgeT0iNjkwIiBmaWxsPSIjQkNFRUZGIiBmb250LXNpemU9IjM0IiBmb250LWZhbWlseT0iQXJpYWwsICZxdW90O1BpbmdGYW5nIFNDJnF1b3Q7LCAmcXVvdDtNaWNyb3NvZnQgWWFIZWkmcXVvdDssIHNhbnMtc2VyaWYiPgogICAg5Li65oyB57ut55qE6ZO+5LiK5Lqk5piT5o+Q5L6b6IO96YeP5pSv5oyB44CCCiAgPC90ZXh0Pgo8L3N2Zz4K" title="CatFee 自动速充" width="1600" height="900" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="自动速充上线从手动下单到按规则自动补能量">自动速充上线：从“手动下单”到“按规则自动补能量”<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E8%87%AA%E5%8A%A8%E9%80%9F%E5%85%85%E4%B8%8A%E7%BA%BF%E4%BB%8E%E6%89%8B%E5%8A%A8%E4%B8%8B%E5%8D%95%E5%88%B0%E6%8C%89%E8%A7%84%E5%88%99%E8%87%AA%E5%8A%A8%E8%A1%A5%E8%83%BD%E9%87%8F" class="hash-link" aria-label="自动速充上线：从“手动下单”到“按规则自动补能量”的直接链接" title="自动速充上线：从“手动下单”到“按规则自动补能量”的直接链接">​</a></h2>
<p>为了让高频链上用户和项目方更稳定地管理 TRON 能量，CatFee 在原有<a href="https://docs.catfee.io/getting-started/flash-energy-service" target="_blank" rel="noopener noreferrer">速充能量服务</a>基础上，正式上线 <strong>自动速充</strong>。</p>
<p>如果你经常遇到这些问题：</p>
<ul>
<li>临近发交易才发现能量不足</li>
<li>人工盯盘、手动下单效率低</li>
<li>多地址业务下，能量补给不稳定</li>
</ul>
<p>自动速充就是为这些场景设计的。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="什么是自动速充">什么是自动速充？<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E4%BB%80%E4%B9%88%E6%98%AF%E8%87%AA%E5%8A%A8%E9%80%9F%E5%85%85" class="hash-link" aria-label="什么是自动速充？的直接链接" title="什么是自动速充？的直接链接">​</a></h2>
<p>自动速充是对原有速充服务的一次能力升级：</p>
<ul>
<li>为业务地址设置自动补能量规则</li>
<li>当条件触发时，系统自动下单补充能量</li>
</ul>
<p>它的核心目标不是“更便宜一次下单”，而是“更少中断、更少人工、更稳定可用”。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="自动速充适合哪些场景">自动速充适合哪些场景<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E8%87%AA%E5%8A%A8%E9%80%9F%E5%85%85%E9%80%82%E5%90%88%E5%93%AA%E4%BA%9B%E5%9C%BA%E6%99%AF" class="hash-link" aria-label="自动速充适合哪些场景的直接链接" title="自动速充适合哪些场景的直接链接">​</a></h2>
<ul>
<li>钱包/支付业务：转账、归集、代付等高频操作</li>
<li>交易机器人：需要持续发起链上交易</li>
<li>项目运营地址：活动期间交易突增，容易出现能量缺口</li>
<li>多地址矩阵：人工维护成本高、漏单风险大</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="自动速充的核心价值">自动速充的核心价值<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E8%87%AA%E5%8A%A8%E9%80%9F%E5%85%85%E7%9A%84%E6%A0%B8%E5%BF%83%E4%BB%B7%E5%80%BC" class="hash-link" aria-label="自动速充的核心价值的直接链接" title="自动速充的核心价值的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-保障交易连续性">1) 保障交易连续性<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#1-%E4%BF%9D%E9%9A%9C%E4%BA%A4%E6%98%93%E8%BF%9E%E7%BB%AD%E6%80%A7" class="hash-link" aria-label="1) 保障交易连续性的直接链接" title="1) 保障交易连续性的直接链接">​</a></h3>
<p>能量不足时自动补给，避免因为资源中断导致交易失败或排队。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-降低运营负担">2) 降低运营负担<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#2-%E9%99%8D%E4%BD%8E%E8%BF%90%E8%90%A5%E8%B4%9F%E6%8B%85" class="hash-link" aria-label="2) 降低运营负担的直接链接" title="2) 降低运营负担的直接链接">​</a></h3>
<p>将“监控余额 + 手动下单”改为“规则驱动”，减少重复操作。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-可控的风控边界">3) 可控的风控边界<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#3-%E5%8F%AF%E6%8E%A7%E7%9A%84%E9%A3%8E%E6%8E%A7%E8%BE%B9%E7%95%8C" class="hash-link" aria-label="3) 可控的风控边界的直接链接" title="3) 可控的风控边界的直接链接">​</a></h3>
<p>配合单笔/单日等额度策略，确保自动化同时保持资金使用可控。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-支持业务扩张">4) 支持业务扩张<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#4-%E6%94%AF%E6%8C%81%E4%B8%9A%E5%8A%A1%E6%89%A9%E5%BC%A0" class="hash-link" aria-label="4) 支持业务扩张的直接链接" title="4) 支持业务扩张的直接链接">​</a></h3>
<p>地址数量增长、交易频次提升后，自动速充能显著降低运维复杂度。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="开通与配置建议">开通与配置建议<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E5%BC%80%E9%80%9A%E4%B8%8E%E9%85%8D%E7%BD%AE%E5%BB%BA%E8%AE%AE" class="hash-link" aria-label="开通与配置建议的直接链接" title="开通与配置建议的直接链接">​</a></h2>
<p>你可以按下面的顺序启用：</p>
<ol>
<li>绑定需要补能量的业务地址</li>
<li>设置自动速充阈值与额度策略（建议先保守，再逐步放开）</li>
<li>观察 1-3 天执行结果，再按真实交易峰值优化参数</li>
</ol>
<p>如果你此前已经在使用速充服务，通常只需增加自动化规则配置即可平滑升级。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="自动速充上线后我们建议你先做这三件事">自动速充上线后，我们建议你先做这三件事<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E8%87%AA%E5%8A%A8%E9%80%9F%E5%85%85%E4%B8%8A%E7%BA%BF%E5%90%8E%E6%88%91%E4%BB%AC%E5%BB%BA%E8%AE%AE%E4%BD%A0%E5%85%88%E5%81%9A%E8%BF%99%E4%B8%89%E4%BB%B6%E4%BA%8B" class="hash-link" aria-label="自动速充上线后，我们建议你先做这三件事的直接链接" title="自动速充上线后，我们建议你先做这三件事的直接链接">​</a></h2>
<ol>
<li>先从一个高频地址试运行，验证触发与补能量时效</li>
<li>复盘过去 7 天订单，倒推出更合理的阈值和额度</li>
<li>按业务优先级分层配置地址，先保障核心资金流</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="结语">结语<a href="https://blog.catfee.io/zh-Hans/2026/03/03/catfee-auto-flash-energy#%E7%BB%93%E8%AF%AD" class="hash-link" aria-label="结语的直接链接" title="结语的直接链接">​</a></h2>
<p>自动速充不是替代原有速充，而是把速充从“工具能力”升级为“调度能力”。</p>
<p>对需要稳定链上执行的团队来说，这一步会显著降低人工成本与交易中断风险。</p>
<p>立即体验：</p>
<ul>
<li>CatFee 速充能量文档：<a href="https://docs.catfee.io/getting-started/flash-energy-service" target="_blank" rel="noopener noreferrer">https://docs.catfee.io/getting-started/flash-energy-service</a></li>
<li>CatFee 官网：<a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">https://catfee.io</a></li>
</ul>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量速充" term="能量速充"/>
        <category label="自动速充" term="自动速充"/>
        <category label="波场能量" term="波场能量"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[正月初八 · 开工大吉]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart"/>
        <updated>2026-02-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 农历新年后恢复运营，回顾 2025 年用户、能量服务与生态合作进展，并介绍 2026 年资源容量和调度优化方向。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="CatFee 农历新年开工海报" src="https://blog.catfee.io/zh-Hans/assets/images/lunar-year-restart-c780edb520c9e240d947e2062f3ad747.jpeg" title="CatFee" width="1280" height="853" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="从规模到效率catfee-2026-再启新程">从规模到效率，CatFee 2026 再启新程<a href="https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart#%E4%BB%8E%E8%A7%84%E6%A8%A1%E5%88%B0%E6%95%88%E7%8E%87catfee-2026-%E5%86%8D%E5%90%AF%E6%96%B0%E7%A8%8B" class="hash-link" aria-label="从规模到效率，CatFee 2026 再启新程的直接链接" title="从规模到效率，CatFee 2026 再启新程的直接链接">​</a></h2>
<p>随着中国农历新年假期的结束，CatFee 正式全面恢复运营。</p>
<p>在此，我们向所有合作伙伴、用户与生态伙伴致以诚挚的新春祝福。愿马年带来稳健增长、理性繁荣与长期价值。</p>
<p>春节不仅是团聚与祝福的时刻，也是一段回顾与展望的时间节点。站在 2026 年的起点，我们希望用数据与行动，回顾过去一年的建设成果。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2025持续建设的一年">2025：持续建设的一年<a href="https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart#2025%E6%8C%81%E7%BB%AD%E5%BB%BA%E8%AE%BE%E7%9A%84%E4%B8%80%E5%B9%B4" class="hash-link" aria-label="2025：持续建设的一年的直接链接" title="2025：持续建设的一年的直接链接">​</a></h2>
<p>在过去一年中，CatFee 始终专注于 TRON 生态的资源效率与基础设施优化，并取得了清晰、可验证的成果：</p>
<ul>
<li>付费用户突破 <strong>12,000+</strong></li>
<li>日均发送能量超过 <strong>140 亿</strong></li>
<li>质押宝累计发放奖励超过 <strong>1,300 万 TRX</strong></li>
<li>平台质押资源规模突破 <strong>3.4 亿 TRX</strong></li>
<li>与 Binance、Bitget、CWallet 等主流钱包建立战略合作</li>
</ul>
<p>这些数字不仅代表增长，更代表系统能力的提升。</p>
<p>规模带来调度能力，
调度能力带来效率优势，
效率优势构筑长期壁垒。</p>
<p>在一个周期性波动明显的行业中，真正的竞争力来自基础设施的持续优化，而非短期情绪的放大。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="牛熊更替是周期持续建设才是答案">牛熊更替是周期，持续建设才是答案<a href="https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart#%E7%89%9B%E7%86%8A%E6%9B%B4%E6%9B%BF%E6%98%AF%E5%91%A8%E6%9C%9F%E6%8C%81%E7%BB%AD%E5%BB%BA%E8%AE%BE%E6%89%8D%E6%98%AF%E7%AD%94%E6%A1%88" class="hash-link" aria-label="牛熊更替是周期，持续建设才是答案的直接链接" title="牛熊更替是周期，持续建设才是答案的直接链接">​</a></h2>
<p>过去几年，市场经历了繁荣与回调。
但我们始终相信：</p>
<blockquote>
<p>市场会波动，基础设施会复利增长。</p>
</blockquote>
<p>CatFee 的定位从未改变——
成为 TRON 生态中高效、稳定、可扩展的资源基础设施提供者。</p>
<p>我们专注于：</p>
<ul>
<li>优化资源配置效率</li>
<li>提升能量流转速度</li>
<li>强化质押模型稳定性</li>
<li>深化与钱包及生态伙伴的系统级协作</li>
</ul>
<p>当系统能力足够强，周期只是背景。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2026加速而非改变方向">2026：加速，而非改变方向<a href="https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart#2026%E5%8A%A0%E9%80%9F%E8%80%8C%E9%9D%9E%E6%94%B9%E5%8F%98%E6%96%B9%E5%90%91" class="hash-link" aria-label="2026：加速，而非改变方向的直接链接" title="2026：加速，而非改变方向的直接链接">​</a></h2>
<p>2026 年，CatFee 不会改变方向，而是提升速度。</p>
<p>我们将重点推进：</p>
<ul>
<li>扩大资源容量</li>
<li>优化算法与调度系统</li>
<li>提升资金使用效率</li>
<li>深化与头部平台的协同整合</li>
</ul>
<p>马年象征速度与力量。
对 CatFee 而言，真正的“马力”来自技术、规模与执行力。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="开工是对长期主义的再次确认">开工，是对长期主义的再次确认<a href="https://blog.catfee.io/zh-Hans/2026/02/24/lunar-new-year-restart#%E5%BC%80%E5%B7%A5%E6%98%AF%E5%AF%B9%E9%95%BF%E6%9C%9F%E4%B8%BB%E4%B9%89%E7%9A%84%E5%86%8D%E6%AC%A1%E7%A1%AE%E8%AE%A4" class="hash-link" aria-label="开工，是对长期主义的再次确认的直接链接" title="开工，是对长期主义的再次确认的直接链接">​</a></h2>
<p>正月初八，是开工的传统节点。
对我们而言，这是重新进入执行状态的时刻。</p>
<p>感谢每一位用户的信任。
感谢每一位合作伙伴的支持。
感谢生态伙伴在过去一年中的协同与共建。</p>
<p>2026，我们继续加速。
马年启程，链上奔腾。</p>
<p>开工大吉。</p>
<p>—— CatFee Team</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="购买波场能量" term="购买波场能量"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量租赁" term="能量租赁"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 圆满结束香港 GWDC 2026 参会之旅]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/02/09/gwdc-2026-recap</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/02/09/gwdc-2026-recap"/>
        <updated>2026-02-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[回顾 CatFee 在香港 GWDC 2026 的交流，涵盖 TRON 能量、钱包集成、基础设施与用户反馈。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="CatFee GWDC" src="https://blog.catfee.io/zh-Hans/assets/images/gwdc-2026-recap-02-2a9526990535d145385708b945833981.jpg" title="GWDC 2026" width="3967" height="2645" class="img_ev3q"></p>
<p>CatFee 已圆满结束 <strong>Global Web3 Dev Con（GWDC）2026</strong> 参会之旅。本届大会于 <strong>2 月 8–9 日在香港</strong>举行，CatFee 以<strong>白金赞助商</strong>身份参与。</p>
<p>GWDC 2026 汇聚了全球 Web3 生态中的开发者、协议团队、钱包、交易所、投资者和基础设施服务商。大会期间，CatFee 与各类参与者进行了广泛、深入的讨论，重点围绕 <strong>TRON 生态</strong>展开交流。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="in-depth-ecosystem-discussions">深入的生态交流<a href="https://blog.catfee.io/zh-Hans/2026/02/09/gwdc-2026-recap#in-depth-ecosystem-discussions" class="hash-link" aria-label="深入的生态交流的直接链接" title="深入的生态交流的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" alt="CatFee GWDC" src="https://blog.catfee.io/zh-Hans/assets/images/gwdc-2026-recap-01-1741b44999edb8c321cba31c90b1853c.jpg" title="GWDC 2026" width="3918" height="2612" class="img_ev3q"></p>
<p>活动期间，CatFee 团队与<strong>钱包服务商、开发者、交易所、支付平台及基础设施伙伴</strong>进行了详细交流。重点议题包括 TRON 能量使用、链上资源优化、稳定币支付效率、产品集成与基础设施扩展能力。</p>
<p>这些交流帮助 CatFee 探索了多项潜在合作机会，也让我们更深入地了解在 TRON 上建设和运营的团队所面临的实际挑战与需求。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="listening-to-users-and-builders">倾听用户与建设者<a href="https://blog.catfee.io/zh-Hans/2026/02/09/gwdc-2026-recap#listening-to-users-and-builders" class="hash-link" aria-label="倾听用户与建设者的直接链接" title="倾听用户与建设者的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" alt="CatFee GWDC" src="https://blog.catfee.io/zh-Hans/assets/images/gwdc-2026-recap-03-e35ea2465acdba791fbedcb240639860.jpg" title="GWDC 2026" width="1280" height="960" class="img_ev3q"></p>
<p>除合作伙伴交流外，CatFee 也积极听取在真实场景中使用 TRON 应用的用户和开发者的反馈。关于产品易用性、接入流程、性能预期和服务响应的意见，为后续产品改进提供了宝贵参考。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="commitment-to-continuous-improvement">持续改进的承诺<a href="https://blog.catfee.io/zh-Hans/2026/02/09/gwdc-2026-recap#commitment-to-continuous-improvement" class="hash-link" aria-label="持续改进的承诺的直接链接" title="持续改进的承诺的直接链接">​</a></h2>
<p><img decoding="async" loading="lazy" alt="CatFee GWDC" src="https://blog.catfee.io/zh-Hans/assets/images/gwdc-2026-recap-04-da91da2ac3ba45e544516549cc175f3a.jpg" title="GWDC 2026" width="3956" height="2638" class="img_ev3q"></p>
<p>CatFee 将继续根据生态的真实需求完善产品与服务。在 GWDC 2026 收集的意见，将直接用于推动以下方面的改进：</p>
<ul>
<li>产品稳定性与可靠性</li>
<li>TRON 能量与资源服务效率</li>
<li>钱包及 DeFi 应用的集成体验</li>
<li>整体服务质量与响应速度</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="looking-forward">展望未来<a href="https://blog.catfee.io/zh-Hans/2026/02/09/gwdc-2026-recap#looking-forward" class="hash-link" aria-label="展望未来的直接链接" title="展望未来的直接链接">​</a></h2>
<p>CatFee 将 GWDC 2026 视为深化 TRON 生态参与的重要里程碑。我们将继续与生态伙伴、建设者和用户紧密合作，提供可靠的基础设施与优质服务，支持链上业务持续发展。</p>
<p>CatFee 期待延续 GWDC 2026 带来的合作动力，继续支持 TRON 生态建设。</p>
<p><strong>CatFee.IO | 为 TRON 而建</strong></p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="购买波场能量" term="购买波场能量"/>
        <category label="波场能量" term="波场能量"/>
        <category label="TRX 能量" term="TRX 能量"/>
        <category label="GWDC 2026" term="GWDC 2026"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 将以白金赞助商身份参加香港 GWDC 2026]]></title>
        <id>https://blog.catfee.io/zh-Hans/2026/02/01/catFee-is-heading-to-hong-kong-for-gwdc-2026</id>
        <link href="https://blog.catfee.io/zh-Hans/2026/02/01/catFee-is-heading-to-hong-kong-for-gwdc-2026"/>
        <updated>2026-02-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 宣布以白金赞助商身份参加香港 GWDC 2026，聚焦 TRON 基础设施与生态合作。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="CatFee GWDC" src="https://blog.catfee.io/zh-Hans/assets/images/catfee-gwdc-2026-7c9f86b109eb9bd47dc0fef6a58bc02c.jpg" title="CatFee 将参加香港 GWDC 2026" width="1280" height="720" class="img_ev3q"></p>
<p><em>GWDC 2026 主办方原始双语海报。</em></p>
<p>CatFee 很高兴地宣布，我们将参加于 <strong>2026 年 2 月 8–9 日</strong>在<strong>香港数码港</strong>举办的 <strong>Global Web3 Dev Con（GWDC）2026</strong>。</p>
<p>作为亚洲最关注建设者的 Web3 活动之一，GWDC 汇聚来自世界各地的开发者、创始人、协议团队、投资者与生态领袖。今年，CatFee 将以<strong>白金赞助商</strong>身份支持大会，期待与社区朋友线下交流。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="our-focus-the-tron-ecosystem">我们的重点：TRON 生态<a href="https://blog.catfee.io/zh-Hans/2026/02/01/catFee-is-heading-to-hong-kong-for-gwdc-2026#our-focus-the-tron-ecosystem" class="hash-link" aria-label="我们的重点：TRON 生态的直接链接" title="我们的重点：TRON 生态的直接链接">​</a></h2>
<p>此次行程将重点关注 <strong>TRON 生态</strong>，它是稳定币支付与链上实际应用最活跃的网络之一。我们将与以下领域的建设者和合作伙伴交流：</p>
<ul>
<li><strong>稳定币支付与 TRC20 转账体验</strong></li>
<li><strong>链上基础设施与开发者工具</strong></li>
<li><strong>DeFi 集成与生态合作</strong></li>
<li><strong>TRON 能量与资源优化</strong></li>
<li><strong>亚洲市场的实际应用机会</strong></li>
</ul>
<p>CatFee 相信，基础设施应该易于使用、可靠，并且能够支撑规模增长。我们的使命是帮助 TRON 团队降低交易成本、提高成功率、提供更顺畅的用户体验，无论您运营的是钱包、交易所、支付产品，还是高频链上应用。</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="lets-meet-at-gwdc">相约 GWDC<a href="https://blog.catfee.io/zh-Hans/2026/02/01/catFee-is-heading-to-hong-kong-for-gwdc-2026#lets-meet-at-gwdc" class="hash-link" aria-label="相约 GWDC的直接链接" title="相约 GWDC的直接链接">​</a></h2>
<p>如果您将参加 GWDC 2026，或提前到香港参加相关活动，欢迎与我们见面。无论您正在 TRON 上开发、探索资源方案，还是寻找更深入的集成机会，团队都期待与您合作。</p>
<p>📍 <strong>活动：</strong> Global Web3 Dev Con（GWDC）2026
🗓️ <strong>日期：</strong> 2026 年 2 月 8–9 日
📌 <strong>地点：</strong> 香港 · 数码港
🌐 <strong>更多信息：</strong> <a href="http://www.gwdc.net/" target="_blank" rel="noopener noreferrer">www.gwdc.net</a></p>
<p><strong>CatFee.IO | 为 TRON 而建</strong></p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="购买波场能量" term="购买波场能量"/>
        <category label="波场能量" term="波场能量"/>
        <category label="TRX 能量" term="TRX 能量"/>
        <category label="GWDC" term="GWDC"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[波场伴侣 Pro 正式上线：面向 TRON 网络的企业级能量管理]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live"/>
        <updated>2025-12-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[介绍面向企业的波场伴侣 Pro 能量管理服务，包括自动补充、分级套餐，以及订阅加按用量计费的定价方式。]]></summary>
        <content type="html"><![CDATA[<p>随着 TRON 生态持续增长，越来越多钱包、支付平台、交易所和 DApp 正在以更高的交易频率、更大的业务规模运行。
虽然 TRON 提供快速、低成本的交易，<strong>能量管理</strong>仍是企业用户面临的重要运营挑战。</p>
<p>今天，我们正式推出 <strong>波场伴侣 Pro（TRON Mate Pro）</strong>，这是 CatFee 长期 TRON 能量管理方案的专业版，专为<strong>高频与企业级场景</strong>打造。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-energy-challenge-in-high-frequency-tron-transactions">高频 TRON 交易面临的能量挑战<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#the-energy-challenge-in-high-frequency-tron-transactions" class="hash-link" aria-label="高频 TRON 交易面临的能量挑战的直接链接" title="高频 TRON 交易面临的能量挑战的直接链接">​</a></h2>
<p>个人用户或许可以手动管理 TRON 能量。
但对于持续运行以下业务的系统：</p>
<ul>
<li>连续的 USDT（TRC20）转账</li>
<li>批量付款</li>
<li>智能合约交互</li>
<li>自动化后台服务</li>
</ul>
<p>能量短缺很容易造成：</p>
<ul>
<li>交易失败或延迟</li>
<li>运营复杂度增加</li>
<li>成本难以预测</li>
<li>用户体验下降</li>
</ul>
<p>波场伴侣正是为解决这些问题而生，<strong>波场伴侣 Pro</strong> 则进一步提升了能力。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-tron-mate-pro">什么是波场伴侣 Pro？<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#what-is-tron-mate-pro" class="hash-link" aria-label="什么是波场伴侣 Pro？的直接链接" title="什么是��波场伴侣 Pro？的直接链接">​</a></h2>
<p>波场伴侣 Pro 是一项<strong>长期、自动化的能量管理服务</strong>，旨在确保您的 TRON 账户始终有足够能量，顺畅执行交易。</p>
<p>相比基础版，Pro 版提供：</p>
<ul>
<li><strong>更高的并发支持</strong></li>
<li><strong>更大的基础能量池</strong></li>
<li><strong>智能自动补充</strong></li>
<li><strong>灵活且更具成本效益的定价</strong></li>
</ul>
<p>系统会 <strong>24/7</strong> 监控账户能量，在达到预设阈值时自动补充，无需人工干预。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="pro-plans-built-for-business-growth">支持业务增长的 Pro 套餐<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#pro-plans-built-for-business-growth" class="hash-link" aria-label="支持业务增长的 Pro 套餐的直接链接" title="支持业务增长的 Pro 套餐的直接链接">​</a></h2>
<p>波场伴侣 Pro 提供三个套餐，适应不同业务规模：</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-accelerate">🔹 Accelerate（加速版）<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#-accelerate" class="hash-link" aria-label="🔹 Accelerate（加速版）的直接链接" title="🔹 Accelerate（加速版）的直接链接">​</a></h3>
<ul>
<li>每 <strong>3 秒最多 5 笔交易</strong></li>
<li><strong>1,300,000</strong> 基础能量</li>
<li>余额低于 325,000 时，自动补充 <strong>650,000 能量</strong></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-scale">🔹 Scale（扩展版）<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#-scale" class="hash-link" aria-label="🔹 Scale（扩展版）的直接链接" title="🔹 Scale（扩展版）的直接链接">​</a></h3>
<ul>
<li>每 <strong>3 秒最多 10 笔交易</strong></li>
<li><strong>2,600,000</strong> 基础能量</li>
<li>余额低于 650,000 时，自动补充 <strong>1,300,000 能量</strong></li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-business">🔹 Business（商务版）<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#-business" class="hash-link" aria-label="🔹 Business（商务版）的直接链接" title="🔹 Business（商务版）的直接链接">​</a></h3>
<ul>
<li>每 <strong>3 秒最多 20 笔交易</strong></li>
<li><strong>5,200,000</strong> 基础能量</li>
<li>余额低于 1,300,000 时，自动补充 <strong>2,600,000 能量</strong></li>
</ul>
<p>每个套餐都旨在匹配不断增长的交易量与运营需求。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="smarter-costs-better-long-term-efficiency">更灵活的成本，更高的长期效率<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#smarter-costs-better-long-term-efficiency" class="hash-link" aria-label="更灵活的成本，更高的长期效率的直接链接" title="更灵活的成本，更高的长期效率的直接链接">​</a></h2>
<p>波场伴侣 Pro 采用<strong>订阅费 + 按用量补充</strong>的计费模式。</p>
<p>其特点在于灵活性：</p>
<ul>
<li>用户通过质押或其他方式，<strong>自行提供足够的长期能量</strong>，满足套餐最低要求</li>
<li>👉 即可<strong>免除每日订阅费</strong></li>
<li>👉 仅为实际能量使用付费</li>
</ul>
<p>这让已有能量资源的团队能够在享受自动化保障的同时，显著降低长期运营成本。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="ideal-use-cases">适用场景<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#ideal-use-cases" class="hash-link" aria-label="适用场景的直接链接" title="适用场景的直接链接">​</a></h2>
<p>波场伴侣 Pro 面向：</p>
<ul>
<li>钱包服务商</li>
<li>支付与结算平台</li>
<li>处理充值和提现的交易所</li>
<li>需要后台合约调用的 DApp</li>
<li>任何需要稳定、高吞吐执行能力的 TRON 服务</li>
</ul>
<p>如果能量可靠性对您的系统至关重要，波场伴侣 Pro 就是为此设计的。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-tron-mate-pro">为什么选择波场伴侣 Pro？<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#why-tron-mate-pro" class="hash-link" aria-label="为什么选择波场伴侣 Pro？的直接链接" title="为什么选择波场伴侣 Pro？的直接链接">​</a></h2>
<ul>
<li>无需手动管理能量</li>
<li>减少交易失败</li>
<li>成本可预测、可优化</li>
<li>提高系统稳定性</li>
<li>基础设施随业务扩展</li>
</ul>
<p>让团队可以<strong>专注于产品建设</strong>，减轻能量管理负担。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="get-started-today">立即开始使用<a href="https://blog.catfee.io/zh-Hans/2025/12/23/tron-mate-pro-is-live#get-started-today" class="hash-link" aria-label="立即开始使用的直接链接" title="立即开始使用的直接链接">​</a></h2>
<p>波场伴侣 Pro 现已正式上线。
选择适合您业务的套餐，体验<strong>省心的 TRON 企业级能量管理</strong>。</p>
<p>欢迎查阅文档，或立即开始使用波场伴侣 Pro。</p>
<p><strong>CatFee.io | 为 TRON 而建</strong></p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="购买波场能量" term="购买波场能量"/>
        <category label="波场能量" term="波场能量"/>
        <category label="TRX 能量" term="TRX 能量"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[为什么 Binance Wallet 选择 CatFee：为 TRON 用户带来更低成本的转账]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode"/>
        <updated>2025-12-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[了解 Binance Wallet 在 TRON 上推出经济模式背后的 CatFee 合作，以及能量管理在转账成本优化中的作用。]]></summary>
        <content type="html"><![CDATA[<p>随着链上活动持续增长，<strong>交易成本效率</strong>成为影响用户体验的重要因素。对于 <strong>TRON</strong> 这样使用频繁的网络尤其如此：USDT 转账频繁，交易量也往往很大。</p>
<p>为进一步提升转账效率、降低用户成本，<strong>Binance Wallet 在 TRON 网络推出了“经济模式”</strong>，在主流钱包中提供具有成本竞争力的转账体验。
此次升级得益于与 <strong>CatFee</strong> 的战略合作。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="the-challenge-cost-efficiency-at-scale-on-tron">挑战：在大规模 TRON 交易中提高成本效率<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#the-challenge-cost-efficiency-at-scale-on-tron" class="hash-link" aria-label="挑战：在大规模 TRON 交易中提高成本效率的直接链接" title="挑战：在大规模 TRON 交易中提高成本效率的直接链接">​</a></h2>
<p>TRON 凭借速度和易用性，被广泛用于稳定币转账。但对<strong>频繁交易</strong>的用户而言，即使费用设计中存在很小的低效，长期累积也会形成明显成本。</p>
<p>钱包需要平衡多个目标：</p>
<ul>
<li>保持转账可靠、快速</li>
<li>管理动态变化的链上资源使用</li>
<li>在保障用户体验的同时降低交易费用</li>
</ul>
<p>要大规模解决这些问题，仅调整费用还不够，还需要<strong>专门的基础设施与优化模型</strong>。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-catfee">为什么选择 CatFee？<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#why-catfee" class="hash-link" aria-label="��为什么选择 CatFee？的直接链接" title="为什么选择 CatFee？的直接链接">​</a></h2>
<p>CatFee 凭借在<strong>交易成本优化</strong>与<strong>链上费用建模</strong>方面的专业积累，尤其是在高频转账场景中的经验，成为合作伙伴。</p>
<p>Binance Wallet 选择 CatFee 的主要原因包括：</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-deep-specialization-in-fee-optimization">1. 专注费用优化<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#1-deep-specialization-in-fee-optimization" class="hash-link" aria-label="1. 专注费用优化的直接链接" title="1. 专注费用优化的直接链接">​</a></h3>
<p>CatFee 专门针对不同使用场景优化交易成本，采用<strong>自适应费用模型</strong>，综合平衡成本、成功率与网络状况，避免用同一套方案处理所有需求。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-proven-performance-in-high-frequency-scenarios">2. 高频场景下的实际表现<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#2-proven-performance-in-high-frequency-scenarios" class="hash-link" aria-label="2. 高频场景下的实际表现的直接链接" title="2. 高频场景下的实际表现的直接链接">​</a></h3>
<p>许多 TRON 用户依靠重复转账完成支付、结算与资产管理。CatFee 的系统针对这些场景设计，能够可靠运行，适合真实业务中的大规模使用。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-infrastructure-level-integration">3. 基础设施层面的集成<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#3-infrastructure-level-integration" class="hash-link" aria-label="3. 基础设施层面的集成的直接链接" title="3. 基础设施层面的集成的直接链接">​</a></h3>
<p>CatFee 在<strong>交易建模层面</strong>完成集成，让 Binance Wallet 能够直接在钱包内提供经济模式，无需给用户增加额外操作。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-alignment-on-user-experience">4. 一致的用户体验目标<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#4-alignment-on-user-experience" class="hash-link" aria-label="4. 一致的用户体验目标的直接链接" title="4. 一致的用户体验目标的直接链接">​</a></h3>
<p>Binance Wallet 与 CatFee 拥有相同的优先目标：
<strong>让用户以简单、透明的方式享受更低成本。</strong>
经济模式通过钱包内直观的选项，让用户受益于优化后的费用，体现了这一理念。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="economy-mode-a-practical-result-of-the-collaboration">经济模式：合作带来的实际成果<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#economy-mode-a-practical-result-of-the-collaboration" class="hash-link" aria-label="经济模式：合作带来的实际成果的直接链接" title="经济模式：合作带来的实际成果的直接链接">​</a></h2>
<p>在 CatFee 的支持下，Binance Wallet 的 TRON 经济模式提供：</p>
<ul>
<li>更具成本优势的 USDT 转账</li>
<li>更顺畅的日常与高频交易体验</li>
<li>相比其他主流钱包具有竞争力的费用水平</li>
<li>直接在 Binance Wallet 内完成的简单、可靠流程</li>
</ul>
<p>用户无需理解复杂的链上机制，<strong>优化会在后台完成</strong>。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="looking-ahead">展望未来<a href="https://blog.catfee.io/zh-Hans/2025/12/22/binance-wallet-tron-economy-mode#looking-ahead" class="hash-link" aria-label="展望未来的直接链接" title="展望未来的直接链接">​</a></h2>
<p>此次合作体现了双方提升大规模链上可用性的共同承诺。随着网络状况和用户需求变化，<strong>Binance Wallet 与 CatFee 将持续完善成本效率模型</strong>，为 TRON 及更广泛的用户带来更好的体验。</p>
<p>降低费用不仅意味着节省成本，也意味着让更多用户参与链上活动，让操作更加顺畅。</p>
<hr>
<p><strong>Binance Wallet × CatFee</strong>
优化交易成本，提升实际可用性。</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="购买波场能量" term="购买波场能量"/>
        <category label="波场能量" term="波场能量"/>
        <category label="TRX 能量" term="TRX 能量"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 质押池热度持续攀升，第二期现已开放！]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/07/09/staking-pools-are-booming</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/07/09/staking-pools-are-booming"/>
        <updated>2025-07-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 宣布开放第二期质押池，介绍能量代理、奖励分配、灵活退出机制，以及供应商的参与方式。]]></summary>
        <content type="html"><![CDATA[<p>CatFee <strong>质押池</strong>迅速成为 TRON 生态的热门参与机会之一。在 TRON 用户和能量供应商的积极参与下，<strong>首期 3,700 万 TRX 的质押池（约相当于 3.75 亿能量）现已满额</strong>。</p>
<p>为满足不断增长的需求，我们宣布<strong>第二期质押池正式启动</strong>，规模扩大至 <strong>4,000 万 TRX</strong>。欢迎所有 TRON 持有者和能量市场参与者加入，以安全、灵活、可获收益的方式利用 TRX。也欢迎能量供应商和项目方直接在平台发布能量采购需求。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-why-choose-catfee-staking">✅ 为什么选择 CatFee 质押？<a href="https://blog.catfee.io/zh-Hans/2025/07/09/staking-pools-are-booming#-why-choose-catfee-staking" class="hash-link" aria-label="✅ 为什么选择 CatFee 质押？的直接链接" title="✅ 为什么选择 CatFee 质押？的直接链接">​</a></h3>
<p><strong>💯 0% 佣金，100% 收益归您所有</strong>
我们不抽成。所有产生的奖励直接归您，没有隐藏费用。</p>
<p><strong>🔓 无锁定期，随时代理和回收</strong>
您可以随时代理或撤回能量，享受分钟级收益与充分的灵活性。</p>
<p><strong>🔐 自托管，无需钱包授权</strong>
所有质押都直接在您自己的钱包中进行，资金始终由您掌控。</p>
<p><strong>📈 经核实的能量项目带来稳定需求</strong>
平台持续有新项目发布能量采购需求，带来稳定收益和较高的资源利用率。</p>
<p><strong>📲 Telegram 机器人通知（即将推出）</strong>
您将可以通过 Telegram 实时接收项目变更、奖励、资源状态和结算通知。</p>
<hr>
<p>CatFee 致力于建设 <strong>TRON 生态中最值得信赖、最高效的能量代理平台</strong>，连接 TRX 持有者与网络中的真实能量需求。</p>
<p>无论您是个人能量投资者，还是需要能量的项目方，<strong>CatFee 都是 TRON 能量经济中可靠的合作伙伴</strong>。</p>
<p>👉 立即参与：<a href="https://catfee.io/staking" target="_blank" rel="noopener noreferrer">https://catfee.io/staking</a>
让闲置 TRX 带来稳定的每日收益，零风险、充分自由。</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="出售波场能量" term="出售波场能量"/>
        <category label="波场能量" term="波场能量"/>
        <category label="TRX 能量" term="TRX 能量"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee 全新界面上线，支持多语言]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/04/28/catfee-launches-new-interface-version-with-multi-language-support</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/04/28/catfee-launches-new-interface-version-with-multi-language-support"/>
        <updated>2025-04-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[了解 CatFee 界面升级，包括中英文支持、DApp 与钱包转账购买、能量转发以及 API 接入。]]></summary>
        <content type="html"><![CDATA[<p>亲爱的用户：</p>
<p>我们很高兴地宣布，CatFee 平台全新版本正式上线！此次升级全面优化界面，并带来多项体验改进。</p>
<p>主要亮点：</p>
<p>🌎 多语言支持：现已支持中文与英文，服务更广泛的全球用户。</p>
<p>⚡ 用户体验升级：界面优化让能量购买更快速、流畅、直观。</p>
<p>🔗 灵活的购买方式：支持通过 DApp 交互或钱包直接转账购买 TRON 能量。</p>
<p>🔄 能量转发功能：可将购买的能量便捷转发至其他地址。</p>
<p>🛠️ API 集成：开发者和企业可通过 API 便捷接入能量租赁服务。</p>
<p>欢迎访问 <a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">https://catfee.io</a> 体验全新版本！</p>
<p>感谢您一直以来的信任与支持。</p>
<p>CatFee 团队</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量转租" term="能量转租"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="TRX 能量" term="TRX 能量"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[🎉 CatFee 正式上线「Telegram 高级会员 Premium 自助开通服务」！]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service"/>
        <updated>2025-04-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[介绍 CatFee Telegram Premium 自助开通服务，涵盖用户中心购买、API 接入、可选订阅周期与开通注意事项。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="电报会员服务" src="https://blog.catfee.io/zh-Hans/assets/images/telegram-premium.zh-Hans-812c47d35f22d237c52a27de4823a046.webp" title="购买 Telegram Premium 会员" width="1254" height="1254" class="img_ev3q"></p>
<p>为了满足广大开发者与电报创业者的个性化需求，<strong>CatFee 正式上线自助开通 Telegram Premium 会员服务</strong>，开通速度快、操作简单、价格超值，还支持 API 接入，助您实现自动化运营！</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-支持购买周期">✅ 支持购买周期：<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#-%E6%94%AF%E6%8C%81%E8%B4%AD%E4%B9%B0%E5%91%A8%E6%9C%9F" class="hash-link" aria-label="✅ 支持购买周期：的直接链接" title="✅ 支持购买周期：的直接链接">​</a></h2>
<table><thead><tr><th>周期</th><th>价格（USDT）</th></tr></thead><tbody><tr><td>3个月</td><td>12.5 USDT</td></tr><tr><td>6个月</td><td>16.5 USDT</td></tr><tr><td>1年</td><td>29.5 USDT</td></tr></tbody></table>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-开通方式">🛒 开通方式<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#-%E5%BC%80%E9%80%9A%E6%96%B9%E5%BC%8F" class="hash-link" aria-label="🛒 开通方式的直接链接" title="🛒 开通方式的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-用户中心购买">📍 用户中心购买：<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#-%E7%94%A8%E6%88%B7%E4%B8%AD%E5%BF%83%E8%B4%AD%E4%B9%B0" class="hash-link" aria-label="📍 用户中心购买：的直接链接" title="📍 用户中心购买：的直接链接">​</a></h3>
<p>进入 <a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">CatFee 用户中心</a>，点击 <strong>「Telegram 高级会员」</strong> 页面，即可选择时长一键购买。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="-api-开通">💻 API 开通：<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#-api-%E5%BC%80%E9%80%9A" class="hash-link" aria-label="💻 API 开通：的直接链接" title="💻 API 开通：的直接链接">​</a></h3>
<p>支持开发者通过 API 接入自动开通功能！</p>
<ul>
<li>
<p><strong>接口地址</strong>：</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">POST https://api.catfee.io/v1/premium</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
</li>
<li>
<p><strong>使用方法</strong>：
详见 <a href="https://docs.catfee.io/" target="_blank" rel="noopener noreferrer">CatFee 开发文档</a> 获取参数说明与签名机制。</p>
</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="️-注意事项">⚠️ 注意事项<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#%EF%B8%8F-%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9" class="hash-link" aria-label="⚠️ 注意事项的直接链接" title="⚠️ 注意事项的直接链接">​</a></h2>
<ul>
<li>💡 <strong>电报账号必须未通过 App Store、Google Play 或其他平台订阅过 Telegram Premium</strong>，否则可能导致无法成功开通。</li>
<li>🛡️ 我们所有会员均来自 <strong>Telegram 官方渠道购买</strong>，<strong>绝非破解、黑市或其他非法手段获取</strong>，可放心使用。</li>
<li>🔐 仅收集必要信息（用户名与时长），不涉及您的敏感隐私。</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-安全--合规">🔒 安全 &amp; 合规<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#-%E5%AE%89%E5%85%A8--%E5%90%88%E8%A7%84" class="hash-link" aria-label="🔒 安全 &amp; 合规的直接链接" title="🔒 安全 &amp; 合规的直接链接">​</a></h2>
<ul>
<li>通过 Telegram 官方通道开通</li>
<li>无封号风险，支持 7x24 小时售后</li>
<li>操作简单，开通即生效</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-一站式服务平台助力您的电报生态建设">🚀 一站式服务平台，助力您的电报生态建设！<a href="https://blog.catfee.io/zh-Hans/2025/04/17/lauch-telegram-premium-service#-%E4%B8%80%E7%AB%99%E5%BC%8F%E6%9C%8D%E5%8A%A1%E5%B9%B3%E5%8F%B0%E5%8A%A9%E5%8A%9B%E6%82%A8%E7%9A%84%E7%94%B5%E6%8A%A5%E7%94%9F%E6%80%81%E5%BB%BA%E8%AE%BE" class="hash-link" aria-label="🚀 一站式服务平台，助力您的电报生态建设！的直接链接" title="🚀 一站式服务平台，助力您的电报生态建设！的直接链接">​</a></h2>
<p>CatFee 不仅提供 Premium 会员开通服务，还支持：</p>
<ul>
<li>⚡ 波场能量代理</li>
<li>🛰️ 区块链消息推送</li>
<li>🧠 节点服务租赁</li>
<li>🤖 Telegram 机器人托管服务</li>
</ul>
<p>更多能力，持续上新中！</p>
<hr>
<p>📩 如有问题欢迎联系客服：<a href="https://t.me/CatFee_James" target="_blank" rel="noopener noreferrer">@CatFee_James</a></p>
<p>立即访问 👉 <a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">https://catfee.io</a> 开通体验！</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="电报会员" term="电报会员"/>
        <category label="Telegram Premium" term="Telegram Premium"/>
        <category label="API 购买电报会员" term="API 购买电报会员"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[限时开放｜CatFee 电报机器人定制服务，全面免费！]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/04/09/free-telegram-bot-service-on-catfee</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/04/09/free-telegram-bot-service-on-catfee"/>
        <updated>2025-04-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 电报机器人托管与定制服务上线公告，介绍可视化菜单、多语言配置、消息模板与接入流程，并说明限时免费活动。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="机器人定制服务" src="https://blog.catfee.io/zh-Hans/assets/images/telegram-bot-hosting.zh-Hans-52f118d8aedf4124b25981e55da33e58.webp" title="免费能量机器人" width="1254" height="1254" class="img_ev3q"></p>
<p>开发者、创业者注意了！<br>
<!-- -->你是否厌倦了电报 Bot API 文档的晦涩难懂？是否苦于实现一个漂亮菜单、按钮系统要写上百行代码？是否希望你的机器人能“秒上线”、“可视化配置”、“实时预览”？<br>
<!-- -->现在——你的机会来了！</p>
<p><strong>CatFee 重磅推出限时免费电报机器人托管与定制服务！</strong></p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-无需代码也能打造专业级电报机器人">🛠 无需代码，也能打造专业级电报机器人！<a href="https://blog.catfee.io/zh-Hans/2025/04/09/free-telegram-bot-service-on-catfee#-%E6%97%A0%E9%9C%80%E4%BB%A3%E7%A0%81%E4%B9%9F%E8%83%BD%E6%89%93%E9%80%A0%E4%B8%93%E4%B8%9A%E7%BA%A7%E7%94%B5%E6%8A%A5%E6%9C%BA%E5%99%A8%E4%BA%BA" class="hash-link" aria-label="🛠 无需代码，也能打造专业级电报机器人！的直接链接" title="🛠 无需代码，也能打造专业级电报机器人！的直接链接">​</a></h2>
<p>我们为你准备了一套完整、强大的后台管理系统，支持：</p>
<ul>
<li>✨ <strong>拖拽式菜单与按钮设置</strong>：键盘按钮、菜单、内联按钮，全可视化配置；</li>
<li>🌍 <strong>多语言支持</strong>：一键开启多语言服务，覆盖全球用户；</li>
<li>🍮 <strong>高度定制化</strong>：自由定制自己各种业务场景；</li>
<li>🧠 <strong>响应消息模板化</strong>：支持变量替换和模板管理，灵活又强大；</li>
<li>👀 <strong>实时预览功能</strong>：配置完成后，一键推送预览消息，所见即所得；</li>
<li>💬 <strong>客服/能量服务/营销插件</strong>：轻松集成 CatFee 能量服务，一键开启变现新路径！</li>
</ul>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-开通流程简单5分钟上线属于你的bot">⚡ 开通流程简单，5分钟上线属于你的Bot<a href="https://blog.catfee.io/zh-Hans/2025/04/09/free-telegram-bot-service-on-catfee#-%E5%BC%80%E9%80%9A%E6%B5%81%E7%A8%8B%E7%AE%80%E5%8D%955%E5%88%86%E9%92%9F%E4%B8%8A%E7%BA%BF%E5%B1%9E%E4%BA%8E%E4%BD%A0%E7%9A%84bot" class="hash-link" aria-label="⚡ 开通流程简单，5分钟上线属于你的Bot的直接链接" title="⚡ 开通流程简单，5分钟上线属于你的Bot的直接链接">​</a></h2>
<ol>
<li>在 <a href="https://t.me/BotFather" target="_blank" rel="noopener noreferrer">@BotFather</a> 申请一个 Telegram 机器人 Token；</li>
<li>登录 <a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">CatFee 用户中心</a>，在【机器人托管】中填入你的 Token；</li>
<li>配置菜单、响应、客服等功能，一键上线！</li>
</ol>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="-为什么选择-catfee">💥 为什么选择 CatFee？<a href="https://blog.catfee.io/zh-Hans/2025/04/09/free-telegram-bot-service-on-catfee#-%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9-catfee" class="hash-link" aria-label="💥 为什么选择 CatFee？的直接链接" title="💥 为什么选择 CatFee？的直接链接">​</a></h2>
<ul>
<li>🧩 <strong>专为区块链和能量业务打造</strong>，集成 CatFee 能量系统，实现电报商业变现闭环；</li>
<li>🧰 <strong>低门槛，无代码</strong>，哪怕你是非技术用户也能轻松配置；</li>
<li>🚀 <strong>支持托管、负载均衡、高并发</strong>，助你轻松应对爆发式用户增长；</li>
<li>💸 <strong>限时全免费！</strong>,错过这波，只能等下次！</li>
</ul>
<hr>
<blockquote>
<p>“CatFee 把技术的复杂留给自己，把产品的能力留给你！”</p>
</blockquote>
<p>还在犹豫什么？现在就加入 CatFee，把你的一切创意变成可以跑在电报上的现实！</p>
<p>👉 立即前往：<a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">https://catfee.io</a></p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="电报机器人定制" term="电报机器人定制"/>
        <category label="免费机器人" term="免费机器人"/>
        <category label="能量机器人" term="能量机器人"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[波场链推出稳定币直接支付GAS费功能的分析]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron"/>
        <updated>2025-02-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[分析 TRON 稳定币支付 GAS 费的使用动机、用户体验变化，以及对能量服务、开发者和生态参与者的潜在影响。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="稳定币支付 GAS 费" src="https://blog.catfee.io/zh-Hans/assets/images/gas-free.zh-Hans-6c829ad003e18ef4dce2f615c48e5a77.webp" title="TRON 稳定币支付 GAS 费" width="1254" height="1254" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="波场链推出稳定币直接支付gas费功能的分析">波场链推出稳定币直接支付GAS费功能的分析<a href="https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron#%E6%B3%A2%E5%9C%BA%E9%93%BE%E6%8E%A8%E5%87%BA%E7%A8%B3%E5%AE%9A%E5%B8%81%E7%9B%B4%E6%8E%A5%E6%94%AF%E4%BB%98gas%E8%B4%B9%E5%8A%9F%E8%83%BD%E7%9A%84%E5%88%86%E6%9E%90" class="hash-link" aria-label="波场链推出稳定币直接支付GAS费功能的分析的直接链接" title="波场链推出稳定币直接支付GAS费功能的分析的直接链接">​</a></h3>
<p>最近，波场（TRON）链推出了一项新功能——允许用户使用稳定币（如USDT）直接支付链上交易的GAS费。这一创新功能的推出，旨在降低用户操作的复杂性，并为TRON生态带来更多的应用场景和用户群体。以下是对该功能的详细分析，包括其动机、对TRON生态的影响以及可能带来的市场变化。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-发展动机与目标">1. 发展动机与目标<a href="https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron#1-%E5%8F%91%E5%B1%95%E5%8A%A8%E6%9C%BA%E4%B8%8E%E7%9B%AE%E6%A0%87" class="hash-link" aria-label="1. 发展动机与目标的直接链接" title="1. 发展动机与目标的直接链接">​</a></h4>
<p><strong>1.1 降低用户门槛，提升用户体验</strong></p>
<p>波场推出稳定币支付GAS费功能的核心目的是降低用户的操作门槛。传统上，TRON用户必须持有TRX才能支付GAS费用，这对新用户尤其是USDT持有者来说是一个障碍。通过允许使用USDT等稳定币直接支付GAS费，波场简化了用户的操作流程，减少了购买TRX的额外成本，从而降低了进入TRON网络的门槛。</p>
<p>对于广大USDT持有者来说，这意味着他们可以更轻松地参与TRON网络的交易和应用，无需再转换资产，这将特别吸引那些已经在使用USDT的用户，进一步扩展TRON的用户基础。</p>
<p><strong>1.2 巩固TRON作为主流USDT链的地位</strong></p>
<p>波场链是全球最大的USDT发行平台，市场占有率超过50%。通过允许USDT支付GAS费用，波场进一步加强了与USDT的联系，巩固了TRON作为USDT主链的地位。这种功能不仅方便了USDT持有者，更为波场链带来了更多的稳定币支付场景，增强了USDT在TRON链上的“燃料”作用。</p>
<p><strong>1.3 面对竞争压力，保持创新</strong></p>
<p>随着DeFi和支付领域的竞争日益激烈，其他区块链平台（如Solana、BNB Chain等）已经开始推出类似的稳定币支付GAS费功能，波场此次的创新举措也表明其不愿落后于竞争对手。通过降低用户的操作复杂性和增强USDT的生态角色，波场可以更好地保持其在DeFi和跨境支付领域的竞争优势。</p>
<p>与此同时，<strong>CatFee</strong>作为<a href="https://catfee.io/" target="_blank" rel="noopener noreferrer" title="最好的TRX能量租赁平台">能量租赁平台</a>TRON生态的重要合作伙伴，也在为用户提供便捷的能量代理服务，帮助他们简化能量购买流程，降低操作门槛，让用户能够顺利进行各种链上操作。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-对tron生态的影响">2. 对TRON生态的影响<a href="https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron#2-%E5%AF%B9tron%E7%94%9F%E6%80%81%E7%9A%84%E5%BD%B1%E5%93%8D" class="hash-link" aria-label="2. 对TRON生态的影响的直接链接" title="2. 对TRON生态的影响的直接链接">​</a></h4>
<p><strong>2.1 正面影响：增加交易量和用户活跃度</strong></p>
<p>这一新功能的推出，无疑将推动TRON网络的活跃度和交易量。由于用户无需持有TRX来支付GAS费用，更多的USDT持有者可能会加入TRON生态，进行更多的小额高频交易。例如，跨境支付、奖励分发等场景，尤其适用于低成本且高频的交易需求。</p>
<p>这将带来更多的链上数据，进一步丰富TRON生态的内容，同时吸引更多开发者和项目方参与其中。生态项目如钱包、DeFi协议等也可以将这一功能作为卖点，进一步提升用户体验。</p>
<p><strong>2.2 吸引开发者与生态项目</strong></p>
<p>由于这一功能可以简化用户的支付流程，生态项目（如DeFi协议和钱包）将更愿意将这一功能集成到自身的应用中，从而提升用户的粘性与体验。这样一来，TRON链上的项目不仅能吸引更多用户，还能通过优化用户体验，提高项目的竞争力。</p>
<p><strong>2.3 增强USDT的链上粘性</strong></p>
<p>USDT不仅仅是一种资产，还是TRON链的“燃料”。USDT的广泛使用，不仅增强了TRON链的稳定性，还为更多应用场景提供了可能性。比如，用户可以使用USDT进行DeFi质押、支付NFT等，这将为TRON链的生态增加更多的使用场景，进一步促进生态繁荣。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-潜在风险">3. 潜在风险<a href="https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron#3-%E6%BD%9C%E5%9C%A8%E9%A3%8E%E9%99%A9" class="hash-link" aria-label="3. 潜在风险的直接链接" title="3. 潜在风险的直接链接">​</a></h4>
<p><strong>3.1 TRX需求短期不明</strong></p>
<p>尽管波场链支持使用稳定币支付GAS费，但如果这一功能完全由项目方补贴（而非通过TRX转换），可能会引发市场对于TRX价值捕捉能力的质疑。TRX的需求是否能得到有效支撑，仍然是一个悬而未决的问题。</p>
<p><strong>3.2 依赖USDT的中心化风险</strong></p>
<p>Tether作为USDT的发行方，其对USDT的控制权可能会对TRON生态的稳定性产生间接影响。特别是如果Tether采取极端措施（如冻结地址或调整政策），可能会对TRON链上的交易产生负面影响。因此，TRON生态需要警惕这种潜在的中心化风险。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="4-对trx价格的影响">4. 对TRX价格的影响<a href="https://blog.catfee.io/zh-Hans/2025/02/26/gas-free-on-tron#4-%E5%AF%B9trx%E4%BB%B7%E6%A0%BC%E7%9A%84%E5%BD%B1%E5%93%8D" class="hash-link" aria-label="4. 对TRX价格的影响的直接链接" title="4. 对TRX价格的影响的直接链接">​</a></h4>
<p><strong>4.1 短期影响：可能出现看跌情绪</strong></p>
<p>在短期内，市场可能将这一新功能解读为“TRX不再必要”的信号，尤其是投机型持有者可能会选择抛售TRX。假如TRX链上的交易量因Gas Free功能而显著下降，可能加剧市场对TRX需求减少的担忧，从而压低TRX的价格。</p>
<p><strong>4.2 长期影响：需求转移机制决定走势</strong></p>
<p>长期来看，TRON链的生态繁荣可能会带动TRX的需求增长。若Gas Free功能的实现能够通过项目方将USDT转化为TRX来支付GAS费（如通过链上合约自动完成），这将可能导致TRX需求的回升，从而支撑TRX的长期价值。</p>
<p>波场链推出的稳定币直接支付GAS费功能，是一次提升用户体验、拓展市场份额的重要创新。虽然这一功能对TRX的短期需求可能产生一定压力，但长期来看，随着TRON生态的进一步扩展和应用场景的增多，TRX依然将在TRON链中扮演重要角色。</p>
<p>对于在TRON链上进行操作的用户而言，<strong>CatFee</strong>依然为他们提供了稳定、可靠的能量供应服务，帮助用户高效管理和支付能量。在新的Gas Free功能推出后，CatFee也将继续为TRON用户提供更优质的服务，确保他们在TRON链上顺利、安全地进行各类交易。</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="Gas Free" term="Gas Free"/>
        <category label="稳定币" term="稳定币"/>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="TRX 能量" term="TRX 能量"/>
        <category label="能量转租" term="能量转租"/>
        <category label="波场能量 API" term="波场能量 API"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[CatFee全新个人中心上线]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center"/>
        <updated>2025-02-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[介绍 CatFee V2 个人中心的账户概览、订单查询、批量购买、能量转租和 API 管理功能，帮助用户了解新版操作入口。]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorWithStickyNavbar_LWe7" id="catfee-v2版本个人中心上线--更加美观实用全面提升用户体验">CatFee V2版本个人中心上线 —— 更加美观、实用，全面提升用户体验！<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#catfee-v2%E7%89%88%E6%9C%AC%E4%B8%AA%E4%BA%BA%E4%B8%AD%E5%BF%83%E4%B8%8A%E7%BA%BF--%E6%9B%B4%E5%8A%A0%E7%BE%8E%E8%A7%82%E5%AE%9E%E7%94%A8%E5%85%A8%E9%9D%A2%E6%8F%90%E5%8D%87%E7%94%A8%E6%88%B7%E4%BD%93%E9%AA%8C" class="hash-link" aria-label="CatFee V2版本个人中心上线 —— 更加美观、实用，全面提升用户体验！的直接链接" title="CatFee V2版本个人中心上线 —— 更加美观、实用，全面提升用户体验！的直接链接">​</a></h3>
<p>我们非常激动地宣布，CatFee V2版本的个人中心现已上线！全新版本将美观、简洁与强大功能完美融合，为用户提供更智能、更高效的操作体验。以下是新版个人中心的主要亮点与特色，帮助您更好地管理账户、监控交易、掌控能量和资金流动。</p>
<blockquote>
<p>下列图片保留 2025 年原始中文界面；英文版提供文字本地化示意图。数值与功能以当时公告为背景。</p>
</blockquote>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-账户概览一眼洞察所有关键信息">1. 账户概览：一眼洞察所有关键信息<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#1-%E8%B4%A6%E6%88%B7%E6%A6%82%E8%A7%88%E4%B8%80%E7%9C%BC%E6%B4%9E%E5%AF%9F%E6%89%80%E6%9C%89%E5%85%B3%E9%94%AE%E4%BF%A1%E6%81%AF" class="hash-link" aria-label="1. 账户概览：一眼洞察所有关键信息的直接链接" title="1. 账户概览：一眼洞察所有关键信息的直接链接">​</a></h4>
<p><img decoding="async" loading="lazy" alt="用户中心" src="https://blog.catfee.io/zh-Hans/assets/images/user-center-155f8ab6c31db9220ed97136db2fa220.jpg" title="能量租赁个人中心" width="2626" height="1418" class="img_ev3q">
全新的账户概览页面为您提供全面的数据统计，让您随时了解自己的账户状况。页面清晰展示了以下内容：</p>
<ul>
<li><strong>可用余额</strong>：实时显示账户的剩余余额，帮助您随时掌握资金情况。</li>
<li><strong>总充值 (TRX)</strong>：展示历史充值的总额，帮助您跟踪资金流入。</li>
<li><strong>总消费 (TRX)</strong>：显示您在平台上的消费总额，清晰记录每一笔支出。</li>
<li><strong>订单数</strong>：统计您所发起的订单数量，帮助您管理交易记录。</li>
<li><strong>购买能量数</strong>：显示您购买的能量数量，让您清楚了解能量使用情况。</li>
</ul>
<p>为了让用户更直观地了解账户活动，我们引入了图形化展示：通过图表形式，您可以轻松看到每日的订单数据、订单数量、交易金额等信息。无论是账户余额、消费还是订单，所有数据都能在一个页面内轻松查看，省时省力。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-订单列表一目了然快速查询">2. 订单列表：一目了然，快速查询<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#2-%E8%AE%A2%E5%8D%95%E5%88%97%E8%A1%A8%E4%B8%80%E7%9B%AE%E4%BA%86%E7%84%B6%E5%BF%AB%E9%80%9F%E6%9F%A5%E8%AF%A2" class="hash-link" aria-label="2. 订单列表：一目了然，快速查询的直接链接" title="2. 订单列表：一目了然，快速查询的直接链接">​</a></h4>
<p><img decoding="async" loading="lazy" alt="能量租赁订单列表" src="https://blog.catfee.io/zh-Hans/assets/images/order-list-7a5d49a5ee707bffcaeeffd1930ce6f1.png" title="能量订单列表" width="2600" height="994" class="img_ev3q"></p>
<p>新版个人中心的订单列表界面，提供了更简洁清晰的展示方式，让您更快速地查看和管理订单。用户可以：</p>
<ul>
<li><strong>查看订单详情</strong>：展示直接购买订单、API购买订单等信息，确保所有交易都记录完整。</li>
<li><strong>订单查询功能</strong>：支持根据订单号、能量接受地址等关键字段进行查询，快速定位特定订单。</li>
</ul>
<p>无论是对单个订单的查看，还是对历史订单的筛选与查询，CatFee都尽力让每个细节都更简化和高效。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-批量购买高效操作节省时间">3. 批量购买：高效操作，节省时间<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#3-%E6%89%B9%E9%87%8F%E8%B4%AD%E4%B9%B0%E9%AB%98%E6%95%88%E6%93%8D%E4%BD%9C%E8%8A%82%E7%9C%81%E6%97%B6%E9%97%B4" class="hash-link" aria-label="3. 批量购买：高效操作，节省时间的直接链接" title="3. 批量购买：高效操作，节省时间的直接链接">​</a></h4>
<p><img decoding="async" loading="lazy" alt="批量购买能量" src="https://blog.catfee.io/zh-Hans/assets/images/batch-buy-energy-4e389f26f01ce85f7c51abb97e9017ee.png" title="批量购买能量" width="2568" height="1124" class="img_ev3q"></p>
<p>对于有大量能量购买需求的用户，CatFee V2版本提供了全新的<strong>批量购买功能</strong>。这一功能特别适合那些需要为多个地址购买能量的用户，让您能够高效地完成批量操作。主要特点包括：</p>
<ul>
<li><strong>简洁的界面设计</strong>：用户可以在简单的界面中快速填写多个地址并购买所需的能量。</li>
<li><strong>批量操作方便实用</strong>：通过批量购买，用户可以省去繁琐的逐个购买操作，节省时间，提升工作效率。</li>
<li><strong>订单管理功能</strong>：用户可轻松查看所有批量购买的订单，实时监控订单状态和进度，确保每个订单都能顺利完成。</li>
</ul>
<p>无论是个人用户，还是大规模的企业用户，批量购买功能都能大大提高能量购买的效率。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="4-能量转租创新性产品帮助用户快速赚钱">4. 能量转租：创新性产品，帮助用户快速赚钱<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#4-%E8%83%BD%E9%87%8F%E8%BD%AC%E7%A7%9F%E5%88%9B%E6%96%B0%E6%80%A7%E4%BA%A7%E5%93%81%E5%B8%AE%E5%8A%A9%E7%94%A8%E6%88%B7%E5%BF%AB%E9%80%9F%E8%B5%9A%E9%92%B1" class="hash-link" aria-label="4. 能量转租：创新性产品，帮助用户快速赚钱的直接链接" title="4. 能量转租：创新性产品，帮助用户快速赚钱的直接链接">​</a></h4>
<p><img decoding="async" loading="lazy" alt="能量转租,能量闪租" src="https://blog.catfee.io/zh-Hans/assets/images/sublet-energy-f5f5e00e1421ffc537d49f1feef1902d.png" title="能量转租" width="1366" height="1420" class="img_ev3q">
CatFee独创的<strong>能量转租</strong>功能，是平台的一大亮点。通过能量转租，用户可以为自己的私域用户提供能量服务，并通过转租赚取收益。这个功能特别适合区块链生态中有大量用户或需求的项目方，帮助他们快速开展业务。具体功能包括：</p>
<ul>
<li><strong>能量转租设置</strong>：通过这个模块，用户可以轻松将能量转租给私域用户，实现快速变现。</li>
<li><strong>转租数据查看</strong>：实时查看所有转租的数据，评估转租效果，并根据不同用户需求调整策略。</li>
<li><strong>提高私域流量变现能力</strong>：通过创新的能量转租业务，用户可以高效利用手中的资源，提升私域渠道的商业价值。</li>
</ul>
<p>这个功能的推出，不仅让用户能快速获得收益，还为区块链行业的资源变现开辟了新的渠道。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="5-api模块安全高效轻松管理">5. API模块：安全高效，轻松管理<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#5-api%E6%A8%A1%E5%9D%97%E5%AE%89%E5%85%A8%E9%AB%98%E6%95%88%E8%BD%BB%E6%9D%BE%E7%AE%A1%E7%90%86" class="hash-link" aria-label="5. API模块：安全高效，轻松管理的直接链接" title="5. API模块：安全高效，轻松管理的直接链接">​</a></h4>
<p><img decoding="async" loading="lazy" alt="波场能量API" src="https://blog.catfee.io/zh-Hans/assets/images/tron-energy-api-d19a3ced99d1dbea419a23aba122af7a.png" title="波场能量API" width="2584" height="722" class="img_ev3q"></p>
<p>CatFee V2版本在API模块方面也做了全新设计，提供了更加安全和便捷的API管理方式：</p>
<ul>
<li><strong>查看API信息</strong>：用户可以查看和管理自己的API信息，确保API的安全性和可用性。</li>
<li><strong>设置白名单</strong>：为了提高API调用的安全性，CatFee提供了白名单功能，只有授权的IP地址才能调用API，极大增强了系统的安全性。</li>
<li><strong>API调用记录</strong>：实时查看API调用的记录，帮助用户监控API使用情况，确保不会超出限制或遭遇恶意攻击。</li>
</ul>
<p>无论是开发者还是企业用户，API模块都能帮助您高效管理所有API接口，提高系统的安全性和稳定性。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="6-用户模块个人信息一站式管理">6. 用户模块：个人信息一站式管理<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#6-%E7%94%A8%E6%88%B7%E6%A8%A1%E5%9D%97%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF%E4%B8%80%E7%AB%99%E5%BC%8F%E7%AE%A1%E7%90%86" class="hash-link" aria-label="6. 用户模块：个人信息一站式管理的直接链接" title="6. 用户模块：个人信息一站式管理的直接链接">​</a></h4>
<p><img decoding="async" loading="lazy" alt="波场能量用户信息" src="https://blog.catfee.io/zh-Hans/assets/images/tron-energy-user-info-088efb1e432ca8eb80190f0ce5fdb3ad.png" title="波场能量用户信息" width="1766" height="1018" class="img_ev3q">
全新的<strong>用户模块</strong>设计，让用户可以轻松管理自己的个人信息、充值记录、资金变动等关键数据。具体功能包括：</p>
<ul>
<li><strong>专有充值地址</strong>：查看并管理自己的充值地址，轻松进行充值操作。</li>
<li><strong>历史充值记录</strong>：实时查看自己所有的充值记录，确保每一笔充值都能追踪到。</li>
<li><strong>个人信息管理</strong>：用户可以随时更新自己的个人资料，包括联系方式、身份信息等，确保信息的完整性和安全性。</li>
<li><strong>账变明细</strong>：详细记录每一笔资金变动，让用户清楚了解账户内的每一笔操作，确保资金安全。</li>
</ul>
<p>这一模块的设计使得所有的账户管理操作都变得更加简单易行。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="全新设计简洁而强大">全新设计，简洁而强大<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#%E5%85%A8%E6%96%B0%E8%AE%BE%E8%AE%A1%E7%AE%80%E6%B4%81%E8%80%8C%E5%BC%BA%E5%A4%A7" class="hash-link" aria-label="全新设计，简洁而强大的直接链接" title="全新设计，简洁而强大的直接链接">​</a></h3>
<p>CatFee V2版本的个人中心不仅在外观上进行了全面升级，更在用户体验上做到了极致优化。美观大方的设计配合高效的功能模块，确保用户在使用时能够更加顺畅，减少操作的复杂度。</p>
<p>无论您是个人用户，还是企业用户，CatFee V2个人中心都能提供全方位的支持，帮助您高效管理账户、资金与资源，提升操作效率和安全性。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="为什么选择catfee">为什么选择CatFee？<a href="https://blog.catfee.io/zh-Hans/2025/02/20/new-user-center#%E4%B8%BA%E4%BB%80%E4%B9%88%E9%80%89%E6%8B%A9catfee" class="hash-link" aria-label="为什么选择CatFee？的直接链接" title="为什么选择CatFee？的直接链接">​</a></h3>
<ul>
<li><strong>全面的功能设计</strong>：账户管理、订单查询、能量购买、API安全等一站式服务。</li>
<li><strong>技术领先</strong>：借助区块链技术，CatFee平台提供更加灵活、安全的操作方式。</li>
<li><strong>美观实用</strong>：全新界面设计，提升用户体验，简化操作流程。</li>
<li><strong>创新性功能</strong>：能量转租等创新服务，助力用户变现和盈利。</li>
</ul>
<p>选择CatFee，享受更高效、更经济、更便捷、更安全的波场能量服务！</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="TRX 能量" term="TRX 能量"/>
        <category label="能量转租" term="能量转租"/>
        <category label="波场能量 API" term="波场能量 API"/>
        <category label="购买波场能量" term="购买波场能量"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[超高收益的USDD是否值得持有？]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk"/>
        <updated>2025-01-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[从运行机制、储备支持与市场波动等角度讨论 USDD，对比 UST，并分析高收益背后需要关注的稳定性与智能合约风险。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="USDD" src="https://blog.catfee.io/zh-Hans/assets/images/usdd-risk.zh-Hans-33c73e6833806ecf88bc6213b8fe5482.webp" title="USDD" width="1254" height="1254" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="什么是usdd">什么是USDD？<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#%E4%BB%80%E4%B9%88%E6%98%AFusdd" class="hash-link" aria-label="什么是USDD？的直接链接" title="什么是USDD？的直接链接">​</a></h3>
<p>USDD（Decentralized USD）是一种由波场（Tron）生态推出的去中心化稳定币，于2022年5月上线。USDD的目标是提供一种透明、去中心化、价格稳定的加密资产，其价值锚定为1美元。与传统稳定币（如USDT、USDC）不同，USDD依靠智能合约和算法机制调节其供应量，并通过TRX（波场代币）的生态支持来确保其稳定性。</p>
<p>近期，USDD的质押收益高达20%，吸引了大量投资者的关注。接下来，我们从风险和运行机制的角度详细分析USDD。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="usdd与luna的比较风险评估">USDD与Luna的比较：风险评估<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#usdd%E4%B8%8Eluna%E7%9A%84%E6%AF%94%E8%BE%83%E9%A3%8E%E9%99%A9%E8%AF%84%E4%BC%B0" class="hash-link" aria-label="USDD与Luna的比较：风险评估的直接链接" title="USDD与Luna的比较：风险评估的直接链接">​</a></h3>
<p>提到USDD，不少人会联想到之前暴雷的Luna（Terra）和UST算法稳定币。虽然二者在理念上都有算法稳定币的概念，但其运行机制和风控模型存在显著区别：</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-铸造机制">1. 铸造机制<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#1-%E9%93%B8%E9%80%A0%E6%9C%BA%E5%88%B6" class="hash-link" aria-label="1. 铸造机制的直接链接" title="1. 铸造机制的直接链接">​</a></h4>
<ul>
<li><strong>UST（Luna）</strong>：UST 的价值完全依赖 Luna 的销毁。当用户想铸造 UST 时，需要销毁等值的 Luna。反之，当 UST 被赎回时，等值的 Luna 会被铸造。UST 的稳定性高度依赖 Luna 的市场价值。</li>
<li><strong>USDD</strong>：USDD 的铸造不仅依赖 TRX，还受到 TRON DAO Reserve（波场去中心化储备）的支持。储备基金持有BTC、USDT等优质资产，提供了额外的价格支撑。即使TRX波动较大，储备资产也能通过市场操作干预，稳定USDD的价格。</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-清算机制">2. 清算机制<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#2-%E6%B8%85%E7%AE%97%E6%9C%BA%E5%88%B6" class="hash-link" aria-label="2. 清算机制的直接链接" title="2. 清算机制的直接链接">​</a></h4>
<ul>
<li><strong>UST（Luna）</strong>：当Luna价格暴跌时，UST会因缺乏足够的价值支撑而脱锚，导致整个系统崩溃。由于UST无法快速清算或回收，价格雪崩难以逆转。</li>
<li><strong>USDD</strong>：USDD通过一篮子储备资产的透明支持，提供清算保障。例如，当市场出现极端情况时，TRON DAO Reserve 会主动通过公开市场购买或销毁 USDD，从而保持锚定。此外，USDD 限制了单一代币对其价格的过度影响，增强了抗风险能力。</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-去中心化与透明度">3. 去中心化与透明度<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#3-%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96%E4%B8%8E%E9%80%8F%E6%98%8E%E5%BA%A6" class="hash-link" aria-label="3. 去中心化与透明度的直接链接" title="3. 去中心化与透明度的直接链接">​</a></h4>
<ul>
<li><strong>UST（Luna）</strong>：虽然宣称去中心化，但UST缺乏明确的储备机制，治理主要由Terraform Labs控制，中心化风险较高。</li>
<li><strong>USDD</strong>：USDD由TRON DAO Reserve提供支持，其储备资产和操作透明度更高。同时，USDD依托于波场庞大的生态系统，包括去中心化金融（DeFi）应用和交易所，进一步提高了市场稳定性。</li>
</ul>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="trx波动对usdd的影响">TRX波动对USDD的影响<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#trx%E6%B3%A2%E5%8A%A8%E5%AF%B9usdd%E7%9A%84%E5%BD%B1%E5%93%8D" class="hash-link" aria-label="TRX波动对USDD的影响的直接链接" title="TRX波动对USDD的影响的直接链接">​</a></h3>
<p>由于USDD的核心抵押资产是TRX，因此TRX的价格波动会对USDD产生一定的间接影响。具体来说：</p>
<ol>
<li>
<p><strong>正向影响</strong>：</p>
<ul>
<li>当TRX价格上涨时，USDD的抵押率会更高，增强了USDD的信用背书和市场稳定性。</li>
<li>波场生态的快速发展也会带动对USDD的需求增长，例如在DeFi平台中的应用。</li>
</ul>
</li>
<li>
<p><strong>负向影响</strong>：</p>
<ul>
<li>如果TRX价格剧烈下跌，USDD可能面临清算压力。但TRON DAO Reserve储备资产的存在，可以有效降低因TRX价格波动导致的系统性风险。</li>
<li>通过提高质押率（目前远超100%）和使用储备资金稳定市场，USDD的脱锚风险被大大降低。</li>
</ul>
</li>
</ol>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="投资usdd的高收益是否值得">投资USDD的高收益是否值得？<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#%E6%8A%95%E8%B5%84usdd%E7%9A%84%E9%AB%98%E6%94%B6%E7%9B%8A%E6%98%AF%E5%90%A6%E5%80%BC%E5%BE%97" class="hash-link" aria-label="投资USDD的高收益是否值得？的直接链接" title="投资USDD的高收益是否值得？的直接链接">​</a></h3>
<p>USDD近期的质押收益高达20%，在当前市场环境下非常具有吸引力。以下是几点需要注意的风险和收益分析：</p>
<ol>
<li>
<p><strong>高收益的来源</strong>：</p>
<ul>
<li>USDD质押收益主要来源于波场生态内的激励机制。波场希望通过吸引用户质押USDD来推动生态发展，这种激励是可持续的，前提是波场生态继续扩展。</li>
</ul>
</li>
<li>
<p><strong>潜在风险</strong>：</p>
<ul>
<li><strong>市场波动</strong>：虽然USDD有储备支持，但如果TRX或其他储备资产同时发生大幅波动，可能对稳定性造成压力。</li>
<li><strong>智能合约风险</strong>：USDD运行在波场生态，依赖于智能合约的安全性。如果合约遭遇漏洞攻击，可能导致资金损失。</li>
<li><strong>政策风险</strong>：算法稳定币目前处于监管灰色地带，不排除未来受政策影响。</li>
</ul>
</li>
<li>
<p><strong>分散投资的重要性</strong>：</p>
<ul>
<li>虽然USDD提供了高额收益，但投资者仍需保持多元化投资策略，避免将资金集中在单一资产上。</li>
</ul>
</li>
</ol>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="是否值得持有">是否值得持有？<a href="https://blog.catfee.io/zh-Hans/2025/01/16/introduce-usdd-risk#%E6%98%AF%E5%90%A6%E5%80%BC%E5%BE%97%E6%8C%81%E6%9C%89" class="hash-link" aria-label="是否值得持有？的直接链接" title="是否值得持有？的直接链接">​</a></h3>
<p>USDD作为波场生态的核心稳定币，通过储备资产、多样化的购买方式和高透明度的运营机制，成功避免了Luna模式的缺陷，为用户提供了一种更为安全和高效的稳定币选择。</p>
<p>但投资者在享受USDD高收益的同时，也需要关注市场波动和政策变化带来的潜在风险。无论是参与质押还是使用USDD进行支付，都应结合自身风险偏好，做出明智决策。</p>
<p>如果您希望深入了解USDD的质押方式或稳定机制，请访问 <a href="https://catfee.io/" target="_blank" rel="noopener noreferrer">CatFee.IO</a> 或加入官方频道 @CatFeeOfficial 获取最新资讯。</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="USDD" term="USDD"/>
        <category label="TRX" term="TRX"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[使用 Next.js + React 技术栈构建现代 Web 应用]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs"/>
        <updated>2025-01-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[介绍 Next.js、React、Tailwind CSS、Zod、Zustand 与 React Query 的协作方式，涵盖项目初始化、表单校验、状态管理和 API 集成。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="技术栈" src="https://blog.catfee.io/zh-Hans/assets/images/tech_stack-7c73363ee40b15a274f9fd56a4b094cc.webp" title="CatFee 技术栈" width="1024" height="1024" class="img_ev3q"></p>
<p>随着前端技术的飞速发展，构建高效、现代化的 Web 应用变得愈发重要。本文将围绕 <strong>Next.js</strong>、<strong>React</strong>、<strong>shadcn</strong>、<strong>TailwindCSS</strong>、<strong>Zod</strong>、<strong>Zustand</strong>、<strong>React Query</strong> 和 <strong>openapi-react-query</strong> 的技术栈，分享一个完整的开发方案。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="1-技术栈简介">1. 技术栈简介<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#1-%E6%8A%80%E6%9C%AF%E6%A0%88%E7%AE%80%E4%BB%8B" class="hash-link" aria-label="1. 技术栈简介的直接链接" title="1. 技术栈简介的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="nextjs">Next.js<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#nextjs" class="hash-link" aria-label="Next.js的直接链接" title="Next.js的直接链接">​</a></h3>
<p>一个基于 React 的框架，支持服务端渲染 (SSR)、静态站点生成 (SSG) 和全栈开发。它提升了 SEO 能力，并优化了性能。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="react">React<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#react" class="hash-link" aria-label="React的直接链接" title="React的直接链接">​</a></h3>
<p>现代化的组件式前端开发库，是构建用户界面的核心工具。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="shadcn">shadcn<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#shadcn" class="hash-link" aria-label="shadcn的直接链接" title="shadcn的直接链接">​</a></h3>
<p>一个整合了 Radix UI 和 TailwindCSS 的组件工具库，提供丰富的 UI 基础组件。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="tailwindcss">TailwindCSS<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#tailwindcss" class="hash-link" aria-label="TailwindCSS的直接链接" title="TailwindCSS的直接链接">​</a></h3>
<p>一种实用的 CSS 框架，通过类名快速构建响应式、现代化的 UI。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="zod">Zod<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#zod" class="hash-link" aria-label="Zod的直接链接" title="Zod的直接链接">​</a></h3>
<p>一个类型安全的验证库，用于校验表单数据或 API 请求数据，完美配合 TypeScript。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="zustand">Zustand<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#zustand" class="hash-link" aria-label="Zustand的直接链接" title="Zustand的直接链接">​</a></h3>
<p>轻量级状态管理工具，适合管理复杂但局部的应用状态。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="react-query">React Query<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#react-query" class="hash-link" aria-label="React Query的直接链接" title="React Query的直接链接">​</a></h3>
<p>服务器状态管理工具，处理数据获取、缓存、同步及更新。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="openapi-react-query">openapi-react-query<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#openapi-react-query" class="hash-link" aria-label="openapi-react-query的直接链接" title="openapi-react-query的直接链接">​</a></h3>
<p>基于 OpenAPI 规范生成类型安全的 React Query API 客户端，提升开发效率和安全性。</p>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="2-快速项目初始化">2. 快速项目初始化<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#2-%E5%BF%AB%E9%80%9F%E9%A1%B9%E7%9B%AE%E5%88%9D%E5%A7%8B%E5%8C%96" class="hash-link" aria-label="2. 快速项目初始化的直接链接" title="2. 快速项目初始化的直接链接">​</a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="21-创建-nextjs-项目">2.1 创建 Next.js 项目<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#21-%E5%88%9B%E5%BB%BA-nextjs-%E9%A1%B9%E7%9B%AE" class="hash-link" aria-label="2.1 创建 Next.js 项目的直接链接" title="2.1 创建 Next.js 项目的直接链接">​</a></h3>
<p>使用 TypeScript 初始化项目：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npx create-next-app@latest my-nextjs-app --typescript</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cd my-nextjs-app</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="22-安装依赖">2.2 安装依赖<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#22-%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96" class="hash-link" aria-label="2.2 安装依赖的直接链接" title="2.2 安装依赖的直接链接">​</a></h3>
<p>安装技术栈中的核心库：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npm install tailwindcss postcss autoprefixer zustand @tanstack/react-query zod openapi-react-query</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">npm install @shadcn/ui</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="23-配置-tailwindcss">2.3 配置 TailwindCSS<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#23-%E9%85%8D%E7%BD%AE-tailwindcss" class="hash-link" aria-label="2.3 配置 TailwindCSS的直接链接" title="2.3 配置 TailwindCSS的直接链接">​</a></h3>
<p>初始化 TailwindCSS 配置文件：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npx tailwindcss init</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>修改 <code>tailwind.config.js</code>：</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">module</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">exports</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">content</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"./pages/**/*.{js,ts,jsx,tsx}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"./components/**/*.{js,ts,jsx,tsx}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token string" style="color:#e3116c">"./app/**/*.{js,ts,jsx,tsx}"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">theme</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">extend</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">plugins</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在 <code>styles/globals.css</code> 中引入 TailwindCSS：</p>
<div class="language-css codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-css codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token atrule rule" style="color:#00a4db">@tailwind</span><span class="token atrule" style="color:#00a4db"> base</span><span class="token atrule punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@tailwind</span><span class="token atrule" style="color:#00a4db"> components</span><span class="token atrule punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token atrule rule" style="color:#00a4db">@tailwind</span><span class="token atrule" style="color:#00a4db"> utilities</span><span class="token atrule punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复�制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="24-集成-react-query">2.4 集成 React Query<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#24-%E9%9B%86%E6%88%90-react-query" class="hash-link" aria-label="2.4 集成 React Query的直接链接" title="2.4 集成 React Query的直接链接">​</a></h3>
<p>创建 React Query 客户端：</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">QueryClient</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">QueryClientProvider</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@tanstack/react-query"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> queryClient </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">QueryClient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">App</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token maybe-class-name">Component</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> pageProps </span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">QueryClientProvider</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">client</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">queryClient</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Component</span><span class="token tag" style="color:#00009f"> </span><span class="token tag spread punctuation" style="color:#393A34">{</span><span class="token tag spread operator" style="color:#393A34">...</span><span class="token tag spread" style="color:#00009f">pageProps</span><span class="token tag spread punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">QueryClientProvider</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="25-配置-openapi-react-query">2.5 配置 openapi-react-query<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#25-%E9%85%8D%E7%BD%AE-openapi-react-query" class="hash-link" aria-label="2.5 配置 openapi-react-query的直接链接" title="2.5 配置 openapi-react-query的直接链接">​</a></h3>
<p>根据 OpenAPI 规范生成 API 客户端：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">npx openapi-codegen generate --input ./path-to-openapi.json --output ./generated --client react-query</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在项目中提供 API 配置：</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> createClient</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">ApiProvider</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"./generated"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> apiClient </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">createClient</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  baseUrl</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://api.example.com"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function-variable function" style="color:#d73a49">fetch</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">async</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> options</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// 你可以在这里添加认证逻辑，例如添加 Token 到请求头</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> token </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"your-auth-token"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">fetch</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">url</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain">options</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      headers</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token spread operator" style="color:#393A34">...</span><span class="token plain">options</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">headers</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token maybe-class-name">Authorization</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token template-string string" style="color:#e3116c">Bearer </span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">${</span><span class="token template-string interpolation">token</span><span class="token template-string interpolation interpolation-punctuation punctuation" style="color:#393A34">}</span><span class="token template-string template-punctuation string" style="color:#e3116c">`</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">App</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token maybe-class-name">Component</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> pageProps </span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">any</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">ApiProvider</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">client</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">apiClient</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Component</span><span class="token tag" style="color:#00009f"> </span><span class="token tag spread punctuation" style="color:#393A34">{</span><span class="token tag spread operator" style="color:#393A34">...</span><span class="token tag spread" style="color:#00009f">pageProps</span><span class="token tag spread punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">ApiProvider</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="3-表单开发结合-shadcn-和-zod">3. 表单开发：结合 shadcn 和 Zod<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#3-%E8%A1%A8%E5%8D%95%E5%BC%80%E5%8F%91%E7%BB%93%E5%90%88-shadcn-%E5%92%8C-zod" class="hash-link" aria-label="3. 表单开发：结合 shadcn 和 Zod的直接链接" title="3. 表单开发：结合 shadcn 和 Zod的直接链接">​</a></h2>
<p>以用户注册表单为例，展示如何结合 shadcn 和 Zod 构建类型安全、用户友好的表单。</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="31-定义验证规则">3.1 定义验证规则<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#31-%E5%AE%9A%E4%B9%89%E9%AA%8C%E8%AF%81%E8%A7%84%E5%88%99" class="hash-link" aria-label="3.1 定义验证规则的直接链接" title="3.1 定义验证规则的直接链接">​</a></h3>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> z </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"zod"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> userSchema </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">object</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">string</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">min</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">1</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Name is required"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  email</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">string</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">email</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Invalid email address"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  password</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">string</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">min</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">6</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Password must be at least 6 characters"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">type</span><span class="token plain"> </span><span class="token class-name">UserFormValues</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">infer</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token keyword" style="color:#00009f">typeof</span><span class="token plain"> userSchema</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="32-构建表单组件">3.2 构建表单组件<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#32-%E6%9E%84%E5%BB%BA%E8%A1%A8%E5%8D%95%E7%BB%84%E4%BB%B6" class="hash-link" aria-label="3.2 构建表单组件的直接链接" title="3.2 构建表单组件的直接链接">​</a></h3>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> zodResolver </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@hookform/resolvers/zod"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> useForm </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"react-hook-form"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Input</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@/components/ui/input"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Button</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@/components/ui/button"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">Form</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">FormField</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">FormItem</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">FormLabel</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">FormControl</span><span class="token imports punctuation" style="color:#393A34">,</span><span class="token imports"> </span><span class="token imports maybe-class-name">FormMessage</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@/components/ui/form"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">UserForm</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> form </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">useForm</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name">UserFormValues</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    resolver</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">zodResolver</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">userSchema</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    defaultValues</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      email</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      password</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> </span><span class="token function-variable function" style="color:#d73a49">onSubmit</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">values</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token maybe-class-name">UserFormValues</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Submitted values:"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> values</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Form</span><span class="token tag" style="color:#00009f"> </span><span class="token tag spread punctuation" style="color:#393A34">{</span><span class="token tag spread operator" style="color:#393A34">...</span><span class="token tag spread" style="color:#00009f">form</span><span class="token tag spread punctuation" style="color:#393A34">}</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">form</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">onSubmit</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">form</span><span class="token tag script language-javascript punctuation" style="color:#393A34">.</span><span class="token tag script language-javascript method function property-access" style="color:#d73a49">handleSubmit</span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript" style="color:#00009f">onSubmit</span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">className</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">space-y-6</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">FormField</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">name</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">control</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">form</span><span class="token tag script language-javascript punctuation" style="color:#393A34">.</span><span class="token tag script language-javascript property-access" style="color:#00009f">control</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">render</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> field </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript arrow operator" style="color:#393A34">=&gt;</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript" style="color:#00009f">            </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormItem</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormLabel</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f">Name</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormLabel</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormControl</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">                </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">Input</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag attr-name" style="color:#00a4db">placeholder</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag attr-value" style="color:#e3116c">Your name</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag spread punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript tag spread operator" style="color:#393A34">...</span><span class="token tag script language-javascript tag spread" style="color:#00009f">field</span><span class="token tag script language-javascript tag spread punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormControl</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormMessage</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">            </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormItem</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript" style="color:#00009f">          </span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">FormField</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">email</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">control</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">form</span><span class="token tag script language-javascript punctuation" style="color:#393A34">.</span><span class="token tag script language-javascript property-access" style="color:#00009f">control</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">render</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> field </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript arrow operator" style="color:#393A34">=&gt;</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript" style="color:#00009f">            </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormItem</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormLabel</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f">Email</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormLabel</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormControl</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">                </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">Input</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag attr-name" style="color:#00a4db">type</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag attr-value" style="color:#e3116c">email</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag attr-name" style="color:#00a4db">placeholder</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag attr-value" style="color:#e3116c">Your email</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag spread punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript tag spread operator" style="color:#393A34">...</span><span class="token tag script language-javascript tag spread" style="color:#00009f">field</span><span class="token tag script language-javascript tag spread punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormControl</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormMessage</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">            </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormItem</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript" style="color:#00009f">          </span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">FormField</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">name</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">password</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">control</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">form</span><span class="token tag script language-javascript punctuation" style="color:#393A34">.</span><span class="token tag script language-javascript property-access" style="color:#00009f">control</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">          </span><span class="token tag attr-name" style="color:#00a4db">render</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f"> field </span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript arrow operator" style="color:#393A34">=&gt;</span><span class="token tag script language-javascript" style="color:#00009f"> </span><span class="token tag script language-javascript punctuation" style="color:#393A34">(</span><span class="token tag script language-javascript" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript" style="color:#00009f">            </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormItem</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormLabel</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f">Password</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormLabel</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormControl</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">                </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">Input</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag attr-name" style="color:#00a4db">type</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag attr-value" style="color:#e3116c">password</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag attr-name" style="color:#00a4db">placeholder</span><span class="token tag script language-javascript tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag attr-value" style="color:#e3116c">Your password</span><span class="token tag script language-javascript tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag spread punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript tag spread operator" style="color:#393A34">...</span><span class="token tag script language-javascript tag spread" style="color:#00009f">field</span><span class="token tag script language-javascript tag spread punctuation" style="color:#393A34">}</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormControl</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">              </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormMessage</span><span class="token tag script language-javascript tag" style="color:#00009f"> </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">/&gt;</span><span class="token tag script language-javascript plain-text" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript plain-text" style="color:#00009f">            </span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag script language-javascript tag class-name" style="color:#00009f">FormItem</span><span class="token tag script language-javascript tag punctuation" style="color:#393A34">&gt;</span><span class="token tag script language-javascript" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag script language-javascript" style="color:#00009f">          </span><span class="token tag script language-javascript punctuation" style="color:#393A34">)</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"></span><br></span><span class="token-line" style="color:#393A34"><span class="token tag" style="color:#00009f">        </span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag class-name" style="color:#00009f">Button</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">type</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">submit</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">Register</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">Button</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">      </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">form</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag class-name" style="color:#00009f">Form</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="4-状态管理使用-zustand">4. 状态管理：使用 Zustand<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#4-%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86%E4%BD%BF%E7%94%A8-zustand" class="hash-link" aria-label="4. 状态管理：使用 Zustand的直接链接" title="4. 状态管理：使用 Zustand的直接链接">​</a></h2>
<p>通过 Zustand 管理应用状态，例如全局用户数据：</p>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> create </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"zustand"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">interface</span><span class="token plain"> </span><span class="token class-name">UserState</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  user</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> email</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function-variable function" style="color:#d73a49">setUser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">user</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> name</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"> email</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token builtin">string</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">void</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> useUserStore </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token generic-function function" style="color:#d73a49">create</span><span class="token generic-function generic class-name operator" style="color:#393A34">&lt;</span><span class="token generic-function generic class-name">UserState</span><span class="token generic-function generic class-name operator" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">set</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  user</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">null</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token function-variable function" style="color:#d73a49">setUser</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">user</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">set</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> user </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>在组件中使用 Zustand：</p>
<div class="language-tsx codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-tsx codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> useUserStore </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"@/store/user"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">export</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">default</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">Profile</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> user </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">useUserStore</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">state</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> state</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">user</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">user </span><span class="token operator" style="color:#393A34">?</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">Welcome, </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">user</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">name</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text">!</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain-text">Please log in.</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain-text"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain-text">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">div</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<hr>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="5-总结">5. 总结<a href="https://blog.catfee.io/zh-Hans/2025/01/15/web-development-using-nextjs#5-%E6%80%BB%E7%BB%93" class="hash-link" aria-label="5. 总结的直接链接" title="5. 总结的直接链接">​</a></h2>
<ul>
<li><strong>技术栈优势</strong>：Next.js 提供优秀的性能优化，React 和 TailwindCSS 加速开发，shadcn 提供高效 UI 组件库，Zod 保证类型安全，Zustand 和 React Query 高效管理状态。</li>
<li><strong>适用场景</strong>：构建需要复杂交互、大量表单验证、服务端和客户端并存的现代化 Web 应用。</li>
<li><strong>扩展性强</strong>：基于 openapi-react-query 自动生成的客户端能显著提升和后端协作效率。</li>
<li><strong>学习资源推荐</strong>：<!-- -->
<ul>
<li><a href="https://nextjs.org/docs" target="_blank" rel="noopener noreferrer">Next.js 官方文档</a></li>
<li><a href="https://react.dev/" target="_blank" rel="noopener noreferrer">React 官方文档</a></li>
<li><a href="https://shadcn.dev/" target="_blank" rel="noopener noreferrer">shadcn 项目主页</a></li>
<li><a href="https://tailwindcss.com/docs/installation" target="_blank" rel="noopener noreferrer">TailwindCSS 官方文档</a></li>
<li><a href="https://zod.dev/" target="_blank" rel="noopener noreferrer">Zod 官方文档</a></li>
<li><a href="https://github.com/pmndrs/zustand" target="_blank" rel="noopener noreferrer">Zustand GitHub</a></li>
<li><a href="https://tanstack.com/query" target="_blank" rel="noopener noreferrer">React Query 官方文档</a></li>
<li><a href="https://openapi-generator.tech/" target="_blank" rel="noopener noreferrer">OpenAPI Codegen</a></li>
</ul>
</li>
</ul>]]></content>
        <author>
            <name>Owen Hayes</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="Next.js" term="Next.js"/>
        <category label="shadcn/ui" term="shadcn/ui"/>
        <category label="React" term="React"/>
        <category label="Tailwind CSS" term="Tailwind CSS"/>
        <category label="Zod" term="Zod"/>
        <category label="Zustand" term="Zustand"/>
        <category label="React Query" term="React Query"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[2025 新年致辞！]]></title>
        <id>https://blog.catfee.io/zh-Hans/2025/01/01/happy-new-year</id>
        <link href="https://blog.catfee.io/zh-Hans/2025/01/01/happy-new-year"/>
        <updated>2025-01-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[CatFee 团队送上 2025 年新年祝福，回顾能量购买、DApp 批量服务与 API 服务建设，并展望新一年的产品与服务优化。]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="新年快乐" src="https://blog.catfee.io/zh-Hans/assets/images/happy-new-year.zh-Hans-f4b0c9bee5b18c8a8091dd4781b2d3d3.webp" title="新年快乐" width="1254" height="1254" class="img_ev3q"></p>
<p>尊敬的 CatFee.IO 用户与合作伙伴：</p>
<p>    新年的钟声已经敲响，我们迎来了充满希望与机遇的 2025 年！在此，CatFee.IO 全体团队向您致以最诚挚的问候和祝福：祝愿您在新的一年里身体健康、事业兴旺、万事如意！</p>
<p>    回首过去的一年，我们满怀感激。您的支持与信赖是我们不断前行的动力。作为全球领先的区块链能量服务提供商，CatFee.IO 一直致力于通过安全、高效、灵活的解决方案，为用户提供包括<strong>能量购买</strong>、<strong>DApp 批量购买服务</strong>以及<strong>API 定制化购买</strong>在内的全面服务，帮助您以更低的成本和更高的效率完成每一笔交易。</p>
<p>    2024 年，我们不负众望，推出了多样化的能量购买方式，让新手用户可以通过简单的转账快速获取所需能量，让专业用户通过 API 探索无限可能，同时通过 DApp 服务实现批量便捷的能量分发。这一切都离不开您的参与与支持！</p>
<p>    展望 2025 年，我们将继续专注于技术创新和服务优化，提升用户体验，拓展全球市场，为更多区块链爱好者和企业提供可靠的资源支持。在即将到来的日子里，我们计划推出更智能、更安全的服务功能，让您在使用 CatFee.IO 时更加放心、省心和安心。</p>
<p>    再次感谢您一路以来的信任与陪伴。未来，CatFee.IO 期待与您携手同行，共创区块链行业的美好明天！</p>
<p>    愿新的一年，CatFee.IO 与您一同实现新的突破，开启新的篇章！</p>
<p><strong>CatFee.IO 团队敬上</strong><br>
<!-- -->2025 年 1 月 1 日</p>]]></content>
        <author>
            <name>Chris Gayle</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="新年祝福" term="新年祝福"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[开发 Web3 应用：TRON 技术指南]]></title>
        <id>https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain</id>
        <link href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain"/>
        <updated>2024-12-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[介绍在 TRON 上构建 Web3 应用的基础知识，涵盖智能合约、代币标准、TronWeb、测试与部署。]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorWithStickyNavbar_LWe7" id="developing-web3-applications-a-technical-guide-for-tron">开发 Web3 应用：TRON 技术指南<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#developing-web3-applications-a-technical-guide-for-tron" class="hash-link" aria-label="开发 Web3 应用：TRON 技术指南的直接链接" title="开发 Web3 应用：TRON 技术指南的直接链接">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="introduction">引言<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#introduction" class="hash-link" aria-label="引言的直接链接" title="引言的直接链接">​</a></h4>
<p>随着去中心化应用（dApp）和区块链技术的发展，Web3 作为下一代互联网的核心理念，正在改变我们与数字世界交互的方式。Web3 不仅是一种技术趋势，也代表新的价值体系与经济模式。作为全球领先的公链之一，TRON 为 Web3 开发提供了重要基础设施。</p>
<p>本文将介绍如何在 TRON 上开发 Web3 应用，涵盖关键概念、开发流程、工具与资源，帮助开发者进入 TRON 生态，开始构建和部署自己的 Web3 应用。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-what-is-web3-and-tron">1. 什么是 Web3 和 TRON？<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#1-what-is-web3-and-tron" class="hash-link" aria-label="1. 什么是 Web3 和 TRON？的直接链接" title="1. 什么是 Web3 和 TRON？的直接链接">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="introduction-to-web3">Web3 简介<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#introduction-to-web3" class="hash-link" aria-label="Web3 简介的直接链接" title="Web3 简介的直接链接">​</a></h4>
<p>Web3 指去中心化互联网，旨在通过区块链技术让用户掌握自己的数据和身份。在 Web3 中，去中心化应用（dApp）取代传统的中心化应用。Web3 强调无需信任中介、去中心化，以及通过智能合约和加密货币实现用户与应用的直接交互。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="introduction-to-tron">TRON 简介<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#introduction-to-tron" class="hash-link" aria-label="TRON 简介的直接链接" title="TRON 简介的直接链接">​</a></h4>
<p>TRON 是用于构建去中心化互联网与存储基础设施的公链。它采用高性能架构，提供快速、低成本的交易，并支持智能合约开发。TRON 兼容 Ethereum 的智能合约（ERC-20 和 ERC-721），方便开发者迁移其他区块链上的应用或实现互操作。</p>
<p>凭借高吞吐量和低交易费用，TRON 吸引了众多 dApp 开发者，正在成为 Web3 生态的重要组成部分。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-developing-web3-applications-on-tron">2. 在 TRON 上开发 Web3 应用<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#2-developing-web3-applications-on-tron" class="hash-link" aria-label="2. 在 TRON 上开发 Web3 应用的直接链接" title="2. 在 TRON 上开发 Web3 应用的直接链接">​</a></h3>
<p>在 TRON 上开发 Web3 应用，需要了解以下关键概念和工具：</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-smart-contracts">（1）智能合约<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#1-smart-contracts" class="hash-link" aria-label="（1）智能合约的直接链接" title="（1）智能合约的直接链接">​</a></h4>
<p>TRON 允许开发者使用 Solidity 编写智能合约，与 Ethereum 保持兼容。智能合约是自动执行的代码，能够在无需信任中介的情况下完成交易和数据存储操作。</p>
<p><strong>如何开发 TRON 智能合约：</strong></p>
<ul>
<li><strong>Solidity 编程</strong>：TRON 支持基于 Solidity 的智能合约开发，与 Ethereum 完全兼容。您可以使用 Remix、Truffle 等现有工具和库编写、测试 TRON 智能合约。</li>
<li><strong>部署合约</strong>：编写完成后，可以使用 TRON 部署工具，将合约部署到 TRON 主网或测试网。</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-trc-20-and-trc-721-standards">（2）TRC-20 和 TRC-721 标准<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#2-trc-20-and-trc-721-standards" class="hash-link" aria-label="（2）TRC-20 和 TRC-721 标准的直接链接" title="（2）TRC-20 和 TRC-721 标准的直接链接">​</a></h4>
<p>TRC-20 是 TRON 上的代币标准，类似于 Ethereum 的 ERC-20，可用于创建可转让代币。TRC-721 是非同质化代币（NFT）标准，可用于创建独特、可追踪的数字资产。</p>
<ul>
<li><strong>TRC-20 代币</strong>：您可以创建自己的代币，并在 TRON 网络执行转账等操作。</li>
<li><strong>TRC-721 NFT</strong>：您可以使用 TRC-721 创建、交易数字艺术品、游戏道具等非同质化数字资产。</li>
</ul>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-web3js-and-tronlink-wallet">（3）Web3.js 和 TronLink 钱包<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#3-web3js-and-tronlink-wallet" class="hash-link" aria-label="（3）Web3.js 和 TronLink 钱包的直接链接" title="（3）Web3.js 和 TronLink 钱包的直接链接">​</a></h4>
<p>与 TRON 区块链交互时，需要通过 Web3.js（或 TronWeb）等 JavaScript 库，从浏览器调用区块链功能。</p>
<p><strong>TronWeb</strong> 与 Web3.js 类似，可帮助 Web 开发者便捷地与 TRON 区块链、智能合约、账户和交易交互。通过 TronWeb，您可以发送交易、查询余额、调用智能合约函数。</p>
<p><strong>TronLink 钱包</strong> 是 TRON 生态的主要钱包插件，让用户便捷连接 TRON 区块链，管理 TRX 和 TRC-20/721 代币。作为 Web3 开发者，您可以通过 TronLink 与用户交互，完成交易发送、操作授权等流程。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-core-features-of-tron-blockchain">3. TRON 区块链的核心特性<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#3-core-features-of-tron-blockchain" class="hash-link" aria-label="3. TRON 区块链的核心特性的直接链接" title="3. TRON 区块链的核心特性的直接链接">​</a></h3>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-high-throughput-and-low-transaction-fees">（1）高吞吐量与低交易费用<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#1-high-throughput-and-low-transaction-fees" class="hash-link" aria-label="（1）高吞吐量与低交易费用的直接链接" title="（1）高吞吐量与低交易费用的直接链接">​</a></h4>
<p>TRON 的设计针对高吞吐量进行了优化，每秒可处理数千笔交易（TPS）。与 Ethereum 等其他区块链相比，TRON 的交易费用较低，适合开发 dApp。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-efficient-resource-management-model">（2）高效的资源管理模型<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#2-efficient-resource-management-model" class="hash-link" aria-label="（2）高效的资源管理模型的直接链接" title="（2）高效的资源管理模型的直接链接">​</a></h4>
<p>TRON 的资源模型包括 <strong>能量（Energy）</strong> 和 <strong>带宽（Bandwidth）</strong>，它们是交易与智能合约执行所需的核心资源。用户可以通过 <strong>质押 TRX</strong> 获取资源，或通过 <strong>CatFee.IO</strong> 等服务直接购买能量。</p>
<ul>
<li><strong>能量</strong>：用于支付智能合约执行费用。</li>
<li><strong>带宽</strong>：用于支付普通转账交易费用。</li>
</ul>
<p>在 TRON 上，用户可以按需调整资源使用，让交易更顺畅，减少对网络拥堵或高费用的担忧。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-cross-chain-interoperability">（3）跨链互操作<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#3-cross-chain-interoperability" class="hash-link" aria-label="（3）跨链互操作的直接链接" title="（3）跨链互操作的直接链接">​</a></h4>
<p>TRON 支持跨链互操作，让用户可以在 TRON 与其他区块链之间转移资产。例如，借助 TRON 的 <strong>跨链桥</strong>，用户可以将资产从 Ethereum 转至 TRON，也可以反向转移。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-deploying-tron-dapps">4. 部署 TRON dApp<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#4-deploying-tron-dapps" class="hash-link" aria-label="4. 部署 TRON dApp的直接链接" title="4. 部署 TRON dApp的直接链接">​</a></h3>
<p>部署 TRON dApp 的基本步骤如下：</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-develop-smart-contracts">（1）开发智能合约<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#1-develop-smart-contracts" class="hash-link" aria-label="（1）开发智能合约的直接链接" title="（1）开发智能合约的直接链接">​</a></h4>
<p>使用 Solidity 或其他受支持的编程语言编写智能合约，确保合约的功能与安全性。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-test-the-contract">（2）测试合约<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#2-test-the-contract" class="hash-link" aria-label="（2）测试合约的直接链接" title="（2）测试合约的直接链接">​</a></h4>
<p>在 TRON 测试网上测试合约，验证其在实际运行环境中的表现是否符合预期。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-interact-with-the-front-end">（3）连接前端<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#3-interact-with-the-front-end" class="hash-link" aria-label="（3）连接前端的直接链接" title="（3）连接前端的直接链接">​</a></h4>
<p>使用 TronWeb 将 TRON 区块链功能集成到 Web 应用中，实现智能合约交互、交易发送等功能。</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="4-deploy-to-mainnet">（4）部署至主网<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#4-deploy-to-mainnet" class="hash-link" aria-label="（4）部署至主网的直接链接" title="（4）部署至主网的直接链接">​</a></h4>
<p>测试完成后，将合约部署到 TRON 主网，用户即可开始使用您的 dApp。</p>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-advantages-of-developing-web3-apps-on-tron">5. 在 TRON 上开发 Web3 应用的优势<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#5-advantages-of-developing-web3-apps-on-tron" class="hash-link" aria-label="5. 在 TRON 上开发 Web3 应用的优势的直接链接" title="5. 在 TRON 上开发 Web3 应用的优势的直接链接">​</a></h3>
<ul>
<li><strong>交易费用低</strong>：TRON 提供极低的交易费用与快速确认，帮助开发者高效构建 Web3 应用。</li>
<li><strong>性能高</strong>：TRON 支持高吞吐量和快速交易处理，保障 dApp 在高并发场景下稳定运行。</li>
<li><strong>开发工具易用</strong>：TRON 提供多种开发工具和 API，帮助开发者快速构建应用。</li>
<li><strong>生态丰富</strong>：TRON 拥有活跃的社区和生态，方便开发者集成去中心化金融（DeFi）、NFT、交易市场等功能。</li>
</ul>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="6-how-to-optimize-tron-energy-management-with-catfeeio">6. 如何通过 CatFee.IO 优化 TRON 能量管理<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#6-how-to-optimize-tron-energy-management-with-catfeeio" class="hash-link" aria-label="6. 如何通过 CatFee.IO 优化 TRON 能量管理的直接链接" title="6. 如何通过 CatFee.IO 优化 TRON 能量管理的直接链接">​</a></h3>
<p>在 TRON 上开发 Web3 应用时，交易和智能合约执行都需要网络资源，尤其是能量。为了保障交易与合约顺畅执行，开发者可以购买额外能量。</p>
<p><strong>CatFee.IO</strong> 提供高效、便捷的能量购买服务，开发者可以按需购买 TRON 链上的能量，避免资源不足导致交易失败或性能瓶颈。</p>
<ul>
<li><strong>安全可靠</strong>：通过 CatFee.IO 购买能量，保障交易不受网络拥堵或资源不足的影响。</li>
<li><strong>价格透明</strong>：CatFee.IO 提供透明、公平的价格，没有波动或隐藏费用。</li>
</ul>
<hr>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">结论<a href="https://blog.catfee.io/zh-Hans/2024/12/06/developing-web3-on-tron-blockchain#conclusion" class="hash-link" aria-label="结论的直接链接" title="结论的直接链接">​</a></h3>
<p>Web3 与 TRON 为构建去中心化应用提供了强大、灵活的技术支持。理解 TRON 的资源模型、智能合约和相关开发工具后，您可以快速创建、部署自己的 Web3 应用。与 <strong>CatFee.IO</strong> 合作，有助于让 dApp 在 TRON 区块链上实现稳定、快速、经济的交易，改善用户体验。</p>
<p>如果您有疑问或需要技术支持，欢迎联系我们。我们将帮助您更好地理解和应用 TRON 技术。</p>]]></content>
        <author>
            <name>Owen Hayes</name>
        </author>
        <category label="CatFee" term="CatFee"/>
        <category label="波场能量" term="波场能量"/>
        <category label="能量租赁" term="能量租赁"/>
        <category label="购买波场能量" term="购买波场能量"/>
        <category label="Web3" term="Web3"/>
    </entry>
</feed>