Genesis-Block
我們如何解碼比特幣創世交易的輸出地址
根據 blockchain.info,第一筆比特幣交易花費 50 BTC 到地址 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa。
該交易的公鑰腳本是
PUSHDATA(65)[04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f] CHECKSIG'
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa 的 hash160 是 62e907b15cbf27d5425399ebf6f0fb50ebb88f18,但我在上面的 pubkey 腳本中沒有看到它的任何出現(是的,我知道字節序問題)。Blockchain.info 怎麼會知道該交易的輸出是 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa?
這是一個付費公鑰 (P2PK) 腳本,其中交易包含目標公鑰本身。這些在比特幣的早期很常見,最初是礦工預設創建的腳本類型(請參閱為什麼預設礦工實現使用 pay-to-pubkey?),儘管似乎沒有人知道為什麼會這樣選擇。
現在的規範是使用支付到公鑰雜湊 (P2PKH) 腳本,如您所知,該腳本包含公鑰的 hash160,而不是密鑰本身。您可以注意到這樣的腳本看起來不同,例如
DUP HASH160 PUSHDATA(20)[536ffa992491508dca0354e52f32a3a7a679a53a] EQUALVERIFY CHECKSIG
Blockchain.info 從交易中獲取公鑰,計算其雜湊值,並將其轉換為 base58 地址。這只是對使用者的一種方便,因此可以將 P2PK 或 P2PKH 交易視為記入“地址”。因此中本聰可以使用相同的私鑰來花費發送到地址 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa 的 P2PKH 交易,就像花費創世 coinbase 交易一樣(忽略它實際上根本無法花費的事實)。