nimbus-eth2/beacon_chain/spec/eth2_apis
Jacek Sieka 9c2f43ed0e
Speed up altair block processing 2x (#3115)
* Speed up altair block processing >2x

Like #3089, this PR drastially speeds up historical REST queries and
other long state replays.

* cache sync committee validator indices
* use ~80mb less memory for validator pubkey mappings
* batch-verify sync aggregate signature (fixes #2985)
* document sync committee hack with head block vs sync message block
* add batch signature verification failure tests

Before:

```
../env.sh nim c -d:release -r ncli_db --db:mainnet_0/db bench --start-slot:-1000
All time are ms
     Average,       StdDev,          Min,          Max,      Samples,         Test
Validation is turned off meaning that no BLS operations are performed
    5830.675,        0.000,     5830.675,     5830.675,            1, Initialize DB
       0.481,        1.878,        0.215,       59.167,          981, Load block from database
    8422.566,        0.000,     8422.566,     8422.566,            1, Load state from database
       6.996,        1.678,        0.042,       14.385,          969, Advance slot, non-epoch
      93.217,        8.318,       84.192,      122.209,           32, Advance slot, epoch
      20.513,       23.665,       11.510,      201.561,          981, Apply block, no slot processing
       0.000,        0.000,        0.000,        0.000,            0, Database load
       0.000,        0.000,        0.000,        0.000,            0, Database store
```

After:

```
    7081.422,        0.000,     7081.422,     7081.422,            1, Initialize DB
       0.553,        2.122,        0.175,       66.692,          981, Load block from database
    5439.446,        0.000,     5439.446,     5439.446,            1, Load state from database
       6.829,        1.575,        0.043,       12.156,          969, Advance slot, non-epoch
      94.716,        2.749,       88.395,      100.026,           32, Advance slot, epoch
      11.636,       23.766,        4.889,      205.250,          981, Apply block, no slot processing
       0.000,        0.000,        0.000,        0.000,            0, Database load
       0.000,        0.000,        0.000,        0.000,            0, Database store
```

* add comment
2021-11-24 13:43:50 +01:00
..
eth2_json_rpc_serialization.nim Speed up altair block processing 2x (#3115) 2021-11-24 13:43:50 +01:00
eth2_rest_serialization.nim REST/JSON-RPC: speed up several requests (#3092) 2021-11-12 23:29:28 +01:00
rest_beacon_calls.nim Client definitions for the sync committee REST APIs (#3002) 2021-10-19 19:44:05 +02:00
rest_beacon_client.nim cleanups and fixes (#2827) 2021-08-27 11:00:06 +02:00
rest_config_calls.nim widen allowed specs for validator client 2021-10-21 00:59:05 +03:00
rest_debug_calls.nim altair fork handling cleanups (#3050) 2021-11-05 08:34:34 +01:00
rest_node_calls.nim cleanups and fixes (#2827) 2021-08-27 11:00:06 +02:00
rest_types.nim Support starting from altair (#3054) 2021-11-10 13:39:08 +02:00
rest_validator_calls.nim clean up sync subcommittee handling 2021-10-20 22:59:13 +03:00
rpc_beacon_calls.nim rework spec imports (#2779) 2021-08-12 13:08:20 +00:00
rpc_beacon_client.nim rework spec imports (#2779) 2021-08-12 13:08:20 +00:00
rpc_debug_calls.nim rework spec imports (#2779) 2021-08-12 13:08:20 +00:00
rpc_nimbus_calls.nim REST API client, JSON-RPC cleanups (#2756) 2021-08-03 17:17:11 +02:00
rpc_node_calls.nim REST API client, JSON-RPC cleanups (#2756) 2021-08-03 17:17:11 +02:00
rpc_types.nim rework spec imports (#2779) 2021-08-12 13:08:20 +00:00
rpc_validator_calls.nim rework spec imports (#2779) 2021-08-12 13:08:20 +00:00