Open
Description
Goal
Nethermind client should work as a state provider for rbuilder.
Firstly, the state will be provided via IPC RPC, and then we'll optimize (e.g., Rust <> C# FFI).
TODOs
- Implement necessary
SatateProviderFactory
traits - Implement necessary
StateProvider
traits - Implement
HeaderProvider
traits - Implement state root calculation (dependent on the Flashbots team to refactor the traits)
- Test using Backtest Builders
- Test using Live builder
Here is the list of the Traits we'll have to implement:
Column Already supported by NM? indicates that the:
- RPC call already exists in the NM client
- NM client supports both arg and return types (they are either "the same" or there is a small amount of work to be done to support the requirements fully)
If the args or return data needs to be adapted from/to NM-specific types, I propose adapters to be implemented on the rbuilder
side where possible since this is specific to rbuilder
and not the NM client.
StateProviderFactory
Trait | Done? | Already supported by NM? |
---|---|---|
latest | ✅ | ✅ |
history_by_block_hash | ✅ | ✅ |
last_block_number | ✅ | ✅ |
StateProvider
Trait | Done? | Already supported by NM? |
---|---|---|
storage | ✅ | ✅ |
bytecode_by_hash | ✅ | ✅ |
block_hash | ✅ | ✅ |
basic_account | ✅ | ✅ |
HeaderProvider
Trait | Done? | Already supported by NM? |
---|---|---|
header | ✅ | ✅ |