feat: mantle, arbitrum, base meta updates#149
Merged
Conversation
Add missing opcodes introduced in the Cancun/Dencun upgrade: - TLOAD (0x5C), TSTORE (0x5D) — transient storage (EIP-1153) - MCOPY (0x5E) — memory copy (EIP-5656) - BLOBHASH (0x49), BLOBBASEFEE (0x4A) — blob gas (EIP-4844, EIP-7516) Replace individual opcode tests with parametrized coverage of all 149 opcodes in the table, plus PUSH0..PUSH32 byte-length verification.
Add -C / --contract CLI option to filter which contracts are checked. Can be passed multiple times. Case-insensitive address matching. Usage: diffyscan config.yaml -C 0xAddr1 -C 0xAddr2
…s limit - Add rpc_url_env_var config field to specify chain-specific RPC env var (falls back to REMOTE_RPC_URL for backward compatibility) - Add -L / --local-rpc flag to override with LOCAL_RPC_URL (e.g. anvil) - Add deployment_gas_limit config field for chains with inflated gas costs (e.g. Mantle needs 30B gas for deployment simulation)
Add rpc_url_env_var, deployment_gas_limit (30B for Mantle's inflated gas), and full bytecode_comparison constructor_calldata for all contracts.
Add Arbitrum mainnet Mellow core config with all contract addresses, constructor calldata for bytecode comparison, and rpc_url_env_var. Known diff: RedeemQueue deployed from commit f164438c2d0d before shareManager_.burn() was added in later commits.
Move base meta configs to mainnet/ directory. Add full constructor calldata for bytecode comparison (shared CREATE2 addresses with Mantle). Add BurnableTokenizedShareManager missing from docs. Known diff: SyncDepositQueue deployed from commit 173e06c99f4f before immutable keyword was added to _syncDepositQueueStorageSlot.
Co-authored-by: Eugene Mamin <TheDZhon@gmail.com>
Co-authored-by: Eugene Mamin <TheDZhon@gmail.com>
Co-authored-by: Eugene Mamin <TheDZhon@gmail.com>
feat: TW easy tracks fix diffyscan config
Mellow redeployed on Arbitrum with deterministic CREATE2 addresses matching Mantle/Base. Update all contract addresses and constructor calldata accordingly. Only SwapModule has a unique Arbitrum address (0x00000000c324E2d1).
SyncDepositQueue on Base updated from 0x00000000c4Bf4fdF6... (old, pre-audit deployment without immutable fix) to 0x000000001CC8c3E40856E956db870095EF6C98bd (same as Mantle, matches audited commit c9c71818).
Add Plasma (chain ID 9745) Mellow core config with CREATE2 addresses. Contracts not yet verified on Etherscan v2 — config prepared for when verification becomes available. SwapModule address unique to Plasma: 0x00000000015fa996bCA8c842AFEdC334616F283A.
Bumps [pytest](https://github.com/pytest-dev/pytest) from 8.4.2 to 9.0.3. - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](pytest-dev/pytest@8.4.2...9.0.3) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.0.3 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
chore(deps-dev): bump pytest from 8.4.2 to 9.0.3
feat: Add ATokenWstETHSwap deployment config
chore: convert CircuitBreaker config to YAML
feat: add CircuitBreaker
feat: v3.0.2 configs
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…ility fix: raise CompileError when solc returns no contracts to avoid batch crash
feat: add GGVMigratorV2 deployment config
- eth/plasma SwapModule proxies -> redeployed addresses + ctor calldata - add missing ctor calldata for earnUSDe proxies (explorer returns empty) - drop orphaned AaveOracle wrapper (SwapModule now reads Aave oracle directly)
- replace all earnUSDe contract addresses with the new deployment - add SyncDepositQueue (USDe) - ctor calldata extracted from on-chain creation traces (CREATE2 proxies return empty args on Etherscan)
- replace 8 earnUSDe proxy addresses with the new Mantle deployment - ctor calldata extracted from on-chain creation traces - bump commented TimelockController address (still unverified on explorer)
- order contract groups to match the Ethereum earnUSDe config - enable TimelockController (relies on explorer ctor args, as on Ethereum)
- replace 5 core proxies + SwapModule + Subvault 0 / Verifier 0 - add Subvault 1 / Verifier 1 (new in this deploy) - switch ShareManager impl to BurnableTokenizedShareManager - add OracleSubmitter (unverified on explorer yet) and enable TimelockController - ctor calldata extracted from on-chain creation traces - reorder contract groups to match the Ethereum earnUSDe config
- replace all 8 proxy addresses with the new deployment - switch ShareManager impl to BurnableTokenizedShareManager - add OracleSubmitter and TimelockController (both unverified on explorer yet) - ctor calldata (proxies, OracleSubmitter, Timelock) from on-chain creation traces
No current Arbitrum earnUSDe deployment to track; meta_core_config stays.
A contract that can't be fetched/compared (e.g. unverified on the explorer) no longer aborts the whole run. It is logged, recorded in a new errored_contracts list, and processing continues with the next contract. Errored contracts are shown in the final summary and still cause a non-zero exit code, so they aren't masked as success.
Vault, DepositQueue, Oracle, TokenizedShareManager, FeeManager, RiskManager, Subvault, Verifier implementations had no constructor_calldata and the explorer returns empty args, so diffyscan couldn't simulate them and reported bytecode mismatches. Add their calldata (mirrors the shared implementations in meta_usd; TokenizedShareManager from creation trace). All 8 now fully match.
…andler Addresses Copilot review: - bytecode comparison errors (missing/bad calldata, compile/RPC failure) now abort the run instead of being silently downgraded to a mismatch; a plain bytecode mismatch still returns False and is reported as a diff - source/verification errors (e.g. unverified on explorer) stay non-fatal: logged, recorded, run continues - remove the now-dead ExceptionHandler / fail_on_bytecode_comparison_error mechanism (raise_exception_or_log was no longer called anywhere) from code, types, README, skills, tests and fixtures - errored-contract summary and log now include the config file path Note: the fail_on_bytecode_comparison_error key remains in config_samples as a harmless no-op (loader ignores unknown keys); cleaning those is left out of this PR to avoid a large unrelated diff.
Reverts the resilience fix (ea789f0) and the bytecode-error-fatal refactor (b756645). The fatal-on-bytecode-error behavior broke a valid case (eth_call revert during deploy simulation, previously reported as an allowed diff — hoodi_vaults_testnet regression). Error-handling will be reworked in a separate PR. earnUSDe configs and the Ethereum meta_core calldata fix (b93d6e1) are kept.
…ploy fix: earnUSDe re-deploy (Ethereum + Mantle + Plasma)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Accumulates Mellow meta/vault config updates and supporting tooling fixes for the
feat/mantle-metatrack. Rolls up several merged PRs (#147, #150, #152, #154/#155, #160, #161, #162).Mellow
metaconfigsearnUSDe redeploys (proxy ctor calldata extracted from on-chain creation traces; CREATE2 ⇒ empty args on explorers):
meta_usd_config.yaml): all earnUSDe addresses → new deployment; addSyncDepositQueue (USDe); drop orphaned AaveOracle wrapper.meta_usde_mantle_config.yaml): 8 proxies → latest deployment; ShareManager impl →BurnableTokenizedShareManager; add OracleSubmitter + TimelockController; reorder to match Ethereum.meta_usde_plasma_config.yaml): core proxies + SwapModule + Subvault 0/Verifier 0; add Subvault 1/Verifier 1; ShareManager impl →BurnableTokenizedShareManager; add OracleSubmitter; enable TimelockController; reorder to match Ethereum.core configs:
meta_core_config.yamlfor Arbitrum, Base, Plasma.meta_core: add missingconstructor_calldatafor 8 implementations (Vault, DepositQueue, Oracle, TokenizedShareManager, FeeManager, RiskManager, Subvault, Verifier) → all now fully match.meta_usdcconfig undermainnet/.Other configs
circuit_breaker_config.yaml) + regression-matrix entry.ggv_migrator_v2_config.yaml).Tooling & fixes
compiler.py) + tests.diffyscan.py/node_handler.py/constants.pytweaks;--contractfilter tests; bytecode-metadata tests..env.example, and skills doc updates.Verification
diffyscan run across all touched networks: sources identical; verified non-proxy contracts match byte-for-byte;
TransparentUpgradeableProxyinstances differ only on the immutable ProxyAdmin reference (expected).Note: an error-handling rework (resilience to unverified contracts) was prototyped under #162 but reverted before merge — to be done in a dedicated PR.