Skip to content
Open
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
259 commits
Select commit Hold shift + click to select a range
9a91eb4
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Jan 24, 2025
b724f77
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Jan 27, 2025
b0dd3b2
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Jan 27, 2025
0693468
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Jan 27, 2025
a30c9fe
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Jan 29, 2025
e241c38
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Jan 29, 2025
2b2b1a3
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Feb 3, 2025
da49c39
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Mar 12, 2025
b982da0
chore: update Solidity version in zk-hardhat configuration from 0.8.1…
ljankovic-txfusion Mar 12, 2025
88d770c
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Mar 12, 2025
f2d91ab
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Mar 18, 2025
34779cc
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Mar 26, 2025
63f9aea
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 1, 2025
cfaf8cc
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 2, 2025
c247dd7
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 2, 2025
aa7dc77
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 2, 2025
a27e49c
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 4, 2025
328fad1
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 8, 2025
61b8d29
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 11, 2025
dca759c
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 14, 2025
31a5db1
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 14, 2025
3e27f07
feat(cosmos-sdk): use prebuilt simapp image for docker-compose (#5874)
paulbalaji Apr 15, 2025
d11c711
Merge remote-tracking branch 'origin/feat/zksync-deployment-functions…
ljankovic-txfusion Apr 15, 2025
3b615c8
feat: Add proxyAdmin.owner to ownerOverrides in Checker (#5931)
ltyu Apr 15, 2025
c0bc208
feat: use `aws-sdk-s3` for S3 operations (#5928)
tkporter Apr 15, 2025
79f40eb
feat: Update check-warp-deploy to fetch all warp route configurations…
ltyu Apr 15, 2025
254cee2
feat: higher s3 DoS resilience (#5877)
yjamin Apr 16, 2025
e0fb68a
feat: Routing ISM caching (#5932)
kamiyaa Apr 16, 2025
1ccc10b
feat: async checkpoint syncer builder (#5941)
yjamin Apr 16, 2025
98f5172
feat: quiet down some AWS SDK logging (#5940)
tkporter Apr 16, 2025
e6f6d61
feat: Refactor ZKsync artifact generation and validation logic (#5920)
ljankovic-txfusion Apr 16, 2025
ccfbb6c
feat: add governance safes (#5943)
Mo-Hussain Apr 16, 2025
a646f9c
feat: zksync deployment logic (#5208)
ljankovic-txfusion Apr 16, 2025
0e663ad
feat: Add mixing of message processing depending on configuration (#5…
ameten Apr 16, 2025
eb3054c
feat: add scripts to update safe owners (#5950)
Mo-Hussain Apr 16, 2025
f878cd7
feat: app-context specific ISM cache configs (#5945)
tkporter Apr 16, 2025
893f53c
feat: batching retries (#5930)
daniel-savu Apr 16, 2025
c757b6a
chore: add whole RPC array to chainMetadataToViemChain (#5953)
Xaroz Apr 16, 2025
1bfdbdb
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion Apr 17, 2025
4d94181
feat: add governance signers (#5952)
Mo-Hussain Apr 17, 2025
d7cb7ab
Version Packages (#5918)
github-actions[bot] Apr 17, 2025
3e8596b
chore: log eip1559 price estimation error (#5958)
daniel-savu Apr 17, 2025
e1567ab
feat: apply prepare queue backpressure (#5956)
tkporter Apr 17, 2025
5dc2cf4
fix: zeronetwork igp check (#5964)
daniel-savu Apr 17, 2025
0c47163
chore: increase igp overhead to zeronetwork (#5965)
paulbalaji Apr 17, 2025
f49ef56
feat: escalator gas syncing (#5970)
daniel-savu Apr 18, 2025
7b0f5a0
feat: gas price improvements (#5962)
daniel-savu Apr 18, 2025
7dda446
fix: Add simulation back in parallel with refreshing cache (#5968)
ameten Apr 18, 2025
c7a4c3f
fix: request latest block and fee history in parallel and filter out …
ameten Apr 18, 2025
385b307
feat: optimizing the validator (#5966)
tkporter Apr 18, 2025
b598c48
chore: Upgrade mainnet validators to latest image (#5976)
ameten Apr 18, 2025
78bc7cb
feat: gas price cap and batch gas limit optimization (#5977)
daniel-savu Apr 18, 2025
8daece7
feat(infra): support multiple governance types (#5938)
paulbalaji Apr 18, 2025
f297a09
feat: chain-specific maxsubmitqueues (#5978)
daniel-savu Apr 18, 2025
6b4f5e4
feat: mainnet vanguard contexts (#5942)
tkporter Apr 19, 2025
8117739
feat: metadata building fast path (#5983)
daniel-savu Apr 20, 2025
ecbacbd
feat: Add EvmHypRebaseCollateralAdapter and EvmHypSyntheticRebaseAdap…
Mo-Hussain Apr 21, 2025
8b985a4
fix: Restore serial submission for Sealevel and Cosmos chains (#5987)
ameten Apr 21, 2025
1a558c6
chore: mainnet vanguards (#5988)
daniel-savu Apr 21, 2025
4569591
fix: label for reverted batch simulations (#5990)
daniel-savu Apr 21, 2025
ae985c4
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion Apr 22, 2025
b62dc6a
feat: deploy vanguard relayers with new image, other relayers with ol…
tkporter Apr 22, 2025
4c867b8
feat: apr19 multisig batch (#5979)
paulbalaji Apr 22, 2025
f267f85
feat: vanguard funding (#5986)
paulbalaji Apr 22, 2025
d904a84
fix: ingore mailbox in warp-configs.test.ts (#5993)
antigremlin Apr 22, 2025
f540e65
chore: extend `LUMIA` (#5842)
christopherbrumm Apr 22, 2025
99cd61f
feat: add hyper warp ids and update monitor image (#5992)
Mo-Hussain Apr 23, 2025
ef27837
fix: Report all operations as failed when we are failing a batch (#5996)
ameten Apr 23, 2025
6f50d7f
chore: extend to `ETH/arbitrum-base-ethereum-lumiaprism-optimism-poly…
christopherbrumm Apr 23, 2025
5314d02
fix: Submit failed operations from a batch in a serial manner (#6000)
ameten Apr 23, 2025
a8043c0
ci: Pack and Install CLI in ci (#5613)
xeno097 Apr 23, 2025
93e88a3
feat: add debug message for unknown domains for chain metrics (#5963)
kamiyaa Apr 23, 2025
2d4353a
chore: Update getters to fix violations (#5967)
ltyu Apr 23, 2025
c7934f7
feat: revoke approvals in warp core (#5973)
xeno097 Apr 24, 2025
22681c9
revert: "chore: update cosmos package versions only when there are ch…
paulbalaji Apr 24, 2025
f5da762
feat: support CosmosNative agents in infra (#5815)
paulbalaji Apr 24, 2025
3d8df0a
chore: revert configs specific to high-throughput period (#6003)
daniel-savu Apr 24, 2025
4b54f2a
feat(agents): cosmosnative routing ism (#5849)
yjamin Apr 24, 2025
9c7776b
feat(submitter): metrics and e2e invariants (#5904)
daniel-savu Apr 24, 2025
049d324
fix: Set log level INFO for AWS Smithy Runtime (#6001)
ameten Apr 24, 2025
5131846
feat(infra): check public validator rpc script (#6008)
yjamin Apr 24, 2025
24fe342
chore(metadata): clean up aggregation fast path (#6011)
daniel-savu Apr 24, 2025
8871fad
feat: test cli cross platform compatibility in ci (#6002)
xeno097 Apr 24, 2025
f4a84d1
fix: rm old warp route id (#6014)
daniel-savu Apr 24, 2025
0277de5
Version Packages (#5985)
github-actions[bot] Apr 24, 2025
6101959
feat: check new chains using remoteRouters (#5939)
antigremlin Apr 24, 2025
89e65c2
chore: fix xlayer chunk size, new relayer image (#6017)
daniel-savu Apr 25, 2025
74db5a3
feat: script to recover vanguard funds (#6015)
paulbalaji Apr 25, 2025
21dd487
feat: Store all payload ids for message id (#6016)
ameten Apr 25, 2025
8c4a33b
feat: don't default to 0 index when comparing checkpoint indexes (#6024)
kamiyaa Apr 25, 2025
ffb0cf4
feat: add milkyway (#6036)
paulbalaji Apr 26, 2025
5db39f4
feat: cosmosnative fixes (#6039)
paulbalaji Apr 26, 2025
2edb767
chore: cosmos addresses (#6022)
troykessler Apr 26, 2025
7500bd6
feat: cosmos token adapter (#5888)
troykessler Apr 26, 2025
737b8a2
Version Packages (#6018)
github-actions[bot] Apr 26, 2025
46cb733
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion Apr 28, 2025
4d7af78
chore: upgrade prettier (#6004)
antigremlin Apr 28, 2025
54cd836
chore: fix agent-configs tests (#6041)
paulbalaji Apr 28, 2025
cbbd2ea
fix(cosmos-native): sort sigs in ascending order by validator address…
daniel-savu Apr 28, 2025
83fcd39
feat: add auroratestnet, milkywaytestnet (#6023)
paulbalaji Apr 28, 2025
eb54a9d
fix: don't change signature order in metadata (#6046)
daniel-savu Apr 28, 2025
d2babb7
feat: xERC20 extra lockboxes derivation updated logic (#6035)
xeno097 Apr 28, 2025
ae9966b
fix: milkyway `from` block (#6052)
daniel-savu Apr 28, 2025
249ecc9
feat: Add worldchain to EZETH (#6006)
ltyu Apr 28, 2025
cd8f7a3
chore: implemented review comments (#6042)
troykessler Apr 28, 2025
3a04631
chore: update .registryrc (#6055)
paulbalaji Apr 28, 2025
03145b3
feat: rearrange release workflow (#6040)
paulbalaji Apr 28, 2025
eb0dfee
Version Packages (#6053)
github-actions[bot] Apr 28, 2025
1d368bf
fix: release workflow (#6063)
paulbalaji Apr 28, 2025
2f21320
fix: update Checker checkChains() to convert remoteRouter domainId to…
ltyu Apr 28, 2025
43cdc65
chore: Update remoteRouter names to domainIds in Getters (#6066)
ltyu Apr 28, 2025
efb558f
feat: Add getRegistryWithFallback to warp-configs test (#5837)
ltyu Apr 28, 2025
802ae16
chore: update mainnet3 relayer image (#6061)
paulbalaji Apr 29, 2025
e5c3791
chore: reformat cosmos-types code (#6058)
antigremlin Apr 29, 2025
00f724a
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion Apr 29, 2025
16d14fe
fix: make env-test script more robust (#6073)
antigremlin Apr 29, 2025
f87a8ab
fix: metadata building error message (#6074)
daniel-savu Apr 29, 2025
d78d89b
fix: tracing unit test (#6078)
kamiyaa Apr 29, 2025
c3adc68
ci: only run infra tests when infra changes (#6067)
yorhodes Apr 29, 2025
d9fe207
chore: Remove DEFAULT_GITHUB_REGISTRY from check-warp-deploy (#6079)
ltyu Apr 29, 2025
644c0a2
feat: support registry override for check warp deploy job (#5905)
Mo-Hussain Apr 29, 2025
95215c8
feat(submitter): measure tx submissions (#6077)
daniel-savu Apr 30, 2025
667bb78
fix: Add script to run relayer locally (#5981)
ameten Apr 30, 2025
1209c6b
chore: fetch latest branch in docker-entrypoint (#6081)
paulbalaji Apr 30, 2025
673f7df
feat: Send operations to confirm queue if they have non-dropped paylo…
ameten Apr 30, 2025
608a507
feat(submitter): track all historic hashes in `Transaction` (#6068)
daniel-savu Apr 30, 2025
b105a86
chore: update seaorm to latest again after previously it was reverted…
ameten Apr 30, 2025
6d17bd0
fix: broadcast channel send only unique tx (#6009)
yjamin Apr 30, 2025
01bb4e2
fix: foundry error messages after foundry@1.1.0 upgrade (#6090)
antigremlin Apr 30, 2025
b9e474f
chore: update to JSON import attributes syntax (#6045)
antigremlin Apr 30, 2025
0c8b90d
chore: update formatting after Prettier upgrade (#6065)
antigremlin Apr 30, 2025
b9f482f
chore: Add latest proxyAdmin owners to Getters (#6093)
ltyu Apr 30, 2025
1a56053
fix: operational fixes (#6086)
daniel-savu May 1, 2025
45c53df
chore(submitter): default to considering errors non-retryable (#6098)
daniel-savu May 1, 2025
54a9453
chore: sync Node version with CI and Docker (#6048)
antigremlin May 1, 2025
eb79a3c
feat: ousdt extension (#5899)
paulbalaji May 1, 2025
c8ace88
chore: export HypTokenRouterConfigMailboxOptional types (#6104)
Xaroz May 1, 2025
862f14f
feat: Add warp route ID lookup and validation to `warp check` command…
ljankovic-txfusion May 1, 2025
f692b35
feat: skip typescript tests for rust-only PRs (#6084)
paulbalaji May 1, 2025
b960238
feat: ugly Squads verification tooling (#5984)
tkporter May 2, 2025
c884e05
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion May 2, 2025
7654d9c
fix: Expose operation ID as separate field on logs (#6083)
ameten May 2, 2025
ee62f06
fix: update transaction hash extraction in getConstructorArgsFromExpl…
ljankovic-txfusion May 2, 2025
f5eef1e
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion May 2, 2025
8fd2f9d
fix: persist key addresses in GCP (#6111)
tkporter May 2, 2025
9f36fa3
fix(submitter): svm adapter commitment levels (#6108)
daniel-savu May 2, 2025
0cd15ae
Version Packages (#6105)
github-actions[bot] May 2, 2025
d42d7f5
feat: validator announce uses chain signer instead of validator key (…
kamiyaa May 2, 2025
f64b0be
feat: add es warp route (#6100)
xeno097 May 2, 2025
bfff9d4
fix(submitter): Cache estimate and use it only on the first submissio…
ameten May 2, 2025
f6ed6ad
fix(sdk): fix warp apply proxy onwership logic [eng-1399] (#6115)
xeno097 May 2, 2025
f05ebc4
feat: may 1st mainnet batch (#6109)
Mo-Hussain May 2, 2025
f021f86
chore: spin down vanguard0 (#6121)
paulbalaji May 4, 2025
0746213
feat: QoL improvements to write alerts script (#5998)
Mo-Hussain May 5, 2025
d6a1b1d
feat: reduce balance thresholds for all remaining chains (#5995)
Mo-Hussain May 5, 2025
1f370e6
fix: Hook.update deploys new hook with nested addresses (#6117)
ltyu May 5, 2025
248d2e1
fix(sdk, cli): fix cli checker not working with non evm chains in con…
xeno097 May 5, 2025
03ac4d9
feat: Add typescript relayer support for CCIP-read ISM (#6141)
nambrot May 6, 2025
76f0eba
chore: implemented cosmos native ism module (#6113)
troykessler May 6, 2025
5cb05c4
chore: bump ethers-rs dependencies to 2025-05-02 tag (#6118)
keefertaylor May 6, 2025
41065ea
feat(submitter): tx status checker, evm provider in dispatcher (#6139)
daniel-savu May 6, 2025
7d56f2c
feat: Manually reduce desired balance and alert threshold for chains …
Mo-Hussain May 6, 2025
292dbfa
chore: add `wfragSOL` & `wfragJTO` (#6075)
christopherbrumm May 6, 2025
3f28921
feat(submitter): evm-specific fields in Payload and Transaction (#6135)
daniel-savu May 6, 2025
166f849
feat: Remove outputting isNft in warp init config (#6095)
nambrot May 6, 2025
a36d5c1
chore: add cosmos native hook module (#6123)
troykessler May 7, 2025
f5d6790
feat(submitter): Build and submit transaction for EVM chains (#6148)
ameten May 7, 2025
2eef441
fix(validator): point to fixed ethers-rs fork (#6156)
yjamin May 7, 2025
c7f1b49
fix: build-programs.sh downloading newer solana CLI releases and the …
tkporter May 7, 2025
31ee1c6
feat(sdk): fiat collateral token derivation support in sdk [eng-1552…
xeno097 May 7, 2025
462f0da
feat(submitter): evm GasLimitEstimator (#6159)
daniel-savu May 7, 2025
764642b
feat: may 6 testnet batch (#6151)
paulbalaji May 7, 2025
5281378
feat: fix message status not being stored correctly (#6153)
kamiyaa May 7, 2025
55fbe7e
fix: Scraper - Use previous compact mode version in Cosmos HttpClient…
ameten May 8, 2025
1770318
feat: update registry to 14.0.0 (#6171)
mshojaei-txfusion May 8, 2025
ce0b173
refactor: warp config loading (#6173)
mshojaei-txfusion May 8, 2025
a539ecc
fix: Add rule for CryptoCrew (#6176)
ameten May 8, 2025
c517e5c
feat(submitter): Report reverted payload with success criteria (#6170)
ameten May 8, 2025
ce95ffc
feat: fixes to SVM warp deploy tooling (#6178)
tkporter May 9, 2025
98209a2
feat: chunk message db insertions (#6114)
kamiyaa May 9, 2025
6c9b559
fix(submitter): don't use ethers submission middleware (#6177)
daniel-savu May 9, 2025
46eeda6
feat(submitter): Add naive nonce manager (#6179)
ameten May 9, 2025
e381a8d
chore: bump registry to 15.0.0 and update monitor image (#6187)
Xaroz May 9, 2025
de7c6ae
refactor: registry based warp config (#6174)
mshojaei-txfusion May 9, 2025
d3f8da9
feat: add svmBNB (#6172)
tkporter May 9, 2025
e35ad1a
chore: Upgrade Relayer and Scraper to latest (#6188)
ameten May 9, 2025
df7251d
chore: Upgrade Relayer RC and Neutron to latest (#6197)
ameten May 12, 2025
6bf0df0
chore: re-enable some testnets (#6184)
paulbalaji May 12, 2025
d54435c
fix: re-add registry commit to docker entry (#6203)
Xaroz May 12, 2025
2ae0f72
feat: cli warp check should assert that contracts are verified (#6167)
ltyu May 12, 2025
d182d7d
feat(sdk): fix out of order validators array in ism triggers check vi…
xeno097 May 12, 2025
672d6d1
feat(sdk,cli): expand ism and hook configs to compare on chain and a…
xeno097 May 12, 2025
575013e
feat: basic evm gas price estimator (#6204)
daniel-savu May 13, 2025
b360802
feat(utils,sdk,cli): metadata checks trigger false positives in cli …
xeno097 May 13, 2025
aec8961
feat(cli): improve cli checker output verbosity [ENG-1612] (#6183)
xeno097 May 13, 2025
430d1b4
chore: add cosmos native signer strategy to cli (#6124)
troykessler May 13, 2025
9a87ab6
fix: Retry on getting Relayer balance in E2E since Relayer may not be…
ameten May 13, 2025
e9d58d6
feat: rework server setup for agents (#6164)
kamiyaa May 13, 2025
07faadd
feat: Remove createWarpRouteConfigId() from metrics.ts and monitor-wa…
ltyu May 13, 2025
e2a4727
feat: may 12 mainnets (#6209)
paulbalaji May 14, 2025
0fffbfb
feat: update svm gas oracles (#6218)
paulbalaji May 14, 2025
abf32cd
feat: reduce ccip read dos vector (#6207)
kamiyaa May 14, 2025
d7c7343
chore: resume relayer with reorg failsafe; trial new submitter on lin…
daniel-savu May 14, 2025
6a70b8d
chore: move executeDeploy logic from CLI to SDK (#6222)
Xaroz May 14, 2025
e25af4b
fix: warp route id lookup source (#6223)
mshojaei-txfusion May 14, 2025
6cadc4b
Version Packages (#6116)
github-actions[bot] May 14, 2025
178443c
feat: CCIP-read ISM relayer authentication (#6144)
nambrot May 14, 2025
2a0c848
feat: Support VSXERC20 token standard in warp monitor (#6225)
Mo-Hussain May 15, 2025
cc61fdb
fix: changelog typos (#6234)
paulbalaji May 15, 2025
5b833e8
chore: update svm igp config (#6236)
xeno097 May 15, 2025
f8696c7
feat: Add Starknet contract ABI fetching and contract artifact genera…
ljankovic-txfusion May 15, 2025
1482467
feat: add tUSD/eclipsemainnet-ethereum warp route (#6220)
antigremlin May 15, 2025
0de63e0
feat: add Starknet address and transaction utilities [STARKNET-02] (#…
ljankovic-txfusion May 16, 2025
b98468d
fix: monorepo docker builds (#6245)
paulbalaji May 16, 2025
69b4640
fix: disable suavetoliman + sonicsvmtestnet in infra (#6248)
paulbalaji May 16, 2025
bc58283
feat: Starknet SDK logic integration [STARKNET-03] (#5838)
ljankovic-txfusion May 16, 2025
72b90f8
chore: add cosmos core module & reader (#6241)
troykessler May 16, 2025
bb47b67
feat: add apechain to solana igp (#6246)
paulbalaji May 16, 2025
03eebc3
feat: Make the validator's panic message scarier if there's a detecte…
kamiyaa May 16, 2025
84f5b21
chore: updated registry rc to update docker images (#6252)
xeno097 May 16, 2025
66dac25
chore: default to only amd64 docker builds (#6256)
paulbalaji May 17, 2025
2724559
chore: add routing ism to cosmos-types and sdk (#6244)
troykessler May 19, 2025
1a7222b
refactor: Compress Starknet logo in widgets (#5857)
ljankovic-txfusion May 19, 2025
e193176
Version Packages (#6237)
github-actions[bot] May 19, 2025
93155a4
fix: special-case darwin in fetch-contracts-release.sh (#6266)
paulbalaji May 19, 2025
82be018
chore: update print-latest-checkpoints to support all chains (#6254)
paulbalaji May 19, 2025
86b1ebb
Merge branch 'main' into feat/zksync-verification-classes
mshojaei-txfusion May 19, 2025
4f03dad
fix: add repository to starknet package.json (#6270)
paulbalaji May 19, 2025
736dc19
chore: add `MIRAI/abstract-bsc-solanamainnet` (#6238)
christopherbrumm May 19, 2025
8601b16
feat: subtensor USDC (#6277)
ltyu May 19, 2025
409e325
fix: Avoid holding lock on nonce manager with a remote call (#6268)
ameten May 20, 2025
7fac7f3
Merge remote-tracking branch 'origin/main' into feat/zksync-verificat…
ljankovic-txfusion May 20, 2025
1a597e9
chore: evm e2e with new submitter (#6196)
daniel-savu May 20, 2025
2faf54e
fix: storage diff-check (#6290)
paulbalaji May 20, 2025
d03a8ff
chore: depot docker recommendations (#6258)
paulbalaji May 21, 2025
7aae0ec
feat: setup turborepo (#3899)
paulbalaji May 21, 2025
ac13dde
chore: add cosmos native core cli commands (#6263)
troykessler May 21, 2025
33f88c2
feat(relayer): optimize ccip-read initialization (#6299)
daniel-savu May 21, 2025
0c4037f
fix: require ssl for connection (#6285)
Mo-Hussain May 21, 2025
61cc963
fix: priority gas price overpayments (#6295)
daniel-savu May 21, 2025
5840ad1
chore: update monitor image to include new token standard handling (#…
Mo-Hussain May 21, 2025
db5744e
fix: token metadata handling (#6175)
christopherbrumm May 21, 2025
1c01a4f
fix: Scraper: Fix issue with missing enum invariant for Sealevel (#6298)
ameten May 21, 2025
197fd87
chore: new relayer image (#6304)
daniel-savu May 21, 2025
689ed7c
chore: reduce release-e2e-matrix frequency (#6296)
paulbalaji May 21, 2025
89a7c6f
fix(submitter): Fix transaction fields (#6306)
ameten May 21, 2025
e67cb5f
chore: Upgrade Scraper to latest (#6307)
ameten May 21, 2025
ec1ba92
chore: add `sol`, `ufd`, `fartcoin`& `pengu` (#6249)
christopherbrumm May 21, 2025
1c84dab
Merge branch 'main' into feat/zksync-verification-classes
mshojaei-txfusion May 22, 2025
204323f
refactor(PostDeploymentContractVerifier): streamline contract verific…
mshojaei-txfusion May 22, 2025
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
5 changes: 5 additions & 0 deletions .changeset/orange-cats-stare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@hyperlane-xyz/sdk': minor
---

Add ZKSync contract verification with custom compiler options and refactor verification classes
207 changes: 207 additions & 0 deletions typescript/sdk/src/deploy/verify/BaseContractVerifier.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
import { Logger } from 'pino';

import { isZeroishAddress, rootLogger, sleep } from '@hyperlane-xyz/utils';

import { ExplorerFamily } from '../../metadata/chainMetadataTypes.js';
import { MultiProvider } from '../../providers/MultiProvider.js';
import { ChainName } from '../../types.js';

import {
BuildArtifact,
ContractVerificationInput,
SolidityStandardJsonInput,
} from './types.js';
import { FamilyVerificationDelay } from './utils.js';

export abstract class BaseContractVerifier {
protected logger = rootLogger.child({ module: this.constructor.name });
protected contractSourceMap: { [contractName: string]: string } = {};
protected readonly standardInputJson: SolidityStandardJsonInput;

constructor(
protected readonly multiProvider: MultiProvider,
buildArtifact: BuildArtifact,
) {
this.standardInputJson = buildArtifact.input;
this.createContractSourceMapFromBuildArtifacts();
}

protected createContractSourceMapFromBuildArtifacts(): void {
const contractRegex = /contract\s+([A-Z][a-zA-Z0-9]*)/g;
Object.entries(this.standardInputJson.sources).forEach(
([sourceName, { content }]) => {
const matches = content.matchAll(contractRegex);
for (const match of matches) {
const contractName = match[1];
if (contractName) {
this.contractSourceMap[contractName] = sourceName;
}
}
},
);
}

public async verifyContract(
chain: ChainName,
input: ContractVerificationInput,
logger = this.logger,
): Promise<void> {
const verificationLogger = logger.child({
chain,
name: input.name,
address: input.address,
});

if (!this.shouldVerifyContract(chain, input, verificationLogger)) {
return;
}

const explorerApi = this.multiProvider.tryGetExplorerApi(chain);

await sleep(
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this needed, and why only for etherscan? whats the difference of sleeping here and also in submitForm()

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

on etherscan, it took a while after contract deployment that etherscan servers can notify that this contract is deployed
so we wait a bit then request for verification.
on others did not have any problem when request for instant verification after deployment.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On submit form we wait for verification but here we wait for explorer to scan recently deployed contract. as the way explorers work is scanning blockchain and storing data on DB, this would be required here.

FamilyVerificationDelay[
explorerApi?.family as keyof typeof FamilyVerificationDelay
] ?? 0,
);
await this.verify(chain, input, verificationLogger);
}

protected shouldVerifyContract(
chain: ChainName,
input: ContractVerificationInput,
verificationLogger: Logger,
): boolean {
const metadata = this.multiProvider.tryGetChainMetadata(chain);
const rpcUrl = metadata?.rpcUrls[0].http ?? '';
if (rpcUrl.includes('localhost') || rpcUrl.includes('127.0.0.1')) {
verificationLogger.debug('Skipping verification for local endpoints');
return false;
}

const explorerApi = this.multiProvider.tryGetExplorerApi(chain);
if (!explorerApi) {
verificationLogger.debug('No explorer API set, skipping');
return false;
}

if (!explorerApi.family) {
verificationLogger.debug(`No explorer family set, skipping`);
return false;
}

if (explorerApi.family === ExplorerFamily.Other) {
verificationLogger.debug(`Unsupported explorer family, skipping`);
return false;
}

if (isZeroishAddress(input.address)) return false;
if (Array.isArray(input.constructorArguments)) {
verificationLogger.debug(
'Constructor arguments in legacy format, skipping',
);
return false;
}

return true;
}

protected abstract verify(
chain: ChainName,
input: ContractVerificationInput,
verificationLogger: Logger,
): Promise<void>;

protected getImplementationData(
chain: ChainName,
input: ContractVerificationInput,
verificationLogger: Logger,
) {
const sourceName = this.contractSourceMap[input.name];
if (!sourceName) {
const errorMessage = `Contract '${input.name}' not found in provided build artifact`;
verificationLogger.error(errorMessage);
throw new Error(`[${chain}] ${errorMessage}`);
}

const filteredStandardInputJson =
this.filterStandardInputJsonByContractName(
input.name,
this.standardInputJson,
verificationLogger,
);

return this.prepareImplementationData(
sourceName,
input,
filteredStandardInputJson,
);
}

protected abstract prepareImplementationData(
sourceName: string,
input: ContractVerificationInput,
filteredStandardInputJson: SolidityStandardJsonInput,
): any;

protected filterStandardInputJsonByContractName(
contractName: string,
input: SolidityStandardJsonInput,
verificationLogger: Logger,
): SolidityStandardJsonInput {
verificationLogger.trace(
{ contractName },
'Filtering unused contracts from solidity standard input JSON....',
);
const filteredSources: SolidityStandardJsonInput['sources'] = {};
const sourceFiles: string[] = Object.keys(input.sources);
const contractFile: string = this.contractSourceMap[contractName];
const queue: string[] = [contractFile];
const processed = new Set<string>();

while (queue.length > 0) {
const file = queue.shift()!;
if (processed.has(file)) continue;
processed.add(file);

filteredSources[file] = input.sources[file];

const content = input.sources[file].content;
const importStatements = this.getAllImportStatements(content);

importStatements.forEach((importStatement) => {
const importPath = importStatement.match(/["']([^"']+)["']/)?.[1];
if (importPath) {
const resolvedPath = this.resolveImportPath(file, importPath);
if (sourceFiles.includes(resolvedPath)) queue.push(resolvedPath);
}
});
}

return {
...input,
sources: filteredSources,
};
}

protected getAllImportStatements(content: string): string[] {
const importRegex =
/import\s+(?:(?:(?:"[^"]+"|'[^']+')\s*;)|(?:{[^}]+}\s+from\s+(?:"[^"]+"|'[^']+')\s*;)|(?:\s*(?:"[^"]+"|'[^']+')\s*;))/g;
return content.match(importRegex) || [];
}

protected resolveImportPath(currentFile: string, importPath: string): string {
if (importPath.startsWith('@') || importPath.startsWith('http')) {
return importPath;
}
const currentDir = currentFile.split('/').slice(0, -1).join('/');
const resolvedPath = importPath.split('/').reduce((acc, part) => {
if (part === '..') {
acc.pop();
} else if (part !== '.') {
acc.push(part);
}
return acc;
}, currentDir.split('/'));
return resolvedPath.join('/');
}
}
Loading