From 9b92874bec512ffc244af9bd086e2c9193526235 Mon Sep 17 00:00:00 2001 From: Marcin Jachymiak Date: Tue, 14 Aug 2018 10:42:24 -0400 Subject: [PATCH] Add value tracking stats Tracks total value of many_to_one outputs. Tracks total value of different kinds of SegWit outputs spent. Tracks total value of native SegWit outputs created. --- src/rpc/blockchain.cpp | 38 +++++++++++++++++++-- test/functional/data/rpc_getblockstats.json | 35 +++++++++++++++---- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp index 6bde26a0da832..b4a53d7a44d02 100644 --- a/src/rpc/blockchain.cpp +++ b/src/rpc/blockchain.cpp @@ -1889,6 +1889,13 @@ static UniValue getblockstats(const JSONRPCRequest& request) " \"dust_bins\": xxxxx, (numeric_array) The total number of outputs that are dust at several fee-rates\n" " \"mto_consolidations\": xxxxx, (numeric) The total number of transactions with at least 3 inputs and exactly 1 output\n" " \"mto_output_count\": xxxxx, (numeric) The total number of outputs spent in all mto_consolidation transactions\n" + " \"mto_total_value\": xxxxx, (numeric) The sum of values of all outputs from mto_consolidation transactions\n" + " \"value_of_nested_p2wpkh_outputs_spent\": xxxxx, (numeric) The total value of spent nested P2WPKH outputs\n" + " \"value_of_nested_p2wsh_outputs_spent\": xxxxx, (numeric) The total value of spent nested P2WSH outputs\n" + " \"value_of_native_p2wpkh_outputs_spent\": xxxxx, (numeric) The total value of spent native P2WPKH outputs\n" + " \"value_of_native_p2wsh_outputs_spent\": xxxxx, (numeric) The total value of spent native P2WSH outputs\n" + " \"value_of_native_p2wpkh_outputs_created\": xxxxx, (numeric) The total value of new native P2WPKH outputs\n" + " \"value_of_native_p2wsh_outputs_created\": xxxxx, (numeric) The total value of new native P2WSH outputs\n" "}\n" }, RPCExamples{ @@ -1944,9 +1951,9 @@ static UniValue getblockstats(const JSONRPCRequest& request) const bool do_medianfee = do_all || stats.count("medianfee") != 0; const bool do_feerate_percentiles = do_all || stats.count("feerate_percentiles") != 0; const bool loop_inputs = do_all || do_medianfee || do_feerate_percentiles || - SetHasKeys(stats, "utxo_size_inc", "totalfee", "avgfee", "avgfeerate", "minfee", "maxfee", "minfeerate", "maxfeerate", "nested_p2wpkh_outputs_spent", "nested_p2wsh_outputs_spent", "native_p2wpkh_outputs_spent", "native_p2wsh_outputs_spent", "txs_spending_nested_p2wpkh_outputs", "txs_spending_nested_p2wsh_outputs", "txs_spending_native_p2wpkh_outputs", "txs_spending_native_p2wsh_outputs", "dust_bins", "txs_signalling_opt_in_rbf"); + SetHasKeys(stats, "utxo_size_inc", "totalfee", "avgfee", "avgfeerate", "minfee", "maxfee", "minfeerate", "maxfeerate", "nested_p2wpkh_outputs_spent", "nested_p2wsh_outputs_spent", "native_p2wpkh_outputs_spent", "native_p2wsh_outputs_spent", "txs_spending_nested_p2wpkh_outputs", "txs_spending_nested_p2wsh_outputs", "txs_spending_native_p2wpkh_outputs", "txs_spending_native_p2wsh_outputs", "dust_bins", "txs_signalling_opt_in_rbf", "mto_total_value", "value_of_nested_p2wpkh_outputs_spent", "value_of_nested_p2wsh_outputs_spent", "value_of_native_p2wpkh_outputs_spent", "value_of_native_p2wsh_outputs_spent"); const bool loop_outputs = do_all || loop_inputs || stats.count("total_out") || - SetHasKeys(stats, "new_p2wpkh_outputs", "new_p2wsh_outputs", "txs_creating_p2wpkh_outputs", "txs_creating_p2wsh_outputs"); + SetHasKeys(stats, "new_p2wpkh_outputs", "new_p2wsh_outputs", "txs_creating_p2wpkh_outputs", "txs_creating_p2wsh_outputs", "value_of_native_p2wpkh_outputs_created", "value_of_native_p2wsh_outputs_created"); const bool do_calculate_size = do_mediantxsize || SetHasKeys(stats, "total_size", "avgtxsize", "mintxsize", "maxtxsize", "swtotal_size"); const bool do_calculate_weight = do_all || SetHasKeys(stats, "total_weight", "avgfeerate", "swtotal_weight", "avgfeerate", "feerate_percentiles", "minfeerate", "maxfeerate"); @@ -1975,6 +1982,12 @@ static UniValue getblockstats(const JSONRPCRequest& request) int64_t native_p2wsh_outputs_spent = 0; int64_t nested_p2wpkh_outputs_spent = 0; int64_t nested_p2wsh_outputs_spent = 0; + int64_t value_of_native_p2wpkh_outputs_created = 0; + int64_t value_of_native_p2wsh_outputs_created = 0; + int64_t value_of_native_p2wpkh_outputs_spent = 0; + int64_t value_of_native_p2wsh_outputs_spent = 0; + int64_t value_of_nested_p2wpkh_outputs_spent = 0; + int64_t value_of_nested_p2wsh_outputs_spent = 0; int64_t txs_spending_nested_p2wpkh_outputs = 0; int64_t txs_spending_nested_p2wsh_outputs = 0; int64_t txs_spending_native_p2wpkh_outputs = 0; @@ -1992,6 +2005,7 @@ static UniValue getblockstats(const JSONRPCRequest& request) std::vector cons_in_count; int64_t many_to_one_consolidating_txs = 0; int64_t many_to_one_consolidated_outputs = 0; + CAmount many_to_one_total_value = 0; // Batch ranges = [(1), (2), (3-4), (5-9), (10-49), (50-99), (100+)] constexpr int NUM_OUTCOUNT_BINS = 7; @@ -2035,9 +2049,11 @@ static UniValue getblockstats(const JSONRPCRequest& request) if (scriptPubKey.IsPayToWitnessScriptHash()) { ++new_p2wsh_outputs; creates_p2wsh_output = true; + value_of_native_p2wsh_outputs_created += out.nValue; } else if (scriptPubKey.IsNativePayToWitnessPubKeyHash()) { ++new_p2wpkh_outputs; creates_p2wpkh_output = true; + value_of_native_p2wpkh_outputs_created += out.nValue; } tx_total_out += out.nValue; @@ -2073,10 +2089,12 @@ static UniValue getblockstats(const JSONRPCRequest& request) outputs_consolidated += tx->vin.size(); } + bool tx_is_many_to_one = false; // Look for transactions with high number of inputs and low outputs if ((tx->vin.size() >= CONSOLIDATION_THRESHOLD) && tx->vout.size() == 1) { ++many_to_one_consolidating_txs; many_to_one_consolidated_outputs += tx->vin.size(); + tx_is_many_to_one = true; } int64_t tx_size = 0; @@ -2121,15 +2139,19 @@ static UniValue getblockstats(const JSONRPCRequest& request) if (in.SpendsNestedPayToWitnessPubKeyHashOutput(scriptPubKey)) { spends_nested_p2wpkh_output = true; ++nested_p2wpkh_outputs_spent; + value_of_nested_p2wpkh_outputs_spent += prevoutput.nValue; } else if (in.SpendsNestedPayToWitnessScriptHashOutput(scriptPubKey)) { spends_nested_p2wsh_output = true; ++nested_p2wsh_outputs_spent; + value_of_nested_p2wsh_outputs_spent += prevoutput.nValue; } else if (in.SpendsNativePayToWitnessPubKeyHashOutput(scriptPubKey)) { spends_native_p2wpkh_output = true; ++native_p2wpkh_outputs_spent; + value_of_native_p2wpkh_outputs_spent += prevoutput.nValue; } else if (in.SpendsNativePayToWitnessScriptHashOutput(scriptPubKey)) { spends_native_p2wsh_output = true; ++native_p2wsh_outputs_spent; + value_of_native_p2wsh_outputs_spent += prevoutput.nValue; } // Copied from inner loop of CTransaction::SignalsOptInRBF @@ -2179,6 +2201,10 @@ static UniValue getblockstats(const JSONRPCRequest& request) } maxfeerate = std::max(maxfeerate, feerate); minfeerate = std::min(minfeerate, feerate); + + if (tx_is_many_to_one) { + many_to_one_total_value += tx_total_out; + } } } @@ -2256,6 +2282,14 @@ static UniValue getblockstats(const JSONRPCRequest& request) ret_all.pushKV("mto_consolidations", many_to_one_consolidating_txs); ret_all.pushKV("mto_output_count", many_to_one_consolidated_outputs); + ret_all.pushKV("mto_total_value", many_to_one_total_value); + + ret_all.pushKV("value_of_nested_p2wpkh_outputs_spent", value_of_nested_p2wpkh_outputs_spent); + ret_all.pushKV("value_of_nested_p2wsh_outputs_spent", value_of_nested_p2wsh_outputs_spent); + ret_all.pushKV("value_of_native_p2wpkh_outputs_spent", value_of_native_p2wpkh_outputs_spent); + ret_all.pushKV("value_of_native_p2wsh_outputs_spent", value_of_native_p2wsh_outputs_spent); + ret_all.pushKV("value_of_native_p2wpkh_outputs_created", value_of_native_p2wpkh_outputs_created); + ret_all.pushKV("value_of_native_p2wsh_outputs_created", value_of_native_p2wsh_outputs_created); if (do_all) { return ret_all; diff --git a/test/functional/data/rpc_getblockstats.json b/test/functional/data/rpc_getblockstats.json index d649ee8d66a26..33ee653959af8 100644 --- a/test/functional/data/rpc_getblockstats.json +++ b/test/functional/data/rpc_getblockstats.json @@ -102,8 +102,8 @@ "00000020f44e7a48b9f221af95f3295c8dcefc5358934a68dc79e2933dc0794b350cad0a90fad2cd50b41d4ef45e76c2a456b98c180632bb4b44e0cd18ce90679fe54e552b4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401630101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000", "0000002087454276cce83f4d19e0120f6e9728ac5905f7adaf6b27e3f5bbe43ab823f85db7d1f44666531483df3d67c15f2c231718ad93b63b851dce5ff4c4a67f524ffa2b4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401640101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000", "000000202cdc3e99f07a80252dd6097faa0eddf3f2dde5ae390610e0bca94ecc25931551d31fceb8fe0a682f6017ca3dbb582f3a2f06e5d99ec99c42c8a744dd4c9216b82b4ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401650101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000", - "000000209b3ace9bd510918d20e87518c0cf5976cab3e28cc7af41259a89c6dd7668a3292245df05049f21b07e53d9490ef7d5f02892ac6bbdcb01fc2544ad88850d74e72b4ae75affff7f200000000002020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401660101ffffffff02b40b062a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ed89baf03637b91ce1e94e3411a04a9dfc941e2e94c5b653cf1c00bfc2f1b968050120000000000000000000000000000000000000000000000000000000000000000000000000020000000128394022bf44bff30d7399cb5a16e3b94fed67dc174c2e1d77df91bad5a51cb3000000006a47304402204e5d35fd3140a3beeddda5a13bb38252521162ce9d18e4bdf3d518e7b7a6590102200f5838f0fdc0afb85071e25ca680c2faf413eef92721f459695996df45f23c8b01210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff05e8030000000000001976a91432a25d4cdc38c16d4ac7e8fe3680a69505e8093888ac6430725300000000160014fa467fc5d5fa2017ce0fc2bbcd0f3da6a7cce077005ed0b20000000017a91420be05930d6a0c3f7e9fecda76a16c95a5fcdd538700c2eb0b000000002200202394533a3429735445f4b0fd6a7048f09eb0d35c2de560493fa7d3ed8119c6e20084d7170000000017a9148d10b6cda5df70b60a63283fef06d6d6d5fc020a8765000000", - "00000020365f3ea0037eab534a3f636bd83d39b834b53ce8f41dfed2c54cf3e08317753a4dd497350e65d76e04387e192f6c2ba37bd1a941f7ac08ad9e96c9fad12d3cd82b4ae75affff7f200000000003020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401670101ffffffff023420082a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9eda66bfdcf6943011c57472ff7b0e5518d531879158bf31ccb7fb866450e355b7201200000000000000000000000000000000000000000000000000000000000000000000000000200000000010612d2f07672102dc6f099c4be308f598e4c4da1a7e0cb462ae14f0444525a1332000000006a47304402200e463fe414e8e9aefeaa8a91164c5fe49f04b141bf3e9c1eb763f04c35adf91002201aeb7a0ca66b10efec7946cdfe72693fd4a8c68970ff3a73fa527cde10b6f44001210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffdffffff1a6195ed2b1711b5cb6549601d91e8689d7a9c769ce114d28991cdd59431e8b0000000006a47304402207c04b5d01c2b2ab299866e7463d95f06647730e6b79f99ac6e6441e1b88d5eb102206f9a64c7974818eef5ef99aea8a81d18f89401b539e76405505aa13bad51ed29012102c763c0ce8cef6e882b986246ea20127fcf942d1130d72008e4d7120bc6093bf6fdffffff1a6195ed2b1711b5cb6549601d91e8689d7a9c769ce114d28991cdd59431e8b00100000000fdffffff1a6195ed2b1711b5cb6549601d91e8689d7a9c769ce114d28991cdd59431e8b002000000232200202394533a3429735445f4b0fd6a7048f09eb0d35c2de560493fa7d3ed8119c6e2fdffffff1a6195ed2b1711b5cb6549601d91e8689d7a9c769ce114d28991cdd59431e8b00300000000fdffffff1a6195ed2b1711b5cb6549601d91e8689d7a9c769ce114d28991cdd59431e8b004000000171600143886e0a009ce10b1ec011a11559d7c3d89af00cdfdffffff01ac430a5402000000160014e491d2261fcf16de5ddde0b80f027b0501f141c400000247304402202573d5741fa8b17741512ade5a0b95b6d105d50b8613ed697d7b807f538cdef802205cca7f6cd7270d2cde8a33678e446dd20499699acbf6f4d1a701b47cf5867b140121034cdffc9628d1b2234d034af9163b26ed20126cac81147c7364443e8c9011a65804004730440220726962bae73942a69c7f60bfe68947ff4860cdc52d74f535aa0d60fd4f80a7e0022065d6be399f6b58ea4195c9b341241276cf96ac96d1c01420aa80df3118190b6a0147304402203d206c415b6a9e503a0e3279ca4fde9b85c7b188199925d19ac252ee70bbc62a022034753b533d9cf77261780e6011f2e64fecd5fc75f22283f158a51694bb763ceb01475221024dcc074523c0a250bcabea0917cc2fd9186b130af809c6495967a6e911b431212102c0693774adf1d3132274144db29b9666f6366b1ee5464c85d88f6bea8ea1c78752ae04004730440220593a87ee34fac94569771358fd8fe901672dabcc915b8e0bb5d98a9b2cd0df4002202ea13f6fdd2d1d87391c7c482737b6ac73a714aa85d9f2eee89ba86e9c63193b01473044022079061bf2a5b70da3a2136018ccbd70a95b9843ba45221d1fcefff14ca622de2a02201991b3cb51d8ca4b3ac8a2e5aa0a0a5d98737d77b782d9e45c4b9c9f90a0f14201475221024dcc074523c0a250bcabea0917cc2fd9186b130af809c6495967a6e911b431212102c0693774adf1d3132274144db29b9666f6366b1ee5464c85d88f6bea8ea1c78752ae02473044022018c4b2344fa58c2e60f8a13337bc912d8c4ff5d775aff96fa402454ec5deb7a402206b06deaeafd712afca9f426f7b199f5283d058a0019f050eaed4bedb66b0e8d50121031e07ec8bf74f62f45b18d4922ff9675041bfdc9dc6b8ddad63151ef2d7ae09fc0000000002000000000101405c06b2c41e81782dfb05079c0bef7a5ca5a46499230595fbaf2bfa525ecf6e0000000000feffffff02ac62144e0200000017a91453fba20ce8d7e73f22a9d33114645bfccbd4fac7876c39f5050000000017a9148d10b6cda5df70b60a63283fef06d6d6d5fc020a870247304402201e7a98447e4c4f898973308d5dc592f32fd6ea7e4addd52929471d23796b82ae022045b2ed302065e348f496d74d2eecb41be7b70d35998b813626719f35988925f601210317c93f81017c43006e33ad386695c40675b85d40deef8984f8ac746dfa5b630666000000" + "000000209b3ace9bd510918d20e87518c0cf5976cab3e28cc7af41259a89c6dd7668a3299299f05708e9c6ed0f8d76de74ac8c7af331a0659108ccd2db15613cef7fe35c2b4ae75affff7f200100000002020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401660101ffffffff02b40b062a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ed8c5b8315798f2365d38ced8b5801bd8c2a421649845a20c44fd7b27f1fbfcf7b0120000000000000000000000000000000000000000000000000000000000000000000000000020000000128394022bf44bff30d7399cb5a16e3b94fed67dc174c2e1d77df91bad5a51cb3000000006a47304402206e0264028efa9bcbefa5f3cf87bff1d8ea90d4e280801402587efd09ab7f5dcc0220473aede02dc1998b25e30d91df66fcc077965d801485e57c1ae90191efd6cc7f01210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff0500c2eb0b00000000220020ea91725a2764f346a6ece0076a1b99553316533a7d98c0fd363f59c21414846c0084d7170000000017a914c252aab266b05940fe23c3f94e20da77d871a63487005ed0b20000000017a914a4381e439117feb41e341407596202c49a40681587e8030000000000001976a914c59661de1d60ed68a753c9650a03201a881aa95788ac6430725300000000160014e31c5fb576802ee160f180fdb339252d24abcd9865000000", + "00000020c4770d5c6c05bc667114af6b15bed0e6030adceb22333b4261f51ff2a508d94acc5dda0d444ac5c37ffe6b7e3f7984566adb5e7562fd47e461f78d915b71b1662b4ae75affff7f200700000003020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401670101ffffffff023420082a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9edd0be564b829ae58d79b2b2b6b3f95064b2b35664e1c1486ffcb36be87e67ed8a01200000000000000000000000000000000000000000000000000000000000000000000000000200000000010612d2f07672102dc6f099c4be308f598e4c4da1a7e0cb462ae14f0444525a1332000000006a473044022018e4f3a8a741081112c4f24e27b3b96039106ae33b9b4d232b17423ea5699ed302202949527fb06c9a938a1fbee58cd90879b8516ee98826b3337a29ae81602a6a5301210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffdffffffd1724fc4cd16f3248654d0877367ef4e0d71d2bab16528349ff27856d42e2e840000000000fdffffffd1724fc4cd16f3248654d0877367ef4e0d71d2bab16528349ff27856d42e2e84010000001716001427dd22e34bb30d877be09f4dcb733922ac15c4cbfdffffffd1724fc4cd16f3248654d0877367ef4e0d71d2bab16528349ff27856d42e2e840200000023220020ea91725a2764f346a6ece0076a1b99553316533a7d98c0fd363f59c21414846cfdffffffd1724fc4cd16f3248654d0877367ef4e0d71d2bab16528349ff27856d42e2e84030000006a47304402201ad36b8fb821cbee5861da15373e6a5897f6fa4c8556d1e36b4cbb6de382b76d0220344d234f86762bd322ee4bc69e01a881f6fd7211e242dc58c15bf56f37daaf65012103c3229b36ec904a8d7aa244976139e1809339b62871090b3df36a5a5668e12d1efdffffffd1724fc4cd16f3248654d0877367ef4e0d71d2bab16528349ff27856d42e2e840400000000fdffffff01ac430a54020000001600145d41e7e68c11647c72f178b95902d2bcdf87455900040047304402207bbb81ba8ed8e1b62a9af0c1c77cef7055c60d7e9771ca99d40a758b28814f55022005a48624aafc7749692567a874aa2d576b4ad6d885a8b7e949832fecc29810750147304402204c73c12cd1b0d346e0a82563630d1db982ca253920a024af914218ff8b8c00c602203422b01fe188ed28c7496d11655a9f49f31d3233d72ed8c9507180ee6e905c2d014752210250058cc67c714c2a3fe3175645f369dec7c95abc3da8daac5133d8f70502ad2121031d577d48c268bbc4e6686b9d2b417b4f289d3755cb952f535539fb415a025ef552ae0247304402205490b6aa98285bcbeeeffcb17d03a782d7a83c6c24b0d6db1824e2d1fb9cc577022066cb86745b5db340bd812d9ef04e92d087c1aa355e5f161d5c854049ada12d8e012102dea0d2895a1e91f40a7926b0dffd658f969fb5a80bef9bbc3bc1cd94837e1004040047304402202c16f2f95d946ff389c4c1e5d183b7f0c27ddaaab715f3d3bfd0211ff25e257202203d83c87e9490705036a48ba6e90de99c97ec192e24b2acae6af4a602041be9d80147304402200365154eba8b956140fa12123112955541d1b5c1e5b4e46b2b8c4b8bedb4138902206a3c6e4de5b3d2a0d03c45ab410019dcf9f4f881778e08966998877e424010c5014752210250058cc67c714c2a3fe3175645f369dec7c95abc3da8daac5133d8f70502ad2121031d577d48c268bbc4e6686b9d2b417b4f289d3755cb952f535539fb415a025ef552ae00024730440220788f3354fbbd01c38089203328d065663b53364a7c41219d3c464177cd55850c02202770717d5866e89fd96544f6e4bb963775b03812aae2ce75af58ddc28b8ed4db01210328aa124f039241d3c5246e9e24530cedced312b7de9c7bb256d4045f9d58ee0d0000000002000000000101a0ff8b8f0d8710c2beea66280a8a346c78a63bdc0e826d599bdc437a0d2b77910000000000feffffff026c39f5050000000017a914c252aab266b05940fe23c3f94e20da77d871a63487ac62144e0200000017a9140abf3dee2fd47e783cddcd367cc852a0d8c558148702473044022008cf07cd7ac0be60308e6cad9500de7f63073bb03f16ccd3ba22be6f431fcc6f0220471f8a927c946c677f16ed4a0e4b7bf4b06fff9d0b8fb5d5884e666d4b6276b5012103dbec6773dbf0cdf919494ac65cbd90b15e625e4c403d01dd3cd849ec28a5095c66000000" ], "mocktime": 1525107225, "stats": [ @@ -156,6 +156,7 @@ "mintxsize": 0, "mto_consolidations": 0, "mto_output_count": 0, + "mto_total_value": 0, "native_p2wpkh_outputs_spent": 0, "native_p2wsh_outputs_spent": 0, "nested_p2wpkh_outputs_spent": 0, @@ -193,13 +194,19 @@ "txs_spending_nested_p2wpkh_outputs": 0, "txs_spending_nested_p2wsh_outputs": 0, "utxo_increase": 2, - "utxo_size_inc": 163 + "utxo_size_inc": 163, + "value_of_native_p2wpkh_outputs_created": 0, + "value_of_native_p2wpkh_outputs_spent": 0, + "value_of_native_p2wsh_outputs_created": 0, + "value_of_native_p2wsh_outputs_spent": 0, + "value_of_nested_p2wpkh_outputs_spent": 0, + "value_of_nested_p2wsh_outputs_spent": 0 }, { "avgfee": 6580, "avgfeerate": 20, "avgtxsize": 329, - "blockhash": "3a751783e0f34cc5d2fe1df4e83cb534b8393dd86b633f4a53ab7e03a03e5f36", + "blockhash": "4ad908a5f21ff561423b3322ebdc0a03e6d0be156baf147166bc056c5c0d77c4", "dust_bins": [ 0, 0, @@ -244,6 +251,7 @@ "mintxsize": 329, "mto_consolidations": 0, "mto_output_count": 0, + "mto_total_value": 0, "native_p2wpkh_outputs_spent": 0, "native_p2wsh_outputs_spent": 0, "nested_p2wpkh_outputs_spent": 0, @@ -281,13 +289,19 @@ "txs_spending_nested_p2wpkh_outputs": 0, "txs_spending_nested_p2wsh_outputs": 0, "utxo_increase": 6, - "utxo_size_inc": 465 + "utxo_size_inc": 465, + "value_of_native_p2wpkh_outputs_created": 1399992420, + "value_of_native_p2wpkh_outputs_spent": 0, + "value_of_native_p2wsh_outputs_created": 200000000, + "value_of_native_p2wsh_outputs_spent": 0, + "value_of_nested_p2wpkh_outputs_spent": 0, + "value_of_nested_p2wsh_outputs_spent": 0 }, { "avgfee": 71450, "avgfeerate": 165, "avgtxsize": 717, - "blockhash": "5d8b3154ad6a27ab9c26b77d87f4565503d9e45061eea910da4cb300191bbccf", + "blockhash": "11de87a278aedfcf5863e8c01b0baaac824954fafaf210ba50e45e4a32ee42b6", "dust_bins": [ 0, 0, @@ -332,6 +346,7 @@ "mintxsize": 224, "mto_consolidations": 1, "mto_output_count": 6, + "mto_total_value": 9999893420, "native_p2wpkh_outputs_spent": 2, "native_p2wsh_outputs_spent": 1, "nested_p2wpkh_outputs_spent": 1, @@ -369,7 +384,13 @@ "txs_spending_nested_p2wpkh_outputs": 1, "txs_spending_nested_p2wsh_outputs": 1, "utxo_increase": -2, - "utxo_size_inc": -143 + "utxo_size_inc": -143, + "value_of_native_p2wpkh_outputs_created": 9999893420, + "value_of_native_p2wpkh_outputs_spent": 11399885840, + "value_of_native_p2wsh_outputs_created": 0, + "value_of_native_p2wsh_outputs_spent": 200000000, + "value_of_nested_p2wpkh_outputs_spent": 400000000, + "value_of_nested_p2wsh_outputs_spent": 3000000000 } ] } \ No newline at end of file