Raw-Transaction

“vout”中的“n”有什麼意義?獲取交易

  • August 1, 2018

似乎“n”是索引,這是真的嗎?如果是這樣,為什麼需要“n”鍵?

例子:

bitcoin-cli getrawtransaction b13b4765e46228f3239858c9f18e766b72bed24a56c52b9692e7f021c376e7ce 1

由此產生的投票之一:

 "vout": [
   {
     "value": 0.40000000,
     "n": 0,
     "scriptPubKey": {
       "asm": "OP_HASH160 a88433dd5e9fcee779efdea952e397cf3bfe8aac OP_EQUAL",
       "hex": "a914a88433dd5e9fcee779efdea952e397cf3bfe8aac87",
       "reqSigs": 1,
       "type": "scripthash",
       "addresses": [
         "3H43pNLbFEU1tWNwZeWxmrLwrLzAxwiC4b"
       ]
     }
   },
...

既然是數組,就不能只用數組索引嗎?似乎是多餘的,但我相信這是有原因的。謝謝

既然是數組,就不能只用數組索引嗎?似乎是多餘的,但我相信這是有原因的。謝謝

是的,你可以。事實上,這n就是計算方式,因為它實際上並沒有儲存在事務中。n只是為了方便而提供,以便那些建構原始事務的人不需要計算可能難以閱讀的 JSON 行來獲取輸出索引以用於另一個事務的輸入。

呼叫後看到的 vout 索引 (n)decoderawtransaction是由 bitcoind 添加的。它不存在於原始交易數據中。

如果您為您的範例手動解碼序列化的 tx,您將在輸出部分獲得以下資訊:

02  # Number of outputs
# value lockscript_length lockscript
005a620200000000 17 a914a88433dd5e9fcee779efdea952e397cf3bfe8aac87 
# value lockscript_length lockscript
c587841500000000 19 76a91402952d768c840f30a49e20af5bd4219210a14d2488ac

注意沒有索引欄位。它只是由節點在反序列化交易時計算出來的。

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