← 所有文章

哈希值是什麼?交易哈希與TXID一次看懂

發布於: 2026年10月4日

另有以下語言版本:EnglishEspañolРусский

哈希值是什麼?簡單說,它是一段資料的簡短指紋。台灣的正式譯名是「雜湊值」,幣圈則習慣照英文 hash 音譯成「哈希值」,兩者是同一件事。雜湊函數把任何大小的文字、檔案或紀錄,算成一串固定長度的字元;同樣的資料永遠得到同樣的哈希值,只要改動一個字元,整串就完全不同。區塊鏈靠的就是這一點:每個區塊、每筆交易都有自己的哈希值,連錢包地址也是雜湊算出來的。我們經營 notrace.exchange 這個混幣服務,在 2026 年 10 月 4 日親手把三條鏈上真實區塊與真實轉帳的哈希值重算了一遍,讓您看看它們從哪裡來、又會讓人看到什麼。

2026 年 10 月 4 日我們自己重算的哈希值:一個 Bitcoin 區塊、Ethereum 與 Tron 的交易,以及交易哈希看得到什麼

哈希值是什麼

網際網路安全詞彙表(RFC 4949)對雜湊函數的定義是:把任意長度的位元字串,對應成固定長度字串的函數。算出來的結果就叫哈希值、雜湊值或摘要。

直接看例子最清楚。拿 Bitcoin 所用的 SHA-256 函數,計算 1 BTC 這五個字元的哈希值:

174b3310 11288fd7 53a83579 1557e1b3 591b2326 96b01f33 ce4f6f7d f9cd8c4b

把數字改掉一個,計算 2 BTC:

f8d78110 583c3ebd 82c5e630 d6191b71 f0e9cce8 bf144e54 677566b2 73125e6c

空格是我們為了好讀才加上的;真正的 SHA-256 哈希值沒有空格,是連續 64 個由數字和 a 到 f 組成的字元。兩個輸入只差一個字元,兩個哈希值卻只有 3 個位置相同(共 64 個),256 個位元裡變了 131 個。您可以用任何 SHA-256 計算工具重做一次,結果會一字不差。

哈希值的長度和輸入大小無關。我們把 1 BTC 重複一百萬次,成了五百萬位元組的文字,算出來仍然是 64 個字元:14a2c3a5…f0c8。

一切所依靠的三個性質

  • 相同輸入,相同哈希值。 否則就沒有東西可以比對。
  • 沒有回頭路。 從哈希值算不回原始資料。描述 SHA-256 的標準之所以稱它「安全」,正是因為要找出對應某個摘要的訊息,在計算上不可行(RFC 6234)。
  • 找不到兩個不同輸入有相同的哈希值。 同一份文件把這列為安全的第二個條件。這種撞在一起的情況叫作碰撞。

函數也會變老。2017 年 2 月 23 日,Google 宣布找到較舊的 SHA-1 函數的第一個碰撞(Google Security Blog);至於 SHA-256,我們沒有看到任何已找到的碰撞。

有兩點常被忽略。雜湊不是加密:它沒有金鑰,也沒有東西可以拿來「解開」哈希值。另外,沒有回頭路並不能保護又短又好猜的資料:電話號碼或簡單密碼的哈希值,把所有可能試一遍就找得出來。

區塊哈希:我們自己驗一次

Bitcoin 的每個區塊都有一個 80 位元組的區塊頭。依開發者文件,裡面有六個欄位:版本、前一個區塊頭的哈希值、交易的默克爾根、時間、編碼後的難度門檻,以及礦工不斷更換的數字(nonce);區塊頭要用 SHA-256 連算兩次。

我們取了區塊 969,824(2026 年 10 月 4 日 09:43:54 UTC 產生,內含 6,083 筆交易),下載它的 80 個位元組,連做兩次 SHA-256,再依顯示慣例把位元組順序反過來。結果是:

00000000 00000000 00021913 7ce6b558 da3de58c 6e9dce0d bc734a06 77b10188

