認識加密貨幣

私鑰、助記詞、錢包地址分別是什麼:三個名詞的關係一次講清

助記詞是源頭,私鑰從它推出,地址再從私鑰推出、可以公開。用 BIP-39 與 BIP-84 的公開規格把這條單向推導鏈攤開,講清楚哪一層能給人、哪一層弄丟會救不回。

私鑰、助記詞、錢包地址分別是什麼:三個名詞的關係一次講清

先給結論:助記詞是源頭,私鑰是從它推出來的鑰匙,錢包地址是從私鑰再推出來、可以公開的收款號碼。 推導只能往下走,不能往回推。所以三者的保管方式完全相反:地址可以貼給任何人,私鑰和助記詞誰都不能給。

很多人第一次碰到這三個詞,是在下載錢包 App 時被要求「請抄下這 12 個單字」,或是在交易所儲值頁看到一長串英數字。名詞同時冒出來,很容易以為它們是三種密碼、或是同一件事的三種叫法。都不是。下面用一條推導鏈把它們排好順序,再講清楚每一層弄丟或外洩時,各自會發生什麼。

三個名詞的上下關係:一條只能往下推的鏈

把它想成一棵樹:

  1. 助記詞(seed phrase / recovery phrase):最上面的根。通常是 12 或 24 個英文單字。
  2. 私鑰(private key):從助記詞往下推,可以推出很多把。每一把私鑰管一個地址。
  3. 公鑰(public key):每把私鑰用數學運算算出對應的公鑰。一般使用者幾乎不會直接看到它。
  4. 錢包地址(address):公鑰再經過雜湊運算,縮短成你在畫面上看到的那串字,例如比特幣的 bc1q… 或以太坊的 0x…。

每往下一層,都是單向的:拿到地址推不出公鑰以外的東西,拿到公鑰推不出私鑰,拿到私鑰也推不回助記詞。反過來,只要握有上層,下層全部都能重新算出來。

這就是為什麼錢包 App 只要你備份助記詞,不會要你把每一把私鑰抄下來——私鑰隨時可以從助記詞重算。也是為什麼〈區塊鏈是怎麼確認「喊話的人是本人」〉那篇說「私鑰等於資產所有權」:區塊鏈上沒有身分證,能用私鑰簽名的人就被當成主人。

BIP-84 規格的公開測試資料:同一組 abandon…about 助記詞往下推出三個地址,每個地址各有一組 privkey、pubkey 與以 bc1q 開頭的 address

圖:比特幣改進提案 BIP-84 在 GitHub 上公開的測試資料。最上面一行是助記詞,下面三組各自是一把私鑰(privkey)、它算出的公鑰(pubkey)和地址(address),第一個收款地址是 bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu。這組助記詞是全世界開發者都拿來測試用的公開範例,任何人都能控制它,千萬不要往這些地址轉錢。

這張圖剛好把整條鏈攤開:一組助記詞 → 很多把私鑰 → 每把各自的公鑰 → 每把各自的地址。你的錢包 App 裡看到「換一個新的收款地址」,背後就是往下多推一把私鑰而已,助記詞沒變。

助記詞是什麼:為什麼是 12 或 24 個字

助記詞的格式大多數錢包都遵循同一份公開規格 BIP-39。它的做法是:先產生一串隨機數字,再把這串數字切成每段 11 個位元,每段對應到一份 2,048 個單字的詞表裡的一個字。

BIP-39 規格中的對照表:初始亂數 128 位元對應 12 個字,256 位元對應 24 個字,並附檢查碼長度

圖:BIP-39 規格原文的對照表。ENT 是亂數長度,CS 是檢查碼長度,MS 是最後得到的單字數:128 位元亂數加 4 位元檢查碼得到 12 個字,256 位元加 8 位元得到 24 個字。

從這張表可以讀出幾件對你有用的事:

  • 12 個字和 24 個字的差別是亂數長短,不是一個比較「進階」。12 個字對應的 128 位元亂數,用猜的已經不可能猜中;24 個字是更保守的選擇。
  • 最後一個字有一部分是檢查碼。 抄錯一個字時,錢包多半會告訴你「助記詞無效」,而不是默默打開一個空錢包。但這不是保險:以 12 個字來說,檢查碼只有 4 個位元,隨便亂換一個字仍有大約十六分之一的機率剛好通過。所以抄完要逐字核對,不要靠錢包幫你抓錯。
  • 單字的順序也是內容的一部分。 同樣 12 個字換了順序,就是另一個錢包。

規格裡還有一個常被忽略的選項:助記詞密碼(passphrase),有些錢包叫它「第 25 個字」。同一組助記詞加上不同的密碼,會推出一整套完全不同的私鑰和地址。它多一層保護,但也多一個會忘記的東西——如果你設了卻沒記下來,光有助記詞也救不回資產。新手不設定也完全可以,只要知道有這個東西,免得哪天恢復錢包時看到餘額是零而以為錢被偷了。

私鑰是什麼:真正在「簽名」的那把鑰匙

私鑰本質上是一個極大的隨機數字。比特幣和以太坊用的私鑰都是 256 位元,可能的組合數大約是 10 的 77 次方,這是它「猜不到」的來源。

