diff --git a/CHANGELOG.md b/CHANGELOG.md index 63b4be485..62fcf8c1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,12 +25,13 @@ - Added `Hash Price Min` - Added `Hash Price Rebound` - Removed all year datasets (25) in favor for epoch datasets (5), the former was too granular to be really useful -- Removed datasets split by liquidity for all datasets already split by any address kind, while fun to have, they took time to compute, ram, and space to store and no one was actually checking them +- Removed datasets split by liquidity for all datasets **already split by any address kind**, while fun to have, they took time to compute, ram, and space to store and no one was actually checking them - Fixed a lot of values in split by liquidity datasets ## Website -- ~Added a dashboard~ Added the latest values to the tree next to each option (in "Folders") instead, while less values are visible at a time, it's much more readable and organised +- Updated the design yet again which made the website even easier on the eyes +- ~Added a dashboard~ Added the latest values to the tree next to each option instead, while less values are visible at a time, it's much more readable and organised - Added a library of PDFs - Fixed service worker not passing 304 (not modified) response and instead serving cached responses - Fixed history not being properly registered @@ -50,7 +51,7 @@ - Added `--recompute_computed true` argument, to allow recomputation of computed datasets in case of a bug - Fixed not saved arguments, not being processed properly - Fixed bug in `generic_map.multi_insert_simple_average` -- Added defragmentation of databases to save space +- Added defragmentation option `--first-defragment true` of databases to save space (which can save up to 50%) ## Server diff --git a/README.md b/README.md index d1d63ac23..46330146b 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ ## Description -*TLDR*: **A better, FOSS, Bitcoin-only, self-hostable Glassnode** +_TLDR_: **A better, FOSS, Bitcoin-only, self-hostable Glassnode** -**kibō** (*hope* in japanese) is a suite of tools that aims to help you understand Bitcoin's various dynamics. To do that, there is a wide number of charts and datasets with a scale by date but also by height free for you to explore. Which allows you to verify an incredible number of things, from the number of UTXOs to the repartition of the supply between different groups over time, with many things in between and it's all made possible thanks to Bitcoin's transparency. Whether you're an enthusiast, a researcher, a miner, an analyst, a trader, a skeptic or just curious, there is something new to learn for everyone ! +**kibō** (_hope_ in japanese) is a suite of tools that aims to help you understand Bitcoin's various dynamics. To do that, there is a wide number of charts and datasets with a scale by date but also by height free for you to explore. Which allows you to verify an incredible number of things, from the number of UTXOs to the repartition of the supply between different groups over time, with many things in between and it's all made possible thanks to Bitcoin's transparency. Whether you're an enthusiast, a researcher, a miner, an analyst, a trader, a skeptic or just curious, there is something new to learn for everyone ! While it's not the first tool trying to solve this problem, it's the first that is completely free, open-source and self-hostable. Which is very important as, just like for Bitcoin itself, I strongly believe that everyone should have access to this kind of data. @@ -36,7 +36,7 @@ So if you find this project useful, [please send some sats](https://geyser.fund/ If you're a potential sponsor, feel free to contact me in Nostr ! -Bitcoin address: bc1q950q4ukpxxm6wjjkv6cpq8jzpazaxrrwftctkt +Bitcoin address: [bc1q950q4ukpxxm6wjjkv6cpq8jzpazaxrrwftctkt](bitcoin:bc1q950q4ukpxxm6wjjkv6cpq8jzpazaxrrwftctkt) Lightning address: lnurl1dp68gurn8ghj7ampd3kx2ar0veekzar0wd5xjtnrdakj7tnhv4kxctttdehhwm30d3h82unvwqhkxmmww3jkuar8d35kgetj8yuq363hv4 @@ -48,11 +48,11 @@ This project is still in an early stage. Until more people look at the code and ## Instances -| URL | Type | Version | Status | Last Height | Up Time Ratio | -| --- | --- | --- | --- | --- | --- | -| [kibo.money](https://kibo.money) | Main | ![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fkibo.money%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=%20&color=%23db9e03) | ![Status](https://img.shields.io/uptimerobot/status/m797259009-043f6b92d4cc2deef7d13f50?style=for-the-badge&label=%20&up_color=%231cb454&down_color=%23e63636) | ![Height](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fkibo.money%2Fapi%2Flast-height.json&query=%24.value&style=for-the-badge&label=%20&color=%23f26610) | ![Ratio](https://img.shields.io/uptimerobot/ratio/m797259009-043f6b92d4cc2deef7d13f50?style=for-the-badge&label=%20&color=%232f73f1) | -| [backup.kibo.money](https://backup.kibo.money) | Backup | ![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fbackup.kibo.money%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=%20&color=%23db9e03) | ![Status](https://img.shields.io/uptimerobot/status/m797259013-bb29a8264fab8786fb80c5ed?style=for-the-badge&label=%20&up_color=%231cb454&down_color=%23e63636) | ![Height](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fbackup.kibo.money%2Fapi%2Flast-height.json&query=%24.value&style=for-the-badge&label=%20&color=%23f26610) | ![Ratio](https://img.shields.io/uptimerobot/ratio/m797259013-bb29a8264fab8786fb80c5ed?style=for-the-badge&label=%20&color=%232f73f1) | -| [preview.kibo.money](https://preview.kibo.money) | Dev | ![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fpreview.kibo.money%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=%20&color=%23db9e03) | ![Status](https://img.shields.io/uptimerobot/status/m797869753-d40fc161bcb34624857a8082?style=for-the-badge&label=%20&up_color=%231cb454&down_color=%23e63636) | ![Height](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpreview.kibo.money%2Fapi%2Flast-height.json&query=%24.value&style=for-the-badge&label=%20&color=%23f26610) | ![Ratio](https://img.shields.io/uptimerobot/ratio/m797869753-d40fc161bcb34624857a8082?style=for-the-badge&label=%20&color=%232f73f1) | +| URL | Type | Version | Status | Last Height | Up Time Ratio | +| ------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| [kibo.money](https://kibo.money) | Main | ![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fkibo.money%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=%20&color=%23db9e03) | ![Status](https://img.shields.io/uptimerobot/status/m797259009-043f6b92d4cc2deef7d13f50?style=for-the-badge&label=%20&up_color=%231cb454&down_color=%23e63636) | ![Height](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fkibo.money%2Fapi%2Flast-height.json&query=%24.value&style=for-the-badge&label=%20&color=%23f26610) | ![Ratio](https://img.shields.io/uptimerobot/ratio/m797259009-043f6b92d4cc2deef7d13f50?style=for-the-badge&label=%20&color=%232f73f1) | +| [backup.kibo.money](https://backup.kibo.money) | Backup | ![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fbackup.kibo.money%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=%20&color=%23db9e03) | ![Status](https://img.shields.io/uptimerobot/status/m797259013-bb29a8264fab8786fb80c5ed?style=for-the-badge&label=%20&up_color=%231cb454&down_color=%23e63636) | ![Height](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fbackup.kibo.money%2Fapi%2Flast-height.json&query=%24.value&style=for-the-badge&label=%20&color=%23f26610) | ![Ratio](https://img.shields.io/uptimerobot/ratio/m797259013-bb29a8264fab8786fb80c5ed?style=for-the-badge&label=%20&color=%232f73f1) | +| [preview.kibo.money](https://preview.kibo.money) | Dev | ![Version](https://img.shields.io/badge/dynamic/toml?url=https%3A%2F%2Fpreview.kibo.money%2FCargo.toml&query=%24.package.version&style=for-the-badge&label=%20&color=%23db9e03) | ![Status](https://img.shields.io/uptimerobot/status/m797869753-d40fc161bcb34624857a8082?style=for-the-badge&label=%20&up_color=%231cb454&down_color=%23e63636) | ![Height](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fpreview.kibo.money%2Fapi%2Flast-height.json&query=%24.value&style=for-the-badge&label=%20&color=%23f26610) | ![Ratio](https://img.shields.io/uptimerobot/ratio/m797869753-d40fc161bcb34624857a8082?style=for-the-badge&label=%20&color=%232f73f1) | Please open an issue if you want to add another instance @@ -107,7 +107,7 @@ Working on it ### Manual -*Mac OS and Linux only, Windows is unsupported* +_Mac OS and Linux only, Windows is unsupported_ First we need to install Rust (https://www.rust-lang.org/tools/install) @@ -122,6 +122,7 @@ rustup update ``` > If you're on Ubuntu you'll probably also need to install `open-ssl` with +> > ```bash > sudo apt install libssl-dev pkg-config > ``` @@ -153,11 +154,13 @@ cd ???/kibo/parser Now we can finally start by running the parser, you need to use the `./run.sh` script instead of `cargo run -r` as we need to set various system variables for the program to run smoothly For the first launch, the parser will need several information such as: + - `--datadir`: which is bitcoin data directory path, prefer `$HOME` to `~` as the latter might not work - `--rpcuser`: the username of the RPC credentials to talk to the bitcoin server - `--rpcpassword`: the password of the RPC credentials Optionally you can also specify: + - `--rpcconnect`: if the bitcoin core server's IP is different than `localhost` - `--rpcport`: if the port is different than `8332` @@ -196,21 +199,3 @@ Formerly Satonomics The dove (borrowed from [svgrepo](https://www.svgrepo.com/svg/351969/dove) for now) is known to represent hope in many cultures. The orange background is a wink to Bitcoin and when in a circle, it also represents the sun, which means that while it's our hope for a better future, we still have to be careful with our collective goals and actions, to not end up like Icarus. - -## Infrastructure - -Here's the current infrastructure of the main instance and its backup. - -It uses 2 servers, a full and a light one without the parser running but with still datasets syncronized via Syncthing. - -Cloudflare is used for their tunnel + CDN services. - -Though it's recommended to change to default **Browser Cache TTL** configuration from `4 Hours` to `Respect Existing Headers` (in `Websites / YOUR_DOMAIN / Caching / Configuration / Browser Cache TTL`) and activate `Always use https`. - -

