Pascal Berrang

Results 24 issues of Pascal Berrang

## What's in this pull request? Adds detailed metrics to the database crate – similarly to how `reth` is doing it. This currently uses the `metrics` crate, which is not...

enhancement

Currently, we overuse very specific feature flags in our code. For example, we have flags for `validator`, `database-storage`, `zkp-prover`, but we don't have a `web`/`wasm` feature flag. We should generally...

enhancement

The ZKP circuits require very specific serialization of the `MacroBlock`. In particular, it assumes the body is hashed as `hash(pk_tree_root || body_bytes)`, where `body_bytes` is 64 bytes long. The header...

enhancement

Tables should ideally be typed, e.g., `TableProxy`. This removes the need of specifying types on database instructions and ensures type consistency.

enhancement

Libmdbx supports [set_lowerbound](https://docs.rs/libmdbx/0.5.0/libmdbx/struct.Cursor.html#method.set_lowerbound) on cursors, which allows to seek to a specific duplicate data item **efficiently**. This is because duplicate items are represented as another B+Tree. We can thus also...

enhancement

This depends on #2640 Afterwards, it would be good to add metrics for: - [ ] State Queue - [ ] Trie Diff Queue - [ ] Block Queue More...

enhancement

libp2p offers a variety of metrics that we could tap into as well. Unfortunately, it builds on the `prometheus_client` crate, which would require us to initialise a `Registry` **before initialising...

enhancement

Currently, we rely on `prometheus_client` to export our metrics, which requires the `metrics_server` crate to register all handlers. Switching to the `metrics` crate would allow us to add new metrics...

enhancement

Not sure if this is of interest to the libmdbx crate, but this PR exposes the internal commit latency functionality via an additional function without breaking the current API.

This PR adds a post-validation hook to the blockchain and uses it to publish/validate blocks before the database commit is happening. This way, the blocks are forwarded to the network...