Web3新手必備:我的比特幣為什么有多種地址?
可能有很多新手朋友和筆者一樣,在第一次使用 WEB3 錢(qián)包,興高采烈地打開(kāi)比特幣錢(qián)包,準(zhǔn)備復(fù)制地址的時(shí)候,猛然發(fā)現(xiàn)自己創(chuàng)建的一個(gè)錢(qián)包居然有多個(gè)不同的地址。如同走到一個(gè)陌生的十字路口,一臉茫然。
為什么會(huì)有不同的地址?這幾個(gè)地址到底該用哪個(gè)呢?
OKX 錢(qián)包的多個(gè) Bitcoin 地址
這些地址分別是什么?
Bitcoin 社區(qū)是一個(gè)技術(shù)不斷發(fā)展的社區(qū),技術(shù)的發(fā)展產(chǎn)生新的內(nèi)容。不同的地址格式可以認(rèn)為是新技術(shù)應(yīng)用的結(jié)果。接下來(lái)探索一下不同地址格式的區(qū)別是什么。
Legacy 地址(P2PKH)
該格式是在 2009 年比特幣剛剛推出的時(shí)候采用的格式,所以稱(chēng)作 Legacy 格式,又因?yàn)楫?dāng)時(shí)比特幣的地址是從公鑰/私鑰對(duì)創(chuàng)建的,所以也叫做支付公鑰哈希 (P2PKH) 地址。
目前看來(lái),Legacy 類(lèi)型的地址在交易中會(huì)占用更多的空間,導(dǎo)致交易的手續(xù)費(fèi)更高。目前大家只會(huì)在使用一些與新地址不兼容的舊錢(qián)包時(shí)才會(huì)使用這種類(lèi)型的地址。
可以發(fā)現(xiàn) Legacy 地址有一個(gè)特點(diǎn),地址都是以「1」開(kāi)頭的。這是因?yàn)樵谏傻刂返臅r(shí)候,會(huì)根據(jù)不同場(chǎng)景(比如:測(cè)試網(wǎng)/主網(wǎng))在生成的公鑰前添加前綴,添加了前綴的公鑰通過(guò) Hash 計(jì)算之后地址最終會(huì)以「1」開(kāi)頭。
Nested SegWit 地址(P2SH-P2WPKH)
和傳統(tǒng)的 Legacy 地址相比,P2SH 地址采用的不是公鑰的哈希,而是贖回腳本(redeem-script)的哈希。通俗的講,P2PKH 是向一個(gè)公鑰的哈希進(jìn)行支付,而 P2SH 是向贖回腳本進(jìn)行支付,只有接受者滿(mǎn)足贖回腳本的轉(zhuǎn)出條件之后,才可以花費(fèi)里面的資金。
由于支付的對(duì)象從公鑰轉(zhuǎn)換為腳本,大大擴(kuò)展了靈活性,可以自定義贖回腳本的執(zhí)行邏輯。典型的應(yīng)用包括實(shí)現(xiàn)多重簽名的交易。
在 P2SH 的基礎(chǔ)上,如果嵌入了隔離見(jiàn)證技術(shù),那么這種地址的格式就是隔離見(jiàn)證兼容地址(Nested SegWit)。關(guān)于隔離見(jiàn)證相關(guān)的內(nèi)容可以在介紹隔離見(jiàn)證地址的時(shí)候了解到。引入了隔離見(jiàn)證技術(shù)之后,可以減少交易的體積,從而減少交易的手續(xù)費(fèi)用。
可以看到 P2SH 地址以「3」開(kāi)頭。
隔離見(jiàn)證地址(Native SegWit) 地址
在介紹該類(lèi)型地址之前,需要介紹里面的關(guān)鍵技術(shù)——隔離見(jiàn)證(SegWit)。故名思義,隔離見(jiàn)證就是把見(jiàn)證數(shù)據(jù)(witness)隔離出來(lái),單獨(dú)處理。
這么做的一個(gè)顯著的優(yōu)勢(shì)在于,減少了交易信息的大小,從而減少了交易的手續(xù)費(fèi)。另外體積減少帶來(lái)的另一個(gè)好處在于,提高了比特幣區(qū)塊交易的大小上限,從 1 MB 的容量大小達(dá)到了 4 MB。
隔離見(jiàn)證地址的特點(diǎn)是地址以「bc1」開(kāi)頭。
主根地址(Taproot)
Taproot 地址的優(yōu)勢(shì)在于隱私性和在復(fù)雜交易場(chǎng)景下的效率。與Native SegWit 相比,它使用 Schnorr 算法取代了橢圓曲線數(shù)字簽名算法,前者在批量交易的場(chǎng)景下效率更高并且提高了多重簽名錢(qián)包的隱私性。
主根地址的特點(diǎn)是地址一般以「bc1q」。
我該選用什么地址格式
目前的主流錢(qián)包比如 OKX、Unisat 等錢(qián)包都支持以上四種地址,因此為了減少交易費(fèi)用,采用 Native SegWit 和 Taproot 格式的地址是比較合理的。
另外如果你對(duì)比特幣的銘文等感興趣,那么這兩種地址是你的不二之選,大多數(shù)錢(qián)包都對(duì)這兩種地址的銘文做了額外的處理,可以保護(hù)你特殊的 UTXO 不會(huì)在交易中錯(cuò)誤地轉(zhuǎn)移掉。認(rèn)準(zhǔn)「bc1」開(kāi)頭的錢(qián)包地址吧!
當(dāng)然不同地址格式的錢(qián)包是可以進(jìn)行資金的交易,不必?fù)?dān)心。
如果想要查看比特幣的余額或者區(qū)塊信息,歡迎使用 ZAN 的節(jié)點(diǎn)服務(wù),我們提供了豐富的 API 供開(kāi)發(fā)者使用。API 文檔詳情:https://docs.zan.top/reference/zan_getbalance-enhance
更深一點(diǎn)——關(guān)鍵技術(shù)介紹
經(jīng)過(guò)上述的介紹,大家多多少少對(duì)錢(qián)包的有了一個(gè)初步的認(rèn)識(shí),那么對(duì)于錢(qián)包里的一些技術(shù)獲取和我一樣非常感興趣,那么一起來(lái)看一下里面神秘的技術(shù)吧。
Redeem Script 贖回腳本
在介紹 P2SH 的時(shí)候我們知道這是一種面向贖回腳本交易的技術(shù),那么什么是贖回腳本,它在比特幣生態(tài)的作用是什么。
在介紹贖回腳本之前我們需要介紹一下比特幣的交易基本結(jié)構(gòu)。
下面是一個(gè)典型的 P2PK 類(lèi)型的交易,其中 04ae 開(kāi)頭的地址想要給 15kD 開(kāi)頭的地址轉(zhuǎn) 10 個(gè) BTC。04ae 地址的賬戶(hù)需要向鏈上的其他人表明自己確實(shí)擁有這個(gè)賬戶(hù)的使用權(quán)(擁有私鑰),那么他在這個(gè)交易中需要提供一個(gè)簽名(ScriptSig)來(lái)證明自己的身份。
驗(yàn)證者除了需要獲取到該簽名之外,還需要查找上一個(gè)交易對(duì)應(yīng)該 UTXO 的輸出腳本。這兩個(gè)腳本拼接起來(lái)就是贖回腳本。贖回腳本的作用就是用來(lái)證明交易的合法性。
在這個(gè)交易中,可以看到簽名和輸出腳本都是一段計(jì)算機(jī)指令。「 OP_PUSHBYTES 」表示向棧中 PUSH 一段數(shù)據(jù),首先在 ScriptSig 中 04ae 用自己的私鑰對(duì)整個(gè)交易進(jìn)行簽名,該簽名的會(huì)被壓入棧。之后再往棧中壓入公鑰,最后在「 OP_CHECKSIG 」中,用公鑰對(duì)簽名解密,比較交易是否一致。如果一致則表明身份有效。
除了這種 P2PK 的方式,贖回腳本還可以實(shí)現(xiàn) P2PKH、P2SH 等不同的身份驗(yàn)證方式。
Segregated Witness 隔離見(jiàn)證
在上面的介紹可以知道目前較新的錢(qián)包格式都是采用了隔離見(jiàn)證技術(shù),那么什么是見(jiàn)證(Witness),它是怎么進(jìn)行隔離的呢。
這里的 Witness 可以認(rèn)為是比特幣基本結(jié)構(gòu)中的腳本簽名(scriptSig)信息,隔離見(jiàn)證將其從基本結(jié)構(gòu)中抽出放在一個(gè)新的數(shù)據(jù)結(jié)構(gòu)中。
在上圖可以看到,交易中必要的內(nèi)容就剩下了交易來(lái)源的信息和交易輸出的信息,交易的大小被減少了,由于黃色部分(交易的總大?。┯写笮〉南拗疲虼藢⒔灰椎暮灻珠_(kāi)進(jìn)行傳輸可以讓一個(gè)區(qū)塊容納更多的交易。另外由于計(jì)算交易的簽名時(shí),簽名部分的內(nèi)容不被計(jì)算在內(nèi),因此可以有效解決交易延展性 的問(wèn)題。
下面是一個(gè) P2TR 交易,可以看到這個(gè)交易多了一個(gè) Witness 部分。它的作用是用來(lái)驗(yàn)證交易的合法性。使用 Witness 代替 ScriptSig 之后,驗(yàn)證合法性的方式還是一致的,即通過(guò)使用公鑰來(lái)解密 Witness 的簽名,驗(yàn)證交易的內(nèi)容是否一致。只有節(jié)點(diǎn)需要驗(yàn)證交易合法性的時(shí)候才會(huì)去請(qǐng)求 Witness 的信息?,F(xiàn)在免費(fèi)使用 ZAN Node 服務(wù)(訪問(wèn) ZAN.TOP)即可穩(wěn)定高速的連接到 BTC 網(wǎng)絡(luò)。
總結(jié)一下,隔離見(jiàn)證就是將原本一個(gè)交易中的交易簽名部分的內(nèi)容和其余部分內(nèi)容分開(kāi)傳輸,從而減少了單個(gè)交易的大小,提升了整個(gè)區(qū)塊的容量。另外由于簽名部分的內(nèi)容在計(jì)算交易的 Hash 值時(shí)不被計(jì)算在內(nèi),因此可以有效解決 交易延展性 的問(wèn)題。
本文由 ZAN Team(X 賬號(hào) @zan_team) 的 Yeezo(X 賬號(hào) @GaoYeezo75065)撰寫(xiě)。
你可能感興趣的文章
-
Web3新人必讀指南:零基礎(chǔ)如何入門(mén)Web3.0
Web3作為一種新興技術(shù),涉及到加密貨幣、智能合約、去中心化應(yīng)用(DApps)等多個(gè)領(lǐng)域,在這份必讀指南中,我們篩選出了Web3重點(diǎn)領(lǐng)域的必讀內(nèi)容,幫助零基礎(chǔ)新人快速入門(mén)…
2024-01-10 -
Web3小白入門(mén)系列:Metamask小狐貍錢(qián)包教學(xué)
截至目前為止,Metamask 已經(jīng)擁有 3 千萬(wàn)個(gè)加密貨幣用戶(hù),是市場(chǎng)上最熱門(mén)的區(qū)塊鏈錢(qián)包之一,可以讓用戶(hù)在瀏覽器中輕松地管理以太坊和其他以太坊兼容代幣,本文將詳細(xì)介紹如…
2023-12-27 -
OKX怎么看自己的web3錢(qián)包地址?
錢(qián)包地址是指在加密貨幣領(lǐng)域中使用的數(shù)字貨幣錢(qián)包的地址,而使用OKX軟件的投資者在使用錢(qián)包的時(shí)候,有時(shí)找不到自己的錢(qián)包地址,那么,OKX怎么看自己的web3錢(qián)包地址?下文將…
2024-03-24