這和區塊鏈瀏覽器上顯示的區塊哈希一字不差,例如 Blockstream。在一般電腦上,這個驗算不到一秒。

從這串字元可以直接看出兩件事。

開頭的零。 一共十九個,而且不是巧合。Bitcoin 原始論文把工作量證明描述為:尋找一個數值,使它的哈希值以若干個零位元開頭。礦工不斷更換 nonce 重新計算,直到結果夠小為止;在這個區塊裡,算中的數字是 3,347,284,606。難度為 132.7 兆時,平均要嘗試約 5.7 × 10²³ 次才能產生一個區塊,而驗證結果只需要算一次。

和過去的連結。 「前一個區塊頭的哈希值」欄位裡寫的是 00000000 00000000 0001f159…bcc9,正好就是區塊 969,823 的哈希值。只要改動舊區塊裡的一筆交易,它的哈希值就會變,和下一個區塊裡記的對不上,一路錯到鏈的最末端。關於這條鏈本身,見〈what is blockchain and what it shows〉(英文)。

交易哈希(TXID)是什麼

交易哈希是一筆交易的識別碼,也叫交易 ID、TXID 或 tx hash。它不是像訂單編號那樣依序發放的,而是從紀錄本身算出來的。所以不可能改了交易內容,還保有原來的哈希值。

每條鏈的算法不同,三種我們都驗過。

  • Bitcoin。 TXID 是對「節點之間傳遞的那個交易格式」做兩次 SHA-256(文件)。我們重算了 Bitcoin Wiki 列為第一筆 Bitcoin 交易的那一筆,也就是區塊 170 裡的 f4184fc5…9e16(275 位元組),以及區塊 969,824 裡一筆剛發生的交易。兩個哈希值都相符。
  • Ethereum。 交易哈希是對已簽署的交易做 Keccak-256。在區塊 26,118,233(09:56:23 UTC)裡,我們重算了前十二筆交易,十二筆全部相符。
  • Tron。 識別碼是對交易內容(不含簽章)做 SHA-256。區塊 86,811,707(09:56:27 UTC)裡有 372 筆交易,372 筆全部相符。

順帶一個發現。ethereum.org 的詞彙表說 Keccak-256 已被標準化為 SHA-3。但實際上,Ethereum 使用的 Keccak-256 和標準函式庫裡的 SHA3-256 算出來的結果不同:同樣是 1 BTC,我們得到的分別是 aa5c8c0c…b3ef 和 a87d1e9a…c3e7。要驗證 Ethereum 的哈希值,得用 Keccak-256 才行。

交易哈希在各條鏈上長得都一樣:64 個字元,在 Ethereum 上前面多一個 0x。在錢包裡,它出現在交易紀錄中,欄位名稱是「哈希」、「交易 ID」或「TXID」。

交易哈希看得到什麼

哈希值什麼都不隱藏。它是一個指標:把它貼進區塊鏈瀏覽器,整筆紀錄就攤開了。

點開區塊 170 那筆轉帳的連結,您看到的和任何人看到的一樣:一個 50 BTC 的輸入,兩個輸出,分別是 10 BTC 和 40 BTC,雙方的地址、區塊高度和時間。紀錄裡沒有姓名。今天的轉帳也是如此:用哈希值就能查到付款地址、收款地址、金額、手續費、時間和確認數。

由此得出三個實用的結論。

  • 把交易哈希給別人看是安全的,意思是它不會讓人動用您的幣。 光憑它什麼都花不了。
  • 但給出哈希值,就等於給出整筆轉帳。 對方除了金額,還會知道您的地址,而一個地址會露出它的餘額和全部歷史。在 Bitcoin 上,這還包括找零地址,也就是您的另一個地址。
  • 哈希值是一張收據。 它證明有一筆這個金額、送到這個地址的轉帳已經寫進區塊。「我轉了,您沒收到」的爭議,用它一分鐘就能解決。

您的地址會讓陌生人看到什麼,見〈what is a wallet address〉;紀錄是怎麼從一筆轉帳被追到下一筆的,見〈is Bitcoin traceable〉(皆為英文)。

