bc1 地址的起源與設計目標
對比早期的比特幣錢包截圖,最直觀的變化莫過於收款地址格式。傳統地址多以 「1」 開頭的 Legacy(P2PKH)或 「3」 開頭的相容腳本(P2SH)呈現,字串長度介於 26 至 34 個字元。現代主流錢包生成的收款地址,絕大多數已切換為 「bc1」 開頭的原生隔離見證(SegWit)格式。
2017 年 8 月,比特幣網路透過 BIP141 啟用隔離見證(Segregated Witness,簡稱 SegWit)。該升級將交易資料拆分為「基礎交易資料」與包含簽名、贖回腳本的「見證資料(Witness)」。見證資料不再參與交易識別碼(TXID)的計算,有效解決了交易延展性問題,同時在區塊空間計價上享有專屬折扣。
為建立標準化的編碼格式,2017 年 3 月提出的 BIP173 定義了 Bech32 編碼規則,隨後以 bc1q 為代表的見證版本 0(v0)地址全面推廣。2020 年 12 月,BIP350 進一步定義了改進版編碼 Bech32m;2021 年 11 月 Taproot 升級啟用後,見證版本 1(v1)的 bc1p 地址正式投入使用。bc1 原生地址 目前涵蓋不同見證版本與腳本類型,在長度、手續費計算與錢包相容性上各有明確分工。

解析 bc1 地址的五個核心組成部分
Bech32 與 Bech32m 編碼格式具有高度結構化特性,一個合法的 bc1 地址可拆解為以下五個部分:
- 人類可讀部分(HRP):比特幣主網為
bc,測試網(Testnet)為tb,回歸測試網(Regtest)為bcrt。 - 分隔符:固定為數字
1。由於 Bech32 資料字元集中不包含數字「1」,解析模組可依此精確分離前綴與資料載荷。 - 見證版本字元:緊隨分隔符之後。「q」 代表見證版本 0(SegWit v0),「p」 代表見證版本 1(Taproot / SegWit v1)。
- 資料負載:經 5 位元分組重新編碼的見證程式。20 位元組的公鑰雜湊換算後為 32 個字元,32 位元組的腳本雜湊或 Taproot 輸出公鑰換算後為 52 個字元。
- 校驗和(Checksum):結尾固定 6 個字元,採用 BCH 多項式糾錯碼,可精準捕捉手動輸入或複製貼上過程中的拼寫錯誤。
Bech32 與 Bech32m 的校驗機制差異
BIP173 規範的 Bech32 校驗演算法存在插入或刪除字元時特定情境下的弱點。為確保未來升級安全性,BIP350 引入 Bech32m,將常數調整為 0x2bc830a3。目前的強制規範為:見證版本 0(bc1q)繼續沿用 Bech32,見證版本 1 及更高版本(bc1p 等)必須採用 Bech32m。若使用 Bech32 編碼 bc1p 地址,或使用 Bech32m 編碼 bc1q 地址,節點與錢包均會判定為無效地址。
字元集特性與大小寫規則
Bech32 專用字元集為 qpzry9x8gf2tvdw0s3jn54khce6mua7l(共 32 個字元)。設計時特別移除了數字 1、字母 b、i、o,徹底杜絕易與 6、l、0 混淆的視覺歧義。在大小寫規範上,地址必須為全小寫或全大寫,若在字串中混合大小寫字母,校驗模組將直接回傳錯誤。
bc1q 與 bc1p 規格對比
| 類型名稱 | 前綴特徵 | 見證版本 | 主網總長度 | 編碼標準 |
|---|---|---|---|---|
| P2WPKH(原生單簽) | bc1q | v0 | 42 字元 | Bech32 |
| P2WSH(腳本 / 多簽) | bc1q | v0 | 62 字元 | Bech32 |
| P2TR(Taproot 輸出) | bc1p | v1 | 62 字元 | Bech32m |
P2WPKH(42 字元 bc1q):存放 20 位元組的公鑰雜湊,是目前普及率最高、個人日常交易最常使用的原生 SegWit 格式。
P2WSH(62 字元 bc1q):存放 32 位元組的腳本雜湊,主要應用於閃電網路通道狀態鎖定及傳統多重簽名方案。
P2TR(62 字元 bc1p):封裝 32 位元組的 x-only 公鑰。Taproot 的核心優勢在於:在 UTXO 未花費時,鏈上無法區分該輸出是單簽還是複雜腳本;當透過「公鑰路徑(Key Path)」花費時,鏈上僅展現為單一 Schnorr 簽名(約 64 位元組),隱藏內部腳本樹結構。結合 MuSig2 聚合簽名方案,n-of-n 共同管理的資產在公鑰路徑結算時,輸入大小僅約 57.5 vB,享有與單簽相同的空間效率與隱私保護。
手續費機制與空間佔用計算
比特幣手續費的本質取決於交易佔用的「虛擬大小(vsize)」,計算公式由權重單位(Weight Units, WU)換算而來:
- 基礎交易資料(版本、輸入、輸出、鎖定時間等):每位元組計為 4 個權重單位。
- 見證資料(簽名與見證腳本):每位元組計為 1 個權重單位(相當於享有 75% 的折扣)。
- 總虛擬大小計算:
vsize = 總權重 / 4(單位為 vB)。
| 組件類型 | 估計大小 | 備註說明 |
|---|---|---|
| P2PKH 輸入(Legacy) | 約 148 vB | 簽名資料計入基礎交易,無折扣 |
| P2SH-P2WPKH 輸入(3 開頭) | 約 91 vB | 相容型 SegWit 包裝結構 |
| P2WPKH 輸入(bc1q 單簽) | 約 68 vB | 見證折扣完整生效 |
| P2TR 公鑰路徑輸入(bc1p) | 約 57.5 vB | Schnorr 簽名更為緊湊 |
| P2PKH 輸出 | 34 位元組 | — |
| P2WPKH 輸出 | 31 位元組 | 較 Legacy 輸出精簡 |
| P2TR 輸出 | 43 位元組 | 包含 32 位元組公鑰,基礎佔用略高 |
以標準的「1 輸入、2 輸出」常規轉帳為例,在費率設為 20 sat/vB 時:
- 純 P2PKH 交易體積約為 226 vB,預估手續費約為 4,520 sat。
- 純 P2WPKH 交易體積約為 140 vB,預估手續費約為 2,800 sat(節省約 38% 手續費)。
值得注意的是,在標準「1 輸入、2 輸出」場景下,P2TR 輸出(43 位元組)相較 P2WPKH(31 位元組)各多耗費 12 位元組,兩筆輸出合計增加 24 位元組,會稍微抵消輸入端節省的 10.5 vB。但當面臨多輸入整合(如 10 輸入 1 輸出)或多簽支出時,Taproot 的空間優勢將顯著放大。

