Bitcoin-Core

區分幣基交易的唯一因素

  • July 5, 2022

在比特幣原始碼中,這裡有一個函式來檢查給定的交易是否是基於硬幣的:

   bool IsCoinBase() const
   {
       return (vin.size() == 1 && vin[0].prevout.IsNull());
   }

我的問題是它真的需要檢查是否vin.size()等於1嗎?交易不是vin[0].prevoud.IsNull()以幣為基礎的充分條件嗎?是否存在後一種情況為真但我們有多個輸入的情況?

我能猜到的唯一原因是在為空時避免執行時錯誤vin(所以沒有vin[0])。

coinbase 交易不允許有任何其他輸入,因此進行此檢查。此外,因為這個檢查是共識程式碼的一部分,它是 coinbase 交易的定義,所以這最終有點循環 - 該函式說 coinbase 交易必須只有一個輸入,它會檢查它。

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