# RAILGUN Unshield 未到账：分开证明、广播、收款和扣费

整理：链小知（AI 辅助）
资料核对日期：2026-10-12
引用地址：https://lianxiaozhi.com/tools/guides/railgun-unshield-proof-broadcast-receipt-check
难度：进阶
核验方式：官方文档整理，未执行真实账户操作

沿本人已有unshield操作记录定位停留阶段，核对native/wrapped资产、公共收款地址、Broadcaster费用和链上结果，不把证明完成当提现完成。

## 使用工具
- [RAILGUN](https://lianxiaozhi.com/tools/railgun) · [官方入口](https://railgun.org/)

## 前置条件
- 已有脱敏unshield意图、客户端版本/txidVersion、网络、token、公共destinationAddress、费用/证明/构造/提交日志及已有交易记录。
- 仅排查本人合法操作记录；不提供密钥、private notes或重新生成证明、签名、广播/withdraw。
- 普通ERC20与base-token unshield是不同方法，文档SDK示例不代表所有当前客户端菜单。

## 1. 确认资产形式与公共收款对象

从原记录取chain、tokenAddress和destinationAddress。ERC20 unshield目标是public钱包；private 0zk不能不加区分作为普通公共收款地址。检查原接收网络和币地址，不只看名称。

base-token方法以shielded wETH为例，Relay Adapt将其unwrap为ETH给public balance，且该交易隔离不能与普通ERC20 unshield混合。1:1是wrapped转换比例，不是含协议扣费/gas后必收1ETH；不能只查wETH余额判断native ETH未到账。

核对结果：网络、公共接收人及应查wrapped/native资产明确，并对应正确unshield方法。
依据：[RAILGUN Wallets and Keys](https://docs.railgun.org/wiki/learn/wallets-and-keys.md)
依据：[RAILGUN Unshield Base Token](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding/unshield-base-token.md)
依据：[RAILGUN 官方钱包链接与隐私合约](https://docs.railgun.org/wiki/learn/helpful-links.md)

## 2. 找到证明、构造与提交的具体断点

按原日志排gas估计、Broadcaster费、Generate Proof、Populate Proved Transaction、Submit五阶段。proof完成只说明证明生成，populate返回transaction只说明构造，二者都不证明上链。

官方base-unshield Example Usage最后仅打印构造对象，没有sendTransaction/receipt；不要拿该示例的输出当已提现回执。每步错误原样保留，包括证明参数/版本不匹配，不用一条loading结束日志补出tx hash。

核对结果：记录明确停在哪一步，未提交、已提交与已确认三种状态分开。
依据：[RAILGUN Private Transactions 阶段](https://docs.railgun.org/developer-guide/wallet/transactions/ux-private-transactions.md)
依据：[RAILGUN Unshield Base Token](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding/unshield-base-token.md)

## 3. 核对费用有效期及发起方式

Broadcaster报价包含gas与premium；链、gas、token、金额或UTXO输入输出变化都会影响估计。按已有费用条目的过期时间/时刻核对，文中通常约3分钟不是所有报价固定期限；过期证明或构造失败不能归类为链上revert。

若原记录sendWithPublicWallet为true，费用路径与通过Broadcaster不同，链上提交会关联该public钱包。只说明已发生行为的角色，不新建或换地址；自发交易原生gas与Broadcaster支付token分开核对，gasless不等零费用。

核对结果：费用版本/时效与实际提交者能对应，未以报价存在宣称已支付/已广播。
依据：[RAILGUN Private Transactions 阶段](https://docs.railgun.org/developer-guide/wallet/transactions/ux-private-transactions.md)
依据：[RAILGUN 协议扣费与Broadcaster费用](https://docs.railgun.org/wiki/learn/railgun-deductions.md)
依据：[RAILGUN Unshield Base Token](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding/unshield-base-token.md)

## 4. 对齐当前Spendable与POI记录

把该操作使用的原余额bucket/txidVersion与证明生成时间配对。查看记录若为view-only，本来就不具消费权限，不能让它提供spending key或把读取成功当可提现。

Broadcaster的POI检查与core私有余额不同；missing/blocked/pending保持原状态，不推所有币都可同样消费。若没有当时Spendable或POI记录，列资格待核，不根据现在一条余额反推历史已具资格。

核对结果：权限、原余额与证明资格在同一操作时间范围内，未知原因保留。
依据：[RAILGUN View-Only Wallets](https://docs.railgun.org/developer-guide/wallet/private-wallets/view-only-wallets.md)
依据：[RAILGUN Balance and Sync Callbacks](https://docs.railgun.org/developer-guide/wallet/private-balances/balance-and-sync-callbacks.md)
依据：[RAILGUN Private Proofs of Innocence](https://docs.railgun.org/wiki/assurance/private-proofs-of-innocence.md)

## 5. 用已有交易结果核对实际收款

有tx hash时按原chain和隐私/Relay Adapt合约归属核对已有receipt或浏览器存档；成功交易与revert分开，缺receipt/null/查询失败不等未广播或资金丢失。链上成功还需对应公共接收人及实际token/native余额变化。

收款数量按原token decimals和该方法结果保存；协议shield/unshield各0.25%扣费、Broadcaster gas/premium及发送钱包网络gas分列，不能在已净额再扣同一fee，也不靠估计费用证明实际到账。

核对结果：收款证据绑定同一hash/chain/地址/资产，原数量与费用有依据，链最终性未知明确。
依据：[RAILGUN Private Transactions 阶段](https://docs.railgun.org/developer-guide/wallet/transactions/ux-private-transactions.md)
依据：[RAILGUN Unshield Base Token](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding/unshield-base-token.md)
依据：[RAILGUN 协议扣费与Broadcaster费用](https://docs.railgun.org/wiki/learn/railgun-deductions.md)
依据：[RAILGUN 官方钱包链接与隐私合约](https://docs.railgun.org/wiki/learn/helpful-links.md)

## 6. 形成有限结论并保留需支持的证据

将结果写成“未取得提交记录”“提交后未取得确认”“来源交易失败”“已取得公共收款证据”等，不以固定等待秒数给SLA。原错误、阶段、参数摘要、版本和hash足以整理给原客户端支持，不分享密钥或完整私人历史。

没有现行SDK运行/广播/余额验收时保留documentation。避免把重生成/重新发款当只读排错步骤；先取得原操作身份和结果，重复操作会形成新交易。

核对结果：结论清楚说明已证实阶段和缺失证据，未把文档示例或证明状态充作收款成功。
依据：[RAILGUN Private Transactions 阶段](https://docs.railgun.org/developer-guide/wallet/transactions/ux-private-transactions.md)
依据：[RAILGUN Unshield Base Token](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding/unshield-base-token.md)
依据：[RAILGUN Balance and Sync Callbacks](https://docs.railgun.org/developer-guide/wallet/private-balances/balance-and-sync-callbacks.md)

## 常见错误
- proof/populate日志、报价或构造对象不等tx已广播。
- base-unshield的unwrap1:1不等扣费后净額；ETH与wETH检查混用。
- view-only可读不等可提现，POI资格与链上交易是不同层。
- 缺receipt、时间经过和Broadcaster报价失效不单独证明资金丢失或允许重发。

## 完成检查
- 原unshield记录有方法/资产/公共接收人/费用/阶段与已有链上结果对照。
- 收款、失败与未决结论有具体证据；没有生成证明、钱包操作或资金行为验收。

## 相关知识
- [Gas 怎么计算？交易失败为什么仍可能扣费](https://lianxiaozhi.com/learn/gas-and-failed-transactions)
- [区块确认与最终性是什么？交易成功和充值到账为何不同步](https://lianxiaozhi.com/learn/confirmations-and-finality)
- [钱包签消息与签交易有什么区别？不付 Gas 的签名也要读内容](https://lianxiaozhi.com/learn/wallet-message-vs-transaction)
- [原始、解码和整理后的链上数据有什么区别？](https://lianxiaozhi.com/learn/raw-decoded-curated-data)

## 官方依据
- [RAILGUN Wallets and Keys](https://docs.railgun.org/wiki/learn/wallets-and-keys.md)
- [RAILGUN 官方钱包链接与隐私合约](https://docs.railgun.org/wiki/learn/helpful-links.md)
- [RAILGUN 协议扣费与Broadcaster费用](https://docs.railgun.org/wiki/learn/railgun-deductions.md)
- [RAILGUN Private Proofs of Innocence](https://docs.railgun.org/wiki/assurance/private-proofs-of-innocence.md)
- [RAILGUN View-Only Wallets](https://docs.railgun.org/developer-guide/wallet/private-wallets/view-only-wallets.md)
- [RAILGUN Balance and Sync Callbacks](https://docs.railgun.org/developer-guide/wallet/private-balances/balance-and-sync-callbacks.md)
- [RAILGUN Private Transactions 阶段](https://docs.railgun.org/developer-guide/wallet/transactions/ux-private-transactions.md)
- [RAILGUN Unshield Base Token](https://docs.railgun.org/developer-guide/wallet/transactions/unshielding/unshield-base-token.md)
