Skip to content

Commit

Permalink
feat(zk): zksolc linking (#800)
Browse files Browse the repository at this point in the history
* feat(zk): zksolc linking

* fix(zk:libs): calculate addresses w/ proper nonce

chore: identify action to deploy libs in EraVM

* fix: don't always assume DCC is present

* feat(executor): `deploy_library` in strategy

* fix(zk): create address computation

* chore: cleanup unused imports

* test(zk): deploy-time linking (script/test)

* chore: default zksolc to 1.5.8

* chore: lints

* refactor: allow multiple lib deployments

* refactor(link): move to executor strategy

fix(strategy): remove get_mut for `DualCompiledContracts`

* fix: compilation

* feat(strategy:link): pass config

* feat(zk:link): dedicated linker module

fix(zk:link): use version from config
refactor(zk:config): extract config -> zksolc compiler logic into
function
chore: lints

* chore: more lints

chore: remove accidental file re-inclusion

* feat(zk:link): version check

* chore: lints & fmt

* chore: more formatting

* fix(zk:link): retrieve factory dep hash

refactor(zk:link): avoid attempting to link fully-linked contracts

* fix(zk:compilers): remove dead `libraries` module

* feat(link:zk): create2 linking

feat(script:zk): link with zksolc

* chore: formatting

* feat(compiler:zk): `factory_dependencies_unlinked`

test(zk:link): use 1.5.9 for deploy-time linking
feat(zk:link): detect factory dependencies as link references for
library lookup
fix(zk:link): require 1.5.9 for deploy-time-linking

* refactor: dual compiled contracts as map

* feat(link:zk): recursive factory deps libs lookup

fix(link:zk): consistent artifact id prefixes
chore: formatting
refactor(link:zk): improve link targets filtering

* fix(link:zk): invert bool

* fix(artifacts:zk): `is_unlinked` logic

fix(link:zk): don't preemptively strip file prefixes
fix(link:zk): better factory dep detection
chore: formatting

* feat(strategy): `deploy_library` CREATE2 mode

feat(strategy): return "broadcastable" tx
feat(link:zk): populate newly linked factory deps
feat(script): use `deploy_library`

* fix(zk:transact): detect direct deployments

* feat(script:zk): match CREATE/CREATE2 with EVM

* fix(zk:libs): encode extra metadata

* refactor(executors): `DeployLibResult`

fix(lib:zk): remove EVM lib deployments from broadcastable txs

* fix(artifact:zk): avoid underflow

refactor(artifact:zk): `all_factory_deps` method
chore: formatting

* fix(test:zk): proper stripping during link

feat(link:script): register target & deps

* chore: fix spelling & docs

fix(test:zk): default to zksolc 1.5.9

* fix(test:script): avoid expecting create2 output

fix(script): avoid unpacking create2 result
fix(script): avoid marking create2 result address as persistent

* chore: clippy

* chore: formatting

* chore: codespell

* fix(artifacts:zk): `is_unlinked` underflow

* feat(compiler:zk): `objectFormat`

* fix(script:link:zk): skip version check if no libs

* fix(test:link:zk): avoid version check w/o libs

* chore: clippy

* fix(compiler:zk): optional object_format

* fix(link:zk): ignore target version for lookup

* fix(link:zk): proper EVM deployed_bc/bc

* chore: fmt

* chore: fmt

* test(zk): `DualCompiledContracts::find` units

* fix: clippy

* refactor(strategy): dedicated linking module

* fix: forgot to commit the new files

* chore: fmt

* fix(zk:link): new nonce types

* test(zk): use default zksolc version normally

* docs: add notes on diverging sections

* fix(zk): remove duplicate code from merge

* refactor(script:zk): move linking to own module

* chore: fmt

* chore: clippy
  • Loading branch information
Karrq authored Jan 27, 2025
1 parent cf0a88d commit b69695a
Show file tree
Hide file tree
Showing 37 changed files with 2,252 additions and 564 deletions.
77 changes: 41 additions & 36 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit b69695a

Please sign in to comment.