Transactions

礦工如何理解交易的作用?

  • July 7, 2016

比特幣是通過可能非常複雜的交易腳本花費的。礦工如何理解交易的作用?

礦工必須決定是否在他們的區塊中包含交易,但這可能是一個相當困難的決定,因為腳本可能很複雜。例如,你怎麼可能知道一筆交易是有費用的,而不會對交易進行解碼?一個人可以創建一筆高額費用的交易,但由於腳本的複雜性,這可能很難確定。

確定交易費用實際上非常容易。

如您所知,交易有輸入和輸出,其中每個輸出都有一個關聯的金額和一個腳本,每個輸入是一個連結到前一個交易的輸出,以及滿足前一個輸出腳本所需的任何數據。

交易費用是通過簡單地讓輸出的總價值小於輸入的總價值來實現的。差額代表交易費用,可以添加到區塊的 coinbase 交易中,作為礦工獎勵的一部分收取。

因此,為了計算交易費用,礦工只需:

  • 總結交易輸出的值。
  • 對於交易的輸入,找到相關的先前輸出並將它們的值相加。(這些通常已經儲存在索引數據庫中,因此很容易找到它們。)這給出了總輸入值。
  • 減去。

當然,礦工也必須檢查交易是否有效,因為任何包含無效交易的區塊本身都是無效的,不會被包含在區塊鏈中。這有點困難,因為它確實需要為每個先前的輸出實際“解碼”和執行腳本,並驗證目前事務中提供的輸入數據和簽名是否滿足這些腳本。但是根據設計,這些腳本可用的指令非常有限(例如,沒有循環)。所以這個驗證是有界的複雜性,在計算意義上也不會太難。當然,實際進行驗證的程式碼已經在 Bitcoin Core 中實現了,所以實際上礦工所要做的就是執行它。

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