風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
一文系統地理解比特幣地址相關的知識體系
WaterdripCapital
特邀专栏作者
2025-09-21 04:00
本文約28677字,閱讀全文需要約41分鐘
系統整理比特幣地址的生成原理、協議標準、地址類型與演進路徑,全景解析加密資產地址體系。

原文作者:付少慶,SatoshiLab,萬物島BTC 工作室

1.準備知識

在完全理解各種數位貨幣錢包地址之前,我們需要一些基礎知識。主要包括非對稱加密的公私鑰知識,雜湊演算法,常見的編碼知識,以及地址產生的基礎原理。比特幣的錢包位址都是根據BIP 協定設計出來的,大部分非比特幣錢包的位址也是根據BIP 相關協議來設計的。我們在梳理比特幣地址相關知識點的時候,也會輔助介紹其他相關的類型錢包地址。

1.1.非對稱加密知識與公私鑰

非對稱加密是現代密碼學的基石,由惠特菲爾德·迪菲(Whitfield Diffie)和馬丁·赫爾曼(Martin Hellman)在1976 年首次提出。其核心特點是使用一對數學上相關的密鑰:一個公開的公鑰和一個保密的私鑰。主要特點在於加密和解密過程由不同的金鑰完成:用公鑰加密的訊息,只能由對應的私鑰解密;反之,用私鑰簽署的訊息,可由對應的公鑰驗證其真實性。這完美解決了對稱加密中的金鑰分發難題,實現了無需提前共享秘密的安全通訊。

在當前數位貨幣領域,最常用的非對稱加密演算法是橢圓曲線數位簽章演算法(ECDSA),特別是比特幣等貨幣使用的secp 256 k 1 曲線,因其在相同安全強度下比傳統RSA 演算法金鑰更短、效率更高。在比特幣的Taproot 技術之後,在加密貨幣領域也開始使用Schnorr 數位簽章演算法,與ECDSA 相比,Schnorr 具有更多的優點。

公鑰與私鑰的演算法原理與角色(本文主要針對數位貨幣領域來描述)

在數位貨幣中,私鑰是一個隨機產生的巨大隨機數,是資產控制權的唯一憑證。公鑰則由私鑰透過單向的橢圓曲線乘法計算(即極易從私鑰推導出公鑰,但幾乎不可能從公鑰反向推導出私鑰)。錢包地址通常又是公鑰的哈希值。

其作用如下:

私鑰:用於產生交易簽名,以證明您擁有花費相應資金的權力。必須絕對保密。

公鑰:用於驗證交易簽章的有效性,確保簽章確實由對應的私鑰產生。同時,它用於產生公開的收款地址,可以安全地分享給任何人。

簡而言之,私鑰用於簽名,公鑰用於驗證和產生地址,二者結合確保了資產所有權轉移的安全性和可靠性。

在比特幣中,公鑰分為普通公鑰(uncompressed),壓縮公鑰(compressed)。普通公鑰是未壓縮的公鑰,以04 開頭表示,65 位元組長度。壓縮的公鑰以02(偶數)或03(奇數)開頭表示,33 位元組長度。

樣例如下:

public key (uncompressed): 04 b 4632 d 08485 ff 1 df 2 db 55 b 9 dafd 23347 d 1 c 47 a 457072 a 1 e 87 be 26896549 a 87378 938 78 93896549 a dff ebda 601780485263 da 089465619 e 0358 a 5 c 1 be 7 ac 91 f 4

public key (compressed):

02 b 4632 d 08485 ff 1 df 2 db 55 b 9 dafd 23347 d 1 c 47 a 457072 a 1 e 87 be 26896549 a 8737

傳統的未壓縮公鑰示意圖

壓縮公鑰示意圖

在與數位貨幣相關的公私鑰知識中,還有一個常見名詞WIF(Wallet Import)Private Key,其編碼格式Encoding 示意圖如下:Format

具體數據樣例如下:

1.2.比特幣常用的哈希演算法

除了公私鑰知識,還需要了解哈希演算法或叫做雜湊演算法.

單向雜湊函數(one-way hash function)有一個輸入和一個輸出,其中輸入稱為訊息(message),輸出稱為雜湊值(hash value)。單向雜湊函數可以根據訊息的內容計算出哈希值,而哈希值就可以用來檢查訊息的完整性。哈希函數可以將任意長度的信息輸出成定長的輸出值。

1. 我們介紹常用的SHA-256 和RIPEMD-160。

SHA-256 全名為安全雜湊演算法256 位,它能夠接收任何大小的輸入數據,然後透過一系列複雜的數學計算,產生一個固定長度(256 位,即32 位元組)的、看起來像一串隨機亂碼的字串。這個字串通常用64 個十六進位數字(0-9, AF)來表示。

例如,輸入hello world,經過SHA-256 計算後會得到:

b 94 d 27 b 9934 d 3 e 08 a 52 e 52 d 7 da 7 dabfac 484 efe 37 a 5380 ee 9088 f 7 ace 2 efcde 9

RIPEMD-160 的全名為RACE 原始完整性校驗訊息摘要-160 位元。一個專門產生更短數位指紋的生成器。它和SHA-256 類似,也是單向雜湊函數。它接收輸入,並產生一個固定長度(160 位,即20 位元組)的輸出,通常以40 個十六進位數字表示。

例如,輸入hello world,經過RIPEMD-160 計算後會得到:

d 7 d 56920283 f 17 ab 4 d 7 e 10 d 4 a 5 d 6 df 50 e 594 a 9 c 3

2. 在比特幣中常見的哈希演算法有

HASH 256 (雙SHA-256 最常使用)

HASH 160 (SHA-256 + RIPEMD-160)

SHA-256 (單SHA-256)

HMAC-SHA 512(HMAC with SHA-512)

3. 使用場景

(1)比特幣挖礦使用的是HASH 256,即雙,也就是區塊頭中的哈希值是HASH 256。 SHA-256

(2)交易標識-TXID 使用的是HASH 256。

(3)交易中的merkle root 使用的是HASH 256

(4)公鑰哈希使用的是HASH 160,即單次SHA 256+單次RIPE-160。

(5)擴充金鑰使用的是HMAC(SHA-512)

(6)簽名交易中使用的是HASH 256。

1.3.常見編碼知識Base 64、Base 58、Bench 32

在比特幣的錢包地址中需要了解幾種編碼知識,它們分別是Base 64、Base 58、Bench 32.

1. Base 64 編碼(不在比特幣中使用,但作為早期常見編碼,一起介紹)

設計目標:在僅支援文字的媒介(如電子郵件、HTML、XML)中安全、可靠地傳輸二進位數據,確保資料在傳輸過程中不被修改(因為某些字元在協定中有特殊意義,如換行符)。

原理:

l 將每3 個位元組(24 位元)的二進位資料分成4 組,每組6 位元。

l 每個6 位元的值(0-63)對應一個可列印字元。因為2^6 = 64,所以有64 個字元。

l 若輸入資料不是3 的倍數,則會用=字元進行填入。

字符集:

(共64 個字元)AZ, az, 0-9, +, /

主要特性:

l 高編碼效率:每個字元承載6 位元訊息,是三種編碼中效率最高的。

l 通用性強:廣泛用於MIME 電子郵件、資料URL(如網頁中的data:image/png;base 64,...)、儲存加密金鑰和憑證等。

l 包含非字母數字字元:使用+和/,這些字元在命令列或URL 中可能需要轉義。

