Solana 交易为何失败:5 个修复方法
Learn why Solana transactions fail and how to fix them. Covers blockhash expiry, priority fees, slippage, compute units, and RPC issues with step-by-s...
这份注重实操的指南重点介绍了修复已失败的 Solana 交易的五个实用方法,以及可能防止重复失败的步骤。
Solana 交易失败的原因有五个:
- 区块哈希在网络确认交易前过期
- 优先级费用相对于当前网络需求过低
- 在 DEX 兑换时,滑点容忍度被突破
- 计算单元预算在执行过程中耗尽
- 连接您钱包到网络的 RPC 节点过载
✅ 您的资金是安全的
失败的 Solana 交易不会从您的钱包中扣除代币。您的 SOL 和代币将保留在原处。最多,您可能会损失一笔小的基础网络费用,通常不到 0.001 美元。您的兑换金额、转账金额或 NFT 铸造价格均未被收取。
页面内容:
- Solana 交易为何失败:发生了什么
- Solana 交易失败的 5 个根本原因
- Solana 错误信息解读:每条信息的含义
- 如何修复已失败的 Solana 交易
- 平台特定故障:Phantom、Jupiter、Raydium 和 Magic Eden
- Solana 是否宕机?如何检查网络状态
- 失败的交易是否仍需支付费用?
- 交易前清单:如何防止 Solana 交易失败
- 常见问题解答:关于 Solana 交易失败
- 总结:将您的错误与正确的修复方法匹配
Solana 交易为何失败:发生了什么
当价格变动发生时,看到 Solana 交易失败会令人沮丧,尤其是当错误消息没有提供任何有用的信息时。如果您的 Jupiter、Raydium、Orca 或 Magic Eden 上的兑换、铸造或转账刚刚失败,原因几乎总是以下五种情况之一,每种都有特定的修复方法。
在 Solana 的 DeFi(去中心化金融)生态系统中,包括代币兑换、流动性提供、借贷协议以及 NFT 铸造,交易失败会带来实际的经济损失,因为价格在毫秒内就会发生变化。Solana 的架构使其比大多数区块链更快、更便宜,但它也创造了一些以太坊或其他链用户可能不熟悉的操作模式。不同于交易会排队等待的网络,Solana 使用一种名为 Gulf Stream 的交易转发协议,该协议会丢弃无法立即处理的交易。没有队列。失败的交易需要通过正确的设置主动重新提交。
本指南涵盖了您的加密货币钱包(如 Phantom 或 Backpack)、Jupiter、Raydium、Orca 和 Magic Eden 的故障。如果您怀疑 Solana 本身今天出现了问题,请先跳转至网络状态部分进行故障排除,然后再单独检查您的设置。
Solana 交易失败的 5 个根本原因
Solana 交易失败分为两类:网络级失败(区块哈希过期、拥堵、RPC 节点过载)和程序级拒绝,即您正在使用的应用程序运行的智能合约或程序拒绝了交易。滑点容忍度错误和计算单元预算错误是程序级拒绝;区块哈希过期和优先级费用不足是网络级失败。修复方法取决于您面临的是哪种类型。
Solana 使用一种名为“历史证明”(Proof of History)的时间记录系统,该系统生成一个加密序列,验证者无需互相通信时间戳即可就时间达成一致。该序列中的每个插槽会生成一个区块哈希,这是嵌入每笔交易中的类似时间戳的代码,用于证明交易是最新的。这种基于插槽的架构创造了 Solana 特有的过期窗口,也是其失败模式与其他区块链不同的地方。
原因 1:区块哈希过期
每笔 Solana 交易都包含一个区块哈希,它证明了交易是最近创建的。如果该区块哈希在网络确认交易之前过期,Solana 将完全丢弃该交易。
每个区块哈希大约有效 150 个插槽,在正常情况下约等于 60 到 90 秒。在网络拥堵期间,验证者处理速度会落后,这意味着交易在相对意义上会更快过期。您将看到的错误消息是 Blockhash not found(区块哈希未找到)或 Transaction expired(交易已过期)。
Solana 使用 Gulf Stream 而非传统的交易队列,这意味着被丢弃的交易不会重新入队等待。它会消失。您必须通过从您的钱包或 DEX 界面再次发起交易来主动重新提交。钱包会在新提交时自动获取新的区块哈希。有关重新提交流程,请参阅修复方法 3:使用新的区块哈希重新提交。
⚠️ 开发者须知
每次重试时,请始终使用
connection.getLatestBlockhash('confirmed')获取新的区块哈希。切勿在重试尝试之间重复使用区块哈希。在生产环境中,请使用confirmed或finalized提交级别,而不是processed,以避免状态过时。通过在每次重试前调用getSignatureStatuses来检测交易是被丢弃还是已处理。
在网络拥堵期间,Solana 的验证者(处理您交易的计算机)会根据优先级费用水平选择优先处理哪些交易。
优先级费用是支付给验证者的可选小费,以每计算单元微型 lamport 计费。1 lamport 等于 0.000000001 SOL;1 微型 lamport 是 lamport 的百万分之一。在热门 NFT 启动或市场剧烈波动等高流量时期,验证者会优先处理具有更高优先级费用的交易。零费用或优先级费用不足的交易会被丢弃,而不是排队。
由此产生的 SOL 不足错误相关原因:Solana 要求每个账户都必须维护一个称为“免租金门槛”(rent-exempt threshold)的最低余额才能保持在网络上活跃。如果您的钱包余额在此费用后低于此门槛,或者一笔交易会创建新的代币账户但没有足够的 SOL 来支持它,您将看到“资金不足”错误,即使您似乎有足够的 SOL 进行交易本身。请在交易金额之上保留 0.05 SOL 的缓冲。
这就是为什么不更改设置而重新提交同一笔交易通常仍然会失败的原因。有关设置正确费用的指南,请参阅修复方法 1:提高您的优先级费用。
⚠️ 开发者须知
将
ComputeBudgetProgram.setComputeUnitPrice(microLamports)添加为交易中的第一个指令。轮询getRecentPrioritizationFees()进行动态估算,而不是使用静态乘数。费用水平会随着网络需求而变化,因此在拥堵高峰期,静态值会变得不可靠。通过监控 HTTP 429(速率限制)、503(服务不可用)和连接超时错误来检测故障转移触发器。
每笔 Solana 交易都运行在一个称为计算单元的处理预算中,它衡量交易所需的计算工作量。简单的转账消耗的预算非常少。复杂的交易,例如通过三个或四个流动性池路由的多跳 DEX 兑换,消耗的计算单元要多得多。
如果您的交易在完成前耗尽了计算单元预算,Solana 会取消它。您将看到的错误是 计算单元预算超出 或 程序未能完成。
在发送您的交易之前,Phantom 和其他钱包会运行一个称为交易模拟的预检,该模拟会在不实际提交交易的情况下,针对当前的区块链状态执行交易。如果模拟检测到计算单元将被耗尽,它会阻止该交易并显示 交易模拟失败。大多数模拟失败表明交易存在实际问题,尽管偶尔过时的状态数据会导致本应成功的交易出现虚假失败。
对于现代 DEX 接口上的大多数用户,计算单元限额会自动设置。如果您看到计算单元预算错误,请在使用内置的重试按钮,然后再尝试手动调整。有关详细步骤,请参阅 修复 5:调整计算单元预算。
⚠️ 开发者注意
将
ComputeBudgetProgram.setComputeUnitLimit(units)添加为交易中的第一条指令。先运行simulateTransaction()来测量实际的计算单元消耗量,然后将限额设置为实际消耗量的 1.1 倍,以提供 10% 的缓冲。设置过低的限额会导致InstructionError失败;设置过高的限额会浪费费用预算,但不会导致失败。
原因 4:滑点容忍度超出
滑点容忍度是您的去中心化交易所(DEX,一个允许您直接从钱包兑换代币的平台)为您设置的一项保障。如果在您请求兑换的瞬间和交易执行的瞬间之间,代币价格变动超过您设定的阈值,智能合约将取消交易,以保护您免受比预期更差的价格影响。
这是一个保护性失败,而不是损失。您的本金是安全的;兑换并未执行。您将看到的错误是 滑点容忍度超出。
滑点失败最常发生在波动性代币、低流动性交易对和高拥堵时期,因为此时您的价格报价和执行之间延迟较长。如果一个流动性池的储备量非常低,即使是 5% 的滑点容忍度也可能不够,因为该池无法以任何合理价格容纳您的交易规模。在这种情况下,请尝试减少您的兑换金额或切换到不同的交易对。
Jupiter、Raydium 和 Orca 是最常遇到此失败的 DEX。有关分步调整说明,请参阅 修复 2:调整您的滑点容忍度。
原因 5:RPC 节点过载
您的 Solana 钱包连接到一个称为RPC 节点的服务器来提交交易。您可以将其视为将您的交易传递给验证者网络的邮局。每次您在 Phantom 或 Backpack 中点击确认时,钱包会将您的交易发送到一个 RPC 节点,该节点会将其转发给验证者。
Solana 的免费公共 RPC 端点有速率限制,并且在高需求时期经常过载。在一次热门的 NFT 启动或剧烈的市场变动期间,公共 RPC 节点收到的提交量远远超过其处理能力,它们会在交易到达验证者之前就将其丢弃。发生这种情况时,您可能会看到 无法确认交易 或根本没有错误消息的静默失败。
切换到专用的 RPC 提供商,例如 Helius 或 QuickNode(两者都提供免费套餐),可以为您的交易提供更可靠的网络路径。有关切换 RPC 的步骤,请参阅 修复 4:切换到更好的 RPC 端点。
⚠️ 开发者注意
在您的应用程序配置中维护一个备用 RPC 端点列表。当主端点返回错误或超时时,实现自动故障转移逻辑。使用 WebSocket
signatureSubscribe进行交易确认监控,而不是使用 HTTP 轮询getSignatureStatuses,因为 WebSocket 订阅在负载下更快、更可靠。
Solana 错误消息解析:每个错误的意思
来自失败的 Solana 交易的错误消息会出现在您的钱包活动日志(Phantom 或 Solflare)、Solana Explorer (explorer.solana.com) 或 Solana FM (solana.fm) 中。要查找特定的失败交易,请从钱包的交易历史记录中复制交易签名,然后粘贴到任一浏览器中。失败的交易会显示带有特定错误代码的红色错误状态。
在发送任何交易之前,Phantom 都会运行一个模拟来预测其是否会成功。如果此预检失败,Phantom 会显示 交易模拟失败 并阻止提交。大多数模拟失败表明您的设置存在实际问题,但偶尔过时的数据会导致虚假失败。在这种情况下,刷新页面并重试一次是合适的。
| 错误字符串 | 失败类型 | 通俗易懂的含义 | 立即修复 |
|---|---|---|---|
Transaction simulation failed | 网络或程序级别 | Phantom 的预检预测该交易会失败。原因可能是滑点、资金不足或状态过时。 | 检查 Phantom 中的错误上下文,调整滑点或 SOL 余额;参阅 修复 1 或 修复 2 |
Blockhash not found / Transaction expired | 网络级别 | 您的交易的 blockhash 在网络处理它之前已过期。交易被丢弃,而不是排队。 | 从头开始重新提交;参阅 修复 3:新的 Blockhash |
Slippage tolerance exceeded | 程序级别 | 交易执行前,代币价格已超出您设定的阈值。您的本金是安全的。 | 增加滑点容忍度;参阅 修复 2:滑点容忍度 |
Insufficient funds for fee | 网络级别 | 您的钱包没有足够的 SOL 来支付交易费用,或者没有足够的 SOL 来支付新代币账户的租金豁免阈值。 | 添加 SOL;在交易金额之上保留 0.05 SOL 的缓冲 |
Compute budget exceeded / Program failed to complete | 程序级别 | 交易在完成前耗尽了计算预算。在多跳兑换中最常见。 | 使用 DEX 的内置重试按钮;参阅 修复 5:计算单元预算 |
InstructionError: custom program error: [code] | 程序级别 | 应用程序的智能合约拒绝了该交易。数字代码是特定于应用程序的。 | 检查 DEX 或 dApp 文档以了解该错误代码;使用调整后的参数重新提交 |
Transaction was not confirmed in 30.00 seconds | 网络级别 | 交易已提交,但在超时窗口内未确认。它可能已丢失,也可能未丢失。 | 在重新提交前检查 Solana Explorer 以确认交易是否已成功;参阅 修复 3 |
Account not found | 程序级别 | 找不到必需的账户,通常是新代币的代币账户,该账户尚不存在。 | 现代 DEX 接口会自动解决此问题;如果持续存在,请检查您钱包中的代币账户设置 |
如何修复失败的 Solana 交易
快速修复清单(如果不确定适用哪一项,请从修复 1 开始):
- 将您的优先费用提高到“快速”或“涡轮”级别,然后重新提交
- 将滑点容忍度提高 0.5% 至 1%,然后重新提交
- 使用新的 Blockhash 重新提交(等待 5 秒,然后从 DEX 再次开始)
- 在钱包设置中切换到专用的 RPC 端点
- 如果怀疑拥堵,请在重试前检查 status.solana.com 上的 Solana 网络状态
在活跃交易时段,不足的优先费用会导致大多数交易失败,因此当您不确定时,修复 1 是正确的起点。
修复 1:提高您的优先费用
提高优先费(Priority Fee)是在网络拥堵期间修复交易失败最有效的方法。这会向验证者发出信号,要求在处理低费用的提交之前优先处理您的交易。
费用水平随网络需求而变化。请使用钱包的自动预估功能,或查看 Solana Beach 了解当前的网络状况。请勿依赖特定的 lamport 数值,因为它们变化极快。
优先费等级参考:
| 费用等级 | 何时使用 | 在 Jupiter 中 | 在 Phantom 中 |
|---|---|---|---|
| 自动 / 正常 | 低流量时期,简单转账 | 自动 | 市场 |
| 快速 | 活跃交易时间,中度拥堵 | 快速 | 高 |
| 极速 | 峰值拥堵,NFT 铸造,竞争性交易 | 极速 | 自定义(最大) |
| 自定义 | 精确控制或编程用途 | 输入微 lamports | 输入微 lamports |
在 Jupiter 中增加优先费(界面可能因版本而异):
- 在 jup.ag 打开 Jupiter
- 点击交换面板中的设置齿轮图标
- 选择优先费(Priority Fee)
- 选择“快速”或“极速”,或输入自定义数值
- 重新提交您的交换交易
在 Phantom 中增加优先费:
- 打开 Phantom 钱包
- 前往“设置”
- 选择“交易”
- 将“交易速度”调整为“高”或“自定义”
- 返回您的 DEX 并重新提交
对于 Raydium,点击交换界面的设置齿轮,选择“优先费”,选择更高的等级并重新提交。平台特定故障表 显示了每个平台的准确操作路径。
⚠️ 开发者备注
在交易的第一条指令中添加
ComputeBudgetProgram.setComputeUnitPrice(microLamports)。调用getRecentPrioritizationFees()获取当前网络费用百分位,而不是使用静态乘数。超额支付会浪费 SOL,但不会导致交易失败。
修复 2:调整滑点容差
如果您的交换因滑点容差错误而失败,解决方法是放宽可接受的价格范围,但放宽的幅度至关重要。
⚠️ 重要警告
在低流动性代币交易对上将滑点设置为 3% 到 5% 以上,会使您面临 MEV 夹心攻击,机器人会检测您的待处理交易并抢跑以获取价值。应逐步增加滑点,而不是一次性大幅调整。
在 Jupiter 中调整滑点(界面可能因版本而异):
- 打开 Jupiter 并点击设置齿轮图标
- 选择滑点容差(Slippage Tolerance)
- 将当前设置增加 0.5% 到 1%(例如,从 0.5% 增加到 1.5%)
- 重新提交您的交换交易
对于 Raydium:点击设置齿轮,选择“滑点”,输入调整后的百分比并重新提交。对于 Orca:点击“设置”,调整“滑点容差”并重新提交。平台特定故障表 显示了每个 DEX 的准确操作路径。
如果您正在使用 Jupiter,请检查界面中是否有“动态滑点”功能。此功能会根据当前市场状况自动计算每笔交易的最佳滑点。
如果某个代币即使在 5% 的滑点下仍持续失败,问题可能在于资金池的流动性不足,而非价格波动。尝试减少交换金额或将交易拆分为较小的交易。
修复 3:使用新鲜的区块哈希(Blockhash)重新提交
交割合约(区块哈希过期)问题可以通过重新提交来解决,但您不能发送相同的交易对象。Solana 要求每次提交都必须有新鲜的区块哈希。
由于 Solana 使用 Gulf Stream 而非传统的交易队列,掉落的交易无法被“解冻”。交易已消失,必须从头开始创建一笔新交易。
对于普通用户(Phantom, Jupiter, Raydium):
- 失败后等待 5 到 10 秒
- 不要点击同一确认屏幕上的再次提交
- 返回交换界面,从头开始重新发起交易
- 当您重新提交时,您的钱包会自动获取新鲜的区块哈希
在重新提交之前: 请检查 Solana Explorer (explorer.solana.com) 以确认交易是否实际上已成功。将您的交易签名粘贴到搜索栏中。如果交易显示为已确认,请勿重新提交。
⚠️ 开发者备注
在每次重试尝试之前,使用
connection.getLatestBlockhash('confirmed')获取新鲜的区块哈希。实施指数退避算法:第一次重试前等待 1 秒,第二次 2 秒,第三次 4 秒。在向用户显示错误之前,设置最大重试次数为 5 次。在生产环境中获取区块哈希时,请使用confirmed或finalized承诺级别,而非processed。
修复 4:切换到更好的 RPC 节点
Solana 的免费公共 RPC 节点 (api.mainnet-beta.solana.com) 存在速率限制,并且在高需求期间经常过载,导致提交的交易在到达验证者之前更有可能被掉落。
在拥堵期间,Helius 和 QuickNode 等专用 RPC 提供商通常比公共 Solana 主网 RPC 提供更高的可靠性。这两家提供商都提供适合个人用户的免费层级。
在 Phantom 中切换 RPC(界面可能因版本而异):
- 打开 Phantom 钱包
- 前往“设置”
- 选择“开发者设置”
- 选择“更改 RPC 节点”
- 输入您的 Helius 或 QuickNode 节点 URL
- 确认并重新提交您的交易
在 Solflare 中切换 RPC:
- 打开 Solflare 钱包
- 前往“设置”
- 选择“网络”
- 选择“自定义 RPC”并输入您的节点 URL
- 保存并重新提交您的交易
⚠️ 开发者备注
在应用程序配置中维护一个备份 RPC 节点列表。实施自动故障转移逻辑,以便在主节点返回错误或超时时,应用程序能切换到备份节点。使用 WebSocket
signatureSubscribe进行交易确认监控,而不是使用getSignatureStatuses进行轮询,因为在重负载下 WebSocket 连接速度更快。
修复 5:调整计算单元(Compute Unit)预算
对于普通用户,大多数现代 DEX 界面(包括 Jupiter 和 Raydium)会自动设置计算单元限制。如果您看到 Compute budget exceeded(超出计算预算)错误,请使用 DEX 内置的重试或刷新功能,而不是手动调整设置。
如果错误持续存在,请尝试简化您的交换路径。通过单一资金池的直接路径比通过四五个资金池的复杂多跳路径消耗更少的计算单元。在 Jupiter 中,请在路由设置中寻找“仅限直接路由”选项。
如果您的交换在特定交易对上持续失败,这可能是暂时的需求极高的路由。等待几分钟后再重新提交通常可以解决问题,无需更改任何设置。
⚠️ 开发者备注
在交易的第一条指令中添加
ComputeBudgetProgram.setComputeUnitLimit(units)。先运行simulateTransaction()以测量实际计算单元消耗,然后将限制设置为实际消耗量的 1.1 倍,作为 10% 的安全缓冲。限制设置过低会导致InstructionError失败;设置过高会浪费费用预算但不会导致失败。
平台特定故障:Phantom、Jupiter、Raydium 和 Magic Eden
最常见的 Solana 失败场景在不同平台上会有不同的表现。请查看下面的对比表找到您的平台,然后阅读相关章节以获取详细信息。
| 平台 | 最常见失败原因 | 滑点设置位置 | 优先级费用位置 |
|---|---|---|---|
| Phantom | 交易模拟失败、SOL 余额不足 | 不适用(仅限钱包) | 设置 → 交易 (Transactions) → 交易速度 (Transaction Speed) |
| Jupiter | 超过滑点限制、优先级费用不足 | 齿轮图标 → 滑点容差 (Slippage Tolerance) | 齿轮图标 → 优先级费用 (Priority Fee) (自动/快速/极速) |
| Raydium | 流动性浅的资金池价格影响过高 | 设置齿轮 → 滑点 (Slippage) | 设置齿轮 → 优先级费用 (Priority Fee) |
| Orca | Whirlpool 集中流动性头寸的滑点问题 | 设置 → 滑点容差 (Slippage Tolerance) | 设置 → 交易速度 (Transaction Speed) |
| Magic Eden | 铸造活动期间网络拥堵 | 不适用 | 铸造开始前的钱包设置 |
Jupiter 兑换失败
Jupiter 的多跳路由 (Multi-hop routing) 将您的兑换通过多个流动性池发送以寻找最佳价格。每增加一跳都会增加计算单位 (Compute Unit) 的消耗,并产生另一个价格变动可能触及滑点容差的节点。
Jupiter 特有的两个最常见失败原因是:在波动剧烈的代币对上超过了滑点容差,以及由于优先级费用不足导致“交易模拟失败”。两者都可以通过在重新提交前调整 Jupiter 齿轮图标菜单中的设置来修复。
Jupiter 内置的优先级费用选择器提供:普通 (Normal)、快速 (Fast)、极速 (Turbo) 和自定义 (Custom) 选项。在任何活跃交易时段,建议至少设置为“快速”。在 NFT 发布或市场剧烈波动期间,请使用“极速”。
一些较旧的钱包不支持 Jupiter 的版本化交易格式。如果您看到的是交易格式错误而非滑点或费用错误,请检查您的钱包软件是否为最新版本。
Raydium 和 Orca 兑换失败
Raydium 和 Orca AMM 失败往往源于流动性有限的资金池中产生的极高价格影响。即使设置了宽松的滑点,资金池也无法以合理的价格容纳您的交易规模。
在 Raydium 或 Orca 上确认任何兑换之前,请检查界面中显示的价格影响百分比。如果价格影响超过 2% 到 3%,则该交易规模对于该池现有的流动性而言过大。请减少您的兑换金额,或将交易拆分为两三个较小的兑换并依次提交。
对于 Orca 的 Whirlpool 集中流动性头寸,滑点设置可能尤为敏感。如果集中池已超出其活跃价格范围,则无论如何设置滑点,交易都会失败。在这种情况下,请尝试不同的资金池或通过 Jupiter 聚合器进行路由,它会自动寻找替代路径。
Magic Eden 和 NFT 铸造失败
Magic Eden 上的 NFT 铸造失败与常规的 DEX 失败不同,因为问题不在于您的设置。问题在于在狭窄的启动窗口期间同时提交了成千上万笔交易,这使网络不堪重负,导致验证者在处理之前就丢弃了低优先级费用的交易。
使用 Candy Machine 程序的极高需求铸造活动会产生剧烈竞争。机器人每秒提交数百笔交易,使公共 RPC 和验证者队列均处于饱和状态。
高需求发布期间成功铸造的三步协议:
- 在铸造窗口开启前,将您的优先级费用设置为“极速”或钱包中的最高可用设置
- 从公共 Solana RPC 切换到专用供应商(如 Helius 或 QuickNode,免费层级已足够)
- 保持铸造页面完全加载且钱包连接已预先批准;在铸造开启时立即提交交易,不要等待页面刷新
如果铸造交易失败,您的 SOL 本金会自动退回。只会消耗少量的网络费用,约为 0.000005 SOL。由于某些项目还使用白名单机制和 Candy Guards,因此如果即使设置正确交易仍持续失败,请确认您是否符合当前铸造阶段的资格。
Solana 宕机了吗?如何检查网络状态
大多数 Solana 交易失败并非由网络停机引起。它们是由用户端设置或暂时的网络拥堵造成的。真正的网络完全停止运行的情况非常罕见,且会有官方公告。
三步状态检查:
- 访问 status.solana.com,即 Solana 的官方网络状态页面,查看来自 Solana 基金会的任何活跃事件报告。
- 访问 Solana Beach 并检查实时每秒交易数 (TPS) 数据和平均确认时间。在 TPS 活跃期间的高失败率表明是网络拥堵,而非宕机。
- 检查 r/solana 或 Solana Discord。如果许多用户同时报告失败,则网络处于拥堵中。如果只有少数人报告,则问题可能出在您这边。
| 状况 | 应对措施 |
|---|---|
| 网络拥堵但未宕机 | 等待 5 到 15 分钟,然后以更高的优先级费用重新提交。随着拥堵清除,费用会自然下降。 |
| status.solana.com 确认网络宕机 | 等待官方发布的解决公告。在活跃宕机期间请勿重复提交。 |
| 网络正常,交易仍然失败 | 返回第 1 至 5 项修复方案 并检查您的设置。 |
Solana 交易失败还需要支付费用吗?
是的,即使交易失败,Solana 也会收取一笔很小的基础交易费用,但您的代币以及兑换、转账或铸造的本金不会从您的钱包中扣除。
您的代币是安全的。交易在执行任何兑换或转账之前就已经失败了。
基础费用约为每签名 0.000005 SOL,在大多数 SOL 价格水平下仅相当于一美分的极小部分。即使交易未成功,这笔费用也会用于补偿验证者处理该交易尝试的成本。如果您包含了优先级费用,该笔金额也将被消耗。您尝试兑换的代币金额、尝试发送的 SOL 或尝试支付的 NFT 价格从未被扣除。
在交易达到验证者之前被超负荷的 RPC 节点静默丢弃的交易不会收取任何费用,因为该交易没有链上记录。
要核实任何失败交易的具体扣费金额:
- 从钱包的交易历史记录中复制交易签名 (transaction signature)
- 将其粘贴到 Solana Explorer 或 Solana FM
- 找到该笔失败交易,其状态将显示为红色错误状态
- 查看“费用 (Fee)”字段以查看扣除的准确 SOL 金额
交易前检查清单:如何防止 Solana 交易失败
在进行任何对时间敏感的交易之前运行此清单只需不到 60 秒,并可消除最常见的失败原因。
- 在市场剧烈波动期间进行任何交易前,请查看 status.solana.com 是否有进行中的事件
- 在活跃交易时段,将任何交易的优先级费用至少设置为“快速 (Fast)”;对于时间敏感型交易或 NFT 铸造,请使用“极速 (Turbo)”
- 确认您的滑点容差与代币对的波动率相匹配:稳定币对(如 USDC/USDT)为 0.5%,中盘代币为 1% 至 2%,波动剧烈的小盘代币最高为 3%
- 确认您的 SOL 余额足以支付交易金额加上费用,并额外留出 0.05 SOL 的缓冲区作为免租阈值金
- 对于时间敏感或高额交易,请从 Solana 的公共 RPC 切换到专用供应商(如 Helius 或 QuickNode,两者均提供免费层级)
- 对于 NFT 铸造:在铸造时间窗口开启之前配置您的优先级费用和 RPC,而不是在开启期间
- 对于大额 DEX 兑换:在确认前检查价格影响百分比;如果价格影响超过 2% 到 3%,请减少兑换金额或拆分为较小的交易
- 相信您的钱包或平台 DEX 内置的费用优化功能(如可用);Jupiter、Raydium 和 Orca 均提供根据当前网络状况自动调整的费用建议
⚠️ 开发者笔记
在生产环境的 dApp 中,请实施基于仿真的计算单元估算,而非静态限制。动态轮询
getRecentPrioritizationFees()并在每次提交交易时更新您的费用建议。实施 RPC 故障转移,以便您的应用程序自动切换到备用端点。切勿在重试尝试之间重复使用区块哈希。
常见问题解答:Solana 交易失败的五种修复方法
下方的每个答案都是独立的。您无需阅读本指南的其余部分即可使用 FAQ。
Solana 交易失败的原因是什么?
Solana 交易会因五种原因失败:区块哈希过期、优先级费用不足、计算单元预算耗尽、滑点容差超限或 RPC 节点过载。网络级故障需要您增加优先级费用并重新提交。程序级拒绝需要调整交易参数,例如滑点容差或兑换金额。请参阅 Solana 交易失败的 5 个根本原因 以了解每种原因的完整解释。
是的。即使交易失败,Solana 也会收取少量基础交易费用,大约为 0.000005 SOL,但您的代币和兑换本金不会被扣除。被过载的 RPC 节点在到达网络之前静默丢弃的交易根本不会收取任何费用,因为它们不会留下链上记录。请参阅 是否仍需支付失败交易的费用 以获取验证说明。
Solana 交易在大约 150 个 slot 后会过期,在正常网络条件下这大约是 60 到 90 秒。在拥堵期间,由于验证者处理滞后,有效过期时间可能会感觉更短。过期后,交易将被永久丢弃,必须从头开始重新提交。
区块哈希是嵌入每个 Solana 交易中的类似时间戳的代码,用于证明交易是近期创建的。验证者使用它来验证交易是否为当前有效且未在先前的会话中重放。区块哈希在大约 150 个 slot 后过期;之后,交易将被拒绝,并出现 Blockhash not found 或 Transaction expired 错误。
计算单元是 Solana 用来衡量交易消耗的处理资源的单位。简单的转账使用少量资源;复杂的、多跳的 DEX 兑换则消耗更多。如果交易在完成前耗尽了其计算单元预算,Solana 会取消该交易并返回 Compute budget exceeded 错误。现代 DEX 界面会自动为大多数用户设置计算单元限制。
优先级费用是支付给验证者的可选小费,以每计算单元微小 lamports 的形式,用于在拥堵期间将您的交易排在较低费用的提交前面。Solana 的基础交易费用是固定的且金额很小;优先级费用是决定您的交易处理速度的可变部分。费用水平随网络需求而变化,因此请使用您钱包的自动估算功能或 Helius 优先级费用 API 获取当前值。
从您钱包的交易历史记录中复制交易签名,并将其粘贴到 Solana Explorer 或 Solana FM 中。失败的交易会显示带有特定错误代码的红色错误状态。已确认的交易会显示绿色成功状态。在重新提交之前务必进行检查,以避免发送重复交易。
您的资金无需恢复,因为它们从未发送。失败的 Solana 交易不会从您的钱包中扣除您的代币或兑换金额。交易在执行前失败,因此除了少量基础费用外,您的钱包余额保持不变。您的本金是安全的。
Solana 使用名为 Gulf Stream 的交易转发协议,而不是传统的交易队列。Gulf Stream 在当前区块完成之前将交易直接转发给预期的下一个验证者。无法立即处理的交易将被丢弃,而不是保留在等待队列中。这种设计实现了 Solana 的高吞吐量,但意味着失败的交易需要主动重新提交,而不是被动等待。
交易模拟失败意味着 Phantom 对您的交易进行了预检测试,并预测它不会成功。Phantom 会阻止提交,以防止您因将要失败的交易而浪费费用。大多数模拟失败表明您的设置存在实际问题,例如滑点不足、SOL 余额低或程序拒绝。偶尔,过时的状态数据会导致误报失败;在这种情况下,刷新页面并重新提交一次是合适的。
向您的钱包添加 SOL,并确保您的余额超过交易金额加上费用,再加上 0.05 SOL 的缓冲。Solana 的资金不足错误并不总是意味着您没有足够的 SOL 来支付费用。有时它意味着您没有足够的 SOL 来支付首次接收代币时创建新代币账户所需的免租金门槛。
您的本金是安全的。您试图发送或兑换的代币或 SOL 与之前一样保留在您的钱包中。失败的 Solana 交易不会执行转账、兑换或铸造,因此您的余额保持不变。可能只收取了少量基础交易费用,通常不到 0.001 美元。
反复失败的交易通常表明相同的错误设置被重新提交而未进行调整。找出您的错误:如果是 Slippage tolerance exceeded(滑点容差超限),请增加滑点容差并重新提交。如果交易静默丢弃而没有错误消息,则您的优先级费用太低。如果 status.solana.com 显示活动事件,请等待网络恢复后再重新提交。
NFT 铸造失败是因为在狭窄的发布窗口内,成千上万的用户和机器人同时提交交易,导致公共 RPC 端点和验证者队列饱和。验证者会丢弃低优先级费用的交易以管理负载。在铸造窗口打开之前,将您的优先级费用设置为 Turbo 并切换到专用 RPC 提供商可显著提高成功率。请参阅 Magic Eden 和 NFT 铸造失败 以获取完整的准备协议。
滑点容差是指您愿意接受的,从您请求兑换到兑换执行之间价格变动的最大幅度。如果代币价格超出该阈值,智能合约会自动取消兑换,以保护您免受收到比报价差得多的价格的影响。对于稳定代币对,典型设置范围为 0.5%,对于波动性资产则为 2% 或 3%。在低流动性交易对上将其设置为 3% 至 5% 以上会增加暴露于 MEV 夹子攻击的风险。
在 Bybit 上探索 SOL
使用 Solana 价格页面) 查看当前的 SOL 市场数据,或者如果您有现货交易的目标,可以访问 SOL/USDT 现货市场。Bybit 交易活动与提交 Solana 链上交易不同;在 Solana 网络上存入或提取 SOL 时,仍可能适用网络费用。
总结:将您的错误与正确的修复方法匹配正确的修复方法匹配。
每个 Solana 交易失败都对应于五个根本原因之一,每种原因都有特定的修复方法。
| 根本原因 | 您看到的错误提示 | 快速修复 |
|---|---|---|
| 区块哈希已过期 | Blockhash not found / Transaction expired | 等待 5 秒,使用新的区块哈希从头重新提交 |
| 优先级费用过低 | 拥堵期间交易静默丢失 | 在您的 DEX 或钱包中将费用设置为“快速”或“涡轮”,然后重新提交 |
| 超过滑点 | Slippage tolerance exceeded | 在您的 DEX 设置中将滑点提高 0.5% 至 1%,然后重新提交 |
| 计算预算耗尽 | Compute budget exceeded / Program failed to complete | 使用 DEX 内置的重试按钮;对于复杂的兑换,请尝试直接路线 |
| RPC 节点过载 | Unable to confirm transaction / 静默丢失 | 在钱包的 RPC 设置中切换到 Helius 或 QuickNode,然后重新提交 |
在上述任何一种情况下,您的本金都是安全的。失败的 Solana 交易不会导致代币永久丢失;只会消耗极低的基础费用。为了避免重复失败,请在下次进行对时间敏感的兑换或铸造前,先查看 交易前检查清单。
本指南中引用的设置路径截至发布日期是准确的,可能会因钱包或 DEX 版本而异。费用水平随网络需求而变化;请使用钱包的自动预估功能或 Helius Priority Fee API 获取当前数值。所提到的工具(Helius、QuickNode、Solana Beach)仅作为期权提供,不代表背书。