你在錢包裡按下「送出」時,錢包做的事是用私鑰對這筆交易簽名,再把簽好名的交易送上網路。其他節點用你的公鑰驗證簽名,確認無誤就收進區塊。整個過程私鑰本身從來不需要離開你的裝置——這也是硬體錢包的設計原理:簽名在裝置內完成,連網的電腦或手機只拿到簽好的結果。

一般使用者不太會直接接觸單把私鑰,除非:

  • 從舊錢包「匯出私鑰」再「匯入」到別的 App;
  • 某些網站或「客服」要你貼上私鑰來「驗證」或「解凍」。

前者偶爾有正當用途,後者百分之百是詐騙。不管是哪一種,私鑰被看到一次,就應該當成已經外洩,把資產轉到新的錢包。

錢包地址是什麼:唯一可以公開的那一層

地址是給別人付錢給你用的,就像帳號,所以它本來就設計成可以公開。從地址推不回私鑰,貼在網路上也不會讓人把幣領走。

但「可以公開」不等於「公開沒有代價」。區塊鏈是公開帳本,任何人拿到你的地址,都能在區塊瀏覽器上看到這個地址的餘額和每一筆進出紀錄。這部分在〈比特幣其實不匿名,鏈上每一筆都查得到〉有完整說明。實際的建議是:給不同對象用不同的收款地址(大多數錢包會自動幫你換新地址),不要把存大錢的地址到處貼。

關於地址,還有兩個新手常卡住的地方:

同一組助記詞,在不同幣種、不同鏈上會有不同長相的地址。 比特幣地址常見 bc1q 開頭,以太坊是 0x 開頭加 40 個十六進位字元。以太坊系的鏈(例如 BNB Chain、Polygon)常常共用同一個 0x 地址,看起來一模一樣,但其實是不同網路上的不同帳本。轉帳選錯網路,就是從這裡出事。

同一組助記詞,換一個錢包 App 恢復,可能看到不同的地址。 因為從助記詞往下推私鑰時,還要選一條「推導路徑」(就是上面截圖裡 m/84'/0'/0'/0/0 那串)。不同錢包預設的路徑可能不一樣,恢復後看到餘額是零,多半是路徑或助記詞密碼不同,不一定是被盜。這時先查原本那個 App 用的是哪種地址格式,再到新 App 的進階設定裡切換。

放在交易所時,這三樣東西在誰手上?

在交易所買幣,你會看到一個「儲值地址」,但那個地址背後的私鑰和助記詞在交易所手上,不在你手上。你登入交易所用的帳號密碼、兩步驟驗證,管的是你的交易所帳戶,不是區塊鏈上的私鑰。

這就是常聽到的「Not your keys, not your coins」:幣放在交易所,你持有的是交易所對你的一筆欠款紀錄。這不一定比較差——自己保管要承擔弄丟助記詞的風險,交易所保管要承擔平台出事的風險。兩種代價各自實際出過什麼事,可以看〈加密貨幣的三種丟幣路徑〉。

一張表整理:哪一層能給人、弄丟會怎樣

助記詞 私鑰 錢包地址
長什麼樣 12 或 24 個英文單字 一長串英數字(通常看不到) bc1q…、0x… 等
可以給別人嗎 絕對不行 絕對不行 可以,收款就是靠它
被別人拿到 錢包裡所有地址的資產都會被轉走 該地址的資產會被轉走 對方看得到餘額與紀錄,但轉不走
自己弄丟 換手機、裝置壞掉後就救不回 只要助記詞還在,可以重算 沒影響,助記詞還在就能重新產生
該怎麼存 抄在紙上或金屬板,離線、分處保存 不需要另外備份 不需要保密

讀者常追問的幾件事

助記詞可以拍照或存在手機備忘錄嗎? 不建議。相簿與備忘錄常會自動同步到雲端,雲端帳號一旦外洩,助記詞就跟著外洩。離線抄寫是目前最被普遍採用的做法,具體怎麼存可以參考上面提到的丟幣路徑那篇。

交易所的帳號密碼算是私鑰嗎? 不算。密碼忘了可以透過交易所的身分驗證流程重設;助記詞和私鑰沒有人能幫你重設,因為沒有任何一個機構保存它。

錢包 App 刪掉了,幣還在嗎? 還在。幣是記在區塊鏈上,不是存在 App 裡。只要助記詞(以及你有設定的助記詞密碼)還在,在任何相容的錢包裡都能恢復。反過來,App 還在但助記詞沒備份,手機一壞就沒了。

有人只知道我的地址,能做什麼? 能查你的餘額和交易紀錄、能轉錢給你,但轉不走你的幣。要小心的是對方「轉一筆小額給你」之後接著來的話術,例如要你去某個網站「領取」或「解鎖」,那一步才是陷阱。

還沒買幣,需要現在就搞懂這些嗎? 如果你打算一直放在交易所,助記詞暫時用不到,但最好知道它的存在:哪天有人以任何理由跟你要「12 個英文字」,你就能立刻認出這是詐騙。

資料來源