l 無校驗功能:標準Base 64 編碼本身不提供錯誤偵測功能。

2. Base 58 編碼

設計目標:為人工處理而優化,避免視覺上的歧義,方便使用者手動輸入和校對。主要應用於比特幣的原始地址格式。

原理:

l 源自Base 64,但移除了容易混淆的字元。

l 將資料視為一個大的整數,然後連續除以58,將餘數對應到字元集。

l 前導零(0 x 00)位元組會被編碼為字元'1'。

字符集:

123456789 ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

(移除了0(零), O(大寫o), I(大寫i), l(小寫L), +, /,共58 個字元)

主要特性:

l 人性化:字符集去除了易混淆字符,大大減少了抄寫和輸入錯誤。

l 純字母數字:產生的字串非常“乾淨”,不含任何符號,易於在任何環境中複製貼上。

l 效率稍低:每個字元承載約5.857 位元訊息,效率略低於Base 64。

l 常與校驗和結合:在比特幣中實際使用的是Base 58 Check,它在編碼前添加了版本前綴和4 位元組的校驗和,可以有效檢測輸入錯誤。

應用:比特幣舊式位址(P 2 PKH,以1 開頭)、比特幣私鑰(WIF 格式)、其他加密貨幣如Litecoin 的位址。

3. Bech 32 編碼

設計目標:為比特幣SegWit(隔離見證)地址設計,具有更強的錯誤檢測和糾正能力,並且對大小寫不敏感,支援高效的大寫字母轉換。

相關的BIP 協定為:

BIP-173 Base 32 address format for native v 0-16 witness output

BIP-350 Bech 32 m format for v 1+ witness addresses

Bech 32 m 是Bech 32 的V 1 版本,有微小的關於checksum 演算法的調整。

原理:

l 基於BCH(Bose–Chaudhuri–Hocquenghem)碼構造,這是一種可以偵測並修正多個錯誤的糾錯碼。

l 結構為:HRP(人類可讀部分,如bc 1)+分隔符號(1)+資料部分(Base 32 編碼)+校驗和。

l 使用一個經過最佳化的32 個字元子集。

字符集:(所有字母都是小寫,但編碼是大小寫不敏感的)qpzry 9 x 8 gf 2 tvdw 0 s 3 jn 54 khce 6 mua 7 l

主要特性:

l 強大的錯誤偵測:能偵測到絕大多數的錯誤組合,並能自動修正少數錯誤。這比Base 58 Check 只能「偵測」而無法「修正」更先進。

l 大小寫不敏感:無論你用大寫或小寫輸入,地址都是有效的,使用者體驗更好。

l 緊湊高效:資料部分使用Base 32(每個字元5 位元),對於SegWit 資料來說編碼更緊湊。

l 人類可讀部分(HRP):地址開頭的bc 1(比特幣主網)或tb 1(比特幣測試網)明確了網路類型,不易搞混。

l 成本更高:編碼和解碼的運算複雜度高於Base 58。

應用:比特幣原生SegWit 位址(P 2 WPKH,以bc 1 q...開頭)、Taproot 位址(P 2 TR,以bc 1 p...開頭)。

如果讀者需要進一步詳細了解相關內容,推薦查閱以下網址,裡面有詳細的Encode 和Decode,Checksum 示意圖和步驟講解。

https://learnmeabitcoin.com/technical/keys/bech 32/

總結與如何選擇

通用資料傳輸:選擇Base 64。它是網路標準,幾乎所有程式語言都有現成函式庫,效率最高。

面向使用者的識別碼(如舊系統):選擇Base 58 Check。它產生的字串易於閱讀和手動輸入,能有效防止視覺錯誤。

現代加密貨幣地址(尤其是比特幣):強烈建議使用Bech 32(即bc 1 開頭的地址)。它提供了最高的安全性和使用者體驗,轉帳手續費也可能更低(因為SegWit 技術的原理,witness 欄位按照原有區域的四分之一計算)。它是未來的發展方向。

1.4.數位貨幣地址產生的基礎原理

數位貨幣的地址是根據公私鑰的密碼學機制產生一對公私鑰來完成的,然後透過一些演算法和標準,將公鑰推導成數位貨幣的地址。也經常透過某些機制產生一組私鑰和一組對應的公鑰。

其中私鑰的產生可以參考如下的示意圖。

推導出私鑰後,就能夠得到私鑰對應的公鑰。然後根據演算法計算錢包的位址。我們以最常見的比特幣地址產生的過程演示如下:

示範圖中是最常見的地址演算法產生原理圖,後面還有一些不同的比特幣地址類型,在原理圖中會有一些差異,會在後面的第三節中詳細講解每種地址類型。

2.比特幣地址的相關協議

有了產生比特幣位址相關的演算法與編碼,還需要一些具體的協定標準,這樣主要來自於BIP 協定和SLIP 協定。這兩個單字的縮寫和意思如下:

BIP:Bitcoin Improvement Proposal 比特幣改善提案

SLIP:SatoshiLabs Improvement Proposals 中本聰實驗室改進提案

2.1.三個核心協定(BIP-32、39、44)與相關協議

1. BIP-32 (Hierarchical Deterministic Wallets) -分層確定性錢包

的主要作用:從一個主種子(Master Seed)衍生出海量的金鑰對(私鑰和公鑰)。在這之前,錢包是一堆毫無關聯的私鑰集合,備份極為麻煩。 BIP-32 允許你只需要備份一個主種子(通常由BIP-39 的助記詞產生),就可以恢復整個錢包樹狀結構中的所有位址和資金。這極大地簡化了備份和復原流程。 BIP-32

BIP-32 協定裡面定義了具體的公私鑰衍生演算法:Child key derivation (CKD) functions

Private parent key → private child key

Public parent key → public child key

Private parent key → public child key

Public parent key → private child key

BIP-32 的分層確定性錢包的原理如下圖所示:

2. BIP-39 (Mnemonic code for generating deterministic keys) -助記詞

BIP-39 的主要作用:將BIP-32 中的隨機數主種子(一長串0 和1)轉換成一串易於人類書寫、備份和記憶的英文單字(通常是12 或24 個單字),協議中也說明可以使用英文句子(但很少有這種實作案例)。這就是你現在創建錢包時看到的助記詞短語。它大大改善了用戶體驗和備份的可靠性。

https://github.com/Roasbeef/bips/blob/bip-tap/bip-0039/bip-0039-wordlists.md

BIP 的官方提供瞭以下幾種語言的助記詞詞庫:English、Japanese、Korean、Spanish、Chinese (Simplified)、Chinese (Traditional)、French、Italian、Czech、Portuguese

3. BIP-44 (Multi-Account Hierarchy for Deterministic Wallets) -多幣種和多帳戶層次結構

BIP 44 是基於BIP-32 中所述的演算法和BIP-43 中所述的目的方案定義了確定性錢包的邏輯層次結構。為BIP-32 的密鑰樹定義了一個標準化的結構。它規定了一個清晰的路徑格式,例如:m/purpose'/coin_type'/account'/change/address_index。這套標準使得同一個HD 錢包種子可以用於管理多個不同的加密貨幣(如比特幣、萊特幣、以太坊),並在每種貨幣下管理多個帳戶,每個帳戶下又區分收款地址和找零地址。它確保了不同錢包提供者之間的兼容性。它允許處理多個代幣、多個帳戶、每個帳戶的外部和內部鏈以及每條鏈的數百萬個地址。

