A high performance, homegrown Solana validator Developing the full node client Mithril Team: @7LayerMagik & @dubbel06

Joined May 2022
The multicore bench stats in the original thread were outdated and have now been updated
Replying to @OverclockSol
9/ Across 8 cores we measured 1.217M signatures/s, short of 8× the single-core rate because all-core AVX-512 drops the clocks.
1
3
1
25
5,736
9/ Across 8 cores we measured 1.217M signatures/s, short of 8× the single-core rate because all-core AVX-512 drops the clocks.
1
1
7
1,553
8/ For recurring keys it goes further, caching the decoded public key and then promoting hot ones to a precomputed table. With 64 promoted keys on the same Zen 5 host, n=64 measured 3.776 µs/sig, 7.3× stdlib. How much you get depends on key population and locality.
1
6
388
2/ Narya is a no-cgo Go library using AVX-512 IFMA assembly. The numbers below are cold strict verification on 1232-byte messages, with no per-key state cached between calls. Most of the gain shows up once you have eight signatures, since that's what fills the lanes.
1
8
940
1/ Ed25519 verification is a major cost in Solana block replay. Mithril is written in Go, and the standard Go library wasn't enough for the throughput we wanted. Today we're releasing narya-ed25519. 5.8× faster than crypto/ed25519 at 4.7 µs/sig (Zen5). github.com/Overclock-Validat…
7
22
6
99
121,492
A fourth validator client has hit the network (in test). Mithril has arrived 👀
2
1
15
947
3/ Mithril’s performance has improved substantially. Mainnet block execution latency is roughly half what it was in the alpha release. On a relatively small server, Mithril can execute full-CU blocks in under 400ms, helped by wins like better-parallelized account loading.
1
3
163
7/ Here’s a video of the tail end of this catch up process. In this run we fetched blocks from a @heliuslabs RPC endpoint to execute and get as close to the network tip as possible. Any mismatches versus mainnet execution result in internal errors that halt a Mithril node.
2
1
43
3,892
6/ Once a node reaches the chain tip (most recent confirmed slot in our current setup), it enters a steady state where replay settles closer to slot speed (~400 ms/slot or ~2.5 slots/s ). Even less bandwidth is needed at this stage, roughly 10 to 30 Mbit/s download currently.
1
2
49
4,347
5/ Here are some stats from the initial catchup period when Mithril needs to quickly execute blocks to reach the tip of the chain. Slots are replayed during this stage at ~3 to 10 slots/s depending on block sizes. Download bandwidth is typically ~40 Mbit/s.
1
49
4,501