什麼是支付公鑰哈希? [P2PKH]


Pay To Public Key Hash 或Pay Public Key Hash (P2PKH) 是一種ScriptPubKey,可將比特幣鎖定為公鑰哈希。

在這種類型的交易中,公鑰用於解鎖作為另一筆交易輸入的輸出。它是目前比特幣區塊鏈上最流行的算法。

P2PKH 類似於P2PK 交易,不同之處在於比特幣是使用公鑰的哈希而不是公鑰本身鎖定的。

例如,如果我們想使用P2PKH 向我們的朋友發送1 BTC,我們的朋友必須向我們提供他的錢包的公鑰,該公鑰將通過哈希函數傳遞並包含在交易中。

在我們創建交易並將其發送給他之後,他將能夠通過使用與我們創建的交易中提供的哈希相同的公鑰對應的私鑰對其進行簽名來花費他的BTC。

P2PKH 是如何工作的?

正如我們之前看到的,P2PKH 與P2PK 類似,兩種類型的交易都需要接收者證明他們是公鑰的所有者才能使用資金。

主要區別在於,在P2PK 中,它直接發送到公共地址,而在P2PKH 中,交易被發送到從接收者的公鑰中獲得的哈希,我們稱之為地址。

重點是P2PKH 旨在在區塊鏈上發送和接收資金時提供更大的安全性和便利性。這主要歸功於兩個巨大的優勢:公鑰散列和錯誤檢測。

公鑰的哈希

獲取P2PKH 交易的哈希值可確保在花費這些資金之前,其他用戶看不到公鑰。

這是因為在私鑰和公共網絡之間生成了額外的加密貨幣層,這為用戶提供了額外的安全級別。

現在想要發現私鑰的人應該首先找出散列屬於哪個公鑰,然後對私鑰做同樣的事情。

另一個優點與使用散列而不是完整的公鑰有關,這對用戶更友好。

散列也是一個像公鑰一樣的字母數字字符串,但它更短。這使得它比上一個更容易管理。

錯誤檢測

根據是否能夠創建P2PKH 交易,接收資金的人必須以比特幣地址格式與發行人共享其公鑰。

地址是公鑰的散列,它允許獲得一種易於共享的格式,並且可以檢測錯誤。它還用於在哈希的開頭將一些信息集成到它,以指示它屬於哪個網絡。

錯誤檢測是通過所謂的校驗和(有時也稱為哈希和)來實現的,它可以幫助錢包軟件檢測我們是否輸入了錯誤的哈希值,從而導致資金永遠丟失。

我們看到這個地址被使用了。而不是公鑰本身。這個轉換過程需要幾個步驟:

公鑰經過兩次散列,一次使用SHA-256 算法,第二次使用另一種稱為RIPEMD-160 的算法。這將產生用於創建P2PKH 交易的哈希。接下來是將字節版本(通常為0x00)添加到公鑰哈希的開頭。該新字符串再次使用SHA-256 進行散列。結果哈希的前4 個字節(32 位)被添加到上一步中獲得的最後一個哈希的末尾。最後,使用base58 編碼將整個字符串從字節轉換為文本。最終的結果就是我們所知道的方向。

如果軟件識別出地址無效,則不會使用公鑰的哈希創建交易。當然,軟件無法檢測到無效地址的可能性很小,但它是如此微不足道,值得冒險。概率是42.9 億分之一。

因此,通過使用散列公鑰而不是公鑰本身作為地址,我們可以很容易地檢測到錯誤。

這使得創建這樣的交易而不是使用完整的公鑰變得很方便。

P2PKH 支付示例

假設我們的朋友希望我們使用P2PKH 交易用BTC 支付他晚餐的一部分。

在交易開始之前,我們的朋友必須生成一對公鑰和私鑰。然後將公鑰轉換為哈希,然後再轉換為地址。

我們的朋友將地址發送給我們,因此我們可以通過生成新交易來開始付款過程。

一旦發布並確認,任何可以提供數字簽名的人都可以使用與公鑰匹配的私鑰以及地址,從而可以使用這些資金。

因此,只要我們的朋友保管好私鑰,那麼他將是唯一可以接收和花費這些BTC 的人。

在整個過程中,我們使用公鑰和地址的哈希值與我們的朋友進行交互。因此,我們永遠不必使用公鑰。

正如我們現在所知,這在私鑰和公開信息之間提供了額外的安全層。

P2PK 與P2PKH

我們注意到P2PKH 是一種在比特幣協議中發送和接收資金的非常有用的方式。

有支持比特幣腳本的新型支付方式,這已經獲得了一定的普及。但是P2PKH 對於大量交易仍然非常重要。

由於一系列非常重要的差異,這已經剝奪了P2PK 的重要性。

1. 安全

P2PKH 作為原始交易類型之一與P2PK 一起引入,但如今P2PKH 比P2PK 更常見。

如果明天量子計算機會變得司空見慣,那些使用P2PKH 格式錢包的用戶不必如此擔心。但是,沒有這些的P2PK 交易很容易受到攻擊。

2.簡單

如果我們比較P2PK 的公鑰格式,P2PKH 地址要短得多。這樣做的好處是它更容易處理和使用。

正如我們在文章前面所看到的,這也允許使用校驗和,這大大減少了將資金發送到錯誤地址的機會。

3. 複雜性

由於創建交易需要額外的步驟,開發人員發現P2PKH 比簡單地創建P2PK 交易更難編程。

P2PKH 和P2PK 之間的區別

與SegWit 不兼容的問題

像Pay To Script Hash 和Bench32 這樣的比特幣腳本後來被引入P2PKH。這導致P2PKH 缺乏SegWit 支持,上述腳本就是這樣做的。

儘管在SegWit 推出時這不是一個大問題,但由於其採用率低,現在該協議確實越來越重要和受歡迎。

雖然P2PKH 將繼續用於非SegWit 交易,但隨著更多錢包和交易所使用此增強功能,其整體使用量將繼續減少。

目前使用的是P2PKH 嗎?

2010 年5 月22 日,Laszlo Hanyecz 使用P2PKH 向某人支付10,000 比特幣,購買了兩個直接送到家中的披薩。

這個比特幣活動普及了著名的比特幣披薩日,現在每年都會在加密貨幣社區慶祝。

P2PKH 在11 年後仍然是比特幣生態系統中非常重要的交易類型。雖然其他類型的交易更適合多重簽名交易,但P2PKH 在比特幣用戶中是一種高度安全的選擇。

識別這些交易類型的最簡單方法是使用區塊鏈瀏覽器,因為以數字1 開頭的交易是P2PK 或P2PKH。

通過查看其中一種工具,你可能會在任何給定時間找到大量交易。

根據一些統計數據,目前有超過900 萬個BTC(佔現有總供應量的47%)使用P2PKH。而使用P2PKH 的UTXO 總數(它們是什麼?)超過5200 萬。

資訊來源:由0x資訊編譯自CRIPTOTARIO。版權歸作者Criptotario所有,未經許可,不得轉載

Total
0
Shares
Related Posts