-
Notifications
You must be signed in to change notification settings - Fork 434
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
Add support for Vyper cbor auxdata in bytecode-utils and in VyperCheckedContract #1783
Merged
marcocastignoli
merged 7 commits into
vyper-verification-main
from
add-support-vyper-cbor-auxdata
Dec 16, 2024
Merged
Add support for Vyper cbor auxdata in bytecode-utils and in VyperCheckedContract #1783
marcocastignoli
merged 7 commits into
vyper-verification-main
from
add-support-vyper-cbor-auxdata
Dec 16, 2024
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
… in VyperCheckedContract
… for versions < 0.3.10
9 tasks
manuelwedler
requested changes
Dec 13, 2024
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.
Nice I like how well structured splitAuxdata
is :)
Just some minor things and clarification needed
services/server/src/server/controllers/verification/session-state/session-state.handlers.ts
Show resolved
Hide resolved
…action - Changed `auxdataStyle` in `SolidityCheckedContract` to be a static readonly property. - Updated bytecode decoding in both `SolidityCheckedContract` and `VyperCheckedContract` to use the static `auxdataStyle`. - Simplified `generateCborAuxdataPositions` method in `VyperCheckedContract` by introducing a helper function for auxdata position generation. - Added comments to clarify the use of `AuxdataStyle.SOLIDITY` for bytecode decoding in `ChainMonitor` and session state handlers. - Ensured that `generateCborAuxdataPositions` is called when necessary in `AbstractDatabaseService` to maintain data integrity.
…ions. Updated the `decode` function to support various auxdata styles, including specific handling for Vyper versions < 0.3.10 and < 0.3.5. Improved error messages for missing auxdata in bytecode. Updated tests to reflect changes in auxdata style usage.
…in Vyper-related types and tests.
manuelwedler
approved these changes
Dec 16, 2024
manuelwedler
pushed a commit
that referenced
this pull request
Jan 2, 2025
…kedContract (#1783) * Add support for Vyper cbor auxdata in bytecode-utils and consequently in VyperCheckedContract * handle vyper incorrect semver versions, support auxdata position also for versions < 0.3.10 * Refactor Solidity and Vyper contract handling to improve auxdata extraction - Changed `auxdataStyle` in `SolidityCheckedContract` to be a static readonly property. - Updated bytecode decoding in both `SolidityCheckedContract` and `VyperCheckedContract` to use the static `auxdataStyle`. - Simplified `generateCborAuxdataPositions` method in `VyperCheckedContract` by introducing a helper function for auxdata position generation. - Added comments to clarify the use of `AuxdataStyle.SOLIDITY` for bytecode decoding in `ChainMonitor` and session state handlers. - Ensured that `generateCborAuxdataPositions` is called when necessary in `AbstractDatabaseService` to maintain data integrity. * add comment to explain `generateCborAuxdataPositions` return conditions * Refactor bytecode decoding to enhance auxdata handling for Vyper versions. Updated the `decode` function to support various auxdata styles, including specific handling for Vyper versions < 0.3.10 and < 0.3.5. Improved error messages for missing auxdata in bytecode. Updated tests to reflect changes in auxdata style usage. * Refactor bytecode decoding to replace `compiler` with `vyperVersion` in Vyper-related types and tests.
manuelwedler
added a commit
that referenced
this pull request
Jan 2, 2025
Adds vyper support, here the initial PR: #1760. Below the related tasks: - [x] Review what's stored in the database - [x] ~~Create a common folder for the compilers code used by both lib-sourcify and server (idk if it fits in this new feature, imo yes because it's a lot of duplicated code now that we have also vyper stuff)~~ postponed - [x] Rewrite platform architecture management (vyper versions for x86, arm, ...): #1776 - [x] Update READMEs #1786 - [x] Update documentation sourcifyeth/docs#27 - [x] Handle vyper transformations: #1783 - [x] Add more tests, and finalize lib-sourcify test: #1781 - [x] Finalize `/verify/vyper` API errors + openapi responses: #1774 - [x] Check Vyper immutable field to see if we can support immutable transformation: #1790 After merging: - publish new docs
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds support for Vyper cbor auxdata, it is quite tricky to handle all the different versions of Vyper cbor auxdata so I had to rewrite most of the
bytecode-utils
package.I also added the function
generateCborAuxdataPositions
inVyperCheckedContract
, somatchWithRuntimeBytecode
andmatchWithCreationBytecode
can successfully handle auxdata transformations adding the support for partial matches if Vyper integrity check doesn't match.That said, Vyper integrity check is still not supported as one of the cases to get a "perfect" match. I think we can wait for this, integrity check is in beta and we still have to evaluate it. So even if a Vyper contract has an integrity check match, it will lead to a "partial" match (in this case the auxdata is stored in the database).