Bitcoin-Core

為什麼在舊區塊中使用 RPC API 呼叫我看不到礦工地址?

  • October 12, 2021

所以,我正在使用Bitcoin Core RPC client version v22.0.0and Bitcoin Core version v22.0.0

為了得到高度的塊1,我這樣呼叫 API:

bitcoin-cli -datadir=/Users/dennis/Bitcoin getblock \
00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 2

你看到這個塊只包含coinbase交易。如果您檢查該vout部分,您將看不到任何地址。

"vin": [
 {
   "coinbase": "04ffff001d0104",
   "sequence": 4294967295
 }
],
"vout": [
 {
   "value": 50.00000000,
   "n": 0,
   "scriptPubKey": {
     "asm": "0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee OP_CHECKSIG",
     "hex": "410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac",
     "type": "pubkey"
   }
 }
]

但是,如果您進行相同的呼叫但使用較新的塊,例如使用 height 700,000

bitcoin-cli -datadir=/Users/dennis/Bitcoin getblock \         
0000000000000000000590fc0f3eba193a278534220b2b37e9849e1a770ca959 2

您將看到coinbase交易的地址:

"vin": [
 {
   "coinbase": "0360ae0a2cfabe6d6d078b52bc69cf0982356d3eb439efe5489aee2c74da629dcc1a8b50a309cc0800100000000212030400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005008a1c0000",
   "txinwitness": [
     "0000000000000000000000000000000000000000000000000000000000000000"
   ],
   "sequence": 0
 }
],
"vout": [
 {
   "value": 6.40388640,
   "n": 0,
   "scriptPubKey": {
     "asm": "0 f3b2d6544de521b5c617fc83ca6d13854f29a8a5",
     "hex": "0014f3b2d6544de521b5c617fc83ca6d13854f29a8a5",
     "address": "bc1q7wedv4zdu5smt3shljpu5mgns48jn299mukymc",
     "type": "witness_v0_keyhash"
   }
 },

問題:

  • 它與bitcoin-cli版本有關嗎?
  • 如果是這樣,是否可以獲取coinbase建構解析器並直接解析blk000.dat文件的舊塊的地址?
  • 如果不可能,blockchain.com如何顯示coinbase所有區塊的地址?

如果您在諸如 blockchair 之類的區塊鏈瀏覽器中查看此塊,它會將交易顯示為

{
   "txid": "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
   "hash": "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098",
   "version": 1,
   "size": 134,
   "vsize": 134,
   "weight": 536,
   "locktime": 0,
   "vin": [
       {
           "coinbase": "04ffff001d0104",
           "sequence": 4294967295
       }
   ],
   "vout": [
       {
           "value": 50,
           "n": 0,
           "scriptPubKey": {
               "asm": "0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee OP_CHECKSIG",
               "hex": "410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac",
               "reqSigs": 1,
               "type": "pubkey",
               "addresses": [
                   "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"
               ]
           }
       }
   ]
}

Blockchair 顯示地址,但 Bitcoin Core 沒有。

請注意,我認為“比特幣地址”是一項發明,旨在使接收者更容易向發送者提供發送者建構交易腳本所需的資訊。

交易數據實際上並不包含地址。

比特幣核心沒有提供地址,可能是因為在使用 P2PK 交易時它們沒有被使用。我猜地址開始用於 P2PKH 交易。

請注意,許多區塊鏈瀏覽器都有自己的方式從更奇特的支付方式(例如多重簽名支付)中獲取地址。並非所有軟體都同意此類交易類型是否可以以地址的形式表示。

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