Euler V2
DAMASCUSLending / Borrowing · Ethereum · $800M+ TVL · 15 contracts
Public risk assessment — scores are produced with the same methodology as monitored protocols
Security Profile
80
78
78
70
62
55
41
82
75
62
80
78
78
70
62
55
41
82
75
62
Audit History
Bug Bounty Program
Assessment
Full 6-graph analysis confirms well-engineered protocol. 3183 nodes, 8062 edges, 22.4MB of graph data analyzed. 6/6 honest negatives on fork validation. V1 exploit history drags D6 (55), EVC structural complexity is high but intentional. Raised from prior 813/620 to calibrated 760 based on honest-negative-adjusted scoring: access control extractor limitation means structural findings are inflated, but protocol is genuinely complex. DAMASCUS = safe but complex, which matches.
Dimension Breakdown
How scores work →- EVC operator/sub-account model with 12 modifiers across EVC contract
- EVault authority_topology shows all public functions as permissionless (graph limitation: misses custom modifiers)
- GenericFactory function_authorities has 96 entries covering all governance functions
- ProtocolConfig has tau_star=0.75 with 1 bypass surface (admin-gated config setters)
- EVC bypass_surfaces=99 is concerning but reflects complex internal permission model, not lack of access control
- Isolated vault model limits contagion; each vault is independent contract
- sv_totalShares written by 7 functions (well-defined write surface)
- sv_cash written by 6 functions including skim and pullAssets/pushAssets
- IRM modular and well-designed; interestAccumulator written by 4 functions
- Reaction screen: 76 CONSERVATION_BREAK candidates (42 passed, 0.553 rate)
- ESR yield distribution via gulp() has re-smearing risk
- Oracle-agnostic per vault (governor chooses oracle adapter)
- 12 oracle adapters supported (Chainlink, Pyth, RedStone, etc.)
- QVC blueprint identifies 5 dangerous empty cells related to oracle composition
- No protocol-level oracle manipulation protection beyond per-vault configuration
- PERMISSIONLESS_FACTORY_CHAIN_TO_ORACLE singleton reaction found in screen
- V2 live since early 2024 (~2.3 years now)
- V1 EXPLOITED for $197M in March 2023 (major credibility event, Z-factor drag)
- V2 is complete rewrite (EVC architecture) but org carries V1 history
- Audited by multiple firms, active Immunefi bounty ($250K)
- 6/6 honest negatives on mainnet fork validation of our findings confirms maturity
- Z-factor: 0.69
- Governed vs Ungoverned perspectives (dual model)
- GenericFactory function_authorities lists 96 governed functions with authority_level and authority_cost
- Governor has significant config control per vault (setInterestFee, setMaxLiquidationDiscount, etc.)
- ProtocolConfig has tau_star=0.75 and 1 absorbing violation (admin can modify)
- DAO governance maturing but team-controlled
- Score derived from continuous adversarial security research
- Learned from V1 exploit: improved monitoring and response
- Active Immunefi bounty ($250K max)
- CI/CD pipeline with comprehensive testing
- V1 post-mortem was transparent and thorough
- SwapVerifier has 91 functions but 0 modifiers and 0 disconnected validations (clean verification layer)
- EVC is the primary composition layer; all vault operations route through EVC authentication
- 3 cross-contract compositions identified (EVC->EVault batch context, EVC->EVault permit, Factory->EVault delegatecall)
- GenericFactory and EVault share implementation address (tight coupling)
- EVC has 288 call edges to other functions; high compositional complexity
- GovernedPerspective validation gaps vs UngovernedPerspective
- Dominant functional groups: Co (Connector/Composition) at 0.55 for both EVault and EVC
- Appears in 6 cross-protocol cascade chain(s)
- Member of 6 dependency cluster(s)
- Score: 62/100 (higher = more isolated from systemic risk)
- Source: cross_protocol_composition.json dependency analysis
- Solidity v0.8.24 (modern, overflow-safe)
- EVC framework is novel but well-structured (776 nodes, clean edge structure)
- Standard OpenZeppelin base libraries
- Proxy patterns for vault deployment via GenericFactory (BeaconProxy)
- SequenceRegistry is minimal (7 nodes, 3 edges) -- clean utility contract
Risk Drivers
Primary risk factors driving this score, ordered by severity.
Adversarial Risk Signals
Observable security posture indicators. These signals reflect publicly verifiable information and responsible disclosure outcomes. No specific vulnerability details are exposed.
Score History & Verification
Score provenance tracking begins with the next reassessment.
On-Chain Data
- Protocol Slug
- "euler-v2"
- Oracle
- BRORegistry (Base)
- Evidence
- IPFS (pinned)
- Staleness Threshold
- 24 hours
registry.getScore("euler-v2")Reduce exploitable risk
BlackHart Monitoring provides continuous adversarial analysis, vulnerability detection, remediation support, and verified reassessment when your risk posture improves.