-
Notifications
You must be signed in to change notification settings - Fork 29
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
STORE2
-compatible reads in BytecodeStorage
#681
Conversation
…that are compatible with SSTORE2 as the fallback read option, in advance of plans to split off reads into a shared external public utility library, in-companion to the embedded internal library for writes.
STORE2
-compatible reads in BytecodeStorage
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.
Some initial thoughts on this - keeping it high level since this can affect a lot of this PR 🙏
@ryley-o I did an update pass here per our conversation, ready for your re-review ser 🙏 💜 |
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.
This is awesome 😄 !!!
* Support basic semantic versioning – and ensure interop with backwards compatible reads (tests added) * update the version string * minor adjustment and a song: https://www.youtube.com/watch\?v\=vOreqez4v9Y * Update to reflect better v1/v0/unknown versioning semantics * Update documentation and code structuring * Refactor size == 0 check * clean up offset checks * `STORE2`-compatible reads in `BytecodeStorage` (#681) * Update BytecodeStorage library to provide backwards-compatible reads that are compatible with SSTORE2 as the fallback read option, in advance of plans to split off reads into a shared external public utility library, in-companion to the embedded internal library for writes. * Whoops, forgot to add all the files yo * add support for manual-offset reads * SSTORE2 / explicit bytes reads restructure * Comment fix * Filename fix * Filename fix * Better typing for tests * spelling fixes * Split `BytecodeStorage` into public/internal libraries (#684) * basic MVP of split library (with tests) * Adjusted tests for split library setup * minor modifier adjustment * Adjust optimizer runs * optimizer order * nit * get interface from deployed contract * get interface from deployed contract * ensure libraries are linked * library linkkinnnn * More linking fixes in tests * update Engine Flex as PoC (#688) * fix the rest of the test bindingsgit diff * OPTIMIZOOOOOR * remove unnecessary using for * Fixed comment * public constants * Update library naming convention * DEPLOYOOOOOR * DEPLOYOOOOOR * format * Address nits --------- Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com> --------- Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com>
* Remove all call-sites for purgeBytecode, before cleaning up library internals * Remove purge logic from library entirely * fix comment * Update to reflect TWO VERSIONS (https://www.youtube.com/watch\?v\=diIFhc_Kzng) * Update to reflect TWO VERSIONS (https://www.youtube.com/watch\?v\=diIFhc_Kzng) * Update contracts/libs/0.8.x/BytecodeStorageV1.sol Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com> * Update contracts/libs/0.8.x/BytecodeStorageV1.sol Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com> * Update contracts/libs/0.8.x/BytecodeStorageV1.sol Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com> * Add basic form of `BytecodeStorage` library versioning (#670) * Support basic semantic versioning – and ensure interop with backwards compatible reads (tests added) * update the version string * minor adjustment and a song: https://www.youtube.com/watch\?v\=vOreqez4v9Y * Update to reflect better v1/v0/unknown versioning semantics * Update documentation and code structuring * Refactor size == 0 check * clean up offset checks * `STORE2`-compatible reads in `BytecodeStorage` (#681) * Update BytecodeStorage library to provide backwards-compatible reads that are compatible with SSTORE2 as the fallback read option, in advance of plans to split off reads into a shared external public utility library, in-companion to the embedded internal library for writes. * Whoops, forgot to add all the files yo * add support for manual-offset reads * SSTORE2 / explicit bytes reads restructure * Comment fix * Filename fix * Filename fix * Better typing for tests * spelling fixes * Split `BytecodeStorage` into public/internal libraries (#684) * basic MVP of split library (with tests) * Adjusted tests for split library setup * minor modifier adjustment * Adjust optimizer runs * optimizer order * nit * get interface from deployed contract * get interface from deployed contract * ensure libraries are linked * library linkkinnnn * More linking fixes in tests * update Engine Flex as PoC (#688) * fix the rest of the test bindingsgit diff * OPTIMIZOOOOOR * remove unnecessary using for * Fixed comment * public constants * Update library naming convention * DEPLOYOOOOOR * DEPLOYOOOOOR * format * Address nits --------- Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com> --------- Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com> --------- Co-authored-by: ryley-o <30364988+ryley-o@users.noreply.github.com>
Description of the change
Staging this up for separate review, but if approved before #670 will merge directly into that branch, otherwise should be merged in very close conjunction with #670 in support of #660.
This PR updates the
BytecodeStorage
library to provide backwards-compatible reads that are compatible withSSTORE2
as an additional read option as well as explicit-offset bytes reads, in advance of plans to split off reads into a shared external public utility library (which will live in-companion to the embedded internal library for writes).For additional context, please see:
BytecodeStorage
library versioning #670SELFDESTRUCT
inBytecodeStorage
#668BytecodeStorage
Library to be EOF-compliant #422