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

2024-05-25 18:10:58    編輯: robot
導讀   文章轉載來源: ZAN Team   可能有很多新手朋友和筆者一樣,在第一次使用 WEB3 錢包,興高採烈地打开比特幣錢包,准備復制地址的時候,猛然發現自己創建的一個錢包居然有多個不同的地址。如...

  文章轉載來源: ZAN Team

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

  爲什么會有不同的地址?這幾個地址到底該用哪個呢?

  OKX錢包的多個Bitcoin地址

  這些地址分別是什么

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

  Legacy 地址(P2PKH)

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

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

  可以發現 Legacy 地址有一個特點,地址都是以‘1’开頭的。這是因爲在生成地址的時候,會根據不同場景(比如:測試網/主網)在生成的公鑰前添加前綴,添加了前綴的公鑰通過 Hash 計算之後地址最終會以‘1’开頭。

  Nested SegWit 地址(P2SH-P2WPKH)

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

  由於支付的對象從公鑰轉換爲腳本,大大擴展了靈活性,可以自定義贖回腳本的執行邏輯。典型的應用包括實現多重籤名的交易。

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

  可以看到 P2SH 地址以‘3’开頭。

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

  在介紹該類型地址之前,需要介紹裏面的關鍵技術——隔離見證(SegWit)。故名思義,隔離見證就是把見證數據(witness)隔離出來,單獨處理。

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

  隔離見證地址的特點是地址以‘bc1’开頭。

  主根地址(Taproot

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

  主根地址的特點是地址一般以‘bc1q’。

  我該選用什么地址格式

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

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

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

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

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

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

  Redeem Script 贖回腳本

  在介紹 P2SH 的時候我們知道這是一種面向贖回腳本交易的技術,那么什么是贖回腳本,它在比特幣生態的作用是什么。

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

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

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

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

  除了這種 P2PK 的方式,贖回腳本還可以實現 P2PKH、P2SH 等不同的身份驗證方式。

  Segregated Witness 隔離見證

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

  這裏的 Witness 可以認爲是比特幣基本結構中的腳本籤名(scriptSig)信息,隔離見證將其從基本結構中抽出放在一個新的數據結構中。

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

  下面是一個 P2TR 交易,可以看到這個交易多了一個 Witness 部分。它的作用是用來驗證交易的合法性。使用 Witness 代替 ScriptSig 之後,驗證合法性的方式還是一致的,即通過使用公鑰來解密 Witness 的籤名,驗證交易的內容是否一致。只有節點需要驗證交易合法性的時候才會去請求 Witness 的信息。現在免費使用 ZAN Node 服務(訪問 ZAN.TOP)即可穩定高速的連接到 BTC 網絡。

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

  本文由 ZAN Team 的 Yeezo撰寫。

海量資訊、精准解讀,盡在新浪財經APP

責任編輯:張靖笛



標題:Web3新手系列:我的比特幣爲什么有多種地址?

地址:https://www.utechfun.com/post/375360.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

猜你喜歡