diff --git a/frontend/cypress/fixtures/mainnet_mempoolInfo.json b/frontend/cypress/fixtures/mainnet_mempoolInfo.json index 53b2df47f..84a9eb304 100644 --- a/frontend/cypress/fixtures/mainnet_mempoolInfo.json +++ b/frontend/cypress/fixtures/mainnet_mempoolInfo.json @@ -1 +1,554 @@ -{"mempoolInfo":{"loaded":true,"size":2322,"bytes":1146158,"usage":4759856,"maxmempool":300000000,"mempoolminfee":0.00001,"minrelaytxfee":0.00001,"unbroadcastcount":0},"vBytesPerSecond":775,"lastDifficultyAdjustment":1626564737,"previousRetarget":-4.8070052684735725,"blocks":[{"id":"00000000000000000006a2edbea88d7ca08abfe3ce26c2200db8efdead8fc7c5","height":692609,"version":805298180,"timestamp":1627227919,"tx_count":2331,"size":1419078,"weight":3858207,"merkle_root":"2c038de9602ef67df93f8bdeba009bec331ccb355917ca1d652fc95bb4482357","previousblockhash":"00000000000000000006fa0817991709a342d5065839d6c9efe09016289830ee","mediantime":1627222954,"nonce":2043835478,"bits":387225124,"difficulty":13672594272814,"reward":632191564,"coinbaseTx":{"vin":[{"scriptsig":"0381910a04e7c2b2314254432e636f6d2f763433737afabe6d6d622bef4ea8c37b21f82d8fc809d1d7b806ddbe3f81f1be57471d3843225eb0cd02000000020bb56c0ec44cc11815290000000000"}],"vout":[{"scriptpubkey_address":"1Bf9sZvBHPFGVPX71WX2njhd1NXKv5y7v5","value":632191564}]},"medianFee":1.9984543048678702,"feeRange":[1,1.0115321252059308,1.1169024571854058,1.6055846422338569,2.026266416510319,3.0403587443946187,6,327.76216216216216],"matchRate":100},{"id":"0000000000000000000405f73eb09df2405875eeb25760efb09ca06f7e6bf0f0","height":692610,"version":538968068,"timestamp":1627228844,"tx_count":2280,"size":1257713,"weight":3303869,"merkle_root":"60e726a80dcba17b000cf417b671a856f24e1ddbfe30d357be64964f00da3702","previousblockhash":"00000000000000000006a2edbea88d7ca08abfe3ce26c2200db8efdead8fc7c5","mediantime":1627223401,"nonce":162576929,"bits":387225124,"difficulty":13672594272814,"reward":636802910,"coinbaseTx":{"vin":[{"scriptsig":"0382910a1b4d696e656420627920416e74506f6f6c3731390c001f02dfb91bf2fabe6d6d5b43fd902c59e4bdcc4894b8410bda69e753862b92c00821ff7135cc82faf9e40200000000000000ebea0100cba30100"}],"vout":[{"scriptpubkey_address":"12dRugNcdxK39288NjcDV4GX7rMsKCGn6B","value":636802910}]},"medianFee":3.282511210762332,"feeRange":[1,2.009049773755656,2.654690618762475,3.1149825783972127,4.0055555555555555,4.72,15.07098653076083,423.2804232804233],"matchRate":100},{"id":"00000000000000000013d736ee3f50af566319440f2312c3ae4c4060a24a9f52","height":692611,"version":1073676292,"timestamp":1627230553,"tx_count":2316,"size":1495664,"weight":3993194,"merkle_root":"fc39ebd749c5e6615e26e6c842021a4842803c022ce3a1514d2de65630b94cb0","previousblockhash":"0000000000000000000405f73eb09df2405875eeb25760efb09ca06f7e6bf0f0","mediantime":1627226771,"nonce":5049303,"bits":387225124,"difficulty":13672594272814,"reward":652290078,"coinbaseTx":{"vin":[{"scriptsig":"0383910a043791fd60fabe6d6d6a9685e1e355c6a267d0b1d9f5af76e2a296e8e1baa13e760a47a0389ea5d971040000004204cb9a62696e616e63652f66723838387860249487223814079594b4baaeef0e000000000000"}],"vout":[{"scriptpubkey_address":"bc1qx9t2l3pyny2spqpqlye8svce70nppwtaxwdrp4","value":652290078}]},"medianFee":7.1198738170347005,"feeRange":[1.0098176718092566,4.009592326139089,4.642533936651584,5.984334203655353,10.04594180704441,17.924619085805933,62.038781163434905,395.3777777777778],"matchRate":99},{"id":"0000000000000000000a560480db3b45065b7248b6f43b7d2ad1b15cda0c29f3","height":692612,"version":536870916,"timestamp":1627230561,"tx_count":1711,"size":1376254,"weight":3993409,"merkle_root":"339c433bb9fe450c004e2d40785e417ae718bcbbc780d34488445c5df91e951a","previousblockhash":"00000000000000000013d736ee3f50af566319440f2312c3ae4c4060a24a9f52","mediantime":1627227432,"nonce":1198122458,"bits":387225124,"difficulty":13672594272814,"reward":627267139,"coinbaseTx":{"vin":[{"scriptsig":"0384910a046191fd6068616e677a686f752f7777772e6f6b65782e636f6d2ffabe6d6d5260c24fd30e59fe89fa070fa69a350c8d0614861a4a1d0eb20d0a12c39ad17a020000004204cb9a21b76f07cd3f000000000000"}],"vout":[{"scriptpubkey_address":"3DPNFXGoe8QGiEXEApQ3QtHb8wM15VCQU3","value":627267139}]},"medianFee":2.4393011510308487,"feeRange":[1.0019887591872028,1.5159574468085106,2.1265126512651267,2.341463414634146,2.6817391304347824,3.013333333333333,3.0657596371882088,175.98499061913697],"matchRate":99},{"id":"00000000000000000014454e83304996581f25da03e8b1bf527ec62f9155fbc1","height":692613,"version":1073733636,"timestamp":1627230729,"tx_count":676,"size":1266823,"weight":3993028,"merkle_root":"ec6f3a39904f4432e5202a1fa86ce24aa0f006fd408f985b8337995734276f2e","previousblockhash":"0000000000000000000a560480db3b45065b7248b6f43b7d2ad1b15cda0c29f3","mediantime":1627227557,"nonce":881591561,"bits":387225124,"difficulty":13672594272814,"reward":629313137,"coinbaseTx":{"vin":[{"scriptsig":"0385910a040192fd602f466f756e6472792055534120506f6f6c202364726f70676f6c642f0586eb224300000000000000"}],"vout":[{"scriptpubkey_address":"19dENFt4wVwos6xtgwStA6n8bbA57WCS58","value":629313137}]},"medianFee":3.0111358574610243,"feeRange":[1,1.0098360655737706,1.0227213371637502,2.345549738219895,3.1332560834298957,5.693363844393593,21.05176663927691,313.3159268929504],"matchRate":98},{"id":"0000000000000000000010714eb049e48f1eecd2eb0777fd343754dc453f3c86","height":692614,"version":536928260,"timestamp":1627231082,"tx_count":918,"size":678955,"weight":1847470,"merkle_root":"e1f3cc2d4ffb79a7a0cedeaf46bf1aece5b6ad75645af54662e8a86b00b6f7b8","previousblockhash":"00000000000000000014454e83304996581f25da03e8b1bf527ec62f9155fbc1","mediantime":1627227919,"nonce":265758589,"bits":387225124,"difficulty":13672594272814,"reward":632488436,"coinbaseTx":{"vin":[{"scriptsig":"0386910a2cfabe6d6d32850d4d59ddf81012e81cec6e3a47839a3d2a45c34c5f913e9907d1a588923410000000f09f909f082f4632506f6f6c2f00000000000000000000000000000000000000000000000000000000000000000000000005007b0a0000"}],"vout":[{"scriptpubkey_address":"1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY","value":632488436}]},"medianFee":3.5447864033073038,"feeRange":[1,1.1693917593198169,2.34324942791762,3.095406360424028,4.053571428571429,7.227154046997389,16.605166051660518,423.2804232804233],"matchRate":100},{"id":"0000000000000000000818cc451ece143e784f5a3ca737dd01cc6fdd530c3084","height":692615,"version":1073676292,"timestamp":1627233036,"tx_count":2788,"size":1439830,"weight":3993034,"merkle_root":"b254e02c41d15a59d06c0a3495260e34c140321bdc1e48a4f4739211bedbe39d","previousblockhash":"0000000000000000000010714eb049e48f1eecd2eb0777fd343754dc453f3c86","mediantime":1627228844,"nonce":136757391,"bits":387225124,"difficulty":13672594272814,"reward":644960886,"coinbaseTx":{"vin":[{"scriptsig":"0387910a04059bfd602f466f756e6472792055534120506f6f6c202364726f70676f6c642f07c915c4b80f000000000000"}],"vout":[{"scriptpubkey_address":"19dENFt4wVwos6xtgwStA6n8bbA57WCS58","value":644960886}]},"medianFee":7.0914368650217705,"feeRange":[1.0614949494949495,3.9022687609075044,4.20926243567753,5.979614949037373,8.44677137870855,14.858911985846971,34.70855148342059,344.82758620689657],"matchRate":98},{"id":"0000000000000000001389735609f4f85735d6cae2cc4a432f8e1b9388ff67eb","height":692616,"version":671080452,"timestamp":1627233412,"tx_count":2894,"size":1435441,"weight":3998419,"merkle_root":"7aeb3cd02ecf4d60961447427773d376a681c2c5bcdba0fed8c67e1244120227","previousblockhash":"0000000000000000000818cc451ece143e784f5a3ca737dd01cc6fdd530c3084","mediantime":1627230553,"nonce":1754824929,"bits":387225124,"difficulty":13672594272814,"reward":630501928,"coinbaseTx":{"vin":[{"scriptsig":"0388910a2cfabe6d6d4920bd1b36734a34acec2ea44d72b65705397c8d9221f372f188fe6dc46e7f9010000000f09f909f082f4632506f6f6c2f0000000000000000000000000000000000000000000000000000000000000000000000000500d9e00700"}],"vout":[{"scriptpubkey_address":"1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY","value":630501928}]},"medianFee":2.74828060522696,"feeRange":[1.0017701621468527,1.448405253283302,2.3274021352313166,2.4271943176052764,3.002267573696145,3.0334075723830733,4.026726057906459,225.79505300353358],"matchRate":100}],"conversions":{"USD":34494.52492504878},"mempool-blocks":[{"blockSize":1374717,"blockVSize":979873,"nTx":2277,"totalFees":10790875,"medianFee":3.0938215102974826,"feeRange":[1.0031746031746032,1.1948565776458953,2.443243243243243,3.015929203539823,3.1711466485199047,5.026737967914438,14.560538116591928,393.7007874015748]},{"blockSize":174182,"blockVSize":165033,"nTx":43,"totalFees":165487,"medianFee":1.0008968609865472,"feeRange":[1,1.0005136106831023,1.0018337408312958,1.003168413356081]}],"transactions":[{"txid":"4c4b6aee3ea1fd04991f7c7e6cc81f82cb34ad9597ddf2efead5074a3d1e209c","fee":671,"vsize":213.5,"value":1668160},{"txid":"544e22f011a7b7b04659023b30c4f8d12f95f9ddbfcbea5b9941523c0cdee56e","fee":338,"vsize":112.5,"value":2113185},{"txid":"efa013a7426861b791e05181608e48fb6a0bfa967c42932588bb347857c80d1c","fee":2656,"vsize":279,"value":3135414},{"txid":"a45f0ebdca1909efec92312f37033a9cfa910e37caddebf9d6736b6c299e44ad","fee":1342,"vsize":141.5,"value":1806913},{"txid":"924a3ba828c02ddf32e3b343e4a58235971465a0647e962e3f7c8ec1ba14bee7","fee":563,"vsize":110.5,"value":115321},{"txid":"501d352563e53f972b55e1c441c848fc517be7d717349a9f90e8eb9a512049d1","fee":888,"vsize":209,"value":137837}],"backendInfo":{"hostname":"node202.mempool.space","gitCommit":"0333d91b153d366811ed812bee2b3e869a3ac80b","version":"2.2.1-dev"},"loadingIndicators":{}} \ No newline at end of file +{ + "mempoolInfo": { + "loaded": true, + "size": 15168, + "bytes": 6070217, + "usage": 30922560, + "maxmempool": 300000000, + "mempoolminfee": 0.00001, + "minrelaytxfee": 0.00001, + "unbroadcastcount": 0 + }, + "vBytesPerSecond": 2249, + "blocks": [ + { + "extras": { + "reward": 636429476, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "031e190b04a4632f622f466f756e6472792055534120506f6f6c202364726f70676f6c642f12969a355b4c000000000000" + } + ], + "vout": [ + { + "scriptpubkey_address": "19dENFt4wVwos6xtgwStA6n8bbA57WCS58", + "value": 636429476 + } + ] + }, + "medianFee": 6, + "feeRange": [ + 1, + 3, + 5, + 6, + 10, + 16, + 272 + ], + "totalFees": 11429476, + "avgFee": 4177, + "avgFeeRate": 11, + "pool": { + "id": 108, + "name": "Foundry USA" + }, + "matchRate": 98 + }, + "id": "0000000000000000000918db3142fc4ccea865edb9a9f0c05f5a1b507fd7182a", + "height": 727326, + "version": 536870912, + "timestamp": 1647272873, + "bits": 386545523, + "nonce": 105379536, + "difficulty": 27550332084343.84, + "merkle_root": "d39e7d7b8e2374be518a313b9af734a0d0d87c7e8c001b5c19472258790ebfbc", + "tx_count": 2737, + "size": 1714410, + "weight": 3993069, + "previousblockhash": "00000000000000000007b6a24a3caa6b1f320c163b6ae15f763ca4d157a304ab" + }, + { + "extras": { + "reward": 634306311, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "031f190b1362696e616e63652f3832321c000b0193666a88fabe6d6de404a9ad37192b7a677b62eae09c0d60d2158b037e7250c395a0c4db62e699f20200000000000000bf370000a9600000" + } + ], + "vout": [ + { + "scriptpubkey_address": "1JvXhnHCi6XqcanvrZJ5s2Qiv4tsmm2UMy", + "value": 634306311 + } + ] + }, + "medianFee": 5, + "feeRange": [ + 1, + 2, + 3, + 5, + 9, + 15, + 316 + ], + "totalFees": 9306311, + "avgFee": 2861, + "avgFeeRate": 9, + "pool": { + "id": 102, + "name": "Binance Pool" + }, + "matchRate": 98 + }, + "id": "000000000000000000012de2fedb9f88f071ee149c03b4265cf77667b63c61fe", + "height": 727327, + "version": 536928256, + "timestamp": 1647273549, + "bits": 386545523, + "nonce": 104858074, + "difficulty": 27550332084343.84, + "merkle_root": "d2349186400acd9de2d1812bf2916834bf3299bf4a32d27da91aa2c04a434360", + "tx_count": 3253, + "size": 1610333, + "weight": 3993434, + "previousblockhash": "0000000000000000000918db3142fc4ccea865edb9a9f0c05f5a1b507fd7182a" + }, + { + "extras": { + "reward": 629478265, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "0320190b215c204d41524120506f6f6c205c000000003766ea3bdd65bc206ece9c55812c0000" + } + ], + "vout": [ + { + "scriptpubkey_address": "1A32KFEX7JNPmU1PVjrtiXRrTQcesT3Nf1", + "value": 629478265 + } + ] + }, + "medianFee": 2, + "feeRange": [ + 1, + 1, + 1, + 2, + 3, + 9, + 752 + ], + "totalFees": 4478265, + "avgFee": 2179, + "avgFeeRate": 4, + "pool": { + "id": 112, + "name": "MARA Pool" + }, + "matchRate": 99 + }, + "id": "0000000000000000000699b7d37e0614c1732f4a67314b039de04e025eb7f901", + "height": 727328, + "version": 543162368, + "timestamp": 1647273774, + "bits": 386545523, + "nonce": 2592684945, + "difficulty": 27550332084343.84, + "merkle_root": "94c744153aebf492935379cc1a1e9d1f28a3fb1f3c669e55e22b34ce09e7929c", + "tx_count": 2056, + "size": 1678108, + "weight": 3992617, + "previousblockhash": "000000000000000000012de2fedb9f88f071ee149c03b4265cf77667b63c61fe" + }, + { + "extras": { + "reward": 627516396, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "0321190b04be672f622f466f756e6472792055534120506f6f6c202364726f70676f6c642f063791a2b6c3000000000000" + } + ], + "vout": [ + { + "scriptpubkey_address": "19dENFt4wVwos6xtgwStA6n8bbA57WCS58", + "value": 627516396 + } + ] + }, + "medianFee": 2, + "feeRange": [ + 1, + 1, + 1, + 2, + 5, + 14, + 347 + ], + "totalFees": 2516396, + "avgFee": 3122, + "avgFeeRate": 7, + "pool": { + "id": 108, + "name": "Foundry USA" + }, + "matchRate": 100 + }, + "id": "00000000000000000008e79402333f8bb6f03147550d36fe731480cf2c9e2fb8", + "height": 727329, + "version": 536870912, + "timestamp": 1647273918, + "bits": 386545523, + "nonce": 585448784, + "difficulty": 27550332084343.84, + "merkle_root": "db0f5982d7797b74b5e92ff8495280e530c1d98f50e21f7cfe244b03c7fef6ab", + "tx_count": 807, + "size": 540195, + "weight": 1379553, + "previousblockhash": "0000000000000000000699b7d37e0614c1732f4a67314b039de04e025eb7f901" + }, + { + "extras": { + "reward": 646529546, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "0322190b04b7712f622f706f6f6c696e2e636f6d2ffabe6d6dec3c68ff646d6125f669e43f1053129a5664705728c0574e7db6449db652f4ed01000000000000009287821bd9525598170e94e5beaab395110045c9120000000000" + } + ], + "vout": [ + { + "scriptpubkey_address": "1GNgwA8JfG7Kc8akJ8opdNWJUihqUztfPe", + "value": 646529546 + } + ] + }, + "medianFee": 12, + "feeRange": [ + 1, + 5, + 10, + 12, + 19, + 38, + 1815 + ], + "totalFees": 21529546, + "avgFee": 6715, + "avgFeeRate": 21, + "pool": { + "id": 91, + "name": "Poolin" + }, + "matchRate": 95 + }, + "id": "00000000000000000003ccf134cbee355e976fbcb6e8573613410c61fa7a1b57", + "height": 727330, + "version": 536870916, + "timestamp": 1647276461, + "bits": 386545523, + "nonce": 1527558879, + "difficulty": 27550332084343.84, + "merkle_root": "af3870e45030bf7775b6eb996ab4c26cbe7964f572ca149e7e58efadaaf18dd4", + "tx_count": 3207, + "size": 1463281, + "weight": 3999829, + "previousblockhash": "00000000000000000008e79402333f8bb6f03147550d36fe731480cf2c9e2fb8" + }, + { + "extras": { + "reward": 644036960, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "0323190b082f5669614254432f2cfabe6d6df26d6c3e2d9050ab39b9332674dd451d68a03cb7e1db64056d4a5e7e235342fe100000000000000010fc7fd917f62bf41977ca2bb5f61d111100000000" + } + ], + "vout": [ + { + "scriptpubkey_address": "18cBEMRxXHqzWWCxZNtU91F5sbUNKhL5PX", + "value": 644036960 + } + ] + }, + "medianFee": 10, + "feeRange": [ + 1, + 5, + 8, + 10, + 17, + 30, + 724 + ], + "totalFees": 19036960, + "avgFee": 6429, + "avgFeeRate": 19, + "pool": { + "id": 70, + "name": "ViaBTC" + }, + "matchRate": 91 + }, + "id": "0000000000000000000270007691145df213b43d62e768052011b7b7d496ac15", + "height": 727331, + "version": 536870912, + "timestamp": 1647277836, + "bits": 386545523, + "nonce": 2078492739, + "difficulty": 27550332084343.84, + "merkle_root": "31df633f82c3ad60e692a9dc8f472167ba37ee00d61cf3e548792e64a6d0264f", + "tx_count": 2962, + "size": 1553257, + "weight": 3993235, + "previousblockhash": "00000000000000000003ccf134cbee355e976fbcb6e8573613410c61fa7a1b57" + }, + { + "extras": { + "reward": 636958014, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "0324190b0414a005ab627463706f6f6c2f6663637367fabe6d6dfa4a2a451de1d9dd584ea9d0fc8016c5600ca1133eac2ae3fefa82ce4e8d536e020000008e9b20aa0f5ae8f8ee41040000000000" + } + ], + "vout": [ + { + "scriptpubkey_address": "1Bf9sZvBHPFGVPX71WX2njhd1NXKv5y7v5", + "value": 636958014 + } + ] + }, + "medianFee": 8, + "feeRange": [ + 1, + 6, + 7, + 8, + 10, + 15, + 503 + ], + "totalFees": 11958014, + "avgFee": 4527, + "avgFeeRate": 11, + "pool": { + "id": 3, + "name": "BTC.com" + }, + "matchRate": 94 + }, + "id": "00000000000000000008b905d911099327f0f4feb992e58d603e96df3c445aa1", + "height": 727332, + "version": 541065220, + "timestamp": 1647278491, + "bits": 386545523, + "nonce": 2560770713, + "difficulty": 27550332084343.84, + "merkle_root": "fb35644b58e7f37bcb3062dda7e385e5a2c7b9f016039e84fff2043d201ea580", + "tx_count": 2642, + "size": 1365172, + "weight": 3993028, + "previousblockhash": "0000000000000000000270007691145df213b43d62e768052011b7b7d496ac15" + }, + { + "extras": { + "reward": 641367077, + "coinbaseTx": { + "vin": [ + { + "scriptsig": "0325190b2cfabe6d6dc9a64b2a34a929eab95ca6793bb05a59a4ada9440f2caae4a291527d5fc5876610000000f09f909f092f4632506f6f6c2f65000000000000000000000000000000000000000000000000000000000000000000000005004d270000" + } + ], + "vout": [ + { + "scriptpubkey_address": "1KFHE7w8BhaENAswwryaoccDb6qcT6DbYY", + "value": 641367077 + } + ] + }, + "medianFee": 10, + "feeRange": [ + 1, + 7, + 8, + 10, + 13, + 27, + 501 + ], + "totalFees": 16367077, + "avgFee": 5359, + "avgFeeRate": 16, + "pool": { + "id": 33, + "name": "F2Pool" + }, + "matchRate": 98 + }, + "id": "000000000000000000035194e2331953ecc1c2d4783c6fb692ebd0553795b185", + "height": 727333, + "version": 1073676292, + "timestamp": 1647279951, + "bits": 386545523, + "nonce": 2216944582, + "difficulty": 27550332084343.84, + "merkle_root": "f61bcda97b7b65336bd2b3f3dbea1ba0e00d881f3abb92d364795e971f4417fd", + "tx_count": 3055, + "size": 1511571, + "weight": 3998487, + "previousblockhash": "00000000000000000008b905d911099327f0f4feb992e58d603e96df3c445aa1" + } + ], + "conversions": { + "USD": 38723.918 + }, + "mempool-blocks": [ + { + "blockSize": 1552154, + "blockVSize": 998819, + "nTx": 2700, + "totalFees": 13645525, + "medianFee": 9.348948740137697, + "feeRange": [ + 7.1906428439860015, + 7.636363636363637, + 8.03366058906031, + 8.537102473498233, + 10.102654867256637, + 12.356010230179027, + 17.915194346289752, + 350.87719298245617 + ] + }, + { + "blockSize": 1685282, + "blockVSize": 999945.5, + "nTx": 2711, + "totalFees": 6580658, + "medianFee": 6.031858407079646, + "feeRange": [ + 5.946188340807175, + 6.021505376344086, + 6.122448979591836, + 7.190512129380054 + ] + }, + { + "blockSize": 1598963, + "blockVSize": 991915.25, + "nTx": 2055, + "totalFees": 5267286, + "medianFee": 5.132743362831858, + "feeRange": [ + 5.007085498346717, + 5.095022624434389, + 5.322493224932249, + 5.946188340807175 + ] + }, + { + "blockSize": 1553568, + "blockVSize": 999920.25, + "nTx": 3688, + "totalFees": 4366448, + "medianFee": 4.106194690265487, + "feeRange": [ + 3.075103489059728, + 3.9575971731448765, + 4.559139784946237, + 5.0065912336592335 + ] + }, + { + "blockSize": 1638100, + "blockVSize": 999883, + "nTx": 2186, + "totalFees": 2322349, + "medianFee": 2.336283185840708, + "feeRange": [ + 2.0137103684661524, + 2.111358574610245, + 2.6007067137809186, + 3.075103489059728 + ] + }, + { + "blockSize": 1552617, + "blockVSize": 940875, + "nTx": 1746, + "totalFees": 1351076, + "medianFee": 1.3983842513934581, + "feeRange": [ + 1.0035005834305717, + 1.0972279685560613, + 1.7951509153884215, + 2.0136986301369864 + ] + }, + { + "blockSize": 224482, + "blockVSize": 122290, + "nTx": 65, + "totalFees": 122659, + "medianFee": 1.0020366598778003, + "feeRange": [ + 1, + 1.0010131712259371, + 1.0029268292682927, + 1.0034970564976715 + ] + } + ], + "transactions": [ + { + "txid": "d9e77f48b573addece8502bd081c39e3a7cd4df426e49ffddd7a45f9ffbc7d73", + "fee": 1136, + "vsize": 141.25, + "value": 50801 + }, + { + "txid": "6c08a2bacae4dc58eef85d3319256aaf5bd80d5364ffe9fff2e21a25a71d4e4b", + "fee": 1700, + "vsize": 140.25, + "value": 1538700 + }, + { + "txid": "163ba1ec8c9568821fa787f81e483f4f8216c4caeca30396b6322918b9763868", + "fee": 1850, + "vsize": 247, + "value": 369387 + }, + { + "txid": "e4d668153578c17d8f32404dd322e46d442c8eb00d58551b2ee51bdd1cf6d338", + "fee": 1369, + "vsize": 152.25, + "value": 723647 + }, + { + "txid": "7684807a3c6b1171b312be8cacc935883210d211045b6206516728484bc56e9e", + "fee": 845, + "vsize": 141.5, + "value": 464175 + }, + { + "txid": "249c69312f72cdba3ac5420eaf23a0e504570295daf7da8d0313883350c28778", + "fee": 330, + "vsize": 163.25, + "value": 116248571 + } + ], + "backendInfo": { + "hostname": "node206.mempool.space", + "gitCommit": "8e61720e09faf5e0ecde1768583b1be9bb32292e", + "version": "2.4.0-dev" + }, + "loadingIndicators": {}, + "da": { + "progressPercent": 78.02579365079364, + "difficultyChange": -1.3182475819161987, + "estimatedRetargetDate": 1649197503643.8958, + "remainingBlocks": 443, + "remainingTime": 1647550222725.0728, + "previousRetarget": -1.490392872877445, + "nextRetargetHeight": 727776, + "timeAvg": 607909.4854914972, + "timeOffset": 0 + } +} diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index 1ef7e5fe0..4541a0a25 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -31,6 +31,7 @@ import { MiningDashboardComponent } from './components/mining-dashboard/mining-d import { HashrateChartComponent } from './components/hashrate-chart/hashrate-chart.component'; import { HashrateChartPoolsComponent } from './components/hashrates-chart-pools/hashrate-chart-pools.component'; import { MiningStartComponent } from './components/mining-start/mining-start.component'; +import { GraphsComponent } from './components/graphs/graphs.component'; import { BlocksList } from './components/blocks-list/blocks-list.component'; let routes: Routes = [ @@ -80,18 +81,6 @@ let routes: Routes = [ path: 'blocks', component: BlocksList, }, - { - path: 'hashrate', - component: HashrateChartComponent, - }, - { - path: 'hashrate/pools', - component: HashrateChartPoolsComponent, - }, - { - path: 'pools', - component: PoolRankingComponent, - }, { path: 'pool', children: [ @@ -105,7 +94,30 @@ let routes: Routes = [ }, { path: 'graphs', - component: StatisticsComponent, + component: GraphsComponent, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'mempool', + }, + { + path: 'mempool', + component: StatisticsComponent, + }, + { + path: 'mining/hashrate-difficulty', + component: HashrateChartComponent, + }, + { + path: 'mining/pools-dominance', + component: HashrateChartPoolsComponent, + }, + { + path: 'mining/pools', + component: PoolRankingComponent, + }, + ], }, { path: 'about', @@ -224,7 +236,30 @@ let routes: Routes = [ }, { path: 'graphs', - component: StatisticsComponent, + component: GraphsComponent, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'mempool', + }, + { + path: 'mempool', + component: StatisticsComponent, + }, + { + path: 'mining/hashrate-difficulty', + component: HashrateChartComponent, + }, + { + path: 'mining/pools-dominance', + component: HashrateChartPoolsComponent, + }, + { + path: 'mining/pools', + component: PoolRankingComponent, + }, + ] }, { path: 'address/:id', @@ -337,7 +372,30 @@ let routes: Routes = [ }, { path: 'graphs', - component: StatisticsComponent, + component: GraphsComponent, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'mempool', + }, + { + path: 'mempool', + component: StatisticsComponent, + }, + { + path: 'mining/hashrate-difficulty', + component: HashrateChartComponent, + }, + { + path: 'mining/pools-dominance', + component: HashrateChartPoolsComponent, + }, + { + path: 'mining/pools', + component: PoolRankingComponent, + }, + ] }, { path: 'address/:id', @@ -439,7 +497,30 @@ if (browserWindowEnv && browserWindowEnv.BASE_MODULE === 'liquid') { }, { path: 'graphs', - component: StatisticsComponent, + component: GraphsComponent, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'mempool', + }, + { + path: 'mempool', + component: StatisticsComponent, + }, + { + path: 'mining/hashrate-difficulty', + component: HashrateChartComponent, + }, + { + path: 'mining/pools-dominance', + component: HashrateChartPoolsComponent, + }, + { + path: 'mining/pools', + component: PoolRankingComponent, + }, + ] }, { path: 'address/:id', @@ -548,7 +629,30 @@ if (browserWindowEnv && browserWindowEnv.BASE_MODULE === 'liquid') { }, { path: 'graphs', - component: StatisticsComponent, + component: GraphsComponent, + children: [ + { + path: '', + pathMatch: 'full', + redirectTo: 'mempool', + }, + { + path: 'mempool', + component: StatisticsComponent, + }, + { + path: 'mining/hashrate-difficulty', + component: HashrateChartComponent, + }, + { + path: 'mining/pools-dominance', + component: HashrateChartPoolsComponent, + }, + { + path: 'mining/pools', + component: PoolRankingComponent, + }, + ] }, { path: 'address/:id', diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 3affdc7ba..99917815c 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -75,6 +75,7 @@ import { HashrateChartPoolsComponent } from './components/hashrates-chart-pools/ import { MiningStartComponent } from './components/mining-start/mining-start.component'; import { AmountShortenerPipe } from './shared/pipes/amount-shortener.pipe'; import { ShortenStringPipe } from './shared/pipes/shorten-string-pipe/shorten-string.pipe'; +import { GraphsComponent } from './components/graphs/graphs.component'; import { DifficultyAdjustmentsTable } from './components/difficulty-adjustments-table/difficulty-adjustments-table.components'; import { BlocksList } from './components/blocks-list/blocks-list.component'; @@ -133,6 +134,7 @@ import { BlocksList } from './components/blocks-list/blocks-list.component'; HashrateChartPoolsComponent, MiningStartComponent, AmountShortenerPipe, + GraphsComponent, DifficultyAdjustmentsTable, BlocksList, ], diff --git a/frontend/src/app/components/docs/code-template.component.html b/frontend/src/app/components/docs/code-template.component.html index f1cf3a1cc..eedf0d3fe 100644 --- a/frontend/src/app/components/docs/code-template.component.html +++ b/frontend/src/app/components/docs/code-template.component.html @@ -12,7 +12,7 @@
Code Example
@@ -22,8 +22,8 @@
Install Package
Code Example
diff --git a/frontend/src/app/components/graphs/graphs.component.html b/frontend/src/app/components/graphs/graphs.component.html new file mode 100644 index 000000000..9788437a9 --- /dev/null +++ b/frontend/src/app/components/graphs/graphs.component.html @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/frontend/src/app/components/graphs/graphs.component.scss b/frontend/src/app/components/graphs/graphs.component.scss new file mode 100644 index 000000000..c4ca483bd --- /dev/null +++ b/frontend/src/app/components/graphs/graphs.component.scss @@ -0,0 +1,9 @@ +.menu { + flex-grow: 1; + max-width: 600px; +} + +.menu-li { + flex-grow: 1; + text-align: center; +} diff --git a/frontend/src/app/components/graphs/graphs.component.ts b/frontend/src/app/components/graphs/graphs.component.ts new file mode 100644 index 000000000..61fa65196 --- /dev/null +++ b/frontend/src/app/components/graphs/graphs.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from "@angular/core"; + +@Component({ + selector: 'app-graphs', + templateUrl: './graphs.component.html', + styleUrls: ['./graphs.component.scss'], +}) +export class GraphsComponent implements OnInit { + constructor() { } + + ngOnInit(): void { + + } +} diff --git a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.html b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.html index 2ca0e8376..e3d2f6213 100644 --- a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.html +++ b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.html @@ -1,6 +1,25 @@
+
+
+
+
Hashrate
+