標準格式:m / purpose' / coin_type' / account' / change / address_index

m:主密鑰(master)

purpose':固定為44',表示遵循BIP 44 標準(強化派生)。

coin_type':幣種類型,例如比特幣是0',以太幣是60'(強化派生)。

account':帳戶索引,允許使用者在一個錢包內建立多個帳戶(強化派生)。

change:找零鏈。 0 用於外部鏈(External Chain)(接收位址),1 用於內部鏈(Internal Chain)(找零位址)。

address_index:地址索引,從0 開始順序產生。

範例:第一個比特幣帳戶的第一個接收地址的路徑是:m/44'/0'/0'/0/0

單撇號'表示強化派生

4. BIP-43(Purpose Field for Deterministic Wallets)確定性錢包的目的(purpose)字段

因為單獨的BIP-32 協定給實現者提供了過多的自由度,所以此協定專門描述了purpose 字段,這個協定鼓勵不同的方案申請單獨的BIP 號碼,並使用相同的purpose 字段,這樣就不會從重疊的BIP 32 空間產生位址。

在4.2 節我們會看到不同的BIP 定義的purpose 欄位。

用途代碼10001-19999 被保留給了SLIP 協定。

5. SLIP-0044(Registered coin types for BIP-0044)

此協議是定義了coin_type 的類型,在SLIP-0044 的常見數位貨幣類型中可以看到當前主流的coin_type 類型,多達數千種。可以在連結中查看詳細內容:

https://github.com/satoshilabs/slips/blob/master/slip-0044.md

2.2.地址格式協議與演進協議

1. BIP-11(M-of-N Standard Transactions)M/N 的標準交易

該協議提供了M/N 簽署的標準交易類型,主要是為了提供一種更安全地使用管理比特幣資產的方式。

其指令類型我們在3.3 節中可以看到範例。

其中鎖定腳本:m {pubkey}...{pubkey} n OP_CHECKMULTISIG

解鎖腳本:OP_0 ...signatures...

但該協議只定義了一種標準交易,並沒有定義特定的地址類型,後來這種多籤的腳本都被規範為P 2 SH 的地址類型。

2. BIP-13 (Address Format for pay-to-script-hash) - P 2 SH 位址

BIP-13 的主要作用:定義了以數字3 開頭的位址標準。這種位址不是直接對應一個公鑰,而是對應一個腳本的雜湊值。最常用於:

多重簽名錢包(需要多個簽名才能花費資金)。

相容性隔離見證。

意義:將複雜的腳本條件哈希成一個簡短的地址,簡化了使用者體驗,並開啟了複雜智能合約的大門。

地址格式的具體定義:

base 58-encode: [one-byte version][20-byte hash][4-byte checksum]

3. BIP-16(Pay to Script Hash)支付到腳本哈希

此協定是定義了支付到腳本哈希的功能,BIP-13 是定義了支付到腳本哈希的位址。可以看到BIP-16 定義的腳本如下:

鎖定腳本:OP_HASH 160 [20-byte-hash-value] OP_EQUAL

解鎖腳本:...signatures... {serialized script}

可以在3.4 節中查看具體範例。

4. BIP-49(Derivation scheme for P 2 WPKH-nested-in-P 2 SH based accounts)基於P 2 WPKH 嵌套P 2 SH 帳戶的派生方案

使用P 2 WPKH 嵌套P 2 SH ( BIP 141 )交易時,需要一個通用的衍生方案。它允許用戶無縫地使用具有相同主種子和/或單一帳戶的不同HD 錢包。因此,用戶需要建立專用的隔離見證帳戶,以確保只有與此BIP 相容的錢包才能偵測到帳戶並進行適當處理。

為了從根帳戶匯出公鑰,此BIP 使用與BIP 44 中定義的相同的帳戶結構,但僅使用不同的目的值來指示不同的交易序列化方法。

m / purpose' / coin_type' / account' / change / address_index

對於purpose 路徑級別,它使用“49”。其餘等級的使用方式依照BIP 44 中的定義。

為了從上面計算的公鑰匯出P 2 SH 位址,使用BIP 141 中定義的封裝:

witness: <signature> <pubkey>

scriptSig: <0<20-byte-key-hash>>

(0 x 160014{20-byte-key-hash})

scriptPubKey: HASH 160 <20-byte-script-hash> EQUAL

(0 xA 914{20-byte-script-hash}87)

5. BIP-84(Derivation scheme for P 2 WPKH based accounts)基於P 2 WPKH 帳戶的派生方案

使用P 2 WPKH 交易時,必須有一個通用的派生方案。它允許用戶無縫地使用具有相同主種子和/或單一帳戶的不同HD 錢包。因此,用戶需要建立專用的隔離見證帳戶,以確保只有與此BIP 相容的錢包才能偵測到帳戶並進行適當處理。

為了從根帳戶匯出公鑰,此BIP 使用與BIP 44 和BIP 49 中定義的相同的帳戶結構,但僅使用不同的目的值來指示不同的交易序列化方法。

m / purpose' / coin_type' / account' / change / address_index

對於purpose 級別,它使用84'。其餘等級依照BIP 44 或BIP 49 中的定義使用。

為了從上面計算的公鑰匯出P 2 WPKH 位址,使用BIP 141 中定義的封裝:

witness: <signature> <pubkey>

scriptSig: (empty)

scriptPubKey: 0<20-byte-key-hash>

(0 x 0014{20-byte-key-hash})

6. BIP-86(Key Derivation for Single Key P 2 TR Outputs)單密鑰P 2 TR 輸出的密鑰派生

此協定提供了單金鑰P 2 TR(BIP 341)輸出作為Taproot 內部金鑰。為了從根帳戶派生公鑰,此BIP 使用與BIP 44、49 和84 中定義的相同的帳戶結構,但腳本類型的目的值不同。

m / purpose' / coin_type' / account' / change / address_index

對於purpose 路徑級別,它使用86'。其餘等級的使用方式依照BIP 44、49 和84 中的定義進行。

7. BIP-173 (Base 32 address format for native v 0-16 witness outputs) -原生隔離見證位址(Bech 32)

BIP-173 的主要功能:定義了一種全新的位址格式,專為原生隔離見證(Native SegWit)交易設計,即通常以bc 1 q 開頭的位址。

優勢:

更低的交易費用:原生隔離見證交易的資料量更小,因此手續費更便宜。

防錯性更強:使用Bech 32 編碼,能有效防止輸入錯誤(如混淆大小寫'O'和數字'0')和偵測錯誤。

支援更大規模的升級:為未來的升級(如Taproot)鋪平了道路。

8. BIP-350 (Addresses for P 2 WPKH and P 2 WSH in Bech 32 m) - Taproot 位址(Bech 32 m)

BIP-350 的主要作用:對BIP-173 的Bech 32 格式進行了一次微小但關鍵的調整,創造了Bech 32 m 編碼,以支援新的Taproot 支付方式(P 2 TR)。這就是以bc 1 p 開頭的位址。

為什麼需要新格式:為了與先前的原生隔離見證(v 0 版本)區分開,因為Taproot 使用了新的見證版本(v 1)。 Bech 32 m 確保了不同版本之間的校驗和驗證規則不會衝突。

9. BIP-141 (Segregated Witness) -隔離見證本身

BIP-141 的主要作用:雖然BIP-141 本身是一個核心協議,但它引入了相容性位址(Nested P 2 SH),即包裹在傳統P 2 SH 腳本中的隔離見證交易。這種位址以3 開頭,看起來和多重簽章位址一樣。

