fix: earnUSDe re-deploy (Ethereum + Mantle + Plasma)#162
Merged
tamtamchik merged 11 commits intoJun 2, 2026
Conversation
- 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)
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates on-chain configuration samples (notably earnUSDe SwapModule proxy redeploy + constructor calldata) and improves Solidity compiler output handling to surface clearer CompileErrors, while also adding several new mainnet config samples and expanding the regression workflow matrix.
Changes:
- Improve
compile_contracts()error handling for non-JSON / no-contracts solc output, with new pytest coverage. - Update earnUSDe (Ethereum + Plasma) meta configs to reflect redeployed SwapModule proxy addresses and provide missing proxy constructor calldata.
- Add new mainnet config samples (VaultHub/LazyOracle/EasyTrack v3.0.2, GGV Migrator V2, CircuitBreaker) and run CircuitBreaker in regression CI.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
tests/test_compiler.py |
Adds tests asserting compile_contracts() raises CompileError on malformed/empty solc output and succeeds on valid output. |
diffyscan/utils/compiler.py |
Parses solc stdout as JSON with clearer failures; raises CompileError when "contracts" is missing. |
config_samples/plasma/mainnet/meta/meta_usde_plasma_config.yaml |
Updates Plasma SwapModule proxy address and its constructor calldata for bytecode comparison. |
config_samples/ethereum/mainnet/meta/meta_usd_config.yaml |
Updates earnUSDe SwapModule proxy address, adds missing proxy constructor calldata, and removes AaveOracle wrapper entry. |
config_samples/ethereum/mainnet/vaults/vaults_v3_0_2_vaulthub_config.json |
Adds a VaultHub config sample with constructor args for bytecode comparison. |
config_samples/ethereum/mainnet/vaults/vaults_v3_0_2_lazyoracle_config.json |
Adds a LazyOracle config sample with constructor args for bytecode comparison. |
config_samples/ethereum/mainnet/vaults/vaults_v3_0_2_easytrack_config.json |
Adds Easy Track config samples with constructor args for bytecode comparison. |
config_samples/ethereum/mainnet/ggv_migrator_v2_config.yaml |
Adds a GGV Migrator V2 config sample with constructor args for bytecode comparison. |
config_samples/ethereum/mainnet/circuit-breaker/circuit_breaker_config.yaml |
Adds a CircuitBreaker config sample with constructor args for bytecode comparison. |
.github/workflows/regression.yml |
Adds CircuitBreaker config to the regression matrix. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- 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.
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.
Updates the earnUSDe (Experimental) meta configs for the redeployed contracts on Ethereum, Mantle, and Plasma, plus a small Ethereum
meta_corecalldata fix.Ethereum (
meta_usd_config.yaml)SyncDepositQueue (USDe)Mantle (
meta_usde_mantle_config.yaml)BurnableTokenizedShareManagerPlasma (
meta_usde_plasma_config.yaml)BurnableTokenizedShareManagerEthereum
meta_core_config.yamlconstructor_calldatafor 8 core implementations (Vault, DepositQueue, Oracle, TokenizedShareManager, FeeManager, RiskManager, Subvault, Verifier) — they had no calldata and the explorer returns empty args, so diffyscan reported false bytecode mismatches. All 8 now fully match.Arbitrum
meta_usde_arb_config.yaml(no current Arbitrum earnUSDe deployment to track).Notes
TransparentUpgradeableProxy).ExceptionHandlerrework) were reverted from this PR — they broke a valid eth_call-revert case in CI and will be reworked in a separate PR.meta_core, node_handler tweaks) that predate the earnUSDe work.