• Mark Tyneway's avatar
    contracts-bedrock: in place handling of immutables · a32e68ac
    Mark Tyneway authored
    This updates the hardhat task `genesis-l2` to handle
    setting the immutables in the deployed bytecode. This
    is necessary because the predeploys "live" in the L2
    state and are not deployed. Any immutables must be manually
    placed into the bytecode by looking at the compiler output
    and then finding the offsets and slicing in the values.
    
    A high level API is exposed for setting arbitrary immutables
    with the `replaceImmutables` function. This was inspired by
    smock's `computeStorageSlots`.
    
    Longer term, this code will be rewritten in go and be able to
    operate on either a LevelDB database (upgrade an existing system)
    or a `genesis.json` (good for starting a new network). This is
    a requirement because the state surgery is large enough such that
    it must bind directly to LevelDB and be in a language that is
    relatively fast.
    a32e68ac
Name
Last commit
Last update
.changeset Loading commit data...
.circleci Loading commit data...
.github Loading commit data...
.husky Loading commit data...
.vscode Loading commit data...
.yarn/releases Loading commit data...
batch-submitter Loading commit data...
bss-core Loading commit data...
gas-oracle Loading commit data...
indexer Loading commit data...
infra/op-replica Loading commit data...
integration-tests Loading commit data...
l2geth Loading commit data...
l2geth-exporter Loading commit data...
op-batcher Loading commit data...
op-bindings Loading commit data...
op-e2e Loading commit data...
op-exporter Loading commit data...
op-node Loading commit data...
op-proposer Loading commit data...
ops Loading commit data...
ops-bedrock Loading commit data...
packages Loading commit data...
patches Loading commit data...
proxyd Loading commit data...
specs Loading commit data...
state-surgery Loading commit data...
technical-documents Loading commit data...
teleportr Loading commit data...
.dockerignore Loading commit data...
.editorconfig Loading commit data...
.eslintrc.js Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.markdownlint.json Loading commit data...
.nvmrc Loading commit data...
.prettierrc.js Loading commit data...
.semgrepignore Loading commit data...
.yarnrc Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
SECURITY.md Loading commit data...
cloudbuild.yaml Loading commit data...
go.work Loading commit data...
go.work.sum Loading commit data...
lerna.json Loading commit data...
package.json Loading commit data...
tsconfig.json Loading commit data...
yarn.lock Loading commit data...