Web3新手系列:為什麼我的比特幣有多種地址?

avatar
ZAN Team
7個月前
本文約2302字,閱讀全文需要約3分鐘
Bitcoin社區是一個技術不斷發展的社區,技術的發展產生新的內容。不同的地址格式可以認為是新技術應用的結果。接下來探討不同地址格式的差異是什麼。

或許有很多新手朋友和筆者一樣,在第一次使用WEB3 錢包,興高采烈地打開比特幣錢包,準備複製地址的時候,猛然發現自己創建的一個錢包居然有多個不同的地址。如同走到一個陌生的十字路口,一臉茫然。

為什麼會有不同的地址?這幾個地址到底該用哪一個呢?

Web3新手系列:為什麼我的比特幣有多種地址?

OKX 錢包的多個Bitcoin 位址

這些地址分別是什麼

Bitcoin 社區是一個技術不斷發展的社區,技術的發展產生新的內容。不同的地址格式可以認為是新技術應用的結果。接下來探討不同地址格式的差異是什麼。

Legacy 地址(P2P KH)

該格式是在2009 年比特幣剛推出的時候採用的格式,所以稱為Legacy 格式,又因為當時比特幣的地址是從公鑰/私鑰對創建的,所以也叫做支付公鑰哈希(P2P KH) 地址。

目前看來,Legacy 類型的地址在交易中會佔用更多的空間,導致交易的手續費更高。目前大家只會在使用一些與新地址不相容的舊錢包時才會使用這種類型的地址。

可以發現Legacy 位址有一個特點,位址都是以「 1 」開頭的。這是因為在產生位址的時候,會根據不同場景(例如:測試網/主網)在產生的公鑰前面加上前綴,並加入了前綴的公鑰透過Hash 計算後位址最終會以「 1 」開頭。

Nested SegWit 地址(P 2 SH-P 2 WPKH)

和傳統的Legacy 位址相比,P 2 SH 位址採用的不是公鑰的哈希,而是贖回腳本(redeem-script)的哈希。通俗的講,P2P KH 是向一個公鑰的哈希進行支付,而P 2 SH 是向贖回腳本進行支付,只有接受者滿足贖回腳本的轉出條件之後,才可以花費裡面的資金。

由於支付的物件從公鑰轉換為腳本,大大擴展了靈活性,可以自訂贖回腳本的執行邏輯。典型的應用包括實現多重簽名的交易。

在P 2 SH 的基礎上,如果嵌入了隔離見證技術,那麼這種位址的格式就是隔離見證相容位址(Nested SegWit)。關於隔離見證相關的內容可以在介紹隔離見證地址的時候了解。在引入了隔離見證技術之後,可以減少交易的體積,從而減少交易的手續費用。

可以看到P 2 SH 位址以「 3 」開頭。

隔離見證位址(Native SegWit) 位址

在介紹該類型位址之前,需要先介紹裡面的關鍵技術-隔離見證(SegWit)。故名思義,隔離見證就是把見證資料(witness)隔離出來,單獨處理。

這麼做的一個顯著的優點在於,減少了交易資訊的大小,從而減少了交易的手續費。另外體積減少帶來的另一個好處在於,提高了比特幣區塊交易的大小上限,從1 MB 的容量大小達到了4 MB。

隔離見證位址的特點是位址以「bc 1 」開頭。

主根位址(Taproot)

Taproot 地址的優勢在於隱私性和在複雜交易場景下的效率。與 Native SegWit 相比,它使用Schnorr 演算法取代了橢圓曲線數位簽章演算法,前者在批次交易的場景下效率更高並且提高了多重簽章錢包的隱私性。

主根位址的特徵是位址一般以「bc 1 q」。

我該選用什麼地址格式

目前的主流錢包例如OKX、Unisat 等錢包都支援以上四種地址,因此為了減少交易費用,採用Native SegWit 和Taproot 格式的地址是比較合理的。

另外如果你對比特幣的銘文等感興趣,那麼這兩種地址是你的不二之選,大多數錢包都對這兩種地址的銘文做了額外的處理,可以保護你特殊的UTXO 不會在交易中錯誤地轉移掉。認準「bc 1 」開頭的錢包地址吧!

