大家好,我是來自Coinmanlabs的Paul,去年的銘文熱潮,今年的Runes,很多人都對BTC的地址類型不清楚,十分混亂。今天我們就用八題帶大家清楚明白。
Q·、為什麼會有不同的BTC位址類型?
Bitcoin需要多種位址類型主要是為了滿足不同的需求和技術要求,並提供更好的安全性、隱私性和擴充性。原因主要是:
相容性與過渡:隨著Bitcoin網路的發展和技術的進步,新的地址格式被引入,但為了保持向後相容性,舊的地址格式仍然被支援。因此,Bitcoin需要支援多種位址類型,以便使用者可以無縫地遷移和互動使用不同的位址。
安全性和隱私性:不同類型的地址提供了不同程度的安全性和隱私性。例如,隔離見證地址(Bech32地址)具有更高級的安全特性,而P2SH地址則常用於多重簽名等高級交易腳本,提供了更多的靈活性和安全性。
技術創新:新的地址格式通常是為了引入新的技術特性和改進。例如,Bech32地址引入了隔離見證(Segregated Witness),這是一項重要的技術升級,旨在提高交易吞吐量、降低交易費用,並增強網路的安全性。
使用者體驗:不同類型的地址可能會影響使用者的體驗和互動方式。例如,Bech32位址具有更高的錯誤偵測能力,可以減少使用者輸錯地址的風險,從而提高了使用者體驗。
綜上所述,Bitcoin需要多種位址類型以滿足不同用戶的需求,並持續推動技術創新和發展,以提供更安全、更有效率的區塊鏈解決方案。
Q·、現在有幾種類型的BTC位址呢?
現在有四種BTC位址類型,每種類型在位址的格式和使用上略有不同。以下是常見的幾種Bitcoin位址類型:
P2PKH (Pay-to-Public-Key-Hash):這是最常見的位址類型,以"1"開頭。這種地址類型是最早的,也是最廣泛接受的。例如:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
P2SH (Pay-to-Script-Hash):以"3"開頭,用於多重簽名和其他複雜的交易腳本。這種地址類型的腳本在交易中進行驗證。例如:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
Bech32:以"bc1q"開頭,是比特幣的最新地址格式,也稱為原生隔離見證地址(Segregated Witness)。 Bech32位址具有更高的錯誤偵測能力,並支援更高級的功能,例如隔離見證。例如:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
主根(Taproot)地址:這類地址以"bc1p"開頭,為了提高區塊空間的效率並改善費用,SegWit 在地址的構造方式上引入了一些變化。因此在SegWit 位址的基礎之上,開發出了Taproot 位址,翻譯為主根位址,其進一步減小了儲存空間,提高了交易效率,並提供了更好的隱私性。
Q·、為什麼叫P2PKH(Pay-to-Public-Key-Hash)?
P2PKH(Pay-to-Public-Key-Hash)這個術語是由Bitcoin的創始人之一,Satoshi Nakamoto所定義的。這個術語的意思是向公鑰哈希支付。在P2PKH交易中,付款方將資金發送到接收方的公鑰雜湊地址,而不是直接發送到接收方的公鑰。這種方式提高了隱私和安全性,因為公鑰雜湊位址不會直接暴露收件者的公鑰。
在P2PKH交易中,接收方的位址是使用其公鑰產生的雜湊值而不是直接使用公鑰本身。這樣做的一個好處是,即使公鑰哈希地址被洩露,也不會洩露接收方的實際公鑰,因此可以增加安全性。同時,這也使得區塊鏈中的交易資料更為緊湊,因為公鑰哈希位址相對較短。
總的來說,P2PKH是一種常見的、簡單的Bitcoin交易類型,旨在提高隱私和安全性,同時保持交易資料的緊湊性。
Q·、為什麼叫P2SH (Pay-to-Script-Hash)?
P2SH(Pay-to-Script-Hash)是Bitcoin中一種交易輸出類型,由Gavin Andresen於2012年引進。這種類型的交易輸出允許將支付與一個腳本哈希相關聯,而不是直接與公鑰或公鑰哈希相關聯。
這種方式的引入是為了支援更多的交易類型,例如多重簽名交易和其他複雜的交易腳本。在P2SH交易中,收款地址是一個腳本哈希,而不是實際的公鑰或公鑰哈希。這意味著發送方只需要知道一個腳本的雜湊值,而不需要知道腳本的具體內容。只有在花費輸出時,才需要提供與該腳本相符的實際腳本。
P2SH的好處之一是增加了Bitcoin網路的靈活性。它使得複雜的交易腳本可以在不暴露實際腳本內容的情況下進行交易,並且可以將多種不同類型的腳本哈希到同一個地址上。這為多重簽名交易等更複雜的交易提供了支持,同時提高了網路的安全性和隱私性。
因此,P2SH作為一種交易輸出類型,為Bitcoin網路的發展和創新提供了重要的基礎。
Q·、為什麼叫Bech32?
Bech32地址命名源自其設計者Pieter Wuille和Greg Maxwell的姓氏的第一個字母"B",以及一種稱為"ech"的錯誤檢測/修復演算法。這種演算法使用在一些語言中的音標發音規則,將"1"與"l"以及"0"與"o"區分開來,減少了用戶輸錯地址的可能性。因此,"Bech"表示了這種地址設計中的關鍵創新,而"32"表示了地址長度為32個字元。所以,Bech32地址的名稱可以說是由其設計的關鍵特徵所組成的一個描述性名稱。
Q·、使用一些BTC錢包時,為什麼每次使用後錢包的地址都不一樣?
在某些Bitcoin錢包中,每次接收或發送交易時都會產生一個新的地址,這是出於隱私和安全的考慮:
隱私保護: 使用新地址可以增加使用者的隱私。如果用戶在每次交易中都使用相同的地址,那麼這些交易都可以被追蹤到同一個地址上,從而暴露了用戶的交易歷史和資金流動。透過使用新地址,用戶可以更好地保護自己的隱私,減少對他人的資訊外洩。
安全性增強: 定期更換位址可以減少針對特定位址的攻擊。如果一個位址被惡意方追蹤並攻擊,使用新位址可以降低受到攻擊的風險。此外,如果用戶的某個私鑰暴露了,只有與該私鑰相關聯的地址上的資金會受到威脅,其他地址上的資金仍然安全。
遵循最佳實踐: 許多安全專家建議定期更換地址,這是一種最佳實踐,有助於保持個人資金的安全和隱私。
雖然每次產生新地址可能會導致一些不便,例如需要更新收款地址等,但這種做法可以提高用戶的隱私和安全水平,因此被許多Bitcoin錢包採用。
Q·、多個地址不應該需要換錢包嗎?
的確生成新地址通常是透過使用橢圓曲線加密(Elliptic Curve Cryptography,ECC)來實現的。 Bitcoin中使用的橢圓曲線加密演算法是secp256k1,它是一種在加密貨幣領域廣泛使用的加密演算法。
具體來說,錢包會使用橢圓曲線演算法產生一對金鑰:一個公鑰和一個私鑰。然後,從公鑰產生地址。每次產生新地址時,都會產生一個新的公鑰和私鑰對,進而產生一個新的地址。
這種方式確保了每個位址都與一個唯一的金鑰對相關聯,從而增強了安全性和隱私性。同時,由於橢圓曲線加密演算法的高效性,產生新位址的過程通常也很快速。
Q·、那不就不對了嗎?產生多個地址?
許多現代的Bitcoin皮夾採用的是HD Wallet(Hierarchical Deterministic Wallet)技術來管理地址。 HD Wallet可以更方便地管理大量的地址,並提供一些額外的安全性和備份功能。
HD Wallet透過使用一個種子(seed)來產生一系列的金鑰對(公鑰和私鑰),而不是像傳統的錢包一樣為每個位址產生一個新的金鑰對。這些金鑰對是根據BIP32(Bitcoin Improvement Proposal 32)和BIP44(Bitcoin Improvement Proposal 44)中定義的標準產生的。
HD Wallet具有以下優勢:
備份和恢復:透過備份種子(seed),用戶可以輕鬆地備份整個錢包,並在需要時方便地恢復所有地址和資金。
確定性:由於所有的地址都是從相同的種子推導而來的,因此可以確定地生成整個地址鏈,而無需在錢包中保存每個地址的私鑰。
更好的隱私: HD Wallet可以為每個交易產生一個新的地址,而不必暴露先前使用的地址。這可以增強用戶的隱私。
分層結構: HD Wallet支援分層結構,可以創建多個子錢包,每個子錢包都有自己的種子。這種結構有助於管理多個帳戶或用途的資金。
因此,現代的Bitcoin錢包通常會採用HD Wallet技術來提供更好的使用者體驗、安全性和隱私保護。