Mining-Reward
請解釋一下 CFeeRate::GetFee(size_t nBytes)
參考中的
CAmount CFeeRate::GetFee(size_t nBytes_)
函式feerate.cpp
:如果我傳入 say
2000
作為nBytes
參數,這個函式將返回什麼作為費用nFee
?不明白怎麼nSatoshisPerK
定義的。此外,很好奇為什麼使用它而不是讓礦工通過選擇性挖礦來確定這筆費用。CAmount CFeeRate::GetFee(size_t nBytes_) const { assert(nBytes_ <= uint64_t(std::numeric_limits<int64_t>::max())); int64_t nSize = int64_t(nBytes_); CAmount nFee = nSatoshisPerK * nSize / 1000; if (nFee == 0 && nSize != 0) { if (nSatoshisPerK > 0) nFee = CAmount(1); if (nSatoshisPerK < 0) nFee = CAmount(-1); } return nFee; }
如果我傳入 say
2000
作為nBytes
參數,這個函式將返回什麼作為費用nFee
?這取決於 CFeeRate 對象所代表的費率。費率以每千字節的比特幣表示。因此,您將字節數傳遞給 GetFee 併計算比特幣金額以支付一定大小的費用
nBytes_
。例如,如果您的 CFeeRate 對象表示每千字節 0.00020000 比特幣(或每字節 20 聰),則將 2000 作為 nBytes 表示您的費用將為
2000 * 0.0002 / 1000 = 0.0004 BTC
.不明白怎麼
nSatoshisPerK
定義的。它是在創建對象時定義的。無論創建什麼對象,都指定要使用的費率。
此外,很好奇為什麼使用它而不是讓礦工通過選擇性挖礦來確定這筆費用。
這只是一個實現細節,而不是指定每個人使用的費率的實際網路事物。CFeeRate 是比特幣核心的內部,只是費率在內部邏輯中的表示方式。費率本身由費用估算器建構,該估算器根據探勘的交易計算費用。