[VPD-1134] add EBrake and Sentinel deployments for ethereum, arbitrumone, basemainnet#65
Merged
Conversation
Non-BSC networks have no local Unitroller artifact; resolve comptroller and ResilientOracle from isolated-pools and oracle package deployments. Fix Ownable2Step transferOwnership re-running on every deploy by checking pendingOwner. Add post-deploy implementation verification for all Sentinel contracts.
… arbitrumone, basemainnet
verification tasks throw HardhatNetworkNotSupportedError when running against the local hardhat network; gate all verify:verify calls behind network.live.
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
Enables eBTC/WBTC pricing via Curve's built-in EMA price oracle, avoiding the need to deploy a separate TWAP. Price direction verified empirically against the live eBTC/WBTC pool on Ethereum mainnet.
Aerodrome Slipstream slot0() returns 6 values (no feeProtocol), incompatible with IUniswapV3Pool. Adds a dedicated interface and oracle contract with identical sqrtPriceX96 math.
… price EMA price_oracle smooths out manipulation, defeating the sentinel's purpose of detecting short-term on-chain price deviations. get_dy returns the instantaneous swap output, reflecting the current pool state. Also adds refCoinIndex to config for N-coin pool support and explicit decimal params to avoid per-call STATICCALL overhead.
…setDecimals refDecimals cancel out in the derivation — the correct divisor is 10^assetDecimals, not 10^refDecimals. Both are equivalent for same-decimal pairs (eBTC/WBTC) but diverge by 10^(refDecimals-assetDecimals) for cross-decimal pools. Also removes refDecimals from PoolConfig and setPoolConfig since it is not needed.
Redeploy CurveOracle implementation with the corrected pricing formula (dy * refPriceUsd / 10^assetDecimals). upgradeAndCall was re-invoking initialize on an already-initialized proxy — fix by checking for existing proxy and omitting execute block on upgrades so ProxyAdmin.upgrade() is used instead.
[VPD-1118][VPD-1141] add CurveOracle and AerodromeSlipstreamOracle
|
Contributor
|
lgtm |
Debugger022
pushed a commit
that referenced
this pull request
May 14, 2026
## 1.2.0-dev.8 (2026-05-03) * Merge pull request #65 from VenusProtocol/feat/VPD-1134 ([c2e9787](c2e9787)), closes [#65](#65) * Merge pull request #66 from VenusProtocol/feat/VPD-1118 ([cbbda88](cbbda88)), closes [#66](#66) * feat: add deviation + ebrake deployments on sepolia ([0389cda](0389cda)) * feat: updating deployment files ([d4cd975](d4cd975)) * feat: updating deployment files ([8945c6d](8945c6d)) * feat: updating deployment files ([89d841e](89d841e)) * feat(deploy): enable EBrake and Sentinel deployment on IL chains ([7fa889a](7fa889a)) * feat(sentinel): add AerodromeSlipstreamOracle for Base ([fa10f6a](fa10f6a)) * feat(sentinel): add CurveOracle for Curve StableSwap-NG pools ([a2aee7c](a2aee7c)) * fix(CurveOracle): correct pricing formula to dy * refPriceUsd / 10^assetDecimals ([169d45c](169d45c)) * fix(deploy): skip contract verification on hardhat network ([9994306](9994306)) * fix(deploy): upgrade CurveOracle impl and fix re-init revert on upgrades ([2c48a8e](2c48a8e)) * fix(deploy): use OptimizedTransparentProxy pattern to fix uninitialized proxy ([8df7c69](8df7c69)) * chore(deployments): add AerodromeSlipstreamOracle deployment for basemainnet ([69527f1](69527f1)) * chore(deployments): add CurveOracle deployment for ethereum ([af7c831](af7c831)) * chore(deployments): add EBrake and Sentinel deployments for ethereum, arbitrumone, basemainnet ([b22c64e](b22c64e)) * chore(deployments): redeploy CurveOracle proxy on ethereum with new impl ([72a5ffa](72a5ffa)) * refactor(CurveOracle): use get_dy instead of price_oracle for instant price ([16e577a](16e577a))
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.
Summary
isolated-poolsandoraclepackage deploymentstransferOwnershipto re-run on every deploy sinceowner()never changes until the timelock callsacceptOwnership; fixed by checkingpendingOwnerbefore sendingChanges
helpers/deploymentConfig.tsisolated-poolsandoraclepackage imports for all 14 IL networksUnitroller(→Comptroller_Core) andResilientOracletopreconfiguredAddressesfor all non-BSC networksdeploy/2-deploy-ebrake.tspreconfiguredAddresses.Unitroller/NormalTimelockwhen local deployment artifact returns zero addresstransferOwnershipwithpendingOwner !== timelockto prevent redundant txs on re-runsdeploy/1-deploy-sentinel.tsverify:verifycall after eachnewlyDeployedcontracttransferOwnershipcalls withpendingOwnercheck (same Ownable2Step fix)deployments/Test plan
npx hardhat deploy --tags ebrake --network ethereum→ should print "reusing" for all contractsnpx hardhat deploy --tags sentinel --network ethereum→ should print "reusing", no ownership transfer tx sentdeployments/