我正在阅读rpc的estimateSmartFee方法的代码,我不明白为什么在TXS中使用blockIndex?
estimateSmartFee loop unconf TXS以获取费率(代码:https://github.com/bitcoin/bitcoin/blob/0.18/src/policy/fees.cpp#L291)
但是值unconfTxs[blockIndex][bucketinex]将在TxConfirmStats::ClearCurrent中重置,或者在TxConfirmStats::removeTx中减少。为什么不这样定义呢?
源文件费用.cpp
unsigned int TxConfirmStats::NewTx(unsigned int nBlockHeight,double val)
{
无符号int bucketindex=bucketMap.下界(val)->秒;
unsigned int blockIndex=nBlockHeight%未确认TXS.size();
unconfTxs[块索引][块索引]++;
返回bucketindex;
}
无约束TXS
//未完成交易的内存池计数
//对于每个bucket X,跟踪mempool中的事务数
//对于每个可能的确认值Y都是未确认的
std::vector<std::vector<int>>unconfTxs;//unconfTxs[Y][X]
比特币
分享
改进这个问题
跟随
11月28日19点20分被问到
托克斯特托克斯特
3533青铜徽章
添加评论
1个答案
0
整个向量就是跟踪自从一个事务进入mempool以来经过了多少个块,以及它的速率是多少。因此,它允许估计器在feerate为X的情况下查看mempool中有多少个事务在Y块中。这允许估计器查看可能需要什么feerate才能在Y块中确认事务。
如果你只知道每种费率下的交易数量,那只会告诉你未确认交易的费率分布。这对于估计在一个事务包含在一个块中之前要经过多少块是没有帮助的。
分享
改进这个答案
跟随