目的:在生態系統的軟體和服務尚未升級支援原生Bech 32 位址時,為使用者提供提前享受隔離見證手續費優惠的方式。現在已逐漸被原生Bech 32 位址取代。

3.比特幣的地址類型與鎖定腳本類型

3.1.支付到公鑰哈希P 2 PK

P 2 PK(Pay To Public Key),支付到公鑰。這是最早的一種地址格式,是支付到公鑰,這個公鑰沒有經過地址的運算。目前已經很少使用。

為了對比學習,我們將其原理和範例資料總結到文件中:

(1)原理示意圖

(2)範例數據

為了創建一個P 2 PK 可以花費的腳本,樣本資料如下:

在output 中的鎖定腳本

OP_PUSHBYTES_65

049464205950188 c 29 d 377 eebca 6535 e 0 f 3699 ce 4069 ecd 77 ffebfbd 0f 95 e 3 c 134 cb 7 d 2742 d 80f 95 e 3 c 134 cb 7 d 2742 def 0f 95 e 3 c 134 cb 7 d 2742 def 0f 80516353 a 2 f 0 a 280547 bb 5512 dc 03 da 8

OP_CHECKSIG

在input 中的解鎖腳本

OP_PUSHBYTES_72

3045022100 c 219 a 522 e 65 ca 8500 ebe 05 a 70 d 5 a 49 d 840 ccc 15 f 2 afa 4 ee 9 df 783 f 06 b 2 a 3223102 ee 9 df 783 f 06 b 2 a 32231020645 206 586 da 25 c 70113 b 8 eea 41216440 eb 84771 cb 67 a 67 fdb 68 c 01

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/explorer/tx/1 db 6251 a 9 afce 7025 a 2061 a 19 e 63 c 700 dffc 3 bec 368 bd 1883 decfac 353357 a dout

在某些瀏覽器中,支付到公鑰,還是會被顯示成支付到公鑰的哈希值,也就是1 開頭的比特幣地址。

這種位址格式是1 開頭的長位址,例如:

13 QECtNiFPXijbMZmcgaTom 3 pCXwHvDYTUWGtRxZN 7 fY 24 u 4 fG 5 iiqXaQz 3 TvuQydLrkz 9 L 4 YhcYn 3 khC 44 yQwaZme 6 uoXQQ

形成的過程

public key (uncompressed) =

04283338 ffd 784 c 198147 f 99 aed 2 cc 16709 c 90 b 1522 e 3 b 3637 b 312 a 6 f 9130 e 0 eda 7081 e 373 a 96396 99639 caff cd 6 81 ff 08650 d 7 de 8 af 332 fe 4 d 8 cde 20

prefix + public key + checksum=

0004283338 ffd 784 c 198147 f 99 aed 2 cc 16709 c 90 b 1522 e 3 b 3637 b 312 a 6 f 9130 e 0 eda 7081 e 373 a 96 d aaffba 81 ff 08650 d 7 de 8 af 332 fe 4 d 8 cde 2067 da 00 eb

base 58 address =

13 QECtNiFPXijbMZmcgaTom 3 pCXwHvDYTUWGtRxZN 7 fY 24 u 4 fG 5 iiqXaQz 3 TvuQydLrkz 9 L 4 YhcYn 3 khC 44 yQwaZme 6 uoXQQ

3.2.支付到公鑰哈希P2PKH

P 2 PKH(Pay To Public Key Hash),支付到公鑰雜湊。 P 2 PKH 是比較常用的交易方式。

(1)原理示意圖

(2)範例數據

output 中的鎖定腳本

OP_DUP

OP_HASH 160

OP_PUSHBYTES_20

55 ae 51684 c 43435 da 751 ac 8 d 2173 b 2652 eb 64105

OP_EQUALVERIFY

OP_CHECKSIG

input 中的解鎖腳本

OP_PUSHBYTES_72

3045022100 c 233 c 3 a 8 a 510 e 03 ad 18 b 0 a 24694 ef 00 c 78101 bfd 5 ac 075 b 8 c 1037952 ce 26 e 91 e 075 ad 5808 ebc 12 abfd 26 bd 791256 f 367 b 04 c 6 d 955 f 01 f 28 a 772401

OP_PUSHBYTES_33

03 f 0609 c 81 a 45 f 8 cab 67 fc 2 d 050 c 21 b 1 acd 3 d 37 c 7 acfd 54041 be 6601 ab 4 cef 4 f 31

執行腳本的示意圖

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/explorer/tx/40 e 331 b 67 c 0 fe 7750 bb 3 b 1943 b 378 bf 702 dce 86124 dc 12 fa 5980 f 975 db 7

P 2 PKH 的位址形成示意圖

這種位址格式是1 開頭的位址,例如:1 JBSCVF 6 VM 6 QjFZyTnbpLjoCJTQEqVbepG

形成的過程

public key (uncompressed) =

04283338 ffd 784 c 198147 f 99 aed 2 cc 16709 c 90 b 1522 e 3 b 3637 b 312 a 6 f 9130 e 0 eda 7081 e 373 a 96396 99639 caff cd 6 81 ff 08650 d 7 de 8 af 332 fe 4 d 8 cde 20

hash 160(public key) = bc 73550 c 1612 ee 81155 d 29254217 cbd 60084 a 6 d 1

prefix+hash 160(publickey)+checksum =

00 bc 73550 c 1612 ee 81155 d 29254217 cbd 60084 a 6 d 1691 c 58 b 9

base 58 address = 1 JBSCVF 6 VM 6 QjFZyTnbpLjoCJTQEqVbepG

從理論上,一個未壓縮的130 個字元的公鑰,經過Hash 160 壓縮為40 個字元的雜湊值,就會有產生哈希碰撞的可能性,也就是位址會有重複的可能性(機率很小)。這樣不可怕嗎?為什麼使用公鑰的哈希作為地址,可以進一步延展閱讀:

https://bitcoin.stackexchange.com/questions/3600/why-are-bitcoin-addresses-hashes-of-public-keys

3.3.支付到多簽P 2 MS

P 2 MS(Pay To Multisig),支付到多簽。相關的原理解釋需要參考BIP 11:M-of-N Standard Transactions

(1)原理示意圖

對於上面的示意圖,使用2/3 多簽示意如下:

(2)範例數據

output 中的鎖定腳本

OP_2

OP_PUSHBYTES_65

04 d 81 fd 577272 bbe 73308 c 93009 eec 5 個acd 4 bc 22897 b 03 daa 422 b 9 bf 56646 b 342 a 2

OP_PUSHBYTES_65

04 ec 3 afff 0 b 2 b 66 e 8152 e 9018 fe 3 be 3 fc 92 b 30 bf 886 b 3487 a 525997 d 00 fd 91 2 d 012 dce5 d 5997 12 d 4211 b 228429 f 5 a 7 b 2 f 7 ba 92 eb 0475 bb 1

OP_PUSHBYTES_65

04 b 49 b 496684 b 02855 bc 32 f 5 daefa 2 e 2 e 406 db 4418 f 3 b 86 bca 5195600951 c 7 d 918 cdbe 5 e 6 da 3600951 c 7 d 918 cdbe 5 e 6 d1936 2 2936 25 3086976 b 2 c 0 c 7 b 4 e 459 d 10 b 34 a 316 d 5 a 5 e 7

OP_3

