-
Notifications
You must be signed in to change notification settings - Fork 933
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
Tree based spec SSZ implementation - remerkleable #1552
Conversation
f39aa73
to
bbbee5e
Compare
Need Python 3.8 for remerkleable typing features (as well as changes in phase 1 PR). Deposit tests are failing with 3.8 though, since vyper fails parsing when using the 3.8 AST code. Need to backport the PR fromt the vyper repo that fixed that. |
Hmm pypi db index is slow, CI can't find v0.1.9 I just published. Will re-run after giving it some time to catch up |
This PR is ready for review. Some final notes:
|
cf0abe2
to
5c5b528
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.
Looks good. Minor merge conflict with build_spec.py
Just implemented |
7c1c95f
to
d9f62f9
Compare
Reduced it all to one single commit 👍 |
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.
looks good! ready to merge
This mostly just deletes the old SSZ implementation from the spec.
And then if we link in this library: https://github.com/protolambda/remerkleable, it passes all spec tests.
The library is different from status quo in the following ways:
And compared to py-ssz:
PS:Decided on a new name: remerkleable! A mix-up of "remarkable"/"re-merkle-able".pymerkle
is already taken as a name,pymerkles
was a working name. Suggestions for a good name are welcome. Something that covers ssz / merkle partials better.In addition, the new cached hash-tree-roots are very useful for memoization of spec functions, bring big performance improvements to the pyspec code.