-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Prefetch JUMPDESTs through RPC #427
base: develop
Are you sure you want to change the base?
Conversation
7ad89de
to
18d5da4
Compare
6255f00
to
6613802
Compare
bdcf935
to
270256f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Einar! Aside from the inline comments, a miss in this PR is the application of JD pre-fetching for jerigon
as well, not only the native tracer.
I haven't tested it yet as I write this, but I think your current branch would crash on any jerigon payload (from the ZeroTracer) because the RPC will provide a Vec<ZeroTxResult>
which contains TxnInfo
, i.e. with the jumpdest table field already processed, as opposed to the TxnMeta
from which you're starting the processing.
I think we're also missing fallback mechanisms, wherever the procedure fails for some reason, then we should default to the current behavior, i.e. no provided JDT and let the prover do the work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You also need to address the format change on all hardcoded witnesses, either by re-generating them, or adding default empty JDTs to each of them, and leaving the prover handle them internally as before.
Indeed. Which solution do you prefer and who could I talk to about this CI setup? |
I'm not sure I understand the relation between the broken tests and the CI. We don't have to update them all (especially because some dev blocks are from an outdated devchain IIRC), but at least have them have proper format so that they can run correctly. If your question was how to test this logic of JDT pre-fetching in the CI, we could do this with the |
@einar-polygon Has it been tested against some endpoint? Should I run it against a few dozen blocks to see how it behaves? (ideally after conflicts are addressed) |
I checked that the JUMPDEST_tables were identical for the small Calcun block and a few others against the paid Quicknode endpoint. But it would be good to have a set of interesting blocks with exceptions, reverts and what not. Here is a start: I will add a bash script to iterate over them while we test. |
I'll launch a run against the devchain once it's rebased (it has a conflicting Erigon version that requires some latest PRs here) |
a0f0438
to
05e065a
Compare
I got a panic with your endpoint on block 0x13adb68
|
So some more data with your endpoint. I tried 140 consecutive blocks independently.
|
a9b13a3
to
e351ff9
Compare
I don't understand this question.
Oh, I didn't realise this was the case. Well, then assuming nothing has changed since you verified those, then that leaves:
Anyway, I just merged in latest |
I was just asking the results of running this branch over the large test chain (6555 blocks), given this one is much more extensive (containing the previous blocks + all matrixed variants of the Ethereum test suite). |
For the record, here is the last run over the full chain from last Wednesday https://gist.github.com/einar-polygon/c5bbe371587dc0002b6789722b5c22f8 I will post a fresh one tomorrow or whenever it finishes. |
Latest full run: https://gist.github.com/einar-polygon/d238ecad89307132b92c9b920327b1df Caveat: Stats has a bug. The presence of a 124-error causes one 1-error, one 2-error and one 4-error to be detected. This will be fixed in next run. |
|
resolves #290