OP_CHECKMULTISIG

input 中的解鎖腳本

OP_0

OP_PUSHBYTES_72

3045022100 af 204 ef 91 b 8 dba 5884 df 50 f 87219 ccef 22014 c 21 dd 05 aa 44470 d 4 ed 800 b 7 f 6 e 40205 6061 bff 67048592 c 574 effc 217 f 0 d 150 daedcf 36787601

OP_PUSHBYTES_72

3045022100 e 8547 aa 2 c 2 a 2761 a 5 a 28806 d 3 ae 0 d 1 bbf 0 aeff 782 f 9081 dfea 67 b 86 cacb 321340220771 a 9695 2 ac 0 c 253 f 9 aff 391 e 58 a 3 c 7 cb 46 d 8 b 7 e 0 fdc 4801

執行腳本的示意圖

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/technical/script/p 2 ms/

P 2 MS(支付到多簽)實際上沒有地址格式,最常用的方式是將P 2 MS 支付腳本被包裹在P 2 SH 或P 2 WSH 腳本中,因此其地址參考其他兩種類似的地址。與直接使用P 2 MS 相比,具有以下優勢:

因為P 2 MS 沒有位址格式。因此,如果你希望對你的比特幣進行直接鎖定,你需要自行建立並發送原始鎖定腳本。更糟的是,這可能無法為你創建此交易,因為大多數錢包只允許你在進行交易時使用地址(而非原始腳本)。這樣的情況,使得只有專業的人員使用特定工具或開發工具來建構能花費這種UTXO 的input,對普通人具有較高的門檻。

P 2 MS 限制最多使用3 個公鑰。由於包含所有公鑰,P 2 MS 的鎖定腳本會變得非常龐大(導致手續費也很高),因此限制為3 個(以防止UTXO 集中儲存過多資料)。但是,使用P 2 SH,你可以使用最多15 個公鑰進行多重簽章鎖定。

因此,如果使用者願意,仍然可以使用P 2 MS,但使用P 2 SH 實現相同功能會更方便。

3.4.支付到腳本哈希P 2 SH

P 2 SH(Pay To Script Hash)支付到腳本哈希。可以支付到腳本哈希後,比特幣的交易表現的能力得到了很大的增強。

(1)原理示意圖

(2)範例數據

output 中的鎖定腳本

OP_HASH 160

OP_PUSHBYTES_20

748284390 f 9 e 263 a 4 b 766 a 75 d 0633 c 50426 eb 875

OP_EQUAL

input 中的解鎖腳本

OP_0

OP_PUSHBYTES_71

3044022100 d 0 ed 946330182916 da 16 a 6149 cd 313 a 4 b 1 a 7 b 41591 ee 52 fb 3 e 79 d 64 e 36139 d 66021 f db 3 e 9 c 771 c 938 a 1 ba 2 cf 8 d 2404416 f 70886 e 360 af 401

OP_PUSHBYTES_71

5121022 afc 20 bf 379 bc 96 a 2 f 4 e 9 e 63 ffceb 8652 b 2 b 6 a 097 f 63 fbee 6 ecec 2 a 49 a 48010 e 2103 a 767. 9311 f 5 ab 937 d 79 fcaeee 15 bb 2 c 722 bca 515581 b 4 c 052 ae

執行腳本的示意圖

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/technical/script/p 2 sh/

地址原理

Encode the hash 160 of a public key or script to a legacy address.

這種位址格式是3 開頭的位址(測試網是2 開頭位址),例如:

3 Nfmmt 78 SUwQTZtr 4 p 9 qty 5 Wgaykt 6 PhoS

形成的過程:

將使用者的公鑰或腳本進行Hash 160 編碼,得到結果:

hash 160(public key 或 Script) = d 5 ed 76 bbb 243 d 456240014178 ba 5 fbb 37 ada 36 bc

base 58 address = prefix(05)+hash 160(public key or Script)+checksum(32 e 485 ca)= 3 MCAKgGRPTMjYP 3 cD 1 vTeD 7 aQZJPVECAC 1

P 2 SH 的幾個明顯優點是:

l 更容易使用複雜的解鎖腳本(也為後續的Taproot 中使用MAST 樹提供了基礎);

l 更便宜的手續費(其實是將成本轉移到了花費者的身上,花費輸出的人需要使用更多的解鎖位元組);

lP 2 SH 提供更強的隱私;

l 因為output 中的位元組減少,整個UTXO 的集合更小。因為單一UTXO 的尺寸較小,更多的UTXO 可以放到記憶體中。

注意:在P 2 SH 中,贖回腳本的最大長度是520 個位元組。這也就是P 2 SH 腳本如果是P 2 MS,那麼最多是15 個公鑰(壓縮公鑰是33 位元組,15 個壓縮公鑰是33*15=495 位元組,是小於520 位元組的最大值)。

3.5.支付到包裹的見證公鑰哈希P 2 SH-P 2 WPKH

2 SHP 2 WPKH wrapped in a P 2 SH,將支付到見證公鑰哈希P 包裹到支付到腳本哈希P 2 SH 方式。 PP 2 WPKH()2 WPKH

(1)原理示意圖

(2)範例數據

output 中的鎖定腳本

OP_HASH 160

OP_PUSHBYTES_20

6 d 3 ed 4 cf 55 dc 6752 a 12 d 3091 d 436 ef 8 f 0 f 982 ff 8

OP_EQUAL

input 中的解鎖腳本

OP_PUSHBYTES_22

001402 c 8147 af 586 cace 7589672191 bb 1 c 790 e 9 e 9 a 72

執行腳本的示意圖

(3)這種支付形成地址的示意圖如下:

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/technical/script/p 2 sh-p 2 wpkh/

這種位址格式是3 開頭的位址,例如:3 Beer 3 irc 1 vgs 76 ENA 4 coqsEQpGZeM 5 CTd

3.6.支付到包裹的見證腳本哈希P 2 SH-P 2 WSH

P 2 SH-P 2 WSH(P 2 WSH wrapped in a P 2 SH),將支付到見證腳本哈希PS 包裹到支付到腳本哈希P 2 SH 方式中。

(1)原理示意圖

(2)範例數據

output 中的鎖定腳本

OP_HASH 160

OP_PUSHBYTES_20

257014 cec 2 f 75 c 19367 b 2 a 6 a 0 e 08 b 9 f 304108 e 3 b

OP_EQUAL

input 中的解鎖腳本

OP_PUSHBYTES_34

0020973 cfd 44 e 60501 c 38320 ab 1105 fb 3 ee 3916 d 2952702 e 3 c 8 cb 4 cbb 7056 aa 6 b 47 f

執行腳本的示意圖

(3)這種支付形成地址的示意圖如下:

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/technical/script/p 2 sh-p 2 wsh/

這種位址格式是3 開頭的位址,例如:3 NUPJunPTWu 5 ivNHoi 375 bsTiN 7 P 2 MpZC 2

3.7.支付到見證公鑰哈希P 2 WPKH

P 2 WPHK(Pay To Witness Public Key Hash)支付到見證公鑰哈希。這種是用於隔離見證地址的支付。

(1)原理示意圖

(2)範例數據

output 中的鎖定腳本

OP_0

OP_PUSHBYTES_20

841 b 80 d 2 cc 75 f 5345 c 482 af 96294 d 04 fdd 66 b 2 b 7

input 中的解鎖腳本(Witness 區資料)

