You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the feature
Tracing is by far our largest latency performance bottleneck. Due to the complexities of getting custom native tracers installed on nodes (especially when using 3rd party RPCs), Rundler always uses a javascript tracer, causing the latency issue.
A different approach to this would be to do tracing locally using revm.
How this would work:
Gather all of the required storage slot values using the native prestateTracer on the normal RPC. This should be supported by all 3rd party RPCs.
Precompile support. Our local EVM would require all of the same precompiles as the network that we are simulating, and that we explicitly whitelist. Currently this is only RIP-7212, but the list might expand.
Performance. Rundler is currently very light on CPU usage due to offloading all computation to nodes.
We could implement this tracing functionality as another server task within Rundler that exposes a gRPC interface and could be horizontally scaled independently of the rest of Rundler.
Another approach could be to attempt to use revm on top of alloydb and remove the prestate tracing, but that may require too many network calls to be high performance.
The text was updated successfully, but these errors were encountered:
This would be made obsolete if Geth (and other major node providers) offer a native tracer and major RPC providers offer access: ethereum/go-ethereum#30546
Potential issue here: a degenerate case UO that doesn't use a ton of gas, but reads a bunch of large contracts. This would be limited by gas usage, but that doesn't seem to scale correctly with the amount of data retrieved by the prestate. Same with doing a ton of SLOADs. We'd have to analyze the data retrieval costs for these degenerate cases.
Describe the feature
Tracing is by far our largest latency performance bottleneck. Due to the complexities of getting custom native tracers installed on nodes (especially when using 3rd party RPCs), Rundler always uses a javascript tracer, causing the latency issue.
A different approach to this would be to do tracing locally using revm.
How this would work:
prestateTracer
on the normal RPC. This should be supported by all 3rd party RPCs.Some caveats:
Another approach could be to attempt to use revm on top of alloydb and remove the prestate tracing, but that may require too many network calls to be high performance.
The text was updated successfully, but these errors were encountered: