Skip to content
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

merge optimism-v1.9.3 into develop #10

Merged
merged 265 commits into from
Nov 28, 2024
Merged
Changes from 1 commit
Commits
Show all changes
265 commits
Select commit Hold shift + click to select a range
8ab4d3d
feat(op-program): Use `PebbleDB` for `DiskKV` (#11705)
clabby Sep 2, 2024
4c211fa
Revert "feat(op-program): Use `PebbleDB` for `DiskKV` (#11705)" (#11707)
ajsutton Sep 2, 2024
9452aa6
op-service/txmgr: multiple fixes / improvements (#11614)
Sep 2, 2024
42085ce
chore(op-service): Remove `reth` receipts source (#11706)
clabby Sep 2, 2024
375b976
fix: op-challenger move.go cli command wasn't cancellable (#11716)
samlaf Sep 3, 2024
957e13d
feat: add ERC-5202 Blueprint library with initial tests (#11700)
mds1 Sep 3, 2024
5b907dc
chore: Fix lint error (#11714)
ajsutton Sep 3, 2024
669a0fb
maint: no kontrol summaries in PRs (#11725)
smartcontracts Sep 3, 2024
337749f
feat: check interface differences in CI (#11677)
smartcontracts Sep 4, 2024
72eff5f
add comment to SingularBatch.Timestamp (#11720)
zhiqiangxu Sep 4, 2024
e80d23b
op-program: Use PebbleDB for DiskKV (Reapply with fixes) (#11709)
ajsutton Sep 4, 2024
5a1a18d
fix: SuperchainWETH fuzz flake with bad sender (#11728)
smartcontracts Sep 4, 2024
f8b421b
Fix copy-paste typo (#11731)
geoknee Sep 4, 2024
e0f6e1e
maint: add interfaces for legacy contracts (#11625)
smartcontracts Sep 4, 2024
2f10fb7
Slim down contracts-bedrock package (#11723)
mslipper Sep 4, 2024
1f0d8a8
fix: properly check all interfaces (#11734)
smartcontracts Sep 4, 2024
31f408b
feat: update interface validation script to check semver (#11740)
smartcontracts Sep 4, 2024
3410109
challenger: Introduce StateConverter to abstract loading VM states (#…
ajsutton Sep 4, 2024
f63cba6
fix: flake tests (#11742)
0xDiscotech Sep 4, 2024
2272a5d
repo: bump foundry (#11746)
tynes Sep 4, 2024
3f7a8ad
Revert "challenger: Introduce StateConverter to abstract loading VM s…
clabby Sep 4, 2024
c2d0911
cannon: Run expensive tests in parallel (#11739)
Inphi Sep 5, 2024
224c5fd
op-node: sequencer should clear inconsistent asyncGossip buffer on se…
protolambda Sep 5, 2024
df4d723
Reapply "challenger: Introduce StateConverter to abstract loading VM …
ajsutton Sep 5, 2024
ec06858
contracts-bedrock: Add OPSM file I/O for superchain deployments (#11750)
mslipper Sep 5, 2024
51150d8
maint: update solidity vscode extension (#11751)
smartcontracts Sep 5, 2024
91c7ed0
op-conductor: adds raft log snapshot configs (#11745)
zhwrd Sep 5, 2024
ffd9ed4
fix: initialization tests (#11674)
smartcontracts Sep 5, 2024
e7e5229
Update VERSIONING.md (#11761)
mds1 Sep 5, 2024
f85f189
Fix contracts-bedrock-docker-publish build (#11755)
mslipper Sep 5, 2024
ac19f2f
op-node: op-node interop block verification (devnet-1 scope) (#11611)
protolambda Sep 5, 2024
67ba188
cannon: Support binary serialisation for snapshots (#11718)
ajsutton Sep 6, 2024
31444eb
op-node: sanity-check the forkchoice updates (#11780)
protolambda Sep 6, 2024
247b399
Use local logger in data source (#11756)
joshklop Sep 6, 2024
85c79a5
fix: small typo fixes to DeploySuperchain.s.sol. (#11758)
blmalone Sep 6, 2024
873a4ea
cannon: Port audit fixes (#11697)
mbaxter Sep 6, 2024
ccf9d3e
ci: pull cached artifacts for contracts tests (#11771)
smartcontracts Sep 6, 2024
afcc51a
test: more blueprint tests (#11782)
mds1 Sep 6, 2024
49a4e9f
op-chain-ops: prep / utils for interop genesis work (#11790)
protolambda Sep 6, 2024
8733626
Add Maintenance Trigger for Cascading Updates (#11619)
axelKingsley Sep 6, 2024
4562b60
Update and cleanup CODEOWNERS with expert teams (#11786)
sebastianst Sep 6, 2024
75c7326
Catch 'header not found' string in L2BlockRefByLabel (#11759)
emhane Sep 6, 2024
f954cbb
ci: speed up CI by up to 50% (#11794)
smartcontracts Sep 6, 2024
1824499
dependabot(gomod): bump github.com/prometheus/client_golang (#11764)
dependabot[bot] Sep 6, 2024
52336b4
fix(challenger): `asterisc-kona` trace type (#11789)
clabby Sep 7, 2024
fb735d6
dependabot(gomod): bump golang.org/x/crypto from 0.26.0 to 0.27.0 (#1…
dependabot[bot] Sep 7, 2024
747c9e7
Add Admin RPC for Adding New Chain Monitors (#11792)
axelKingsley Sep 7, 2024
4fbe14f
semgrep: try to fix CI timeout (#11798)
protolambda Sep 7, 2024
9170e93
maint: move existing interfaces to folders (#11749)
smartcontracts Sep 8, 2024
40750a5
op-challenger: Support binary and JSON snapshots (#11754)
ajsutton Sep 8, 2024
c27aead
Remove hardcoded entrypoint (#11801)
mslipper Sep 9, 2024
e0f8589
Allow cheatcodes on DeploySuperchain.s.sol (#11802)
mslipper Sep 9, 2024
c05f5ad
op-program: Add recent op-program versions to reproducibility check (…
ajsutton Sep 9, 2024
8404e91
ci: update contracts tests to split by file (#11797)
smartcontracts Sep 9, 2024
dc2490b
fix `ReadPreimage` (#11805)
zhiqiangxu Sep 9, 2024
f46bea7
op-program: Add a script to build cannon prestates for all tagged op-…
ajsutton Sep 9, 2024
4428d10
op-dispute-mon: Identify unclaimed credits based on the withdrawal re…
ajsutton Sep 9, 2024
a0d3195
cannon: Fix path used when verifying a downloaded state (#11813)
ajsutton Sep 9, 2024
f64d817
op-service: Make target destination when writing JSON/binary explicit…
ajsutton Sep 9, 2024
af78edd
maint: add interface for L2OutputOracle (#11817)
smartcontracts Sep 9, 2024
2116126
cannon: Autodetect VM type from state (#11803)
ajsutton Sep 10, 2024
dc5cf52
op-challenger: Release agent resources once game is complete (#11820)
ajsutton Sep 10, 2024
7e97b67
Fix race condition in sequencer stopping logic (#11769)
mdehoog Sep 10, 2024
7f3d6ef
feat: Add nested directory data format for op-program kvstore (#11795)
BrianBland Sep 10, 2024
e2356c3
Revert "op-program: Make directory preimage format the default." (#11…
ajsutton Sep 10, 2024
219ebe0
Add broadcast API to Go forge scripts (#11826)
mslipper Sep 10, 2024
91e306b
fix(op-batcher): initAltDA before initChannelConfig (#11816)
emilianobonassi Sep 10, 2024
53fa7b9
op-node: read DACommitmentType from scr in LoadOPStackRollupConfig (#…
bitwiseguy Sep 10, 2024
de31478
OPSM: Begin implementing OP Stack Manager code and it's deployment (#…
mds1 Sep 10, 2024
9d73864
op-chain-ops: fix Go forge script broadcast handling (#11832)
protolambda Sep 10, 2024
f93f9f4
fix: OptimismPortal fuzz flakes (#11818)
smartcontracts Sep 10, 2024
89c3d35
cannon: Fix jalr stack tracking (#11831)
Inphi Sep 10, 2024
3ac725a
ci: make semgrep-scan use a large docker image (#11834)
smartcontracts Sep 10, 2024
4ffc7cf
maint: clarify interface fixes are manual (#11835)
smartcontracts Sep 10, 2024
627f7af
feat: ban deposits interop (#11712)
skeletor-spaceman Sep 11, 2024
f84c92c
Improvements/bugfixes to Go forge scripts (#11838)
mslipper Sep 11, 2024
9a22240
OPSM: remove structs from `DeploySuperchain` (#11833)
mds1 Sep 11, 2024
de86922
maint: add more L1 interfaces (#11822)
smartcontracts Sep 11, 2024
707791b
ci: selectively build contracts (#11824)
smartcontracts Sep 11, 2024
84b1cde
Add entrypoint to deploy against existing Superchain (#11791)
mslipper Sep 11, 2024
144a775
test: fix test and variable naming conventions (#11845)
mds1 Sep 11, 2024
88b1a95
feat: concurrent alt-da requests (#11698)
samlaf Sep 11, 2024
9d8c342
feat: run extra fuzz rounds for new fuzz tests (#11748)
smartcontracts Sep 11, 2024
c21d0c5
Release op-contracts/v1.6.0 (#11760)
Inphi Sep 11, 2024
327e6e6
proofs Add a proofs-tools docker image (#11825)
ajsutton Sep 11, 2024
06a62ea
maint: add remaining L1 contract interfaces (#11848)
smartcontracts Sep 11, 2024
89c9fef
feat: Run `op-program` in `op-e2e` action tests (#11846)
clabby Sep 11, 2024
489d93c
fix: add IBeacon to interface check ignore (#11860)
smartcontracts Sep 12, 2024
d91f92a
proofs-tools: Fix circleci config to run hold job on proofs-tools rel…
ajsutton Sep 12, 2024
820636f
maint: add comment to OptimismPortal2 proof submitters mapping (#11853)
smartcontracts Sep 12, 2024
bd3955a
fix: add extra context to check interfaces script logs (#11861)
smartcontracts Sep 12, 2024
320e11d
feat: Helper for dumping `fp-tests` fixtures in `op-program` action t…
clabby Sep 12, 2024
5cdcfd4
proofs-tools: Update ci-docker-tag-op-stack-release.sh regex (#11862)
ajsutton Sep 12, 2024
4656d49
chore: export process frames (#11864)
ratankaliani Sep 12, 2024
77f7268
chore: Cleanup proofs actions (#11858)
clabby Sep 12, 2024
e9337db
proofs-tools: Include openssl and certs (#11865)
ajsutton Sep 12, 2024
7ff5e6e
cannon: Fix GC emulation of Go programs (#11704)
Inphi Sep 12, 2024
e374443
Fix the error usage in cannon (#11368)
wissyLeeei Sep 12, 2024
d887cfa
chore(op-program): Turn off `fsync` on pebble KV store (#11863)
clabby Sep 12, 2024
97aa08a
Add SendAsync to TxMgr (#11843)
mslipper Sep 12, 2024
232c54d
feat: introduce OptimismSuperchainERC20Factory (#11617)
agusduha Sep 12, 2024
0260adb
fix: do not delete test data directory (#11869)
smartcontracts Sep 12, 2024
849680b
codeowners: move go-reviewers team at the end (#11877)
sebastianst Sep 12, 2024
87af6f0
txmgr: improve code sharing between Send and SendAsync (#11876)
sebastianst Sep 12, 2024
fe4890f
Revert "txmgr: improve code sharing between Send and SendAsync (#1187…
mslipper Sep 12, 2024
e9b80ee
Add op-deployer proof-of-concept (#11804)
mslipper Sep 12, 2024
c3daaf4
fix(ci): skip files without modified functions (#11891)
smartcontracts Sep 12, 2024
ea665b5
fix(ci): tweak heavy fuzz run parameters (#11894)
smartcontracts Sep 12, 2024
e3cf320
discard candidate when ahead (#11874)
zhiqiangxu Sep 12, 2024
7d8ffa2
codeowners: own op-e2e/actions/proofs by proofs team (#11895)
sebastianst Sep 12, 2024
fb11507
maint: add interfaces for governance contracts (#11878)
smartcontracts Sep 12, 2024
935de9c
maint: rename Safe folder to safe (#11882)
smartcontracts Sep 12, 2024
ef1bf0a
opsm: remove remaining structs (#11854)
mds1 Sep 12, 2024
deb9bac
feat: Add channel timeout tests for `op-program` (#11885)
clabby Sep 13, 2024
e9ba6ac
feat: Add garbage frame tests for `op-program` (#11896)
clabby Sep 13, 2024
9e1f077
feat: mintable with permit (#11868)
tynes Sep 13, 2024
0e29474
add sequence window expiry test (#11897)
clabby Sep 13, 2024
3dbcee1
fix: incorrect import in ManageDrippie.s.sol (#11898)
smartcontracts Sep 13, 2024
d5957fa
op-e2e: Setup mt-cannon for tests (#11881)
Inphi Sep 13, 2024
0b20d8e
op-program: Inject prefetcher instead of setting code in config (#11902)
ajsutton Sep 13, 2024
8b61225
feat: `op-program` actor test API improvements (#11903)
clabby Sep 13, 2024
d432185
op-program: Record the kv format used. (#11900)
ajsutton Sep 13, 2024
3ba35fa
feat: Scaffolding for DeployAuthSystemInput (#11889)
maurelian Sep 13, 2024
3056348
interop: interopgen v2 using OPSM (#11702)
protolambda Sep 13, 2024
c8d6dbb
cannon: Handle preimage bounds checks consistently (#11911)
mbaxter Sep 13, 2024
f70248a
feat: Scaffolding for DeployAuthSystemInput (#11890)
maurelian Sep 13, 2024
5e14a61
Interop: SuperSystem for E2E Tests (#11850)
axelKingsley Sep 13, 2024
6cf35da
feat: Front OPSM with Proxy and Initialize (#11875)
blmalone Sep 14, 2024
8341f34
fix: Additional DeployImplementations.s.sol tests (#11914)
blmalone Sep 15, 2024
92ed64e
Use the deterministic deployer when broadcasting with CREATE2 (#11915)
mslipper Sep 15, 2024
ac443ef
op-e2e: Separate helpers for proofs action tests into a new package (…
ajsutton Sep 16, 2024
4af1fe6
cannon: Implement thread-safe ll and sc operations (#11906)
mbaxter Sep 16, 2024
db10999
Add integration test for apply (#11910)
mslipper Sep 16, 2024
7efa4e7
circleci: Enable mt-cannon in develop-fault-proofs (#11928)
Inphi Sep 16, 2024
9968aa3
feat: add SuperchainERC20 baseline (#11675)
agusduha Sep 16, 2024
7d92c98
feat(op-service): add SuperchainWETH and ETHLiquidity to predeploys/a…
tremarkley Sep 16, 2024
717330e
Port deployers, add end-to-end contract deployments (#11922)
mslipper Sep 16, 2024
95765df
cannon: Handle unaligned futex addresses (#11929)
mbaxter Sep 16, 2024
d4467a1
Add Logging ; Fix Broken Maintenance Context (#11931)
axelKingsley Sep 16, 2024
8dd6fb3
feat(op-e2e): Expose `L1Replica` + `L2Engine` + `BlobsStore` endpoint…
clabby Sep 16, 2024
21375b4
op-node: handle crit error events, lift event-system out of driver (#…
protolambda Sep 16, 2024
66bfe67
op-e2e: Fix compile error (#11933)
ajsutton Sep 16, 2024
994f634
op-e2e: Separate actions tests into different packages (#11921)
ajsutton Sep 17, 2024
4e2fdf3
feat(op-e2e): Kona FPP actions test adapter (#11936)
clabby Sep 17, 2024
c72a75e
op-e2e: Organize e2e system tests in subdirs (#11939)
protolambda Sep 17, 2024
45b4b1f
OPSM: miscellaneous fixes and improvements (#11935)
mds1 Sep 17, 2024
3b4fcc5
Disable go patches for cannon MT (#11937)
ajsutton Sep 17, 2024
4490fa8
feat: Scaffolding for DeployAuthSystem Script (#11908)
maurelian Sep 17, 2024
e7758b2
op-batcher: Add String methods to txRef (#11904)
sebastianst Sep 17, 2024
152c94d
feat: Rewrite FP contract distinctions as table (#11940)
maurelian Sep 17, 2024
1a4c020
op-e2e: fix fuzz cgo build (#11941)
protolambda Sep 17, 2024
418fb5e
maint: move WETH contract to correct folders (#11870)
smartcontracts Sep 17, 2024
f78ed7b
dependabot(gomod): bump github.com/prometheus/client_golang (#11946)
dependabot[bot] Sep 17, 2024
110a31d
Add L2 genesis generation support to `op-deployer` (#11938)
mslipper Sep 17, 2024
290dde2
OPSM: DeployOPChain assertions (#11943)
mds1 Sep 17, 2024
8312d61
feat: remove dgf impl from DeployOpChain and OPSM (#11942)
maurelian Sep 17, 2024
668c3fb
fix: Remove `--l2-chain-id` default (#11951)
clabby Sep 17, 2024
9179225
feat: Add ASR proxy to OPStackManager (#11952)
maurelian Sep 17, 2024
a7fac3b
ci: run slow Cannon test once per day (#11947)
smartcontracts Sep 17, 2024
e15f684
fix: move IERC20Solady into vendor folder (#11945)
smartcontracts Sep 17, 2024
518b050
ci: bump semgrep-scan to xlarge (#11948)
smartcontracts Sep 17, 2024
9de48fc
test: invariant tests for OptimismSuperchainERC20 (#11776)
0xteddybear Sep 18, 2024
c186b48
ci: job to check contracts build warnings (#11962)
smartcontracts Sep 18, 2024
86a74bc
ci: simplify contract build job inputs (#11965)
smartcontracts Sep 18, 2024
ab24015
ci: clean up golang job definitions (#11967)
smartcontracts Sep 18, 2024
b6e9a61
ci: fix config error in cannon tests (#11969)
smartcontracts Sep 18, 2024
c40dfed
op-node: lazy-dial the supervisor RPC (#11970)
protolambda Sep 18, 2024
7a10c31
ci: simplify contracts bedrock tests job (#11966)
smartcontracts Sep 18, 2024
d9fe07c
ci: misc cleanups and simplifications (#11968)
smartcontracts Sep 18, 2024
924896b
correct the comment (#11971)
rickck11 Sep 18, 2024
68b5239
update op-e2e setup (#11857)
hamdiallam Sep 18, 2024
ae37e02
fix: multiple fuzz flakes (#11981)
smartcontracts Sep 18, 2024
7db0f6a
maint: add interfaces for L2 bridge/messaging contracts (#11859)
smartcontracts Sep 18, 2024
c18ec26
chore(op-service): use `errors.New` to replace `fmt.Errorf` with no p…
yukionfire Sep 18, 2024
606e023
fix(ci): semgrep cli breaking change (#11985)
smartcontracts Sep 18, 2024
5fe7df2
ci: correct perms for tag-service.yml (#11961)
smartcontracts Sep 18, 2024
213f762
Add inspection commands, fix deployer bugs (#11964)
mslipper Sep 18, 2024
eba495d
refactor: Rename OPSM to OPSMProxy for clarity (#11972)
blmalone Sep 18, 2024
bd97c32
feat(op-e2e): Open channel closed after sequence window expiry test (…
clabby Sep 19, 2024
e2a19f4
feat(op-e2e): Channel timeout late submission test (#11995)
clabby Sep 19, 2024
c9a4a7c
ci: separate invariant runs from fuzz runs (#11982)
smartcontracts Sep 19, 2024
9ab6738
ci: Restore ci-builder docker release and remove invalid op-challenge…
ajsutton Sep 19, 2024
d4b1003
maint(ci): clean up release job (#11996)
smartcontracts Sep 19, 2024
a080bd2
maint(ci): clean up scheduled docker publish (#11999)
smartcontracts Sep 19, 2024
57f9fbf
OPSM: More assertions (#11994)
mds1 Sep 19, 2024
4b8d23e
op-challenger: Support MT-Cannon in run-trace (#11934)
Inphi Sep 19, 2024
2afa7a4
feat: add remaining L2 interfaces (#11984)
smartcontracts Sep 19, 2024
ff338bc
feat: clean up TODOs and add CI check (#12005)
smartcontracts Sep 19, 2024
4806d83
contracts: Add more MIPS2 tests (#12003)
Inphi Sep 19, 2024
29dd98b
cannon: Clean up fuzz test todos (#12009)
mbaxter Sep 19, 2024
08a4369
cannon: Clean up program patching (#11944)
mbaxter Sep 19, 2024
7105bad
feat(ci): check contract semver matches natspec (#11992)
smartcontracts Sep 19, 2024
a1f912a
maint(ct): link to external mermaid diagrams in specs (#12012)
smartcontracts Sep 19, 2024
54ae1e4
op-program: Reproducible MT-Cannon prestate (#12011)
Inphi Sep 19, 2024
cea1f94
cannon: Fix makefile phony target (#12014)
mbaxter Sep 19, 2024
45a266e
maint(ci): remove autogenerated invariant docs (#11988)
smartcontracts Sep 19, 2024
43ec97d
vm-runner: User-provided mt-cannon absolute prestate URL (#12016)
Inphi Sep 19, 2024
eaf4d3e
maint: fix dispute interfaces (#12010)
smartcontracts Sep 20, 2024
3c3a311
op-challenger: Use a wrapper to specify the vm type for metrics (#12020)
ajsutton Sep 20, 2024
2fcbe4b
SuperSystem: Add Emitter Contract - Basic Message Passing (#11956)
axelKingsley Sep 20, 2024
bdca797
Update kurtosis library. (#12025)
ajsutton Sep 20, 2024
4461d73
proof-tools: Bump op-challenger version (#12017)
Inphi Sep 20, 2024
fbf69c9
Pin kurtosis version in CI (#12026)
mslipper Sep 20, 2024
af357f1
refactor: Remove file I/O from deployment scripts (#12015)
blmalone Sep 20, 2024
bd50ac6
show block number when "L2 safe head ahead of L2 unsafe head" happens…
zhiqiangxu Sep 20, 2024
9936803
maint(ct): clean up justfile (#12024)
smartcontracts Sep 20, 2024
53d9522
feat(ct): add constructors to interfaces (#12028)
smartcontracts Sep 20, 2024
0543bf7
op-supervisor: store block-checkpoints per block, implement block ite…
protolambda Sep 20, 2024
c5007bb
Add builds for op-deployer, bugfixes, artifacts downloads (#12033)
mslipper Sep 21, 2024
dd7f5db
chore(op-e2e): assert that the channel actually timed out (#11998)
clabby Sep 21, 2024
53080c9
feat(op-e2e): Recover from bad transactions in batch test (#12039)
clabby Sep 22, 2024
4c6bc7e
docs: remove fault proof alpha from readme (#12036)
QianlongCry Sep 22, 2024
de7f8d9
Use TxManager interface in DriverSetup and BatcherService (#12040)
mdehoog Sep 22, 2024
6c98946
feat(op-e2e): L1 lookback action tests (#12043)
clabby Sep 23, 2024
d348c69
codeowners: Set proofs team as owners of faultproofs e2e tests (#12053)
ajsutton Sep 23, 2024
05c0421
cannon, op-program: Avoid logging errors during normal shutdown. (#12…
ajsutton Sep 23, 2024
7ee6dcc
op-challenger: Fix run-trace to only run mt-cannon in parallel with c…
ajsutton Sep 23, 2024
90700b9
contract-test: delete outdated structure explanation (#12054)
rickck11 Sep 23, 2024
6933bfe
Simplify ChannelOut initialization (#12045)
mdehoog Sep 23, 2024
2f2554a
Add AnchorStateRegistry Implementation to OPSM (#11955)
maurelian Sep 23, 2024
d204c1f
proofs-tools: Update op-challenger version in proofs-tools. (#12055)
ajsutton Sep 23, 2024
f86ccc8
fix(ci): do not check closed issues in main job (#12066)
smartcontracts Sep 23, 2024
9178d5f
feat: deploy utils cleanup (#12027)
smartcontracts Sep 23, 2024
9a12768
feat(L2ToL2CrossDomainMessenger): add successfulMessages and messageN…
tremarkley Sep 23, 2024
718b9b0
op-supervisor: encode full hashes (#12071)
protolambda Sep 23, 2024
0fee34b
op-service: add configurable client timeout (#12074)
bitwiseguy Sep 24, 2024
ec3f634
ci: Sanitize op-program for unsupported instructions (#12007)
Inphi Sep 24, 2024
308ce74
OPSM: Deploy Permissioned Game (#12064)
maurelian Sep 24, 2024
43224ed
op-service: remove test print statement (#12083)
bitwiseguy Sep 24, 2024
8b76931
feat: Implement release-based contract deployment (#12035)
blmalone Sep 24, 2024
1ee7ea1
fix: justfile clean command (#12092)
blmalone Sep 24, 2024
5b9b3b8
Add permissioned game output assertions (#12093)
maurelian Sep 24, 2024
712b760
cannon: Drop unnecessary wakeup field reset (#12095)
mbaxter Sep 24, 2024
9c02f54
chore: emit event on deploy (#12090)
mds1 Sep 24, 2024
22094b4
check deposit on validateMessage (#12088)
hamdiallam Sep 24, 2024
cbbb45e
op-node: Remove unused field in `ChannelBank` (#12001)
palango Sep 25, 2024
3072549
MTCannon: Add add/addi/addu/addiu opcodes tests (#12085)
GrapeBaBa Sep 25, 2024
56502dd
cannon: Multi VM executor (#12072)
Inphi Sep 25, 2024
decf451
cannon: Build the cannon docker image and publish on cannon release t…
ajsutton Sep 25, 2024
4f1e8a7
remove unused function (#12087)
zhiqiangxu Sep 25, 2024
106993f
op-batcher: Move decision about data availability type to channel sub…
geoknee Sep 25, 2024
b0e6d13
cannon: Support the --version argument for multicannon. (#12101)
ajsutton Sep 25, 2024
da9bc72
show log for `devnet` (#12102)
zhiqiangxu Sep 25, 2024
b55f4d7
rename: OPStackManafer -> OPContractsManager (#12091)
blmalone Sep 25, 2024
10a16aa
op-supervisor: logs-db empty-db edge-case fix (#12097)
protolambda Sep 25, 2024
616a078
op-batcher: prevent over-assessment of DA type (#12115)
geoknee Sep 25, 2024
36180d7
rename: proxyAdminOwner -> superchainProxyAdminOwner (#12106)
blmalone Sep 25, 2024
06f1406
Add support for pre-existing OPSM (#12099)
mslipper Sep 25, 2024
e81c50d
fix: OPCM additional safety checks (#12107)
blmalone Sep 25, 2024
985994d
merge optimism-v1.9.3 into develop
claymega Nov 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fix: initialization tests (ethereum-optimism#11674)
Fixes the initialization tests, existing tests were not properly
verifying that all of the initializable contracts were being
accounted for.
smartcontracts authored Sep 5, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit ffd9ed477d93c47cd586323f250535df0309e6fb
13 changes: 11 additions & 2 deletions packages/contracts-bedrock/scripts/Artifacts.s.sol
Original file line number Diff line number Diff line change
@@ -28,13 +28,15 @@ struct Deployment {
abstract contract Artifacts {
/// @notice Foundry cheatcode VM.
Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code")))));
/// @notice Error for when attempting to fetch a deployment and it does not exist

/// @notice Error for when attempting to fetch a deployment and it does not exist
error DeploymentDoesNotExist(string);
/// @notice Error for when trying to save an invalid deployment
error InvalidDeployment(string);
/// @notice The set of deployments that have been done during execution.
/// @notice Error for when attempting to load the initialized slot of an unsupported contract.
error UnsupportedInitializableContract(string);

/// @notice The set of deployments that have been done during execution.
mapping(string => Deployment) internal _namedDeployments;
/// @notice The same as `_namedDeployments` but as an array.
Deployment[] internal _newDeployments;
@@ -211,6 +213,13 @@ abstract contract Artifacts {

/// @notice Returns the value of the internal `_initialized` storage slot for a given contract.
function loadInitializedSlot(string memory _contractName) public returns (uint8 initialized_) {
// FaultDisputeGame and PermissionedDisputeGame are initializable but cannot be loaded with
// this function yet because they are not properly labeled in the deploy script.
// TODO: Remove this restriction once the deploy script is fixed.
if (LibString.eq(_contractName, "FaultDisputeGame") || LibString.eq(_contractName, "PermissionedDisputeGame")) {
revert UnsupportedInitializableContract(_contractName);
}

address contractAddress;
// Check if the contract name ends with `Proxy` and, if so, get the implementation address
if (LibString.endsWith(_contractName, "Proxy")) {
110 changes: 99 additions & 11 deletions packages/contracts-bedrock/scripts/libraries/ForgeArtifacts.sol
Original file line number Diff line number Diff line change
@@ -3,6 +3,7 @@ pragma solidity ^0.8.0;

import { Vm } from "forge-std/Vm.sol";
import { stdJson } from "forge-std/StdJson.sol";
import { LibString } from "@solady/utils/LibString.sol";
import { Executables } from "scripts/libraries/Executables.sol";
import { Process } from "scripts/libraries/Process.sol";

@@ -83,6 +84,67 @@ library ForgeArtifacts {
ids_ = stdJson.readStringArray(string(res), "");
}

/// @notice Returns the kind of contract (i.e. library, contract, or interface).
/// @param _name The name of the contract to get the kind of.
/// @return kind_ The kind of contract ("library", "contract", or "interface").
function getContractKind(string memory _name) internal returns (string memory kind_) {
string[] memory cmd = new string[](3);
cmd[0] = Executables.bash;
cmd[1] = "-c";
cmd[2] = string.concat(
Executables.jq,
" -r '.ast.nodes[] | select(.nodeType == \"ContractDefinition\") | .contractKind' < ",
_getForgeArtifactPath(_name)
);
bytes memory res = Process.run(cmd);
kind_ = string(res);
}

/// @notice Returns whether or not a contract is proxied.
/// @param _name The name of the contract to check.
/// @return out_ Whether or not the contract is proxied.
function isProxiedContract(string memory _name) internal returns (bool out_) {
// TODO: Using the `@custom:proxied` tag is to determine if a contract is meant to be
// proxied is functional but developers can easily forget to add the tag when writing a new
// contract. We should consider determining whether a contract is proxied based on the
// deployment script since it's the source of truth for that. Current deployment script
// does not make this easy but an updated script should likely make this possible.
string[] memory cmd = new string[](3);
cmd[0] = Executables.bash;
cmd[1] = "-c";
cmd[2] = string.concat(
Executables.jq,
" -r '.rawMetadata' ",
_getForgeArtifactPath(_name),
" | ",
Executables.jq,
" -r '.output.devdoc' | jq -r 'has(\"custom:proxied\")'"
);
bytes memory res = Process.run(cmd);
out_ = stdJson.readBool(string(res), "");
}

/// @notice Returns whether or not a contract is predeployed.
/// @param _name The name of the contract to check.
/// @return out_ Whether or not the contract is predeployed.
function isPredeployedContract(string memory _name) internal returns (bool out_) {
// TODO: Similar to the above, using the `@custom:predeployed` tag is not reliable but
// functional for now. Deployment script should make this easier to determine.
string[] memory cmd = new string[](3);
cmd[0] = Executables.bash;
cmd[1] = "-c";
cmd[2] = string.concat(
Executables.jq,
" -r '.rawMetadata' ",
_getForgeArtifactPath(_name),
" | ",
Executables.jq,
" -r '.output.devdoc' | jq -r 'has(\"custom:predeploy\")'"
);
bytes memory res = Process.run(cmd);
out_ = stdJson.readBool(string(res), "");
}

function _getForgeArtifactDirectory(string memory _name) internal returns (string memory dir_) {
string[] memory cmd = new string[](3);
cmd[0] = Executables.bash;
@@ -128,6 +190,14 @@ library ForgeArtifacts {
function getInitializedSlot(string memory _contractName) internal returns (StorageSlot memory slot_) {
string memory storageLayout = getStorageLayout(_contractName);

// FaultDisputeGame and PermissionedDisputeGame use a different name for the initialized storage slot.
string memory slotName = "_initialized";
string memory slotType = "t_uint8";
if (LibString.eq(_contractName, "FaultDisputeGame") || LibString.eq(_contractName, "PermissionedDisputeGame")) {
slotName = "initialized";
slotType = "t_bool";
}

string[] memory command = new string[](3);
command[0] = Executables.bash;
command[1] = "-c";
@@ -138,7 +208,11 @@ library ForgeArtifacts {
"'",
" | ",
Executables.jq,
" '.storage[] | select(.label == \"_initialized\" and .type == \"t_uint8\")'"
" '.storage[] | select(.label == \"",
slotName,
"\" and .type == \"",
slotType,
"\")'"
);
bytes memory rawSlot = vm.parseJson(string(Process.run(command)));
slot_ = abi.decode(rawSlot, (StorageSlot));
@@ -152,18 +226,21 @@ library ForgeArtifacts {
initialized_ = uint8((uint256(slotVal) >> (slot.offset * 8)) & 0xFF) != 0;
}

/// @notice Returns the function ABIs of all L1 contracts.
function getContractFunctionAbis(
string memory path,
string[] memory pathExcludes
/// @notice Returns the names of all contracts in a given directory.
/// @param _path The path to search for contracts.
/// @param _pathExcludes An array of paths to exclude from the search.
/// @return contractNames_ An array of contract names.
function getContractNames(
string memory _path,
string[] memory _pathExcludes
)
internal
returns (Abi[] memory abis_)
returns (string[] memory contractNames_)
{
string memory pathExcludesPat;
for (uint256 i = 0; i < pathExcludes.length; i++) {
pathExcludesPat = string.concat(pathExcludesPat, " -path \"", pathExcludes[i], "\"");
if (i != pathExcludes.length - 1) {
for (uint256 i = 0; i < _pathExcludes.length; i++) {
pathExcludesPat = string.concat(pathExcludesPat, " -path \"", _pathExcludes[i], "\"");
if (i != _pathExcludes.length - 1) {
pathExcludesPat = string.concat(pathExcludesPat, " -o ");
}
}
@@ -174,7 +251,7 @@ library ForgeArtifacts {
command[2] = string.concat(
Executables.find,
" ",
path,
_path,
bytes(pathExcludesPat).length > 0 ? string.concat(" ! \\( ", pathExcludesPat, " \\)") : "",
" -type f ",
"-exec basename {} \\;",
@@ -185,8 +262,19 @@ library ForgeArtifacts {
Executables.jq,
" -R -s 'split(\"\n\")[:-1]'"
);
string[] memory contractNames = abi.decode(vm.parseJson(string(Process.run(command))), (string[]));

contractNames_ = abi.decode(vm.parseJson(string(Process.run(command))), (string[]));
}

/// @notice Returns the function ABIs of all L1 contracts.
function getContractFunctionAbis(
string memory path,
string[] memory pathExcludes
)
internal
returns (Abi[] memory abis_)
{
string[] memory contractNames = getContractNames(path, pathExcludes);
abis_ = new Abi[](contractNames.length);

for (uint256 i; i < contractNames.length; i++) {
Loading