3044022042 e 5 e 3 ed 2 a 41214 ae 864634 b 6 fde 33 ca 2 ff 312 f 3 d 89 d 6 aa 3 e 14 c 026 d 50 d 8 ed 320cd 0724490356 fbf 599 cdae 40 e 334 c 3667 a 9253 f 8 f 4 cc 57 cf 3 c 448001

03 f 465315805 ed 271 eb 972 e 43 d 84 d 2 a 9 e 19494 d 10151 d 9 f 6 adb 32 b 8534 bfd 764 ab

執行腳本的示意圖

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/technical/script/p 2 wpkh/

地址形成示意圖

使用前綴OP_0 來區分隔離見證的第一個版本(後面的Taproot 位址使用OP_1 來區分),後面是20 個位元組的公鑰雜湊,最後使用Bech 32 位址編碼格式。

這種位址格式是bc 1 q 開頭的位址,例如:

bc 1 qar 0 srrr 7 xfkvy 5 l 643 lydnw 9 re 59 gtzzwf 5 mdq

註:P 2 WPKH 只接受壓縮公鑰

3.8.支付到見證腳本哈希P 2 WSH

P 2 WSH(Pay To Witness Script Hash),支付到見證腳本哈希。

(1)原理示意圖

(2)範例數據

output 中的鎖定腳本

OP_0

OP_PUSHBYTES_32

65 f 91 a 53 cb 7120057 db 3 d 378 bd 0 f 7 d 944167 d 43 a 7 dcbff 15 d 6 afc 4823 f 1 d 3 ed 3

input 中的解鎖腳本

00

30440220415899 bbee 08 e 42376 d 06 e 8 f 86 c 92 b 4987613 c 2816352 fe 09 cd 1479 fd 639 f 182 c 02200 23891708158 bda 18690 c 165 a 41 b 0 aa 88303 b 97609 f 7801

304402203973 de 2303 e 8787767090 dd 25 c 8 a 4 dc 97 ce 1 aa 7 eb 4 c 0962 f 13952 ed 4 e 856 ff 8 e 02033 8 203 46407 d 10 b 3 c 8730407176 aef 4 dc 2 c 29865 eb 5 e 5542 bf 01

522103848 e 308569 b 644372 a 5 eb 26665 f 1 a 8 c 34 ca 393 c 130 b 376 db 2 fae 75 c 435000130 b 376 db 2 fae 75 c 43500013 2103 db 2 fae c15 c 43500013 2103 3 f 08617 dffb 8 e 568936 bdff 18 fb 057832 a 58 ad 4 d 1 b 752103 eed 7 ae 80 c 34 d 70 f 5 ba 93 f 93965 f 69 f 34 d 70 f 5 ba 93 f 93965 f 69 f 34 d 70 f 5 ba 93 f 93965 f 69 f 3 7 a 48789233 e 53 ae

執行腳本的示意圖

可以查看如下更詳細的演示連結:

https://learnmeabitcoin.com/technical/script/p 2 wsh/

地址形成示意圖

使用前綴OP_0 來區分隔離見證的第一個版本(後面的Taproot 位址使用OP_1 來區分),後面是32 個位元組的腳本哈希,最後使用Bech 32 位址編碼格式。

這種位址格式是bc 1 q 開頭的位址,例如:

bc 1 qmc 7 d 40 nxddfklulxq 55 f 2 jhupauaystdlxnj 69 asztedz 8 uz 6 e 3 q 9 lj 223

3.9.支付到Taproot 位址P 2 TR

P 2 TR(Pay To Taproot),支付到Taproot 地址。這種類型的支付有兩種情況一種是Key Path Spend,另一種是Script Path Spend,詳細內容請見下面的說明。

(1)原理示意圖

(2)範例資料1 -Key Path Spend

output 中的鎖定腳本

OP_1

OP_PUSHBYTES_32

0 f 0 c 8 db 753 acbd 17343 a 39 c 2 f 3 f 4 e 35 e 4 be 6 da 749 f 9 e 35137 ab 220 e 7 b 238 a 667

input 中的解鎖腳本

b 693 a 0797 b 24 bae 12 ed 0516 a 2 f 5 ba 765618 dca 89 b 75 e 498 ba 5 b 745 b 71644362298 a 45 ca 5 b 745 b 71644362298 a 45 ca 39230 10 a 2 9839600 f 7 e 35158 a 447 ea 182 ea 0 e 022 ae 01

Key Path Spend 執行腳本的示意圖

(3)範例資料2-3 Script Path Spend

output 中的鎖定腳本

OP_1

OP_PUSHBYTES_32

0 f 0 c 8 db 753 acbd 17343 a 39 c 2 f 3 f 4 e 35 e 4 be 6 da 749 f 9 e 35137 ab 220 e 7 b 238 a 667

input 中的解鎖腳本

01769105 cbcbdcaaee 5 e 58 cd 201 ba 3152477 fda 31410 df 8 b 91 b 4 aee 2 c 4864 c 7700615 efb 425 e 002 f 1864 c 39 10615 efb 425 e 002 f 146 a 694ca 06 9213 bd 33 f 825 fad 83977 fba 7 f 01

206 d 4 ddc 0 e 47 d 2 e 8 f 82 cbe 2 fc 2 d 0 d 749 e 7 bd 3338112 cecdc 76 d 8 f 831 ae 6620 dbe 0 ac

c 0924 c 163 b 385 af 7093440184 af 6 fd 6244936 d 1288 cbb 41 cc 3812286 d 3 f 83 a 3329

執行腳本的示意圖

可以查看如下更詳細的講解連結:https://learnmeabitcoin.com/technical/script/p 2 tr/

使用前綴OP_1 來區分隔離見證的第二個版本(前面的SegWit 位址使用OP_0 來區分),後面是20 個位元組的公鑰雜湊,最後使用Bech 32 位址編碼格式。

這種位址格式是bc 1 p 開頭的位址,例如:

bc 1 ppsxtf 9 y 28 tx 36 e 6 nlra 79 m 270 vuagzknt 97 w 6 ga 4 ah 5 g 7 ggxpu 8 s 6 z 8 ftw

4.比特幣交易中的衍生路徑地址與隱私保護

4.1.比特幣的交易變化歷史

比特幣的地址變化也和幾次比特幣的交易變化歷史有較大的關係。主要是比特幣的兩次隔離見證所產生的變化。

1. 白皮書中定義的交易(簡單交易模型)

早期最基本的比特幣交易,允許有多個輸入和最多兩個輸出。其中一個輸出的數值是給自己的零,另一個輸出是給外部的轉帳。 (備註:總輸入與總輸出之間的差額是手續費)

早期的地址是P 2 PK,P 2 PKH,P 2 MS,P 2 SH 幾種地址類型。

2. 隔離見證第一版(SegWit)中的交易

隔離見證(Segregated Witness,簡稱SegWit)是比特幣區塊鏈網路的協議升級方案,作為Bitcoin Core 用戶端的核心更新提案,由開發者Pieter Wiulle 於2015 年12 月提出,透過分離交易資料與簽署資料實現擴容。該方案保持與傳統比特幣網路的兼容性,避免了硬分叉。

