Transactions

是什麼阻止我修改節點的記憶體池(可能是 PoS 或 PoW)?

  • August 27, 2019

我一直試圖圍繞區塊鏈如何工作的一些核心概念來思考,而有些事情一直困擾著我一段時間。

讓我們考慮一個我正在執行區塊鏈的完整節點(PoW 或 PoS 鏈)的情況。現在我知道中繼到我的節點的交易在添加到我的節點的記憶體池之前和必須添加到塊時再次驗證。現在,假設我將成為下一個區塊贏家(我知道這是非常不可預測的),我的問題很簡單,是什麼阻止我從記憶體池中取出交易(最好是金額高的交易) ),修改它的 vout(例如用我的 scriptPubKey 替換它並保持 vin 完整),並在我的塊中接受它?

交易簽名過程涉及將整個交易數據的雜湊作為 ECDSA 簽名中的消息進行簽名。因此,如果您修改交易輸出或任何其他數據,則會導致簽名無效。如果您將此交易包含在塊中,探勘它然後中繼該塊,其他完整節點將看到該塊中包含的交易無效(因為它具有無效簽名)並拒絕該塊。因此,即使花費大量電力和計算成本來探勘它,你也會失去區塊獎勵。

但是,話雖如此,可以使用SINGLENONEsighash 標誌進行簽名的交易。該SINGLE標誌只送出一個輸出,而該NONE標誌不送出任何輸出。如果在簽署交易時設置了這些標誌,那麼礦工可以修改其他輸出。

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