Address

如何使用 bitcoin-cli 提取所有比特幣地址?

  • August 29, 2020

我正在嘗試使用 bitcoin-cli 獲取比特幣區塊鏈上的所有現有地址。似乎我可以從 vout 中獲取“pubkeyhash”類型的地址。如果 vout 的類型是“pubkey”,則沒有地址。

公鑰雜湊類型:

 "vout": [
   {
     "value": 0.00000001,
     "n": 0,
     "scriptPubKey": {
       "asm": "OP_DUP OP_HASH160 b04e3fb6f6c96ba23233c809e42d8e6a0e0e31ca OP_EQUALVERIFY OP_CHECKSIG",
       "hex": "76a914b04e3fb6f6c96ba23233c809e42d8e6a0e0e31ca88ac",
       "reqSigs": 1,
       "type": "pubkeyhash",
       "addresses": [
         "1H5DfbDtCnKUdke9xH9svwwxqga41Z5xbz"
       ]
     }
   }

公鑰類型:

 "vout": [
   {
     "value": 50.63517500,
     "n": 0,
     "scriptPubKey": {
       "asm": "04b0bd634234abbb1ba1e986e884185c61cf43e001f9137f23c2c409273eb16e6537a576782eba668a7ef8bd3b3cfb1edb7117ab65129b8a2e681f3c1e0908ef7b OP_CHECKSIG",
       "hex": "4104b0bd634234abbb1ba1e986e884185c61cf43e001f9137f23c2c409273eb16e6537a576782eba668a7ef8bd3b3cfb1edb7117ab65129b8a2e681f3c1e0908ef7bac",
       "type": "pubkey"
     }
   }

有沒有一種簡單的方法可以獲取區塊鏈上的所有地址?

回答這個問題需要首先定義地址的含義。

  1. 從歷史上看(在 2012 年啟動 BIP16 之前),地址是“公鑰標識符”的同義詞,因為沒有用於多重簽名結構或類似內容的地址。在這種解釋下,pay-to-pubkey 或 pay-to-pubkey-hash 輸出將被視為具有相同的地址 - 畢竟,密鑰是相同的。這是有問題的,因為發送到與 pay-to-pubkey 腳本對應的“地址”實際上不會發送到該腳本,而是發送到其對應的 pay-to-pubkey-hash 腳本。足夠舊的軟體和一些較新的軟體(包括一些區塊瀏覽器)使用這種解釋,導致混淆。
  2. 大多數軟體現在將地址視為用於編碼特定腳本的人類可讀符號(對應於如果指示錢包向所述地址付款時將建構的腳本)。在這種解釋下,pay-to-pubkey 輸出根本沒有地址(因為沒有辦法讓錢包產生這樣的輸出),而且肯定與 pay-to-pubkey-hash 輸出的地址不同同一把鑰匙。

您使用的軟體遵循解釋(2),所以這個問題沒有什麼意義。它向您顯示觀察到的所有地址,但在這種情況下,沒有涉及任何地址。比特幣中的交易輸出是自由格式的腳本,其中只有一些具有相應的地址符號。其他只是腳本。

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