其核心機制將區塊容量上限從1 兆位元組擴展至4 兆位元組(統計中的實際擴容約2-2.1 兆位元組),透過將數位簽章儲存於附加見證區塊釋放主鏈空間。該技術解決了交易延展性問題,改進交易識別產生方式防止雙重支付攻擊,並為閃電網路等第二層協定奠定基礎。作為被業界大多數企業採用的主流客戶標準,Bitcoin Core 的此次升級需全網95%算力支持,但實際支持率長期維持32%-33.8%。反對意見集中在技術效用爭議及第三方介入可能削弱比特幣去中心化特性。 2017 年8 月24 日該協議在比特幣主網啟動。

中的地址是P 2 WPKH,P 2 WSH,P 2 SH-P 2 WPKH,P 2 SH-P 2 WPSH 幾種地址類型。

3.隔離見證第二版(Taproot)中的交易

Taproot 技術在2020 年1 月提出,2021 年11 月,Taproot 以軟分叉的形式正式生效。此次升級由BIP 340、BIP 341 和BIP 342 組合。其中BIP 340 引入了可以同時驗證多個交易的Schnorr 簽名,取代了橢圓曲線數位簽名演算法(ECDSA),再一次擴大了網路容量並加快了批量交易的處理速度,為部署複雜的智慧合約提供了可能性;BIP 341 實現了默克爾化抽象語法樹(MAST)來優化區塊鏈上的資料儲存; 342(Tapscript)採用比特幣的腳本編碼語言擴充的比特幣原生腳步能力的不足。

Taproot 中的位址是P 2 TR 一種位址類型。

4.2.常見的已知派生路徑定義

我們先來了解比特幣的常見派生路徑,然後再看其他鏈的常見派生路徑。

1. 常見的比特幣派生路徑

BIP 中定義的派生路徑標準格式:m / purpose' / coin_type' / account' / change / address_index

比特幣最常見的幾種派生路徑,它們的主要區別在於purpose 字段,對應了不同的地址類型。

(1)BIP 44 - Legacy (原始)位址(1...)

路徑:m/44'/0'/0'/0/0

目的:最早的HD 皮夾標準,用於產生以1 開頭的P 2 PKH 位址。

特點:

相容性最好,所有錢包和交易所都支援。

交易手續費最高,因為其交易資料體積較大。

使用場景:現在主要用於從非常舊的錢包中恢復資金,或向不支持新地址類型的古老平台充值。

(2)BIP 49 - Nested SegWit (嵌套隔離見證)位址(3...)

路徑:m/49'/0'/0'/0/0

目的:用於產生以3 開頭的P 2 SH-P 2 WPKH 位址。

特點:

透過將SegWit 位址包裝在P 2 SH 腳本中來實現。

手續費比Legacy 低,但比Native SegWit 高。

相容性很好,幾乎所有的錢包和交易所都支援接收和發送到3 開頭的位址。

使用場景:在SegWit 推廣初期,作為向Native SegWit 過渡的兼容方案。現在仍然被廣泛支持。

(3)BIP 84 - Native SegWit (原生隔離見證)位址(bc 1 q...)

路徑:m/84'/0'/0'/0/0

目的:用於產生以bc 1 q 開頭的P 2 WPKH 位址。

特點:

手續費最低,因為其交易資料體積最小,是最高效的格式。

安全性最佳,完全受益於隔離見證的技術優勢。

相容性:目前絕大多數現代錢包、節點和交易所都已支援。但一些非常老舊的系統可能無法辨識。

使用場景:當前的首選和推薦標準,用於節省手續費並享受最新的技術特性。

(4)BIP 86 - Taproot (P 2 TR)位址(bc 1 p...)

路徑:m/86'/0'/0'/0/0

目的:用於產生以bc 1 p 開頭的P 2 TR 位址。這是比特幣的最新重大升級。

特點:

隱私性更好,使簡單支付和複雜腳本交易在鏈上看起來幾乎沒有區別。

效率更高,為複雜的智能合約(如閃電網路、DLCs)提供了更好的可擴展性和更低的費用。

簽章演算法(Schnorr Signatures)更有效率,支援金鑰聚合。

使用場景:代表比特幣的未來發展方向,適合希望使用最新技術、追求更低費用和更好隱私的用戶和應用程式。

(5)RGB 技術中所用到的衍生路徑

如果根據RGB-0044 協議,符合BIP-44 協議標準和SLIP-44 協議中隊coin 的定義,purpose 使用的是84,RGB 的官方派生路徑如下:m_type/84'

此外作者也查閱到RGB 官方網站中,根據LNPBP-46: LN derivations 中的描述,使用了m/9735'/的衍生路徑,具體的相關內容如下:

註:具體以哪一個為標準,還需要進一步的研究相關應用和RGB 協定文件。

(6)其他重要路徑

BIP 32 根路徑:m/0' (或有時用m/0)。一些老舊的實現或非標準錢包可能會直接使用這個路徑,但極不推薦,因為它不符合多幣種多帳戶的標準。

多重簽章錢包路徑:對於多簽錢包,每個協作者通常會使用自己的標準路徑(如m/48'/0'/0'/2')來衍生用於多籤的公鑰。這通常由協調多簽的錢包軟體(如Electrum, Specter)來管理,一般使用者無需手動處理。

測試網路徑:只需將上述路徑中的coin_type 從0'改為1'即可。例如,測試網Native SegWit 路徑為:m/84'/1'/0'/0/0。

2. 以下列出一些主流幣種及其常見的衍生路徑。

(1)以太坊(Ethereum)及EVM 相容鏈(BSC, Polygon, Avalanche C-Chain 等)

以太坊及其眾多衍生鏈共享相同的coin_type,因為它們使用相同的密碼學(secp 256 k 1 曲線)和地址格式。

路徑:m/44'/60'/0'/0/0

coin_type: 60'

地址格式: 0 x...

說明:這是MetaMask、Trust Wallet 等絕大多數錢包使用的預設路徑。所有基於EVM 的鏈(如BSC m/44'/60'/0'/0/0, Polygon m/44'/60'/0'/0/0)都使用同一個路徑和同一組私鑰。你在不同鏈上的地址看起來會一模一樣,但它們是不同鏈上的獨立帳戶。切換網路時,錢包軟體會透過RPC 節點來區分不同的鏈。

(2)幣安幣(BNB)信標鏈

BNB 有其獨立的鍊和位址系統,與EVM 鏈不同。

路徑:m/44'/714'/0'/0/0

coin_type: 714'

網址格式: bnb 1... (Bech 32)或tbnb 1... (測試網)

說明:用於幣安鏈(Binance Chain)上的BNB 資產。

(3)波卡(Polkadot)

路徑:m/44'/354'/0'/0/0

coin_type: 354'

位址格式:基於SS 58 格式,通常以1 開頭。

(4)索拉納(Solana)

路徑:m/44'/501'/0'/0'

coin_type: 501'

說明:注意,Solana 的路徑在最後使用了強化衍生0',而不是普通的0。這是其標準做法。

(5)卡爾達諾(Cardano)

Cardano 的衍生路徑比較特殊且複雜,它是基於自己的BIP 44-ADA 方案。

路徑:m/1852'/1815'/0'/0/0

purpose: 1852' (專為Cardano 設計)

coin_type: 1815' (ADA 的出生年份)

地址格式: addr 1... (Bech 32)

說明:這是Daedalus 和Yoroi 錢包使用的標準路徑。

(6)瑞波幣(Ripple - XRP)

路徑:m/44'/144'/0'/0/0

coin_type: 144'

地址格式: r... (Base 58)

(7)萊特幣(Litecoin)

萊特幣類似比特幣,也有多種地址類型。

Legacy (L...): m/44'/2'/0'/0/0

