Bitcoin-Core

是什麼阻止礦工改變交易價值以增加交易費用?

  • November 13, 2019

我正在通過這本書“掌握比特幣,Andreas M. Antonopoulos 的第二版”來學習比特幣。我在第 6 章“交易”。這是我的疑問:範例有節點A,收到的交易如下

{
 "version": 1,
 "locktime": 0,
 "vin": [
   {
     "txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18",
     "vout": 0,
     "scriptSig" : "3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813[ALL] 0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",
     "sequence": 4294967295
   }
 ],
 "vout": [
   {
     "value": 0.01500000,
     "scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG"
   },
   {
     "value": 0.08450000,
     "scriptPubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG",
   }
 ]
}

所以這裡的交易費用是:0.0005 ( 0.1(input) - 0.015(vout[0]) - 0.0845(vout[1]) )。

那麼,如果收到此交易的節點 A 像這樣更改交易怎麼辦:

{
     "version": 1,
     "locktime": 0,
     "vin": [
       {
         "txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18",
         "vout": 0,
         "scriptSig" : "3045022100884d142d86652a3f47ba4746ec719bbfbd040a570b1deccbb6498c75c4ae24cb02204b9f039ff08df09cbe9f6addac960298cad530a863ea8f53982c09db8f6e3813[ALL] 0484ecc0d46f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf",
         "sequence": 4294967295
       }
     ],
     "vout": [
       {
         "value": 0.01500000,
         "scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG"
       },
       {
         "value": 0.07450000,
         "scriptPubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG",
       }
     ]
}

現在交易費用為:0.0105 ( 0.1(input) - 0.015(vout[0]) - 0.0745(vout[1]) )

What If 節點 A 在更改交易後,能夠找到 nonce 並將塊送出給其他節點。

其他試圖驗證這個塊的節點將檢查 UTXO 集和所有者的簽名,發現它是一個有效的塊並接受它到鏈上。

發件人不能否認,因為該交易有​​他的簽名。

書中提到交易可能發生在不安全的網路中,如果有人像我上面提到的那樣在中間通過這個不安全的網路更改交易值怎麼辦,現在每個節點都會得到這個改變的交易。

我的問題,這是可能的還是有任何進一步的檢查以確保交易值是所有者發送的有效值。到目前為止,我學到的(直到第 6 章)沒有散列值或整個交易,只有所有者簽名。

簽名簽署支出交易(*)。以任何方式修改它都會使其中的簽名失效。

(*) 實際上不是,因為簽名顯然不可能自己簽名。還有一種簽名方法可以明確表明它沒有對交易的某些部分進行簽名,從而允許在事後對其進行修改。

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