Use uints to save RAM/disk on block stats; fix ntz serialization
This commit is contained in:
23
src/chain.h
23
src/chain.h
@@ -263,50 +263,47 @@ public:
|
|||||||
//! Number of notarization transactions in this block.
|
//! Number of notarization transactions in this block.
|
||||||
unsigned int nNotarizations;
|
unsigned int nNotarizations;
|
||||||
|
|
||||||
// TODO: convert block-stats to unsigned int ?
|
|
||||||
//! (memory only) Number of payments (shielded or transparent) in the block
|
//! (memory only) Number of payments (shielded or transparent) in the block
|
||||||
//! up to and including this block. One transaction can contain one or more
|
//! up to and including this block. One transaction can contain one or more
|
||||||
//! payments. This stat allows us to calculate ratios of shielded/transparent
|
//! payments. This stat allows us to calculate ratios of shielded/transparent
|
||||||
//! when combined with shielded payment stats
|
//! when combined with shielded payment stats
|
||||||
int64_t nPayments;
|
unsigned int nPayments;
|
||||||
|
|
||||||
//! (memory only) Number of shielded transactions (of any kind) in the block up to and including this block.
|
//! (memory only) Number of shielded transactions (of any kind) in the block up to and including this block.
|
||||||
//! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes
|
//! A shielded transaction is defined as a transaction that contains at least 1 JoinSplit, which includes
|
||||||
//! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as
|
//! shielding/de-shielding and other complex transaction possibilties including multiple taddrs/zaddrs as
|
||||||
//! inputs and outputs.
|
//! inputs and outputs.
|
||||||
int64_t nShieldedTx;
|
unsigned int nShieldedTx;
|
||||||
|
|
||||||
//! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined
|
//! (memory only) Number of fully shielded transactions. A fully shielded transaction is defined
|
||||||
//! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent
|
//! as a transaction containing JoinSplits and only shielded inputs and outputs, i.e. no transparent
|
||||||
// inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc...
|
// inputs or outputs: z->z or z->(z,z) or z->(z,z,z,) etc...
|
||||||
int64_t nFullyShieldedTx;
|
unsigned int nFullyShieldedTx;
|
||||||
|
|
||||||
//! (memory only) Number of shielding payments. A shielding payment is defined
|
//! (memory only) Number of shielding payments. A shielding payment is defined
|
||||||
//! as having a shielded output but transparent input: t->z
|
//! as having a shielded output but transparent input: t->z
|
||||||
int64_t nShieldingPayments;
|
unsigned int nShieldingPayments;
|
||||||
|
|
||||||
//! (memory only) Number of shielded payments. A shielded payment is defined
|
//! (memory only) Number of shielded payments. A shielded payment is defined
|
||||||
//! as having a shielded input or output: t->z or z->t
|
//! as having a shielded input or output: t->z or z->t
|
||||||
int64_t nShieldedPayments;
|
unsigned int nShieldedPayments;
|
||||||
|
|
||||||
//! (memory only) Number of fully shielded payments. A fully shielded payment is defined
|
//! (memory only) Number of fully shielded payments. A fully shielded payment is defined
|
||||||
//! as having a shielded input and shielded output: z->z
|
//! as having a shielded input and shielded output: z->z
|
||||||
int64_t nFullyShieldedPayments;
|
unsigned int nFullyShieldedPayments;
|
||||||
|
|
||||||
//! (memory only) Number of deshielding transactions. A deshielding transaction is defined
|
//! (memory only) Number of deshielding transactions. A deshielding transaction is defined
|
||||||
//! as a transaction containing JoinSplits and at least one transparent output.
|
//! as a transaction containing JoinSplits and at least one transparent output.
|
||||||
int64_t nDeshieldingTx;
|
unsigned int nDeshieldingTx;
|
||||||
|
|
||||||
//! (memory only) Number of deshielding payments. A deshielding payment is defined
|
//! (memory only) Number of deshielding payments. A deshielding payment is defined
|
||||||
//! as one transparent input and one shielded output: z->t
|
//! as one transparent input and one shielded output: z->t
|
||||||
int64_t nDeshieldingPayments;
|
unsigned int nDeshieldingPayments;
|
||||||
|
|
||||||
//! (memory only) Number of shielding transactions. A shielding transaction is defined
|
//! (memory only) Number of shielding transactions. A shielding transaction is defined
|
||||||
//! as a transaction containing JoinSplits and at least one transparent input
|
//! as a transaction containing JoinSplits and at least one transparent input
|
||||||
// i.e. t->z or t->(z,t) or z->(z,z,t)
|
// i.e. t->z or t->(z,t) or z->(z,z,t)
|
||||||
int64_t nShieldingTx;
|
unsigned int nShieldingTx;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// chain stats
|
// chain stats
|
||||||
//! (memory only) Number of transactions in the chain up to and including this block.
|
//! (memory only) Number of transactions in the chain up to and including this block.
|
||||||
@@ -634,7 +631,7 @@ public:
|
|||||||
READWRITE(VARINT(nDeshieldingPayments));
|
READWRITE(VARINT(nDeshieldingPayments));
|
||||||
READWRITE(VARINT(nFullyShieldedPayments));
|
READWRITE(VARINT(nFullyShieldedPayments));
|
||||||
|
|
||||||
READWRITE(VARINT(nChainNotarizations));
|
READWRITE(VARINT(nNotarizations));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO))
|
if (nStatus & (BLOCK_HAVE_DATA | BLOCK_HAVE_UNDO))
|
||||||
|
|||||||
@@ -1994,21 +1994,13 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp)
|
|||||||
const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount);
|
const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount);
|
||||||
int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast();
|
int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast();
|
||||||
int nTxDiff = pindex->nChainTx - pindexPast->nChainTx;
|
int nTxDiff = pindex->nChainTx - pindexPast->nChainTx;
|
||||||
int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments;
|
|
||||||
int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx;
|
|
||||||
int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx;
|
|
||||||
int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx;
|
|
||||||
int64_t nFullyShieldedTxDiff = pindex->nChainFullyShieldedTx - pindexPast->nChainFullyShieldedTx;
|
|
||||||
int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments;
|
|
||||||
int64_t nShieldingPaymentsDiff = pindex->nChainShieldingPayments - pindexPast->nChainShieldingPayments;
|
|
||||||
int64_t nDeshieldingPaymentsDiff = pindex->nChainDeshieldingPayments - pindexPast->nChainDeshieldingPayments;
|
|
||||||
int64_t nFullyShieldedPaymentsDiff = pindex->nChainFullyShieldedPayments - pindexPast->nChainFullyShieldedPayments;
|
|
||||||
|
|
||||||
UniValue ret(UniValue::VOBJ);
|
UniValue ret(UniValue::VOBJ);
|
||||||
ret.pushKV("time", (int64_t)pindex->nTime);
|
ret.pushKV("time", (int64_t)pindex->nTime);
|
||||||
|
|
||||||
ret.pushKV("txcount", (int64_t)pindex->nChainTx);
|
ret.pushKV("txcount", (int64_t)pindex->nChainTx);
|
||||||
|
|
||||||
if (fZindex) {
|
if (fZindex) {
|
||||||
|
ret.pushKV("notarizations", (int64_t)pindex->nChainNotarizations);
|
||||||
ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx);
|
ret.pushKV("shielded_txcount", (int64_t)pindex->nChainShieldedTx);
|
||||||
ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx);
|
ret.pushKV("fully_shielded_txcount", (int64_t)pindex->nChainFullyShieldedTx);
|
||||||
ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx);
|
ret.pushKV("deshielding_txcount", (int64_t)pindex->nChainDeshieldingTx);
|
||||||
@@ -2024,13 +2016,26 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp)
|
|||||||
ret.pushKV("window_block_count", blockcount);
|
ret.pushKV("window_block_count", blockcount);
|
||||||
|
|
||||||
if (blockcount > 0) {
|
if (blockcount > 0) {
|
||||||
|
int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments;
|
||||||
|
int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx;
|
||||||
|
int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx;
|
||||||
|
int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx;
|
||||||
|
int64_t nFullyShieldedTxDiff = pindex->nChainFullyShieldedTx - pindexPast->nChainFullyShieldedTx;
|
||||||
|
int64_t nShieldedPaymentsDiff = pindex->nChainShieldedPayments - pindexPast->nChainShieldedPayments;
|
||||||
|
int64_t nShieldingPaymentsDiff = pindex->nChainShieldingPayments - pindexPast->nChainShieldingPayments;
|
||||||
|
int64_t nDeshieldingPaymentsDiff = pindex->nChainDeshieldingPayments - pindexPast->nChainDeshieldingPayments;
|
||||||
|
int64_t nFullyShieldedPaymentsDiff = pindex->nChainFullyShieldedPayments - pindexPast->nChainFullyShieldedPayments;
|
||||||
|
unsigned int nNotarizationsDiff = pindex->nChainNotarizations - pindexPast->nChainNotarizations;
|
||||||
|
|
||||||
ret.pushKV("window_interval", nTimeDiff);
|
ret.pushKV("window_interval", nTimeDiff);
|
||||||
ret.pushKV("window_txcount", nTxDiff);
|
ret.pushKV("window_txcount", nTxDiff);
|
||||||
ret.pushKV("window_payments", nPaymentsDiff);
|
ret.pushKV("window_payments", nPaymentsDiff);
|
||||||
|
ret.pushKV("window_notarizations", (int) nNotarizationsDiff);
|
||||||
|
|
||||||
if (nTimeDiff > 0) {
|
if (nTimeDiff > 0) {
|
||||||
ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff);
|
ret.pushKV("txrate", ((double)nTxDiff) / nTimeDiff);
|
||||||
if (fZindex) {
|
if (fZindex) {
|
||||||
|
ret.pushKV("notarization_txrate", ((double)nNotarizationsDiff) / nTimeDiff);
|
||||||
ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff);
|
ret.pushKV("shielded_txrate", ((double)nShieldedTxDiff) / nTimeDiff);
|
||||||
ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff);
|
ret.pushKV("fully_shielded_txrate", ((double)nFullyShieldedTxDiff) / nTimeDiff);
|
||||||
ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff);
|
ret.pushKV("paymentrate", ((double)nPaymentsDiff) / nTimeDiff);
|
||||||
|
|||||||
Reference in New Issue
Block a user