SegWit (M...): m/49'/2'/0'/0/0

Native SegWit (ltc 1 q...): m/84'/2'/0'/0/0

coin_type: 2'

(8)狗狗幣(Dogecoin)

路徑:m/44'/3'/0'/0/0

coin_type: 3'

地址格式: D... (Base 58)

(9)波場(Tron)

路徑:m/44'/195'/0'/0/0

coin_type: 195'

地址格式: T... (Base 58)

3. 非標準或例外情況

(1)門羅幣(Monero)

門羅幣不使用BIP 32/BIP 44 標準。它有自己的分層確定性錢包方案,使用不同的密碼學(Ed 25519 曲線)和密鑰結構。

它的衍生路徑看起來像:m/44'/128'/0' (但這不是標準BIP 32 路徑)

重要提示:你不能使用為比特幣/以太坊設計的助記詞在門羅錢包中直接恢復出資金,反之亦然。恢復門羅幣錢包必須使用門羅幣自己的助記詞和系統。

(2)硬體錢包的「以太坊經典」路徑

一些硬體錢包(如Ledger)為以太坊經典(ETC)設置了獨立的路徑,以將其與以太坊(ETH)區分開,儘管它們的地址格式相同。

以太幣(ETH): m/44'/60'/0'/0/0

以太坊經典(ETC): m/44'/61'/0'/0/0

4.3.隱私保護與多地址使用

比特幣有一個比較特殊的現象“找零地址變化”,或者說UTXO 模型的區塊鏈都可以有這種特性。要理解“找零地址變化”,需要理解三個關鍵知識點:

1. UTXO 模型(未花費交易輸出)

這是比特幣最核心的帳本模型,不同於傳統的帳戶餘額模型。

基本原理:比特幣網路記錄的不是你的“餘額”,而是一張張未花費的“支票”(即UTXO)。這些支票面額各異,一旦被花掉就會被銷毀,並創造出新的支票。

交易過程:當你支付時,你必須拿出你錢包裡的一張或幾張「支票」(輸入),它們的總面值必須大於或等於你要支付的金額。交易會建立兩個新的「支票」:

一張給收款人:面額等於支付金額。

一張給你自己(找零):面額等於(輸入總額-支付金額-交易手續費)。

關鍵結論:找零本質上是一筆支付給你自己的新產出(UTXO)。它和你付給別人的輸出在交易結構上沒有任何差別。

註:這裡使用支票這個單詞,而不使用現金(經常是定額印刷好的)這個單詞,是因為支票上的金額是隨機的,每張支票的金額都有可能不同,這更符合比特幣中UTXO 的場景描述。很多時候混合使用支票和現金都是表達同一個意思。

2. 隱私保護設計

使用固定的地址會嚴重損害隱私。

地址復用問題:如果所有UTXO(包括找零)都回到同一個地址,那麼區塊鏈分析機構或人員可以輕易地:

關聯你的所有交易:知道這個地址背後的所有資金流動。

估算你的財富:清楚地看到你的總收入。

破壞匿名集:無法將他人的交易與你的交易混合。

解決方案:為每一筆交易的找零使用一個全新的地址。這使得外部觀察者很難確定一筆交易中哪個產出是支付給商家的,哪個產出是找零回饋給自己的。這大大增加了區塊鏈分析的難度,保護了你的財務隱私。

3. HD 錢包(分層確定性錢包)的技術實現

手動為每次找零管理新地址和私鑰是不可行的,HD 錢包自動化了這個過程。

鍊式結構:HD 錢包從一個種子(助記詞)可以產生近乎無限個位址和私鑰。

派生路徑:如我們之前討論的,標準路徑m/44'/0'/0'/1/*專門用於找零(change = 1)。

m/44'/0'/0'/0/*: 用於產生接收位址(外部鏈)。

m/44'/0'/0'/1/*: 用於產生找零位址(內部鏈)。

工作流程:

你的錢包軟體在建構一筆交易時,如果需要找零,它會自動從內部的「找零位址池」(/1/*)中取出作為找零接收位址。下一個從未使用過的地址

這筆交易被廣播確認後,新的找零UTXO 就保存在這個新地址下。

當你下次花費資金時,你的錢包會同時掃描接收鍊和找零鏈下的所有UTXO,將它們一起作為可用的「輸入」。你無需手動管理,錢包會自動處理好一切。

簡單總結:「找零地址變化」是、和三者結合的必然結果。它不是可選項,而是比特幣錢包的標準行為。 UTXO 模型隱私保護需求HD 皮夾技術

使用區塊鏈瀏覽器:找一筆真實的交易(例如你自己錢包裡的一筆交易),在mempool.space 或blockstream.info 上查看它的詳情。試著分析它的輸入和輸出,猜猜哪一個是支付輸出,哪個是找零輸出(通常找零輸出會指向一個屬於發送方的新位址)。

使用測試錢包:在測試網路上建立一個新錢包,進行幾次發送和接收操作,然後觀察你錢包內的位址清單是如何變化的,UTXO 是如何產生和消耗的。

參考文獻

1. https://learnmeabitcoin.com/網站中關於比特幣地址相關的介紹,這是一個非常棒的學習比特幣知識的網站。

2. BIP 32:Hierarchical Deterministic Wallets,2012-02-11,https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

3. BIP 39:Mnemonic code for generating deterministic keys,2013-09-10,https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

4. BIP 44:Multi-Account Hierarchy for Deterministic Wallets,2014-04-24,https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

5. BIP 43:Purpose Field for Deterministic Wallets,2014-04-24,https://github.com/bitcoin/bips/blob/master/bip-0043.mediawiki

6. SLIP-0044:Registered coin types for BIP-0044,2014-07-09,https://github.com/satoshilabs/slips/blob/master/slip-0044.md

7. BIP 11:M-of-N Standard Transactions,2011-10-18,https://github.com/bitcoin/bips/blob/master/bip-0011.mediawiki

8. BIP 13:Address Format for pay-to-script-hash,2011-10-18,https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki

9. BIP 16:Pay to Script Hash,2012-01-03,https://github.com/bitcoin/bips/blob/master/bip-0016.mediawiki

10. BIP 49:Derivation scheme for P 2 WPKH-nested-in-P 2 SH based accounts,2016-05-19 https://github.com/bitcoin/bips/blob/master/bip-0049.mediawiki

11. BIP 84:Derivation scheme for P 2 WPKH based accounts,2017-12-28,https://github.com/bitcoin/bips/blob/master/bip-0084.mediawiki

12. BIP 86:Key Derivation for Single Key P 2 TR Outputs,2021-06-22,https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki

13. BIP 173:Base 32 address format for native v 0-16 witness outputs,2017-03-20,https://github.com/Roasbeef/bips/blob/bip-tap/bip-0173.mediawiki

14. BIP 350:Addresses for P 2 WPKH and P 2 WSH in Bech 32 m,2020-12-16,https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki

15. BIP 141:Segregated Witness,2020-12-16,https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki

BTC
技術
AI總結
返回頂部
  • 核心观点:详解比特币地址生成原理与协议演进。
  • 关键要素:
    1. 非对称加密与哈希算法是基础。
    2. BIP协议规范地址生成与派生。
    3. 地址类型从P2PKH演进至P2TR。
  • 市场影响:提升钱包安全与交易效率。
  • 时效性标注:长期影响。
下載Odaily星球日報app
讓一部分人先讀懂 Web3.0
IOS
Android