Transaction-Fees

在什麼情況下費率可能是負數,它的真正含義是什麼?

  • July 10, 2022

在類的定義中,CFeeRate一個名為 的成員nSatoshisPerK

/**
* Fee rate in satoshis per kilovirtualbyte: CAmount / kvB
*/
class CFeeRate
{
private:
   /** Fee rate in sat/kvB (satoshis per 1000 virtualbytes) */
   CAmount nSatoshisPerK;

根據上面的評論,它的工作是顯而易見的。這個類還有一個成員叫做GetFee

CAmount CFeeRate::GetFee(uint32_t num_bytes) const
{
   const int64_t nSize{num_bytes};

   // Be explicit that we're converting from a double to int64_t (CAmount) here.
   // We've previously had issues with the silent double->int64_t conversion.
   CAmount nFee{static_cast<CAmount>(std::ceil(nSatoshisPerK * nSize / 1000.0))};

   if (nFee == 0 && nSize != 0) {
       if (nSatoshisPerK > 0) nFee = CAmount(1);
       if (nSatoshisPerK < 0) nFee = CAmount(-1);
   }

   return nFee;
}

我的問題是,在這種情況下,有可能nSatoshisPerK小於零?這是什麼意思?

費率不可能小於 0。這意味著輸出比輸入更有價值,這意味著比特幣是憑空創造的。這樣的交易將是無效的,並且不可能有負費率。

在這種情況下,負值表示費率未初始化或無效。

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