Raw-Transaction
“vout”中的“n”有什麼意義?獲取交易
似乎“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
注意沒有索引欄位。它只是由節點在反序列化交易時計算出來的。