錢包相容性與系統支援
評估地址相容性時,需明確區分「接收能力」與「發送能力」:
從 bc1 發送資產:若資金存於 bc1q 或 bc1p 地址,轉帳至 1、3 或 bc1 開頭的任何有效地址皆無協議阻礙。錢包僅需負責構造相應的見證解鎖資料。
發送至 bc1 地址:若發送方使用了極早期或長年未維護的舊版軟體,其內建地址解析器可能無法識別 Bech32 或 Bech32m 格式,從而提示「無效地址」。
中心化交易所提幣:各交易平台的提幣手續費與支援通道以其官方介面公告為準。部分平台對原生 SegWit(bc1q)提幣提供更具優勢的費率。在向交易所充值時,必須嚴格依據平台生成的充值地址類型進行轉帳,切勿手動轉換格式。
日常操作避坑指南
- 注意第 4 位版本字元差異:bc1q 與 bc1p 在第 4 個字元即明確區分(
q為 SegWit v0,p為 Taproot v1)。轉帳時務必使用複製貼上功能,並核對前後 4 位字元。 - 理解地址輪換機制:為保障鏈上隱私,多數現代 HD 錢包預設在每次收到款項後生成新的 bc1 地址。歷史生成的地址依然受同一套助記詞控制且有效。
- 避免混合大小寫:複製地址時若經編輯器自動轉化首字母大寫,會導致校驗和失效而被錢包拒絕。請確保字串維持全小寫或全大寫狀態。
- 區分主網與測試網:主網地址固定以
bc1開頭,若收到tb1開頭的地址,屬於測試網路資產,無法在主網進行轉帳。 - 大額轉帳先做小額驗證:涉及大額資金調配或首次互動的新平台,先以小額交易完成端到端驗收,確認無誤後再進行後續操作。
常見問題解答(FAQ)
Q1:向 bc1 地址轉帳可以取消或退回嗎?
比特幣鏈上交易一旦經過節點廣播並打包確認,即具備不可逆性。Bech32 編碼的校驗碼僅能防止輸入字元出錯,無法防止將資產發送給不受信任的第三方收款地址。
Q2:我應該優先選擇 bc1q 還是 bc1p 地址收款?
日常單簽收款優先推薦 bc1q(P2WPKH),相容性最為廣泛;若涉及多簽聚合(MuSig2)、頻繁的 UTXO 合併,或追求公鑰路徑下的花費隱私,則推薦使用 bc1p(Taproot)。
Q3:傳統 1 開頭地址的資產可以直接轉入 bc1 地址嗎?
完全可以。比特幣底層協議完全支援不同腳本類型之間的轉帳互通,只要發送方錢包支援 Bech32 地址編碼格式解析即可順利完成發送。