當然不同地址格式的錢包是可以進行資金的交易,不必擔心。

如果想要查看比特幣的餘額或區塊信息,歡迎使用ZAN 的節點服務,我們提供了豐富的API 供開發者使用。 API 文件詳情: https://docs.zan.top/reference/zan_getbalance-enhance

更深一點——關鍵技術介紹

經過上述的介紹,大家多多少少對錢包的有了一個初步的認識,那麼對於錢包裡的一些技術獲取和我一樣非常感興趣,那麼一起來看一下裡面神秘的技術吧。

Redeem Script 贖回腳本

在介紹P 2 SH 的時候我們知道這是一種以贖回腳本交易為導向的技術,那麼什麼是贖回腳本,它在比特幣生態的作用是什麼。

在介紹贖回腳本之前我們需要先介紹比特幣的交易基本結構。

下面是一個典型的P2P K 類型的交易,其中04 ae 開頭的地址想要給15 kD 開頭的地址轉10 個BTC。 04 ae 地址的帳戶需要向鏈上的其他人表明自己確實擁有這個帳戶的使用權(擁有私鑰),那麼他在這個交易中需要提供一個簽名(ScriptSig)來證明自己的身份。

驗證者除了需要取得到該簽章之外,還需要尋找上一個交易對應該UTXO 的輸出腳本。這兩個腳本拼接起來就是贖回腳本。贖回腳本的作用就是用來證明交易的合法性。

Web3新手系列:為什麼我的比特幣有多種地址?

在這個交易中,可以看到簽章和輸出腳本都是一段電腦指令。 「 OP_PUSHBYTES 」表示向棧中PUSH 一段數據,首先在ScriptSig 中04 ae 用自己的私鑰對整個交易進行簽名,該簽名的會被壓入棧。之後再往棧壓入公鑰,最後在「 OP_CHECKSIG 」中,用公鑰對簽名解密,比較交易是否一致。如果一致則表示身份有效。

除了這種P2P K 的方式,贖回腳本還可以實現P2P KH、P 2 SH 等不同的身份驗證方式。

Segregated Witness 隔離見證

在上面的介紹可以知道目前較新的錢包格式都是採用了隔離見證技術,那麼什麼是見證(Witness),它是怎麼進行隔離的呢。

這裡的Witness 可以認為是比特幣基本結構中的腳本簽名(scriptSig)訊息,隔離見證將其從基本結構中抽出放在一個新的資料結構中。

Web3新手系列:為什麼我的比特幣有多種地址?

在上圖可以看到,交易中必要的內容就剩下了交易來源的資訊和交易輸出的信息,交易的大小被減少了,由於黃色部分(交易的總大小)有大小的限制,因此將交易的簽名分開進行傳輸可以讓一個區塊容納更多的交易。另外由於計算交易的簽章時,簽章部分的內容不會被計算在內,因此可以有效解決 交易延展性的問題。

下面是一個P 2 TR 交易,可以看到這個交易多了一個Witness 部分。它的作用是用來驗證交易的合法性。使用Witness 取代ScriptSig 之後,驗證合法性的方式還是一致的,也就是透過使用公鑰來解密Witness 的簽名,驗證交易的內容是否一致。只有節點需要驗證交易合法性的時候才會去請求Witness 的資訊。現在免費使用ZAN Node服務(存取ZAN.TOP)即可穩定高速的連接到BTC 網路。

Web3新手系列:為什麼我的比特幣有多種地址?

總結一下,隔離見證就是將原本一個交易中的交易簽名部分的內容和其餘部分內容分開傳輸,從而減少了單一交易的大小,提升了整個區塊的容量。另外由於簽章部分的內容在計算交易的Hash 值時不會被計算在內,因此可以有效解決交易延展性的問題。

本文由ZAN Team(X 帳號@zan_team ) 的Yeezo(X 帳號@GaoYeezo 75065 )撰寫。

原創文章,作者:ZAN Team。轉載/內容合作/尋求報導請聯系 report@odaily.email;違規轉載法律必究。

ODAILY提醒,請廣大讀者樹立正確的貨幣觀念和投資理念,理性看待區塊鏈,切實提高風險意識; 對發現的違法犯罪線索,可積極向有關部門舉報反映。

推薦閱讀
星球精選