Transactions

獲取 blk*.dat 文件的比特幣地址

  • July 25, 2016

我知道從blk*.dat文件中獲取地址被討論了很多次。但我不明白為什麼?當我擁有原始 scriptSig 時,我可以對其進行編碼並獲取比特幣地址嗎?

例如第一個塊第一個交易:

輸入 scriptSig(這個值是正確的,定義在這裡:https ://en.bitcoin.it/wiki/Genesis_block ):

04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73

輸出腳本信號:

4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac

如此處所寫:https ://en.bitcoin.it/wiki/Genesis_block 輸出地址為:

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

現在,如何從 scriptSig 獲取4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac地址1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

如果您在這裡嘗試:http: //gobittest.appspot.com/Address輸出不是預期的地址“1A1 …..”

首先,請注意創世塊上的 scriptSig 是在使用地址之前。那裡的 scriptSig 稱為 p2pk,或 pay-to-pub-key。地址(以 1 開頭的那種)實際上是 p2pkh,或 pay-to-pub-key-hash。您可以相當容易地將一個轉換為另一個,這就是這裡發生的事情。

實際的 scriptSig 可以這樣解析:

41 = number of bytes in hex of the element (65 bytes)
04...5f = public key
ac = OP_CHECKSIG

在http://gobittest.appspot.com/Address將04…5f 插入公共 ECDSA 密鑰,您會看到地址確實匹配。

或者我對以下假設是否正確:scriptSig 有三種類型

  1. OP_DUP OP_HASH160 …. OP_EQUALVERIFY OP_CHECKSIG
  2. OP_HASH160 … OP_EQUAL
  3. OP_m … OP_CHECKMULTISIG

但是現在如何處理這些選項?在第三個選項中,我只需要獲取表示為“…”的所有字節並對其進行解碼。但是其他人呢?

例如:很熱從:76a91490bb78d00b26139e4d51ceb9655295c2bd98aed688ac

引用自:https://bitcoin.stackexchange.com/questions/44406