- - - - kibō - -

diff --git a/assets/infrastructure-dark.svg b/assets/infrastructure-dark.svg deleted file mode 100644 index a1dec79be..000000000 --- a/assets/infrastructure-dark.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - Main instance(MBP M3 Pro)Backup instance(Mac Mini M1)Synchronization(Syncthing)CDN, DNS, Proxy(Cloudflare)Services:- ServerServices:- Parser- Serverbackup.kibo.moneykibo.moneyTunnel(cloudflared)Tunnel(cloudflared)Internet \ No newline at end of file diff --git a/assets/infrastructure-light.svg b/assets/infrastructure-light.svg deleted file mode 100644 index fd2563925..000000000 --- a/assets/infrastructure-light.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - Main instance(MBP M3 Pro)Backup instance(Mac Mini M1)Synchronization(Syncthing)CDN, DNS, Proxy(Cloudflare)Services:- ServerServices:- Parser- Serverbackup.kibo.moneykibo.moneyTunnel(cloudflared)Tunnel(cloudflared)Internet \ No newline at end of file diff --git a/assets/infrastructure.excalidraw b/assets/infrastructure.excalidraw deleted file mode 100644 index 6b8cdfe04..000000000 --- a/assets/infrastructure.excalidraw +++ /dev/null @@ -1,1061 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 351, - "versionNonce": 642218538, - "index": "a1", - "isDeleted": false, - "id": "4l5Cnq81N-N8HWbMPgOfm", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 365.86486603966756, - "y": 534.9494905328866, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 184.9297887916521, - "height": 85.19094049738938, - "seed": 350356010, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "LfdDNULnkLxM4LrR-Ey2y" - }, - { - "id": "CbJ4u9h-uaIrTzsEExVo7", - "type": "arrow" - }, - { - "id": "-1w44Xvh1ZmtarGuufckU", - "type": "arrow" - } - ], - "updated": 1726489097527, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 360, - "versionNonce": 1888531050, - "index": "a1V", - "isDeleted": false, - "id": "LfdDNULnkLxM4LrR-Ey2y", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 388.80980193939985, - "y": 552.5449607815813, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 139.0399169921875, - "height": 50, - "seed": 218559926, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726495547033, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Main instance\n(MBP M3 Pro)", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "4l5Cnq81N-N8HWbMPgOfm", - "originalText": "Main instance\n(MBP M3 Pro)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 723, - "versionNonce": 1818928362, - "index": "a3", - "isDeleted": false, - "id": "9565AiaaW5P2onZJsxM5X", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 929.3589198932772, - "y": 533.3447074509686, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 187.13198652163655, - "height": 88.40050666122548, - "seed": 161587242, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "xEhd36k7qSdZORzI5BYDC" - }, - { - "id": "CbJ4u9h-uaIrTzsEExVo7", - "type": "arrow" - }, - { - "id": "gaJmg3DF-UOKWKTiDcUQS", - "type": "arrow" - } - ], - "updated": 1726489097527, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 745, - "versionNonce": 1908295850, - "index": "a4", - "isDeleted": false, - "id": "xEhd36k7qSdZORzI5BYDC", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 944.2449891428649, - "y": 552.5449607815814, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 157.35984802246094, - "height": 50, - "seed": 1838156522, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726495550428, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Backup instance\n(Mac Mini M1)", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "9565AiaaW5P2onZJsxM5X", - "originalText": "Backup instance\n(Mac Mini M1)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 554, - "versionNonce": 1113225130, - "index": "a7", - "isDeleted": false, - "id": "CbJ4u9h-uaIrTzsEExVo7", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 551.7946548313197, - "y": 577.8108949212098, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 374.2744229755049, - "height": 0.5318682792568552, - "seed": 1412467498, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "-xyotiDxrIvGpHihaNTMw" - } - ], - "updated": 1726489097527, - "link": null, - "locked": false, - "startBinding": { - "elementId": "4l5Cnq81N-N8HWbMPgOfm", - "focus": 0.053987925025335816, - "gap": 1, - "fixedPoint": null - }, - "endBinding": { - "elementId": "9565AiaaW5P2onZJsxM5X", - "focus": -0.06637645925445641, - "gap": 1.9594774360632248, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 374.2744229755049, - -0.5318682792568552 - ] - ], - "elbowed": false - }, - { - "type": "text", - "version": 24, - "versionNonce": 1622013622, - "index": "a7V", - "isDeleted": false, - "id": "-xyotiDxrIvGpHihaNTMw", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 663.5995146712901, - "y": 553.6137138980424, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 152.0398712158203, - "height": 50, - "seed": 1240678698, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489097527, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Synchronization\n(Syncthing)", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "CbJ4u9h-uaIrTzsEExVo7", - "originalText": "Synchronization\n(Syncthing)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "ellipse", - "version": 889, - "versionNonce": 1695926463, - "index": "a9", - "isDeleted": false, - "id": "4Kf-4nPmAC4H6JYuOWgKz", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 674.688026887862, - "y": -113.87511038919328, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 114.13321104184153, - "height": 83.7807552220783, - "seed": 1864324918, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1726523088164, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 956, - "versionNonce": 1989633713, - "index": "aA", - "isDeleted": false, - "id": "R4QUoIsp_Y1_gsH3uowyA", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 751.5605318882301, - "y": -89.26982658383659, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 114.13321104184153, - "height": 83.7807552220783, - "seed": 1029607658, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "5dcU1IErPCDiUG3gflg8R", - "type": "arrow" - } - ], - "updated": 1726523088164, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1145, - "versionNonce": 1845254367, - "index": "aB", - "isDeleted": false, - "id": "sCBhvSDPsRkhW05eEeRy5", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 609.0037967435512, - "y": -83.9664057764262, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 164.9744518534024, - "height": 86.58639076795106, - "seed": 1345460918, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "Xp-UFM8oBcOEj_8Scy4Ma", - "type": "arrow" - }, - { - "id": "5dcU1IErPCDiUG3gflg8R", - "type": "arrow" - } - ], - "updated": 1726523088164, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1148, - "versionNonce": 1094281361, - "index": "aC", - "isDeleted": false, - "id": "XkaKAKq7arG2a4-xuVxc_", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 755.5420699957402, - "y": -105.29203456400774, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 53.21063017191969, - "height": 42.38188857636974, - "seed": 1023165930, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1726523088164, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1536, - "versionNonce": 634564330, - "index": "aE", - "isDeleted": false, - "id": "KDdwlG7bsCvMQxoGRy8Xc", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 293.13116655589124, - "y": 202.16187544969688, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 893.9941536837997, - "height": 144.9329694976395, - "seed": 1917949750, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "rqWH83jhOa4ihfEdsTYEt" - }, - { - "id": "gaJmg3DF-UOKWKTiDcUQS", - "type": "arrow" - }, - { - "id": "-1w44Xvh1ZmtarGuufckU", - "type": "arrow" - } - ], - "updated": 1726495617856, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1506, - "versionNonce": 555245354, - "index": "aF", - "isDeleted": false, - "id": "rqWH83jhOa4ihfEdsTYEt", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 657.8582729956695, - "y": 249.62836019851665, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 164.5399408042431, - "height": 50, - "seed": 1304772726, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726495617857, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "CDN, DNS, Proxy\n(Cloudflare)", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "KDdwlG7bsCvMQxoGRy8Xc", - "originalText": "CDN, DNS, Proxy\n(Cloudflare)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 960, - "versionNonce": 1215820095, - "index": "aN", - "isDeleted": false, - "id": "Xp-UFM8oBcOEj_8Scy4Ma", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 459.16617750823536, - "y": 246.47593943435749, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 199.39664159505958, - "height": 244.9843279773636, - "seed": 1968881974, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1726523088164, - "link": null, - "locked": false, - "startBinding": { - "elementId": "q5zgtaduyEFWvWtLqdo4u", - "focus": -0.29520668458161897, - "gap": 7.468651206465225, - "fixedPoint": null - }, - "endBinding": { - "elementId": "sCBhvSDPsRkhW05eEeRy5", - "focus": -0.015501021013443951, - "gap": 2.4489688039538677, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 199.39664159505958, - -244.9843279773636 - ] - ], - "elbowed": false - }, - { - "type": "arrow", - "version": 994, - "versionNonce": 1236482129, - "index": "aO", - "isDeleted": false, - "id": "5dcU1IErPCDiUG3gflg8R", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 830.1001802364694, - "y": -0.5385166255382927, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 188.17952290562857, - "height": 239.22427486491006, - "seed": 2106058986, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1726523088164, - "link": null, - "locked": false, - "startBinding": { - "elementId": "R4QUoIsp_Y1_gsH3uowyA", - "focus": 0.23329021524550242, - "gap": 7.753664430702663, - "fixedPoint": null - }, - "endBinding": { - "elementId": "pglywLWx0DKRfK57PIrUI", - "focus": 0.17814510531398206, - "gap": 9.491520721779693, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 188.17952290562857, - 239.22427486491006 - ] - ], - "elbowed": false - }, - { - "type": "text", - "version": 201, - "versionNonce": 1806017514, - "index": "aP", - "isDeleted": false, - "id": "lS9tbqIzGDn_EHnkA1-z9", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 980.6673500907636, - "y": 625.9948603740997, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 83.75991821289062, - "height": 50, - "seed": 1098959798, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489102346, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Services:\n- Server", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Services:\n- Server", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 339, - "versionNonce": 874481386, - "index": "aR", - "isDeleted": false, - "id": "w8Pc4lZIzMJfQlLbzQX9w", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.4498013290483, - "y": 625.9510491610656, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 83.75991821289062, - "height": 75, - "seed": 1853359990, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489101018, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Services:\n- Parser\n- Server", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Services:\n- Parser\n- Server", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "ellipse", - "version": 793, - "versionNonce": 569869290, - "index": "aS", - "isDeleted": false, - "id": "pglywLWx0DKRfK57PIrUI", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 880.0025282056731, - "y": 249.22675692415476, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 285.84476989684487, - "height": 58.423940951345934, - "seed": 1773150518, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "-iVMi_RkcWUQIt6Z2Mlrh" - }, - { - "id": "gaJmg3DF-UOKWKTiDcUQS", - "type": "arrow" - }, - { - "id": "5dcU1IErPCDiUG3gflg8R", - "type": "arrow" - } - ], - "updated": 1726489062551, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 752, - "versionNonce": 748078710, - "index": "aSV", - "isDeleted": false, - "id": "-iVMi_RkcWUQIt6Z2Mlrh", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 936.4035939616971, - "y": 265.78274498465817, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 172.91986322402954, - "height": 25, - "seed": 1414430634, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489062551, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "backup.kibo.money", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "pglywLWx0DKRfK57PIrUI", - "originalText": "backup.kibo.money", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "ellipse", - "version": 621, - "versionNonce": 284391082, - "index": "aU", - "isDeleted": false, - "id": "q5zgtaduyEFWvWtLqdo4u", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 361.7468186507642, - "y": 248.99504540515608, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 193.16588356945877, - "height": 58.88736398934328, - "seed": 1828238890, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "L2XYk3PmFoutUXTAiwF_e" - }, - { - "id": "-1w44Xvh1ZmtarGuufckU", - "type": "arrow" - }, - { - "id": "Xp-UFM8oBcOEj_8Scy4Ma", - "type": "arrow" - } - ], - "updated": 1726489062551, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 450, - "versionNonce": 1042450358, - "index": "aUV", - "isDeleted": false, - "id": "L2XYk3PmFoutUXTAiwF_e", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 407.4253380048505, - "y": 266.11890019829514, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 102.21993869543076, - "height": 25, - "seed": 1196969142, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489062551, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "kibo.money", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "q5zgtaduyEFWvWtLqdo4u", - "originalText": "kibo.money", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 446, - "versionNonce": 716143722, - "index": "aW", - "isDeleted": false, - "id": "-1w44Xvh1ZmtarGuufckU", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 458.32304516667847, - "y": 354.8010802865273, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 0.17852313722704594, - "height": 175.64875971698473, - "seed": 1204452650, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "type": "text", - "id": "6sYDgHoTWAbEIl_FWrDuW" - } - ], - "updated": 1726495617857, - "link": null, - "locked": false, - "startBinding": { - "elementId": "KDdwlG7bsCvMQxoGRy8Xc", - "focus": 0.6301546827835128, - "gap": 7.706235339190897, - "fixedPoint": null - }, - "endBinding": { - "elementId": "4l5Cnq81N-N8HWbMPgOfm", - "focus": 0.000038110225611944457, - "gap": 2.8605229475869627, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -0.17852313722704594, - 175.64875971698473 - ] - ], - "elbowed": false - }, - { - "type": "text", - "version": 5, - "versionNonce": 412947894, - "index": "aX", - "isDeleted": false, - "id": "6sYDgHoTWAbEIl_FWrDuW", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 399.3979196785064, - "y": 417.0359387414294, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 123.13990783691406, - "height": 50, - "seed": 655331882, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489073730, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Tunnel\n(cloudflared)", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "-1w44Xvh1ZmtarGuufckU", - "originalText": "Tunnel\n(cloudflared)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 594, - "versionNonce": 1714504106, - "index": "aY", - "isDeleted": false, - "id": "gaJmg3DF-UOKWKTiDcUQS", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1023.4143216413406, - "y": 356.5618164758373, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 0.6658822477554622, - "height": 160.10179451385454, - "seed": 818854890, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "type": "text", - "id": "uTkD7W1DyHBhxilhBEtJv" - } - ], - "updated": 1726495617857, - "link": null, - "locked": false, - "startBinding": { - "elementId": "KDdwlG7bsCvMQxoGRy8Xc", - "focus": -0.6340885693917432, - "gap": 9.46697152850092, - "fixedPoint": null - }, - "endBinding": { - "elementId": "9565AiaaW5P2onZJsxM5X", - "focus": 0.03896054889278365, - "gap": 16.71544096114612, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -0.6658822477554622, - 160.10179451385454 - ] - ], - "elbowed": false - }, - { - "type": "text", - "version": 5, - "versionNonce": 1065203830, - "index": "aZ", - "isDeleted": false, - "id": "uTkD7W1DyHBhxilhBEtJv", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 949.6087413031642, - "y": 419.85938650996854, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 123.13990783691406, - "height": 50, - "seed": 477996650, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726489079014, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Tunnel\n(cloudflared)", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "gaJmg3DF-UOKWKTiDcUQS", - "originalText": "Tunnel\n(cloudflared)", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 166, - "versionNonce": 1379200287, - "index": "aa", - "isDeleted": false, - "id": "l00BoaAvHhgy_wRaOndRf", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 698.1576166043603, - "y": 12.645887676558857, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 83.77993774414062, - "height": 25, - "seed": 1234467574, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1726523088164, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 5, - "text": "Internet", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Internet", - "autoResize": true, - "lineHeight": 1.25 - } - ], - "appState": { - "gridSize": 20, - "gridStep": 5, - "gridModeEnabled": false, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/parser/src/actions/iter_blocks.rs b/parser/src/actions/iter_blocks.rs index 7778596e4..aaf46e35e 100644 --- a/parser/src/actions/iter_blocks.rs +++ b/parser/src/actions/iter_blocks.rs @@ -18,7 +18,7 @@ use crate::{ }; pub fn iter_blocks( - config: &Config, + config: &mut Config, rpc: &biter::bitcoincore_rpc::Client, approx_block_count: usize, exit: Exit, @@ -33,6 +33,7 @@ pub fn iter_blocks( if config.first_defragment() { databases.defragment(&exit); + config.disable_defragment(); } log("Imported databases"); diff --git a/parser/src/main.rs b/parser/src/main.rs index 39426ca5e..a95380569 100644 --- a/parser/src/main.rs +++ b/parser/src/main.rs @@ -8,7 +8,7 @@ fn main() -> color_eyre::Result<()> { reset_logs(); - let config = Config::import()?; + let mut config = Config::import()?; let rpc = create_rpc(&config).unwrap(); @@ -19,7 +19,7 @@ fn main() -> color_eyre::Result<()> { log(&format!("{block_count} blocks found.")); - iter_blocks(&config, &rpc, block_count, exit.clone())?; + iter_blocks(&mut config, &rpc, block_count, exit.clone())?; if let Some(delay) = config.delay { sleep(Duration::from_secs(delay)) diff --git a/parser/src/structs/config.rs b/parser/src/structs/config.rs index 179126ef9..bf88dca8b 100644 --- a/parser/src/structs/config.rs +++ b/parser/src/structs/config.rs @@ -171,4 +171,8 @@ impl Config { pub fn first_defragment(&self) -> bool { self.first_defragment.is_some_and(|b| b) } + + pub fn disable_defragment(&mut self) { + self.first_defragment.take(); + } } diff --git a/website/index.html b/website/index.html index ca34bf7a2..7ed4aa1dd 100644 --- a/website/index.html +++ b/website/index.html @@ -72,8 +72,6 @@ a { color: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; } b, @@ -221,6 +219,8 @@ @@ -1207,32 +969,29 @@ + + - -
+
-
-
- - - - + + + + + +