交易哈希(也叫 TXID、交易 ID 或 tx hash)是一笔区块链交易的唯一标识符。它由交易自身的数据经哈希运算得出,所以交易一经签名就固定下来,任何人都可以把它粘贴到区块浏览器里查看发送方、接收方、金额、手续费和确认状态。
在比特币和以太坊上,它是一串 64 个字符的十六进制字符串。以太坊和其他 EVM 链会在前面加上 0x,因此共 66 个字符。Solana 使用交易的签名,是一串更长的 base58 字符串;XRP Ledger 的哈希则以大写书写。
每个钱包、交易所和客服迟早都会向你要一个交易哈希,而大多数解释到「一个唯一标识符」就停下了。本指南讲得更深:这串字符由什么构成、为什么在每条链上长得不一样、从哪里复制你的哈希、如何读懂它打开的浏览器页面,以及少数几种拿到的哈希会失效的情况。
简要版
- 交易哈希和交易 ID 是同一个东西。钱包、交易所和区块浏览器交替使用这两个名字,还有 TXID、tx hash 和 hash ID。
- 长度能告诉你它属于哪个链系:64 个十六进制字符(比特币)、0x + 64 个字符(以太坊和各 EVM 链)。Solana 用的是交易签名,约 88 个 base58 字符。
- 你可以在钱包的交易详情或交易所的提币记录里找到它,然后在发送这笔交易的那条网络的区块浏览器上查询。
- 当交易被替换(加速、取消、replace-by-fee),或者转账从未离开交易所的内部账本时,哈希会失效。
1. 什么是交易哈希?
一笔区块链交易是一小块数据:谁付款、付给谁、付多少、手续费多少,再加一个签名。把这些数据送进网络的哈希函数,就得到一个固定长度的数字。这个数字就是交易哈希。数据的任何改动都会产生不同的数字,所以哈希就像指纹:它只指向一笔交易,不会指向别的。
节点、钱包和区块浏览器都用哈希作为查找键。你广播一笔交易时,接收它的节点会把哈希返回给你。钱包显示「待确认」时,它正在用这个哈希向网络轮询。交易所要求提供充值凭证时,它核对的就是这个哈希。从广播到确认,追踪一笔付款只需要这一个引用。
哈希本身不能证明任何事。它只是一个查找键,打开后浏览器显示的内容才是证明。
2. 交易哈希和交易 ID 是一回事吗?
是的。交易哈希、交易 ID、TXID、tx hash、txn hash 和 hash ID 指的都是同一串字符。用哪个词取决于你在哪里:比特币软件说 txid,以太坊工具说 transaction hash 或 txn hash,交易所的提币页面则常用 TXID 或 hash ID。只有 Solana 的术语在实质上有所不同。它的交易 ID 是交易的第一个签名,而不是整笔交易的哈希,所以它的文档称之为「签名」(signature)。
有两样东西常被与它混淆,但并不是一回事。钱包地址标识的是一个账户,而不是一笔付款(在比特币上以 1、3 或 bc1 开头)。区块哈希标识的是包含许多笔交易的整个区块。如果交易所拒绝了你粘贴的字符串,检查一下是不是复制成了这两者之一。
3. 交易哈希长什么样?
格式取决于链,通常凭格式就足以判断一个哈希属于哪个网络:
| 网络 | 格式 | 长度 | 示例 |
|---|---|---|---|
| Bitcoin、Litecoin、Dogecoin、Bitcoin Cash | 小写十六进制 | 64 个字符 | 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b |
| Ethereum、Polygon、BNB Smart Chain、Arbitrum、Base、Avalanche C-Chain 以及其他所有 EVM 链 | 0x 后接 64 个小写十六进制字符 | 66 个字符 | 0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017 |
| Solana | Base58 签名:数字和字母,没有 0x 前缀 | 约 87 到 88 个字符 | 比十六进制哈希更长,大小写字母混合 |
| XRP Ledger | 大写十六进制 | 64 个字符 | 数字和字母 A 到 F,全部大写 |
比特币的示例是有史以来记录的第一笔交易,即 2009年1月3日挖出的创世区块的 coinbase 交易;你可以在 mempool.space 上打开它。以太坊的示例是 ethereum.org 开发者文档中使用的那一笔。两者都是以十六进制书写的 32 字节,所以长度都是 64 个字符;0x 前缀是以太坊表示「这是十六进制」的惯例。Litecoin、Dogecoin 和 Bitcoin Cash 沿用比特币的格式,每条 EVM 网络都沿用以太坊的格式,所以 Polygon 或 Base 上的一笔交易看起来和以太坊主网上的完全一样。
Solana 的交易 ID 是交易的签名:64 字节的 Ed25519 签名,以 base58 而不是十六进制编码,所以它更长,并且同时包含大写和小写字母。XRP Ledger 的哈希和比特币的一样是 256 位,按惯例以大写书写。
4. 交易哈希是如何生成的?
每条链对签名后交易的各自序列化形式做哈希,这些差异解释了你会遇到的几件事。
- Bitcoin、Litecoin、Dogecoin、Bitcoin Cash
- txid 是交易按传统序列化方式的双重 SHA-256,这种序列化不包含 SegWit 输入的见证(签名)数据;见证数据由另一个标识符 wtxid 覆盖。BIP 141 就是这样定义的,这也是为什么一笔只花费 SegWit 输出的交易,其 txid 无法在确认前被第三方篡改。
- 以太坊和 EVM 链
- 哈希是签名并序列化后的交易的 Keccak-256,所以它只在交易签名之后才存在:ethers 之类的库对未签名交易的哈希返回 null。节点把这个 32 字节的哈希作为 eth_sendRawTransaction 的结果返回,同一个值就是你传给 eth_getTransactionByHash 和 eth_getTransactionReceipt 的参数。
- Solana
- 没有单独的哈希。交易上的第一个 Ed25519 签名,64 字节以 base58 字符串显示,就被用作它的 ID。
- XRP Ledger
- 对签名后交易的二进制形式做 SHA-512Half 哈希(即 SHA-512 的前 256 位),哈希前先加上字节 TXN 作为前缀,写成 64 个大写十六进制字符。
这些定义见 BIP 141、以太坊 JSON-RPC 规范、Solana 术语页面 和 XRP Ledger 数据类型参考。
它们的共同点是:哈希由签名交易的一方在交易到达网络之前算出。你点下发送的那一刻钱包就知道哈希了,所以它能在交易尚未确认时就显示出来。
5. 在哪里找到我的交易哈希?
这取决于交易是谁发出的。
- 自托管钱包(MetaMask、Ledger、Trust Wallet、Phantom、Electrum)
- 在钱包的活动或历史列表中打开这笔交易。详情页会显示哈希,通常带有复制按钮和一个「在浏览器中查看」的链接,点击就能打开。
- 交易所提币
- 进入提币记录。交易所广播交易之后,该条记录会显示 TXID,通常是一个链接。如果记录仍显示处理中,哈希还不存在,因为还没有任何东西被签名。
- 别人付款给你
- 向对方索要哈希,或者在区块浏览器上打开你的收款地址:所有涉及该地址的交易都会连同哈希一起列出。
- 你自己的代码
- 广播调用会返回它。使用 ChainGate SDK 时,它是 signAndBroadcast() 返回结果中的 transactionId 字段,比特币和以太坊上都一样(见第 10 节)。
复制整串字符。少一个字符或多一个空格的哈希会被交易所拒绝,而把比特币 txid 粘贴到以太坊浏览器里根本查不到。
6. 如何用哈希查询一笔交易?
把它粘贴到发送这笔交易的那条网络的区块浏览器里。浏览器会显示交易是待确认还是已确认、有多少个确认、打包它的区块、发送方和接收方、金额、支付的手续费,在以太坊上还会显示执行是成功还是失败。
| 网络 | 区块浏览器 | 看什么 |
|---|---|---|
| 比特币 | mempool.space、blockchain.com | 确认数(通常 6 个视为「最终」)、以 sat/vB 计的费率、未确认时在内存池中的位置 |
| 以太坊 | Etherscan | 状态(Success、Fail、Pending)、区块号、消耗的 gas 和交易手续费、代币转账 |
| Polygon、BNB Smart Chain、Arbitrum、Base、Avalanche | Polygonscan、BscScan、Arbiscan、Basescan、Snowtrace | 布局与 Etherscan 相同;每个浏览器只认识自己那条链 |
| Litecoin、Dogecoin、Bitcoin Cash | Blockchair 或各币种自己的浏览器 | 确认数和手续费,与比特币相同 |
| Solana | Solscan、Solana Explorer | 承诺级别(processed、confirmed、finalized)、以 SOL 计的手续费、执行的指令 |
| XRP Ledger | XRPScan、xrpl.org 浏览器 | 结果代码(tesSUCCESS 表示成功)、账本索引、目标标签(destination tag) |
先看状态。「Pending」或「unconfirmed」表示网络已经收到交易,但还没有区块打包它。「Success」加上一个或多个确认表示钱已经转移。「Fail」或「dropped」表示没有转移,而在以太坊上手续费仍然被扣掉了。关于以太坊交易页面上每个字段的含义,请阅读Etherscan 指南。
7. 为什么在区块浏览器上找不到我的交易?
「交易未找到」页面几乎总是以下原因之一:
- 网络不对
- 哈希来自与浏览器不同的链。一笔 USDT 提币可以走以太坊、Tron、BNB Smart Chain 或 Polygon,每条链都有自己的浏览器。按你提币时选择的网络来选浏览器。
- 太早了
- 交易传播需要几秒钟,交易所显示 TXID 可能比浏览器索引它早一会儿。等一分钟再刷新。
- 它从未上链
- 同一交易所两个账户之间的转账,以及银行卡或银行付款,记录在该公司的数据库里而不是区块链上,所以没有哈希可找。只有链上发送才有哈希。
- 它被替换了
- 如果交易被加速、取消或用 replace-by-fee 提高了手续费,替代交易有一个新哈希,网络会丢弃旧的那笔。下一节解释原因。
- 它过期了
- 手续费过低的比特币交易会在大约两周后被节点从内存池中丢弃。资金又可以花了,而旧的 txid 不再指向任何东西。
另一篇比特币手续费指南解释了如何选择一个能确认的手续费,以及交易卡住时该怎么办。
8. 交易哈希会变吗?
已确认交易的哈希永远不会变:它是区块的一部分,改动它就等于改动区块。确认之前,哈希可能被另一笔交易取代,从外部看就像是变了。
在以太坊和其他 EVM 链上,加速或取消一笔待确认交易,意味着用相同的 nonce 和更高的手续费签署一笔新交易,正如MetaMask 的帮助页面所描述的那样。网络保留被挖出的那一笔,丢弃另一笔。新交易有新的哈希,所以钱包最初显示的那个就成了死链接。比特币的 replace-by-fee(BIP 125)同理:替代交易是一笔不同的交易,有不同的 txid。
早期的比特币交易还有一个问题,即交易延展性(transaction malleability):第三方可以修改一笔未确认交易的签名编码,使它得到不同的 txid,而资金去向不变。隔离见证(BIP 141,2017 年起生效)把签名移出了 txid 所覆盖的数据,对于花费 SegWit 输出的交易,这个问题就此消除。如果你的钱包使用以 bc1 开头的地址,这不会影响你。
10. 如何在代码中获取哈希
如果你的应用会发送交易,请保存广播调用返回的哈希:它是状态查询、客服工单和对账的键。使用 ChainGate SDK,同样几行代码在比特币、Litecoin、Dogecoin、Bitcoin Cash 和任何 EVM 网络上都能用:
import { ChainGate, importWallet } from 'chaingate';
const cg = new ChainGate({ apiKey: process.env.CHAINGATE_API_KEY });
const wallet = importWallet({ phrase: process.env.MNEMONIC });
const eth = cg.connect(cg.networks.ethereum, wallet);
const tx = await eth.transfer(cg.networks.ethereum.amount('0.01'), '0x...');
tx.setFee(tx.recommendedFees().normal);
const sent = await tx.signAndBroadcast();
console.log(sent.transactionId); // 0x... on EVM chains, 64 hex chars on Bitcoin
sent.onConfirmed((details) => {
console.log('mined in block', details.blockHeight, details.transactionId);
});这篇用 JavaScript 发送加密货币的教程介绍了钱包、手续费和错误处理,而转账文档列出了广播结果上的每一个字段,包括上面用到的 onConfirmed() 回调。
11. 接下来看什么
你现在可以像区块浏览器一样读懂一个哈希:哪条链、哪笔交易、是否已最终确认。要看懂浏览器页面上的手续费那一行,请阅读以太坊上的 Gas 费是什么和比特币手续费如何运作;要查看现在在各网络上发送一笔交易要花多少,请打开Gas 追踪器。如果你希望用一个 TypeScript 库就把比特币和各 EVM 链上的广播、确认回调和交易 ID 都处理好,ChainGate 就能做到。
常见问题
加密货币里的交易哈希是什么?
一笔区块链交易的唯一标识符,由交易数据经哈希运算得出。在比特币上是 64 个十六进制字符;在以太坊和其他 EVM 链上是 0x 后接 64 个十六进制字符。把它粘贴到区块浏览器里,就能看到交易的状态、地址、金额和手续费。
交易哈希和交易 ID(TXID)是一回事吗?
是的。交易哈希、交易 ID、TXID、tx hash 和 hash ID 是同一串字符的不同叫法。只有 Solana 在实质上不同:它的交易 ID 是交易的第一个签名,而不是哈希。
交易哈希长什么样?
Bitcoin、Litecoin、Dogecoin 和 Bitcoin Cash:64 个小写十六进制字符。Ethereum、Polygon、BNB Smart Chain、Arbitrum、Base 和其他 EVM 链:0x 加 64 个十六进制字符,共 66 个。Solana:约 88 个字符的 base58 签名。XRP Ledger:64 个大写十六进制字符。
如何找到提币的交易哈希?
在交易所打开提币记录。提币广播之后,该条记录会显示 TXID,通常是指向区块浏览器的链接。如果仍显示处理中,说明交易尚未签名,哈希还不存在。
如何查询交易哈希?
把它粘贴到发送网络对应的区块浏览器里:比特币用 mempool.space 或 blockchain.com,以太坊用 Etherscan,其他 EVM 链用 Polygonscan、BscScan、Arbiscan 或 Basescan,Solana 用 Solscan。页面会显示状态、确认数、发送方、接收方、金额和手续费。
为什么浏览器说交易未找到?
通常是因为哈希属于与浏览器不同的网络、交易才发出几秒钟、它是交易所内部从未上链的转账,或者它被一笔加速或取消后带有新哈希的交易替换了。
交易哈希会变吗?
交易确认之后不会。在此之前,加速、取消或 replace-by-fee 会创建一笔带有新哈希的新交易,原来那笔被丢弃。早期的比特币交易还可能被第三方篡改(延展性),SegWit 在 2017 年修复了这一问题。
分享我的交易哈希安全吗?
安全。它不包含私钥,也不能用来转移资金。它会暴露这笔付款的地址、金额和时间,而这些在区块链上本来就是公开的。
交易哈希有多少个字符?
比特币系的链和 XRP Ledger 是 64 个,以太坊和 EVM 链因为 0x 前缀是 66 个。两者表示的都是同样的 32 字节。Solana 的交易 ID 是 base58 签名,通常 87 或 88 个字符。
使用 ChainGate 构建
把这些想法落地 —— ChainGate 提供钱包、交易与托管 RPC,一次安装即可覆盖以太坊以及 20 多条其他区块链。