• Mark Tyneway's avatar
    contracts-bedrock: `StorageSetter` contract · 356effb9
    Mark Tyneway authored
    Add + test a `StorageSetter` contract that can be
    used by upgrades and storage migrations. This contract
    exists to decouple migrations from implementations.
    The existing contracts use `Initialize` which is a leaky
    abstraction because it includes the fact that the implementation
    is behind a proxy in the implementation code itself.
    The logic in `initialize` must include logic that can
    ensure the storage is correct for any version upgrading
    to any version as well as going from empty storage for
    new deployments, adding a lot of complexity. This contract
    should be used as an intermediate step in upgrades, so that
    this contract can be used to migrate storage between
    different implementations.
    356effb9
Name
Last commit
Last update
..
deploy-config Loading commit data...
deployments Loading commit data...
invariant-docs Loading commit data...
lib Loading commit data...
periphery-deploy-config Loading commit data...
scripts Loading commit data...
src Loading commit data...
test Loading commit data...
test-case-generator Loading commit data...
.envrc.example Loading commit data...
.eslintignore Loading commit data...
.eslintrc.js Loading commit data...
.gas-snapshot Loading commit data...
.gitignore Loading commit data...
.npmignore Loading commit data...
.storage-layout Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
STYLE_GUIDE.md Loading commit data...
foundry.toml Loading commit data...
layout-lock.json Loading commit data...
package.json Loading commit data...
semver-lock.json Loading commit data...
slither.config.json Loading commit data...
slither.db.json Loading commit data...
tsconfig.build.json Loading commit data...
tsconfig.json Loading commit data...