+ {{ hashrates.currentHashrate | amountShortener }} + hashes/sec +

+
+
+
Difficulty
+

+ {{ hashrates.currentDifficulty | amountShortener }} +

+
+
+
+
+ Hashrate & Difficulty
+ + +
+
+
Hashrate
+

+ +

+
+
+
Difficulty
+

+ +

+
+
+
\ No newline at end of file diff --git a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.scss b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.scss index 0254d3175..62903d4f4 100644 --- a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.scss +++ b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.scss @@ -1,3 +1,11 @@ +.card-header { + border-bottom: 0; + font-size: 18px; + @media (min-width: 465px) { + font-size: 20px; + } +} + .main-title { position: relative; color: #ffffff91; @@ -10,13 +18,14 @@ } .full-container { + padding: 0px 15px; width: 100%; - height: calc(100% - 100px); + height: calc(100% - 170px); @media (max-width: 992px) { - height: calc(100% - 140px); + height: calc(100% - 220px); }; - @media (max-width: 576px) { - height: calc(100% - 180px); + @media (max-width: 575px) { + height: calc(100% - 260px); }; } @@ -24,18 +33,41 @@ width: 100%; height: 100%; padding-bottom: 20px; - padding-right: 20px; + padding-right: 10px; + @media (max-width: 992px) { + padding-bottom: 25px; + } + @media (max-width: 829px) { + padding-bottom: 50px; + } + @media (max-width: 767px) { + padding-bottom: 25px; + } + @media (max-width: 629px) { + padding-bottom: 55px; + } + @media (max-width: 567px) { + padding-bottom: 55px; + } } .chart-widget { width: 100%; height: 100%; - max-height: 293px; + max-height: 270px; } .formRadioGroup { margin-top: 6px; display: flex; flex-direction: column; + @media (min-width: 1130px) { + position: relative; + top: -65px; + } + @media (min-width: 830px) and (max-width: 1130px) { + position: relative; + top: 0px; + } @media (min-width: 830px) { flex-direction: row; float: right; @@ -48,3 +80,66 @@ } } } + +.pool-distribution { + min-height: 56px; + display: block; + @media (min-width: 485px) { + display: flex; + flex-direction: row; + } + h5 { + margin-bottom: 10px; + } + .item { + width: 50%; + margin: 0px auto 10px; + display: inline-block; + @media (min-width: 485px) { + margin: 0px auto 10px; + } + @media (min-width: 785px) { + margin: 0px auto 0px; + } + &:last-child { + margin: 0px auto 0px; + } + &:nth-child(2) { + order: 2; + @media (min-width: 485px) { + order: 3; + } + } + &:nth-child(3) { + order: 3; + @media (min-width: 485px) { + order: 2; + display: block; + } + @media (min-width: 768px) { + display: none; + } + @media (min-width: 992px) { + display: block; + } + } + .card-title { + font-size: 1rem; + color: #4a68b9; + } + .card-text { + font-size: 18px; + span { + color: #ffffff66; + font-size: 12px; + } + } + } +} + +.skeleton-loader { + width: 100%; + display: block; + max-width: 80px; + margin: 15px auto 3px; +} diff --git a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts index 382071e37..52954d782 100644 --- a/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts +++ b/frontend/src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -61,6 +61,7 @@ export class HashrateChartComponent implements OnInit { .pipe( startWith('1y'), switchMap((timespan) => { + this.isLoading = true; return this.apiService.getHistoricalHashrate$(timespan) .pipe( tap((data: any) => { @@ -109,21 +110,10 @@ export class HashrateChartComponent implements OnInit { (new Date().getTime() / 1000) - (data.oldestIndexedBlockTimestamp) ) / 3600 / 24; - const tableData = []; - for (let i = data.difficulty.length - 1; i > 0; --i) { - const selectedPowerOfTen: any = selectPowerOfTen(data.difficulty[i].difficulty); - const change = (data.difficulty[i].difficulty / data.difficulty[i - 1].difficulty - 1) * 100; - - tableData.push(Object.assign(data.difficulty[i], { - change: change, - difficultyShorten: formatNumber( - data.difficulty[i].difficulty / selectedPowerOfTen.divider, - this.locale, '1.2-2') + selectedPowerOfTen.unit - })); - } return { availableTimespanDay: availableTimespanDay, - difficulty: this.tableOnly ? tableData.slice(0, 5) : tableData, + currentDifficulty: Math.round(data.difficulty[data.difficulty.length - 1].difficulty * 100) / 100, + currentHashrate: data.hashrates[data.hashrates.length - 1].avgHashrate, }; }), retryWhen((errors) => errors.pipe( @@ -155,6 +145,7 @@ export class HashrateChartComponent implements OnInit { this.chartOptions = { title: title, + animation: false, color: [ new graphic.LinearGradient(0, 0, 0, 0.65, [ { offset: 0, color: '#F4511E' }, @@ -166,9 +157,10 @@ export class HashrateChartComponent implements OnInit { '#D81B60', ], grid: { + top: 30, right: this.right, left: this.left, - bottom: this.widget ? 30 : 60, + bottom: this.widget ? 30 : this.isMobile() ? 90 : 60, }, tooltip: { show: !this.isMobile() || !this.widget, @@ -209,7 +201,7 @@ export class HashrateChartComponent implements OnInit { type: 'time', splitNumber: (this.isMobile() || this.widget) ? 5 : 10, }, - legend: data.hashrates.length === 0 ? undefined : { + legend: (this.widget || data.hashrates.length === 0) ? undefined : { data: [ { name: 'Hashrate', @@ -241,7 +233,6 @@ export class HashrateChartComponent implements OnInit { return value.min * 0.9; }, type: 'value', - name: 'Hashrate', axisLabel: { color: 'rgb(110, 112, 121)', formatter: (val) => { @@ -259,7 +250,6 @@ export class HashrateChartComponent implements OnInit { return value.min * 0.9; }, type: 'value', - name: 'Difficulty', position: 'right', axisLabel: { color: 'rgb(110, 112, 121)', @@ -301,17 +291,18 @@ export class HashrateChartComponent implements OnInit { type: 'inside', realtime: true, zoomLock: true, - zoomOnMouseWheel: true, - moveOnMouseMove: true, maxSpan: 100, minSpan: 10, + moveOnMouseMove: false, }, { showDetail: false, show: true, type: 'slider', brushSelect: false, realtime: true, - bottom: 0, + bottom: this.isMobile() ? 30 : 0, + left: 20, + right: 15, selectedDataBackground: { lineStyle: { color: '#fff', diff --git a/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.html b/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.html index 69da008d2..32f6a7b25 100644 --- a/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.html +++ b/frontend/src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.html @@ -1,6 +1,7 @@
-
+
+ Mining pools dominance