• 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
preimageoracle_more.go 8.94 KB