nimbus-eth1/fluffy
Jacek Sieka 0b32078c4b
Consolidate block type for block processing (#2325)
This PR consolidates the split header-body sequences into a single EthBlock
sequence and cleans up the fallout from that which significantly reduces
block processing overhead during import thanks to less garbage collection
and fewer copies of things all around.

Notably, since the number of headers must always match the number of bodies,
we also get rid of a pointless degree of freedom that in the future could
introduce unnecessary bugs.

* only read header and body from era file
* avoid several unnecessary copies along the block processing way
* simplify signatures, cleaning up unused arguemnts and returns
* use `stew/assign2` in a few strategic places where the generated
  nim assignent is slow and add a few `move` to work around poor
  analysis in nim 1.6 (will need to be revisited for 2.0)

```
stats-20240607_2223-a814aa0b.csv vs stats-20240608_0714-21c1d0a9.csv
                       bps_x     bps_y     tps_x        tps_y    bpsd    tpsd    timed
block_number
(498305, 713245]    1,540.52  1,809.73  2,361.58  2775.340189  17.63%  17.63%  -14.92%
(713245, 928185]      730.36    865.26  1,715.90  2028.973852  18.01%  18.01%  -15.21%
(928185, 1143126]     663.03    789.10  2,529.26  3032.490771  19.79%  19.79%  -16.28%
(1143126, 1358066]    393.46    508.05  2,152.50  2777.578119  29.13%  29.13%  -22.50%
(1358066, 1573007]    370.88    440.72  2,351.31  2791.896052  18.81%  18.81%  -15.80%
(1573007, 1787947]    283.65    335.11  2,068.93  2441.373402  17.60%  17.60%  -14.91%
(1787947, 2002888]    287.29    342.11  2,078.39  2474.179448  18.99%  18.99%  -15.91%
(2002888, 2217828]    293.38    343.16  2,208.83   2584.77457  17.16%  17.16%  -14.61%
(2217828, 2432769]    140.09    167.86  1,081.87  1296.336926  18.82%  18.82%  -15.80%

blocks: 1934464, baseline: 3h13m1s, contender: 2h43m47s
bpsd (mean): 19.55%
tpsd (mean): 19.55%
Time (total): -29m13s, -15.14%
```
2024-06-09 16:32:20 +02:00
..
common results: use canonical import (#2248) 2024-05-30 14:54:03 +02:00
database Consolidate block type for block processing (#2325) 2024-06-09 16:32:20 +02:00
docs/the_fluffy_book Adjust color scheme for fluffy.guide (#2144) 2024-04-22 15:33:51 +02:00
eth_data Consolidate block type for block processing (#2325) 2024-06-09 16:32:20 +02:00
grafana Add metrics to track the distance of content requested and offered (#1903) 2023-11-23 18:49:15 +01:00
network Use --styleCheck:error for Fluffy + fixes (#2247) 2024-05-30 18:12:28 +02:00
rpc results: use canonical import (#2248) 2024-05-30 14:54:03 +02:00
scripts Use --styleCheck:error for Fluffy + fixes (#2247) 2024-05-30 18:12:28 +02:00
tests results: use canonical import (#2248) 2024-05-30 14:54:03 +02:00
tools Consolidate block type for block processing (#2325) 2024-06-09 16:32:20 +02:00
README.md Dead link fixes and other small improvements to the fluffy book (#1859) 2023-10-25 13:23:17 +02:00
conf.nim Rename the Portal testnet0 to mainnet (#2204) 2024-05-22 17:10:31 +02:00
fluffy.nim results: use canonical import (#2248) 2024-05-30 14:54:03 +02:00
fluffy.nim.cfg Fix name of fluffy config file and disable log colors for Windows (#1551) 2023-04-20 12:58:56 +02:00
logging.nim results: use canonical import (#2248) 2024-05-30 14:54:03 +02:00
network_metadata.nim Rename the Portal testnet0 to mainnet (#2204) 2024-05-22 17:10:31 +02:00
nim.cfg Use --styleCheck:error for Fluffy + fixes (#2247) 2024-05-30 18:12:28 +02:00
version.nim Formatting fluffy with nph v0.5.1 + CI check (#2020) 2024-02-28 18:31:45 +01:00

README.md

Fluffy: The Nimbus Portal Network Client

Fluffy CI Stability: experimental License: Apache License: MIT

Discord: Nimbus Status: #nimbus-general

Introduction

Fluffy is the Nimbus client implementation of the Portal network specifications.

You can find all the information you need to run a Fluffy node in The Fluffy Book.

The quickstart page in particular will help you to get quickly connected to the Portal network.

Development Updates

Monthly development updates are shared here.

To keep up to date with changes and development progress, follow the Nimbus blog.

License

Licensed and distributed under either of

or

at your option. These files may not be copied, modified, or distributed except according to those terms.