nimbus-eth2/vendor
Jacek Sieka d583e8e4ac
Store finalized block roots in database (3s startup) (#3320)
* Store finalized block roots in database (3s startup)

When the chain has finalized a checkpoint, the history from that point
onwards becomes linear - this is exploited in `.era` files to allow
constant-time by-slot lookups.

In the database, we can do the same by storing finalized block roots in
a simple sparse table indexed by slot, bringing the two representations
closer to each other in terms of conceptual layout and performance.

Doing so has a number of interesting effects:

* mainnet startup time is improved 3-5x (3s on my laptop)
* the _first_ startup might take slightly longer as the new index is
being built - ~10s on the same laptop
* we no longer rely on the beacon block summaries to load the full dag -
this is a lot faster because we no longer have to look up each block by
parent root
* a collateral benefit is that we no longer need to load the full
summaries table into memory - we get the RSS benefits of #3164 without
the CPU hit.

Other random stuff:

* simplify forky block generics
* fix withManyWrites multiple evaluation
* fix validator key cache not being updated properly in chaindag
read-only mode
* drop pre-altair summaries from `kvstore`
* recreate missing summaries from altair+ blocks as well (in case
database has lost some to an involuntary restart)
* print database startup timings in chaindag load log
* avoid allocating superfluos state at startup
* use a recursive sql query to load the summaries of the unfinalized
blocks
2022-01-30 18:51:04 +02:00
..
NimYAML@ca82b5e884 bump NimYAML 2021-02-25 14:20:26 +02:00
asynctools@c478bb7426 Local sim now includes a prometheus server, a Ganache instance and a simulation dashboard server (in Tmux mode) 2020-06-22 17:30:04 +03:00
eth2-networks@e14cfc658f Altair config for mainnet 2021-09-29 14:19:20 +03:00
jswebsockets@ff0ceecc4c Local sim now includes a prometheus server, a Ganache instance and a simulation dashboard server (in Tmux mode) 2020-06-22 17:30:04 +03:00
karax@32de202845 bump submodules (#2279) 2021-02-02 19:02:52 +01:00
news@9094ae3147 Switch back to the news package in nim-json-rpc (#3136) 2021-11-29 21:47:31 +01:00
nim-bearssl@dc62f4fccd module bumps (#2800) 2021-08-20 18:39:18 +00:00
nim-blscurve@9742a4c8a4 Bump BLST, improve pubkey deserialization speed by 20% to 2x faster. improve signature deserialization by 5% to 4x faster. (#3227) 2022-01-02 16:48:14 +01:00
nim-chronicles@884e870048 Bump Chronicles 2021-11-09 13:33:53 +02:00
nim-chronicles-tail@858e4ea2ed Fix some logical typos introduced in the rebase 2020-06-22 17:30:04 +03:00
nim-chronos@8719723077 Put `application/json` as a higher preference than `application/octet-stream` 2022-01-30 18:50:14 +02:00
nim-confutils@6a56d01381 bump nim-confutils to `6a56d01381f434d5fbcc61b6e497b9409155bcbc` (#3196) 2021-12-15 09:27:04 +00:00
nim-eth@49d1d29fdf Store finalized block roots in database (3s startup) (#3320) 2022-01-30 18:51:04 +02:00
nim-eth2-scenarios@777ce6438e use v1.1.9 test vectors (#3337) 2022-01-28 22:47:48 +00:00
nim-faststreams@3a0ab42573 module bumps (#2800) 2021-08-20 18:39:18 +00:00
nim-http-utils@40048e8b3e Put `application/json` as a higher preference than `application/octet-stream` 2022-01-30 18:50:14 +02:00
nim-json-rpc@5a28176080 bump nim-json-rpc 2022-01-16 18:26:21 +02:00
nim-json-serialization@4f3775ddf4 cleanups and fixes (#2827) 2021-08-27 11:00:06 +02:00
nim-libbacktrace@63196b0628 Merge stable into unstable 2021-05-20 13:50:40 +03:00
nim-libp2p@dffe4bed45 Bump libp2p (#3246) 2022-01-05 17:33:23 +01:00
nim-metrics@b4c6a51ee7 module bumps (#2800) 2021-08-20 18:39:18 +00:00
nim-nat-traversal@8994b67b07 bump nat, avoid one more finalizer (#2209) 2020-12-31 15:58:31 +01:00
nim-normalize@db9a74ad6a Address #1694 2020-10-06 15:46:22 +03:00
nim-presto@22746c5cd2 Put `application/json` as a higher preference than `application/octet-stream` 2022-01-30 18:50:14 +02:00
nim-protobuf-serialization@f7d671f877 module bumps (#2800) 2021-08-20 18:39:18 +00:00
nim-rocksdb@6aab1e0dd6 bumps (#2214) 2021-01-07 13:12:37 +01:00
nim-secp256k1@d790c42206 module bumps (#2800) 2021-08-20 18:39:18 +00:00
nim-serialization@fcd0eadadd disentangle eth2 types from the ssz library (#2785) 2021-08-18 20:57:58 +02:00
nim-snappy@2256d6efb2 3x speedup in snappy compression (#3234) 2022-01-03 18:17:10 +01:00
nim-sqlite3-abi@07039dd887 bump submodules (#2279) 2021-02-02 19:02:52 +01:00
nim-ssz-serialization@66745f23b5 bumps (#3268) 2022-01-11 09:35:20 +00:00
nim-stew@b464505b4d move `state_transition` to `Result` (#3284) 2022-01-17 12:19:58 +01:00
nim-stint@49d11d61b8 bump `nim-stint` (#2969) 2021-10-14 14:13:51 +03:00
nim-taskpools@d0fc9cb4ab fix multithreading memory leak (#2920) 2021-09-29 18:09:53 +02:00
nim-testutils@1f66448152 Implementation of the Keymanager API (BETA) 2022-01-04 18:51:45 +02:00
nim-unicodedb@7c6ee4bfc1 bump submodules 2020-03-18 17:20:34 +01:00
nim-unittest2@f1d70dbb8c cron CI: various fixes (#2594) 2021-08-18 14:40:03 +02:00
nim-web3@0b5466f56e bump nim-web3 to use enums for engine API types (#3282) 2022-01-14 14:11:42 +01:00
nim-websock@a697e3585d Add support for HTTPS Web3 providers 2021-11-23 15:56:18 +02:00
nim-zlib@6bbc67d09e Add support for HTTPS Web3 providers 2021-11-23 15:56:18 +02:00
nim-zxcvbn@ea6de3427d Address #1690 Min password entropy 2020-10-16 19:34:26 +03:00
nimbus-benchmarking@dff3634b5d /bin/bash -> /usr/bin/env bash (needed on NixOS) 2021-11-15 15:45:01 +02:00
nimbus-build-system@8425ff9e3b bump nimbus-build-system (#3324) 2022-01-26 17:11:28 +01:00
nimbus-security-resources@145e12aaad Finish the 'create wallet' command; Addresses #1319 2020-07-28 07:36:25 +03:00
nimcrypto@a5742a9a21 module bumps (#2800) 2021-08-20 18:39:18 +00:00
websocket.nim@28cc44c8de Local sim now includes a prometheus server, a Ganache instance and a simulation dashboard server (in Tmux mode) 2020-06-22 17:30:04 +03:00