地址也是雜湊算出來的

錢包地址不是哪個機構發的,而是從公鑰算出來的。傳統的 Bitcoin 地址,是先對公鑰做 SHA-256,再對結果做 RIPEMD-160,最後加上校驗碼編碼而成(Bitcoin Wiki)。我們拿 Bitcoin 第一個區塊裡寫著的公鑰,照這些步驟算下來,得到的是 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa,正是收到第一個區塊獎勵的那個地址。

在 Ethereum 上,地址是公鑰的 Keccak-256 哈希值的最後 20 個位元組,前面加上 0x(ethereum.org)。

因為雜湊沒有回頭路,從地址算不出金鑰;而錢包裡同樣寫著「哈希」的地方,指的可能是不同的東西。交易哈希是一筆轉帳的紀錄,地址則是轉帳要去的地方。私鑰由誰保管會有什麼差別,見〈託管錢包與非託管錢包的差別〉。

哈希率是什麼

哈希率(也叫算力)是一條鏈上的礦工每秒計算的哈希值數量。它無法直接測量,只能從難度推估,公式見 Bitcoin Wiki。以我們取的這個區塊計算,約為每秒 950 EH,也就是每秒 950 × 10¹⁸ 次嘗試。哈希率越高,改寫過去的區塊就越貴:這些工作全部得重做一遍。

常見問題

能從哈希值還原出原始資料嗎? 如果資料夠長、夠難猜,就不能。又短又常見的資料,把所有可能試一遍就找得到。

兩筆不同的交易會有相同的哈希值嗎? SHA-256 有 2 的 256 次方種可能的值,我們也沒有看到任何已找到的碰撞。實務上,交易哈希是唯一的。

哈希值和地址是同一個東西嗎? 不是。地址說明幣送到哪裡,交易哈希說明這件事留下的是哪一筆紀錄。一個地址可以有成千上萬筆交易,每筆都有自己的哈希值。

轉帳「卡住」了怎麼辦? 用哈希值到瀏覽器裡查。查得到紀錄但確認數是零,表示這筆轉帳還在等著被寫進區塊。完全查不到紀錄,表示錢包根本沒有送出去。

同一筆轉帳在不同鏈上的哈希值一樣嗎? 不一樣。每條鏈有自己的帳本和自己的紀錄;為什麼同一個 USDT 在兩條鏈上是兩種不同的代幣,見〈TRC20 vs ERC20〉(英文)。

我們在哪裡

在本服務裡,哈希值出現在兩個地方,兩處都可以驗證。

  • 在訂單頁面上,兩筆出款各附有一個交易哈希,並連到所在鏈的瀏覽器。那就是您的收據:查這筆轉帳的方式,和我們查別人轉帳的方式一樣。
  • 付款前訂單附上的那封信,開頭兩行是 -----BEGIN PGP SIGNED MESSAGE----- 和 Hash: SHA512。簽章不是簽在文字本身上,而是簽在它的哈希值上:OpenPGP 簽章就是這樣運作的(RFC 9580)。把信改掉一個字元,在我們的 PGP 金鑰頁面上驗證就不會通過。

其餘簡單說明。出款分成兩筆,送到您的兩個地址,各有 0 到 6 小時的延遲。延遲進行期間,資金由本服務保管:條款第 8 條寫明,在這段時間內本服務是這些資金的保管人。2026 年 10 月 4 日我們的服務費是 0.5%,最新數字隨時見常見問題。

有四種幣有自己的頁面,會直接以該幣開啟表單並顯示目前的最低額:比特幣混幣器、Ethereum 混幣、Solana 混幣和 USDT 混幣。

從哪裡開始

拿出您最近一筆轉帳的哈希值,貼進那條鏈的瀏覽器:您看到的,就是任何拿到這個哈希值的人會看到的。想親手感受這個函數,就打開一個 SHA-256 計算工具,先輸入 1 BTC,再輸入 2 BTC,和上面兩串比對看看。加密貨幣本身是什麼、由誰發行,見〈加密貨幣是什麼?新手一次看懂〉。

分享: