mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-07-01 03:01:09 +02:00
scripted-diff: Fix coinstats data member names
Initially these values were 'per block' in an earlier version but were then changed to total values. The names were not updated to reflect that. -BEGIN VERIFY SCRIPT- s() { git grep -l "$1" src | xargs sed -i "s/$1/$2/g"; } s 'm_block_unspendable_amount' 'm_total_unspendable_amount' s 'm_block_prevout_spent_amount' 'm_total_prevout_spent_amount' s 'm_block_new_outputs_ex_coinbase_amount' 'm_total_new_outputs_ex_coinbase_amount' s 'm_block_coinbase_amount' 'm_total_coinbase_amount' s 'block_unspendable_amount' 'total_unspendable_amount' s 'block_prevout_spent_amount' 'total_prevout_spent_amount' s 'block_new_outputs_ex_coinbase_amount' 'total_new_outputs_ex_coinbase_amount' s 'block_coinbase_amount' 'total_coinbase_amount' s 'unspendables_genesis_block' 'total_unspendables_genesis_block' s 'unspendables_bip30' 'total_unspendables_bip30' s 'unspendables_scripts' 'total_unspendables_scripts' s 'unspendables_unclaimed_rewards' 'total_unspendables_unclaimed_rewards' s 'm_unspendables_genesis_block' 'm_total_unspendables_genesis_block' s 'm_unspendables_bip30' 'm_total_unspendables_bip30' s 'm_unspendables_scripts' 'm_total_unspendables_scripts' s 'm_unspendables_unclaimed_rewards' 'm_total_unspendables_unclaimed_rewards' -END VERIFY SCRIPT-
This commit is contained in:
@ -24,14 +24,14 @@ struct DBVal {
|
|||||||
uint64_t bogo_size;
|
uint64_t bogo_size;
|
||||||
CAmount total_amount;
|
CAmount total_amount;
|
||||||
CAmount total_subsidy;
|
CAmount total_subsidy;
|
||||||
CAmount block_unspendable_amount;
|
CAmount total_unspendable_amount;
|
||||||
CAmount block_prevout_spent_amount;
|
CAmount total_prevout_spent_amount;
|
||||||
CAmount block_new_outputs_ex_coinbase_amount;
|
CAmount total_new_outputs_ex_coinbase_amount;
|
||||||
CAmount block_coinbase_amount;
|
CAmount total_coinbase_amount;
|
||||||
CAmount unspendables_genesis_block;
|
CAmount total_unspendables_genesis_block;
|
||||||
CAmount unspendables_bip30;
|
CAmount total_unspendables_bip30;
|
||||||
CAmount unspendables_scripts;
|
CAmount total_unspendables_scripts;
|
||||||
CAmount unspendables_unclaimed_rewards;
|
CAmount total_unspendables_unclaimed_rewards;
|
||||||
|
|
||||||
SERIALIZE_METHODS(DBVal, obj)
|
SERIALIZE_METHODS(DBVal, obj)
|
||||||
{
|
{
|
||||||
@ -40,14 +40,14 @@ struct DBVal {
|
|||||||
READWRITE(obj.bogo_size);
|
READWRITE(obj.bogo_size);
|
||||||
READWRITE(obj.total_amount);
|
READWRITE(obj.total_amount);
|
||||||
READWRITE(obj.total_subsidy);
|
READWRITE(obj.total_subsidy);
|
||||||
READWRITE(obj.block_unspendable_amount);
|
READWRITE(obj.total_unspendable_amount);
|
||||||
READWRITE(obj.block_prevout_spent_amount);
|
READWRITE(obj.total_prevout_spent_amount);
|
||||||
READWRITE(obj.block_new_outputs_ex_coinbase_amount);
|
READWRITE(obj.total_new_outputs_ex_coinbase_amount);
|
||||||
READWRITE(obj.block_coinbase_amount);
|
READWRITE(obj.total_coinbase_amount);
|
||||||
READWRITE(obj.unspendables_genesis_block);
|
READWRITE(obj.total_unspendables_genesis_block);
|
||||||
READWRITE(obj.unspendables_bip30);
|
READWRITE(obj.total_unspendables_bip30);
|
||||||
READWRITE(obj.unspendables_scripts);
|
READWRITE(obj.total_unspendables_scripts);
|
||||||
READWRITE(obj.unspendables_unclaimed_rewards);
|
READWRITE(obj.total_unspendables_unclaimed_rewards);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -138,8 +138,8 @@ bool CoinStatsIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
|
|||||||
|
|
||||||
// Skip duplicate txid coinbase transactions (BIP30).
|
// Skip duplicate txid coinbase transactions (BIP30).
|
||||||
if (is_bip30_block && tx->IsCoinBase()) {
|
if (is_bip30_block && tx->IsCoinBase()) {
|
||||||
m_block_unspendable_amount += block_subsidy;
|
m_total_unspendable_amount += block_subsidy;
|
||||||
m_unspendables_bip30 += block_subsidy;
|
m_total_unspendables_bip30 += block_subsidy;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,17 +150,17 @@ bool CoinStatsIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
|
|||||||
|
|
||||||
// Skip unspendable coins
|
// Skip unspendable coins
|
||||||
if (coin.out.scriptPubKey.IsUnspendable()) {
|
if (coin.out.scriptPubKey.IsUnspendable()) {
|
||||||
m_block_unspendable_amount += coin.out.nValue;
|
m_total_unspendable_amount += coin.out.nValue;
|
||||||
m_unspendables_scripts += coin.out.nValue;
|
m_total_unspendables_scripts += coin.out.nValue;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_muhash.Insert(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
m_muhash.Insert(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
||||||
|
|
||||||
if (tx->IsCoinBase()) {
|
if (tx->IsCoinBase()) {
|
||||||
m_block_coinbase_amount += coin.out.nValue;
|
m_total_coinbase_amount += coin.out.nValue;
|
||||||
} else {
|
} else {
|
||||||
m_block_new_outputs_ex_coinbase_amount += coin.out.nValue;
|
m_total_new_outputs_ex_coinbase_amount += coin.out.nValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
++m_transaction_output_count;
|
++m_transaction_output_count;
|
||||||
@ -178,7 +178,7 @@ bool CoinStatsIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
|
|||||||
|
|
||||||
m_muhash.Remove(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
m_muhash.Remove(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
||||||
|
|
||||||
m_block_prevout_spent_amount += coin.out.nValue;
|
m_total_prevout_spent_amount += coin.out.nValue;
|
||||||
|
|
||||||
--m_transaction_output_count;
|
--m_transaction_output_count;
|
||||||
m_total_amount -= coin.out.nValue;
|
m_total_amount -= coin.out.nValue;
|
||||||
@ -188,17 +188,17 @@ bool CoinStatsIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// genesis block
|
// genesis block
|
||||||
m_block_unspendable_amount += block_subsidy;
|
m_total_unspendable_amount += block_subsidy;
|
||||||
m_unspendables_genesis_block += block_subsidy;
|
m_total_unspendables_genesis_block += block_subsidy;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If spent prevouts + block subsidy are still a higher amount than
|
// If spent prevouts + block subsidy are still a higher amount than
|
||||||
// new outputs + coinbase + current unspendable amount this means
|
// new outputs + coinbase + current unspendable amount this means
|
||||||
// the miner did not claim the full block reward. Unclaimed block
|
// the miner did not claim the full block reward. Unclaimed block
|
||||||
// rewards are also unspendable.
|
// rewards are also unspendable.
|
||||||
const CAmount unclaimed_rewards{(m_block_prevout_spent_amount + m_total_subsidy) - (m_block_new_outputs_ex_coinbase_amount + m_block_coinbase_amount + m_block_unspendable_amount)};
|
const CAmount unclaimed_rewards{(m_total_prevout_spent_amount + m_total_subsidy) - (m_total_new_outputs_ex_coinbase_amount + m_total_coinbase_amount + m_total_unspendable_amount)};
|
||||||
m_block_unspendable_amount += unclaimed_rewards;
|
m_total_unspendable_amount += unclaimed_rewards;
|
||||||
m_unspendables_unclaimed_rewards += unclaimed_rewards;
|
m_total_unspendables_unclaimed_rewards += unclaimed_rewards;
|
||||||
|
|
||||||
std::pair<uint256, DBVal> value;
|
std::pair<uint256, DBVal> value;
|
||||||
value.first = pindex->GetBlockHash();
|
value.first = pindex->GetBlockHash();
|
||||||
@ -206,14 +206,14 @@ bool CoinStatsIndex::WriteBlock(const CBlock& block, const CBlockIndex* pindex)
|
|||||||
value.second.bogo_size = m_bogo_size;
|
value.second.bogo_size = m_bogo_size;
|
||||||
value.second.total_amount = m_total_amount;
|
value.second.total_amount = m_total_amount;
|
||||||
value.second.total_subsidy = m_total_subsidy;
|
value.second.total_subsidy = m_total_subsidy;
|
||||||
value.second.block_unspendable_amount = m_block_unspendable_amount;
|
value.second.total_unspendable_amount = m_total_unspendable_amount;
|
||||||
value.second.block_prevout_spent_amount = m_block_prevout_spent_amount;
|
value.second.total_prevout_spent_amount = m_total_prevout_spent_amount;
|
||||||
value.second.block_new_outputs_ex_coinbase_amount = m_block_new_outputs_ex_coinbase_amount;
|
value.second.total_new_outputs_ex_coinbase_amount = m_total_new_outputs_ex_coinbase_amount;
|
||||||
value.second.block_coinbase_amount = m_block_coinbase_amount;
|
value.second.total_coinbase_amount = m_total_coinbase_amount;
|
||||||
value.second.unspendables_genesis_block = m_unspendables_genesis_block;
|
value.second.total_unspendables_genesis_block = m_total_unspendables_genesis_block;
|
||||||
value.second.unspendables_bip30 = m_unspendables_bip30;
|
value.second.total_unspendables_bip30 = m_total_unspendables_bip30;
|
||||||
value.second.unspendables_scripts = m_unspendables_scripts;
|
value.second.total_unspendables_scripts = m_total_unspendables_scripts;
|
||||||
value.second.unspendables_unclaimed_rewards = m_unspendables_unclaimed_rewards;
|
value.second.total_unspendables_unclaimed_rewards = m_total_unspendables_unclaimed_rewards;
|
||||||
|
|
||||||
uint256 out;
|
uint256 out;
|
||||||
m_muhash.Finalize(out);
|
m_muhash.Finalize(out);
|
||||||
@ -317,14 +317,14 @@ bool CoinStatsIndex::LookUpStats(const CBlockIndex* block_index, CCoinsStats& co
|
|||||||
coins_stats.nBogoSize = entry.bogo_size;
|
coins_stats.nBogoSize = entry.bogo_size;
|
||||||
coins_stats.nTotalAmount = entry.total_amount;
|
coins_stats.nTotalAmount = entry.total_amount;
|
||||||
coins_stats.total_subsidy = entry.total_subsidy;
|
coins_stats.total_subsidy = entry.total_subsidy;
|
||||||
coins_stats.block_unspendable_amount = entry.block_unspendable_amount;
|
coins_stats.total_unspendable_amount = entry.total_unspendable_amount;
|
||||||
coins_stats.block_prevout_spent_amount = entry.block_prevout_spent_amount;
|
coins_stats.total_prevout_spent_amount = entry.total_prevout_spent_amount;
|
||||||
coins_stats.block_new_outputs_ex_coinbase_amount = entry.block_new_outputs_ex_coinbase_amount;
|
coins_stats.total_new_outputs_ex_coinbase_amount = entry.total_new_outputs_ex_coinbase_amount;
|
||||||
coins_stats.block_coinbase_amount = entry.block_coinbase_amount;
|
coins_stats.total_coinbase_amount = entry.total_coinbase_amount;
|
||||||
coins_stats.unspendables_genesis_block = entry.unspendables_genesis_block;
|
coins_stats.total_unspendables_genesis_block = entry.total_unspendables_genesis_block;
|
||||||
coins_stats.unspendables_bip30 = entry.unspendables_bip30;
|
coins_stats.total_unspendables_bip30 = entry.total_unspendables_bip30;
|
||||||
coins_stats.unspendables_scripts = entry.unspendables_scripts;
|
coins_stats.total_unspendables_scripts = entry.total_unspendables_scripts;
|
||||||
coins_stats.unspendables_unclaimed_rewards = entry.unspendables_unclaimed_rewards;
|
coins_stats.total_unspendables_unclaimed_rewards = entry.total_unspendables_unclaimed_rewards;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -354,14 +354,14 @@ bool CoinStatsIndex::Init()
|
|||||||
m_bogo_size = entry.bogo_size;
|
m_bogo_size = entry.bogo_size;
|
||||||
m_total_amount = entry.total_amount;
|
m_total_amount = entry.total_amount;
|
||||||
m_total_subsidy = entry.total_subsidy;
|
m_total_subsidy = entry.total_subsidy;
|
||||||
m_block_unspendable_amount = entry.block_unspendable_amount;
|
m_total_unspendable_amount = entry.total_unspendable_amount;
|
||||||
m_block_prevout_spent_amount = entry.block_prevout_spent_amount;
|
m_total_prevout_spent_amount = entry.total_prevout_spent_amount;
|
||||||
m_block_new_outputs_ex_coinbase_amount = entry.block_new_outputs_ex_coinbase_amount;
|
m_total_new_outputs_ex_coinbase_amount = entry.total_new_outputs_ex_coinbase_amount;
|
||||||
m_block_coinbase_amount = entry.block_coinbase_amount;
|
m_total_coinbase_amount = entry.total_coinbase_amount;
|
||||||
m_unspendables_genesis_block = entry.unspendables_genesis_block;
|
m_total_unspendables_genesis_block = entry.total_unspendables_genesis_block;
|
||||||
m_unspendables_bip30 = entry.unspendables_bip30;
|
m_total_unspendables_bip30 = entry.total_unspendables_bip30;
|
||||||
m_unspendables_scripts = entry.unspendables_scripts;
|
m_total_unspendables_scripts = entry.total_unspendables_scripts;
|
||||||
m_unspendables_unclaimed_rewards = entry.unspendables_unclaimed_rewards;
|
m_total_unspendables_unclaimed_rewards = entry.total_unspendables_unclaimed_rewards;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -409,17 +409,17 @@ bool CoinStatsIndex::ReverseBlock(const CBlock& block, const CBlockIndex* pindex
|
|||||||
|
|
||||||
// Skip unspendable coins
|
// Skip unspendable coins
|
||||||
if (coin.out.scriptPubKey.IsUnspendable()) {
|
if (coin.out.scriptPubKey.IsUnspendable()) {
|
||||||
m_block_unspendable_amount -= coin.out.nValue;
|
m_total_unspendable_amount -= coin.out.nValue;
|
||||||
m_unspendables_scripts -= coin.out.nValue;
|
m_total_unspendables_scripts -= coin.out.nValue;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_muhash.Remove(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
m_muhash.Remove(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
||||||
|
|
||||||
if (tx->IsCoinBase()) {
|
if (tx->IsCoinBase()) {
|
||||||
m_block_coinbase_amount -= coin.out.nValue;
|
m_total_coinbase_amount -= coin.out.nValue;
|
||||||
} else {
|
} else {
|
||||||
m_block_new_outputs_ex_coinbase_amount -= coin.out.nValue;
|
m_total_new_outputs_ex_coinbase_amount -= coin.out.nValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
--m_transaction_output_count;
|
--m_transaction_output_count;
|
||||||
@ -437,7 +437,7 @@ bool CoinStatsIndex::ReverseBlock(const CBlock& block, const CBlockIndex* pindex
|
|||||||
|
|
||||||
m_muhash.Insert(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
m_muhash.Insert(MakeUCharSpan(TxOutSer(outpoint, coin)));
|
||||||
|
|
||||||
m_block_prevout_spent_amount -= coin.out.nValue;
|
m_total_prevout_spent_amount -= coin.out.nValue;
|
||||||
|
|
||||||
m_transaction_output_count++;
|
m_transaction_output_count++;
|
||||||
m_total_amount += coin.out.nValue;
|
m_total_amount += coin.out.nValue;
|
||||||
@ -446,9 +446,9 @@ bool CoinStatsIndex::ReverseBlock(const CBlock& block, const CBlockIndex* pindex
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const CAmount unclaimed_rewards{(m_block_new_outputs_ex_coinbase_amount + m_block_coinbase_amount + m_block_unspendable_amount) - (m_block_prevout_spent_amount + m_total_subsidy)};
|
const CAmount unclaimed_rewards{(m_total_new_outputs_ex_coinbase_amount + m_total_coinbase_amount + m_total_unspendable_amount) - (m_total_prevout_spent_amount + m_total_subsidy)};
|
||||||
m_block_unspendable_amount -= unclaimed_rewards;
|
m_total_unspendable_amount -= unclaimed_rewards;
|
||||||
m_unspendables_unclaimed_rewards -= unclaimed_rewards;
|
m_total_unspendables_unclaimed_rewards -= unclaimed_rewards;
|
||||||
|
|
||||||
// Check that the rolled back internal values are consistent with the DB read out
|
// Check that the rolled back internal values are consistent with the DB read out
|
||||||
uint256 out;
|
uint256 out;
|
||||||
@ -459,14 +459,14 @@ bool CoinStatsIndex::ReverseBlock(const CBlock& block, const CBlockIndex* pindex
|
|||||||
Assert(m_total_amount == read_out.second.total_amount);
|
Assert(m_total_amount == read_out.second.total_amount);
|
||||||
Assert(m_bogo_size == read_out.second.bogo_size);
|
Assert(m_bogo_size == read_out.second.bogo_size);
|
||||||
Assert(m_total_subsidy == read_out.second.total_subsidy);
|
Assert(m_total_subsidy == read_out.second.total_subsidy);
|
||||||
Assert(m_block_unspendable_amount == read_out.second.block_unspendable_amount);
|
Assert(m_total_unspendable_amount == read_out.second.total_unspendable_amount);
|
||||||
Assert(m_block_prevout_spent_amount == read_out.second.block_prevout_spent_amount);
|
Assert(m_total_prevout_spent_amount == read_out.second.total_prevout_spent_amount);
|
||||||
Assert(m_block_new_outputs_ex_coinbase_amount == read_out.second.block_new_outputs_ex_coinbase_amount);
|
Assert(m_total_new_outputs_ex_coinbase_amount == read_out.second.total_new_outputs_ex_coinbase_amount);
|
||||||
Assert(m_block_coinbase_amount == read_out.second.block_coinbase_amount);
|
Assert(m_total_coinbase_amount == read_out.second.total_coinbase_amount);
|
||||||
Assert(m_unspendables_genesis_block == read_out.second.unspendables_genesis_block);
|
Assert(m_total_unspendables_genesis_block == read_out.second.total_unspendables_genesis_block);
|
||||||
Assert(m_unspendables_bip30 == read_out.second.unspendables_bip30);
|
Assert(m_total_unspendables_bip30 == read_out.second.total_unspendables_bip30);
|
||||||
Assert(m_unspendables_scripts == read_out.second.unspendables_scripts);
|
Assert(m_total_unspendables_scripts == read_out.second.total_unspendables_scripts);
|
||||||
Assert(m_unspendables_unclaimed_rewards == read_out.second.unspendables_unclaimed_rewards);
|
Assert(m_total_unspendables_unclaimed_rewards == read_out.second.total_unspendables_unclaimed_rewards);
|
||||||
|
|
||||||
return m_db->Write(DB_MUHASH, m_muhash);
|
return m_db->Write(DB_MUHASH, m_muhash);
|
||||||
}
|
}
|
||||||
|
@ -25,14 +25,14 @@ private:
|
|||||||
uint64_t m_bogo_size{0};
|
uint64_t m_bogo_size{0};
|
||||||
CAmount m_total_amount{0};
|
CAmount m_total_amount{0};
|
||||||
CAmount m_total_subsidy{0};
|
CAmount m_total_subsidy{0};
|
||||||
CAmount m_block_unspendable_amount{0};
|
CAmount m_total_unspendable_amount{0};
|
||||||
CAmount m_block_prevout_spent_amount{0};
|
CAmount m_total_prevout_spent_amount{0};
|
||||||
CAmount m_block_new_outputs_ex_coinbase_amount{0};
|
CAmount m_total_new_outputs_ex_coinbase_amount{0};
|
||||||
CAmount m_block_coinbase_amount{0};
|
CAmount m_total_coinbase_amount{0};
|
||||||
CAmount m_unspendables_genesis_block{0};
|
CAmount m_total_unspendables_genesis_block{0};
|
||||||
CAmount m_unspendables_bip30{0};
|
CAmount m_total_unspendables_bip30{0};
|
||||||
CAmount m_unspendables_scripts{0};
|
CAmount m_total_unspendables_scripts{0};
|
||||||
CAmount m_unspendables_unclaimed_rewards{0};
|
CAmount m_total_unspendables_unclaimed_rewards{0};
|
||||||
|
|
||||||
bool ReverseBlock(const CBlock& block, const CBlockIndex* pindex);
|
bool ReverseBlock(const CBlock& block, const CBlockIndex* pindex);
|
||||||
|
|
||||||
|
@ -46,14 +46,14 @@ struct CCoinsStats
|
|||||||
|
|
||||||
// Following values are only available from coinstats index
|
// Following values are only available from coinstats index
|
||||||
CAmount total_subsidy{0};
|
CAmount total_subsidy{0};
|
||||||
CAmount block_unspendable_amount{0};
|
CAmount total_unspendable_amount{0};
|
||||||
CAmount block_prevout_spent_amount{0};
|
CAmount total_prevout_spent_amount{0};
|
||||||
CAmount block_new_outputs_ex_coinbase_amount{0};
|
CAmount total_new_outputs_ex_coinbase_amount{0};
|
||||||
CAmount block_coinbase_amount{0};
|
CAmount total_coinbase_amount{0};
|
||||||
CAmount unspendables_genesis_block{0};
|
CAmount total_unspendables_genesis_block{0};
|
||||||
CAmount unspendables_bip30{0};
|
CAmount total_unspendables_bip30{0};
|
||||||
CAmount unspendables_scripts{0};
|
CAmount total_unspendables_scripts{0};
|
||||||
CAmount unspendables_unclaimed_rewards{0};
|
CAmount total_unspendables_unclaimed_rewards{0};
|
||||||
|
|
||||||
CCoinsStats(CoinStatsHashType hash_type) : m_hash_type(hash_type) {}
|
CCoinsStats(CoinStatsHashType hash_type) : m_hash_type(hash_type) {}
|
||||||
};
|
};
|
||||||
|
@ -1191,7 +1191,7 @@ static RPCHelpMan gettxoutsetinfo()
|
|||||||
ret.pushKV("transactions", static_cast<int64_t>(stats.nTransactions));
|
ret.pushKV("transactions", static_cast<int64_t>(stats.nTransactions));
|
||||||
ret.pushKV("disk_size", stats.nDiskSize);
|
ret.pushKV("disk_size", stats.nDiskSize);
|
||||||
} else {
|
} else {
|
||||||
ret.pushKV("total_unspendable_amount", ValueFromAmount(stats.block_unspendable_amount));
|
ret.pushKV("total_unspendable_amount", ValueFromAmount(stats.total_unspendable_amount));
|
||||||
|
|
||||||
CCoinsStats prev_stats{hash_type};
|
CCoinsStats prev_stats{hash_type};
|
||||||
|
|
||||||
@ -1200,16 +1200,16 @@ static RPCHelpMan gettxoutsetinfo()
|
|||||||
}
|
}
|
||||||
|
|
||||||
UniValue block_info(UniValue::VOBJ);
|
UniValue block_info(UniValue::VOBJ);
|
||||||
block_info.pushKV("prevout_spent", ValueFromAmount(stats.block_prevout_spent_amount - prev_stats.block_prevout_spent_amount));
|
block_info.pushKV("prevout_spent", ValueFromAmount(stats.total_prevout_spent_amount - prev_stats.total_prevout_spent_amount));
|
||||||
block_info.pushKV("coinbase", ValueFromAmount(stats.block_coinbase_amount - prev_stats.block_coinbase_amount));
|
block_info.pushKV("coinbase", ValueFromAmount(stats.total_coinbase_amount - prev_stats.total_coinbase_amount));
|
||||||
block_info.pushKV("new_outputs_ex_coinbase", ValueFromAmount(stats.block_new_outputs_ex_coinbase_amount - prev_stats.block_new_outputs_ex_coinbase_amount));
|
block_info.pushKV("new_outputs_ex_coinbase", ValueFromAmount(stats.total_new_outputs_ex_coinbase_amount - prev_stats.total_new_outputs_ex_coinbase_amount));
|
||||||
block_info.pushKV("unspendable", ValueFromAmount(stats.block_unspendable_amount - prev_stats.block_unspendable_amount));
|
block_info.pushKV("unspendable", ValueFromAmount(stats.total_unspendable_amount - prev_stats.total_unspendable_amount));
|
||||||
|
|
||||||
UniValue unspendables(UniValue::VOBJ);
|
UniValue unspendables(UniValue::VOBJ);
|
||||||
unspendables.pushKV("genesis_block", ValueFromAmount(stats.unspendables_genesis_block - prev_stats.unspendables_genesis_block));
|
unspendables.pushKV("genesis_block", ValueFromAmount(stats.total_unspendables_genesis_block - prev_stats.total_unspendables_genesis_block));
|
||||||
unspendables.pushKV("bip30", ValueFromAmount(stats.unspendables_bip30 - prev_stats.unspendables_bip30));
|
unspendables.pushKV("bip30", ValueFromAmount(stats.total_unspendables_bip30 - prev_stats.total_unspendables_bip30));
|
||||||
unspendables.pushKV("scripts", ValueFromAmount(stats.unspendables_scripts - prev_stats.unspendables_scripts));
|
unspendables.pushKV("scripts", ValueFromAmount(stats.total_unspendables_scripts - prev_stats.total_unspendables_scripts));
|
||||||
unspendables.pushKV("unclaimed_rewards", ValueFromAmount(stats.unspendables_unclaimed_rewards - prev_stats.unspendables_unclaimed_rewards));
|
unspendables.pushKV("unclaimed_rewards", ValueFromAmount(stats.total_unspendables_unclaimed_rewards - prev_stats.total_unspendables_unclaimed_rewards));
|
||||||
block_info.pushKV("unspendables", unspendables);
|
block_info.pushKV("unspendables", unspendables);
|
||||||
|
|
||||||
ret.pushKV("block_info", block_info);
|
ret.pushKV("block_info", block_info);
|
||||||
|
Reference in New Issue
Block a user