Transactions
支出交易中的公開密鑰在哪裡?
我正在追求對比特幣的更深入了解。現在閱讀 Grokking 比特幣。我試圖通過探索 BTC RPC explorer 來評估對不同概念的理解。我對分層確定性錢包中的密鑰類型和密鑰結構以及密鑰派生有了一些了解。這本書說:使用PKH(來自公鑰的雙重雜湊)是為了不直接透露公鑰(為了更好的隱私),但隨後公鑰會在支出交易中得到啟示。
在這個隨機交易的螢幕截圖中,我只看到來自 PKH 的 BTC 地址 (bc1q)。“revelead”公鑰在哪裡?我很確定我誤解了一些東西。
您在螢幕截圖中顯示的是某個程序的交易摘要,其中省略了支出腳本的詳細資訊。您需要查看原始交易數據的更詳細視圖。
有幾種類型的比特幣交易。被稱為支付到公鑰雜湊 (P2PKH) 的類型要求接收者在隨後的交易中顯示他們的公鑰,並在其中花費收到的錢。
有幾個地方可以解釋這一點。一個是<https://learnmeabitcoin.com/technical/p2pkh>
P2PKH 腳本模式包含由這些操作碼包圍的散列公鑰:
腳本公鑰:
OP_DUP OP_HASH160 12ab8dc588ca9d5787dde7eb29569da63c3a238c OP_EQUALVERIFY OP_CHECKSIG
為了解決這個腳本,上面的散列公鑰的所有者需要提供原始公鑰,以及它的有效簽名:
腳本簽名:
304502203f004eeed0cef2715643e2f25a27a28f3c578e94c7f0f6a4df104e7d 163f7f8f022100b8b248c1cfd8f77a0365107a9511d759b7544d979dd152a955 c867afac0ef78601 044d05240cfbd8a2786eda9dadd520c1609b8593ff8641018d57703d02ba687c f2f187f0cee2221c3afb1b5ff7888caced2423916b61444666ca1216f2618139 8c
簡而言之,當這個腳本執行時:
- 原始公鑰是 DUPlicated,然後是 HASH160’ed。
- 將此散列值與 scriptPubKey 中的散列公鑰進行比較,以確保它是 EQUALVERIFY。
- 如果匹配,則腳本繼續,CHECKSIG 根據公鑰檢查簽名(就像 P2PK 腳本一樣)。
請注意,鎖定腳本僅存在於某人收到這筆錢的交易中。他們在其中花費收到的錢的交易具有對較早交易的引用,並包含一個支出腳本,該腳本附加在較早交易的鎖定腳本之前,然後進行評估。
您顯示的交易是一個 P2WPKH,它稍微複雜一些,並且比 P2PKH 有一些優勢。