DeFiPunk'd

Maple Finance

2 deployments · $2.0B aggregate TVL · Lending

Deployments

Each deployment is rated independently. Pick one to see its rating, risk analysis, and stage.

TVL $2.0B
Type Lending
Chains Ethereum, Solana
View on DeFiLlama ↗
Control criteria
Upgradeability Upgradeable Bug bounty immunefi.com Governance forum Docs docs.maple.finance
About

Maple is an on-chain lending and asset-management protocol where lenders deposit stablecoins into pools such as syrupUSDC and syrupUSDT, and pool assets are deployed into institutional credit, liquidity provisioning, and related yield strategies. Syrup exposes Maple's institutional lending market through DeFi integrations; smart-contract deposits route through SyrupRouter and PoolPermissionManager, while withdrawals use requestRedeem into a FIFO queue.

Risk analysis

One card per dimension, sorted by severity. Only Verifiability and Autonomy carry automated signals in Phase 0. See methodology for scope.

Audit a dimension yourself · DEFI@home Contribute an LLM-run assessment — any model, any dimension. Three agreeing runs merge automatically into the public record.

DEFI@home is a distributed audit network modeled on SETI@home: instead of CPU cycles, it crowdsources LLM reasoning. Paste a slice prompt into Claude, ChatGPT, Gemini, or any browsing-capable model, and submit the JSON output as a pull request. The quorum bot merges it once ≥3 independent runs (from different models) reach the same grade — no single model, and no single contributor, can move the needle alone. How it works →

  • Address discovery 28 addresses on file · 1 run Submit run ↗
  • Verifiability ✓ 4/4 models agree AI-only weak green — weak consensus margin Submit run ↗
  • Control ✓ 3/3 models agree AI-only 3/3 with chat share link Submit run ↗
  • Ability to exit ✓ 3/3 models agree AI-only 3/3 with chat share link Submit run ↗
  • Autonomy ✓ 3/3 models agree AI-only weak orange — weak consensus margin; total support weight 1.14 below confidence floor (1.5) Submit run ↗
  • Open Access 3/3 submitted Submit run ↗
  • Audit all 5 dimensions · one prompt Submit run ↗
  1. Verifiability tentative 4/4 models agree AI-only 3/4 with chat share link
    All sampled core contracts verified on Etherscan; proxies and implementations both verified; recent audits (Dec 2024, Sept–Nov 2025, Jan 2026) from Spearbit, Sigma Prime, Three Sigma, and 0xMacro
    Verdict

    Choosing green because all sampled core contracts are verified on Etherscan (proxy + implementation), a public source repo exists at maple-labs/maple-core-v2, and the most recently deployed contracts are covered by audits from recognized firms within 6 months: Spearbit covered the WithdrawalManager in Nov 2025 and Sigma Prime covered the CCIP Receiver in Jan 2026. The GovernorTimelock upgrade was audited by Sherlock and 0xMacro in Sept 2025 (~8 months). The Dec 2024 audit covered core PoolManager/Globals contracts by Three Sigma and 0xMacro. While commit-SHA correspondence and bytecode diff were not performed (scope limit noted), the combination of verified contracts + recognized-firm coverage within the drift window satisfies the green criteria.

    Steelman argument
    Steelman argument All core contracts are verified on Etherscan with both proxy and implementation; recent audits include Spearbit (Nov 2025) and Sigma Prime (Jan 2026), both on the recognized-firm list, covering the most recently deployed contracts; Trail of Bits covered core architecture in 2022; public GitHub repo exists.
    Evidence (6)
    V1
    MaplePool (syrupUSDC, 0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b): verified=true, contractName='MaplePool', abiSource='etherscan', no proxy. PoolManager proxy (0x7aD5fFa5fdF509E30186F4609c2f6269f4B6158F): verified=true, proxy detected; implementation 0xfE02Be1aD28EdFd8e3dD6F29C402B244C2A258B8 merged. MapleGlobals NonTransparentProxy (0x804a6F5F667170F545Bf14e5DDB48C70B788390C): verified, proxy → implementation 0x9BeAbb1B6F3ad1DdB87b65148BA5Eb6102334956. GovernorTimelock (0x2eFFf88747EB5a3FF00d4d8d0f0800E306C0426b): verified, contractName='GovernorTimelock'. PoolPermissionManager (0xBe10aDcE8B6E3E02Db384E7FaDA5395DD113D8b3): verified=true, proxy → implementation 0xC3530358e54bC81EfCe4A2e12A898E996B091753 confirmed. All key core contracts: proxy AND implementation both verified.
    V2
    Public source repository: https://github.com/maple-labs/maple-core-v2 cited in docs and address book. https://github.com/maple-labs/maple-cross-chain-receiver for CCIP contracts. Source-to-repo correspondence not independently compiled this run (no bytecode diff performed); recorded in unknowns.
    V3
    Audit coverage from docs.maple.finance/technical-resources/security/security (fetched this run): Dec 2024 release audited by Three Sigma and 0xMacro covering core contracts. Sept 2025: GovernorTimelock upgrade audited by Sherlock and 0xMacro. Nov 2025: WithdrawalManager upgrade audited by Spearbit and Sherlock. Jan 2026: CCIP Receiver audited by Sigma Prime (Spearbit also in Nov 2025 for CCIP context). The GovernorTimelock currently deployed was covered by the Sept 2025 audits (within 8 months of analysis date). Core contracts (PoolManager, Globals) covered by Dec 2024 audit (~5 months before analysis date).
    V4
    Recognized auditors (per rubric list): Spearbit (Nov 2025 WM audit, 2022 core), Sigma Prime (Jan 2026 CCIP). Three Sigma not on the explicit rubric list but is a well-known specialized firm. Trail of Bits (2022). Sherlock and 0xMacro are not on the rubric recognized-firm list. However, the most recent audits include Spearbit (recognized) and Sigma Prime (recognized), both covering deployments within the last 6 months.
    V5
    Post-audit drift assessment: Most recently deployed contract set covered by Dec 2024 audit (~5 months). GovernorTimelock (current deployment) covered by Sept 2025 audit (~8 months). WithdrawalManager upgrade covered by Nov 2025 Spearbit+Sherlock audit (~6 months). No evidence of material unaudited changes to fund-custody/accounting contracts observed this run. Drift not fully enumerated (commit SHA comparison not performed); recorded in unknowns as scope limit.
    V6
    All sampled proxies (Globals, PoolManager, PoolPermissionManager) have verified implementations. No unverified proxy-over-unverified-implementation pattern found.
    Why is this consensus tentative?
    • weak consensus margin

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources claude-sonnet-4-6 url ↗ claude-sonnet-4-6 (autorun) no url grok-4 url ↗ gpt-5.5-thinking url ↗ View raw submissions ↗
  2. Control orange 3/3 models agree AI-only 3/3 with chat share link
    4-of-7 daoMultisig proposes through a custom 3-day GovernorTimelock; securityAdmin (3-of-6) can pause the entire protocol immediately with no time cap
    Verdict

    Choosing orange because T1 is reachable on the uncontested fast path at zero delay via the securityAdmin (3-of-6) calling setProtocolPause on Globals (0x804a6F5F667170F545Bf14e5DDB48C70B788390C confirmed protocolPaused=false and securityAdmin=0x6b1A78C1943b03086F7Ee53360f9b0672bD60818), and at 3 days via GovernorTimelock for implementation upgrades. The 3-of-6 threshold does not trigger the red rule ('single EOA or 2-of-3 multisig') but it also does not meet Security Council standards, and the pause path has no documented on-chain time cap. The upgrade path at 3 days is below the 7-day bar for green on T1 paths.

    Steelman argument
    Steelman argument T1 is reachable via emergency pause (zero delay, 3-of-6 multisig) and via upgrade (3-day delay); neither path meets the 7-day bar for green, and the securityAdmin fails Security Council criteria; but a 3-of-6 is meaningfully harder to compromise than a 2-of-3 so does not trigger the red rule.
    Evidence (7)
    C1
    MapleGlobals NonTransparentProxy (0x804a6F5F667170F545Bf14e5DDB48C70B788390C) admin()=governor()=GovernorTimelock (0x2eFFf88747EB5a3FF00d4d8d0f0800E306C0426b). PoolManager for syrupUSDC (0x7aD5fFa5fdF509E30186F4609c2f6269f4B6158F) governor()=same GovernorTimelock. securityAdmin()=0x6b1A78C1943b03086F7Ee53360f9b0672bD60818 (3-of-6 Gnosis Safe). operationalAdmin()=0xCe1cE7c7F436DCc4E28Bc8bf86115514d3DC34E8 (actor class unverified beyond Safe proxy ABI).
    C2
    MapleGlobals uses a NonTransparentProxy pattern: admin (GovernorTimelock) can call setImplementation(address) directly on the proxy to replace the logic contract, a T1 upgrade path. PoolManager is a factory-pattern Proxy (implementation 0xfE02Be1aD28EdFd8e3dD6F29C402B244C2A258B8); it exposes upgrade(version,bytes) callable by governor or poolDelegate, also T1.
    C3
    Execution path for governance upgrades: (1) Proposer with PROPOSER_ROLE calls scheduleProposals(targets,data) on GovernorTimelock (0x2eFF...); proposer identity unverified this run — recorded in unknowns. (2) defaultTimelockParameters()=[259200,172800]: minimum 259200 s (3 days) delay before executeProposals may fire. MIN_DELAY=86400 s (1 day) sets the floor. (3) executeProposals calls target contracts. For Globals, some functions also require prior scheduling via Globals' own scheduledCalls mechanism (defaultTimelockParameters=[604800,172800], 7-day window), creating dual delays of 3+7=10 days for those specific actions. Uncontested fast path for setImplementation on Globals: 3 days.
    C4
    daoMultisig (0xd6d4Bcde6c816F17889f1Dd3000aF0261B03a196): 4-of-7 Gnosis Safe v1.3.0, 7 EOA signers. Signer identities not publicly verified this run. tokenWithdrawer on GovernorTimelock=daoMultisig. securityAdmin (0x6b1A78C1943b03086F7Ee53360f9b0672bD60818): 3-of-6 Gnosis Safe (older v1.1.0-based). Signer identities not verified this run. Power: call setProtocolPause and setContractPause on Globals. Neither multisig qualifies as Security Council (7+ signers, ≥51% threshold, ≥50% non-insider not verified).
    C5
    No on-chain token-weighted governor contract (OZ Governor, GovernorBravo) found. The GovernorTimelock is a custom contract with PROPOSER_ROLE controlling scheduling — it is not a standard token-voting system. Governance is off-chain multisig-gated.
    C6
    Emergency power: securityAdmin (3-of-6 Safe) can call setProtocolPause(bool) on Globals immediately, with no documented on-chain time cap. Globals confirms protocolPaused()=false at the time of reading. setContractPause(address,bool) can pause individual contracts. Both functions callable by securityAdmin without any timelock or governance vote.
    C7
    Highest T1 paths: (a) securityAdmin (3-of-6) → setProtocolPause(true) on Globals, zero delay — pauses withdrawals (T1, fund-critical). (b) GovernorTimelock (3-day delay, proposer unverified) → setImplementation on Globals proxy (T1, replaces core logic). (c) GovernorTimelock → upgrade() on PoolManager (T1). Fast-path T1 via pause = 0 days; via upgrade = 3 days. 3-of-6 multisig with zero timelock on the pause path is the dominant concern.
    Sources claude-sonnet-4-6 url ↗ grok-4 url ↗ gpt-5.5-thinking url ↗ View raw submissions ↗
  3. Ability to exit orange 3/3 models agree AI-only 3/3 with chat share link
    requestRedeem/redeem path exists on-chain; securityAdmin (3-of-6) can pause all exits including finalized claims indefinitely with no on-chain time cap
    Verdict

    Choosing orange because while exit functions exist and are on-chain callable (E7), the securityAdmin (3-of-6, confirmed at 0x6b1A78C1943b03086F7Ee53360f9b0672bD60818) can pause all protocol functions including finalized redemption claims via setProtocolPause on Globals (confirmed callable, no timelock, no on-chain time cap). The 3-of-6 threshold does not trigger the 'pause held by a single EOA / 2-of-3 multisig' red criterion, but the indefinite scope with no cap and no escape hatch keeps this firmly orange rather than green.

    Steelman argument
    Steelman argument The pause actor is a 3-of-6 multisig (not a single EOA or 2-of-3), requires coordination among 3 independent signers; the pause is described as a temporary emergency measure; users can withdraw directly on-chain when not paused; the protocol is not currently paused.
    Evidence (7)
    E1
    Exit functions on MaplePool (syrupUSDC, 0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b): requestRedeem(shares,owner), requestWithdraw(assets,owner), redeem(shares,receiver,owner), withdraw(assets,receiver,owner), removeShares(shares,owner). The flow is two-step: requestRedeem places shares into escrow in the WithdrawalManager (0x1bc47a0Dd0FdaB96E9eF982fdf1F34DC6207cfE3); redeem/withdraw claims them once liquidity is available.
    E2
    All exit functions ultimately route through PoolManager.canCall() which checks MapleGlobals. If protocolPaused()=true, the Globals rejects the call, blocking all pool interactions including both requestRedeem (new exit placement) and redeem (claim of previously queued position). No distinction between request and claim was observed in the ABI — both are gated by the global pause flag.
    E3
    Pause guard: MapleGlobals.setProtocolPause(bool) callable by securityAdmin (3-of-6 Safe, 0x6b1A78C1943b03086F7Ee53360f9b0672bD60818) with ZERO timelock. Globals also exposes setContractPause(address,bool) callable by securityAdmin for per-contract pausing. Currently protocolPaused()=false. No on-chain maximum pause duration is stored in Globals or the securityAdmin contract.
    E4
    Emergency pause path: securityAdmin (3-of-6) → setProtocolPause(true) → immediate effect, no cap. Governance path (slower): GovernorTimelock (3-day delay) → setProtocolPause via governor is also possible since governor controls Globals, but docs describe the securityAdmin as the emergency mechanism. The emergency path has no documented auto-expiry.
    E5
    Withdrawal queue: WithdrawalManager (0x1bc47a0Dd0FdaB96E9eF982fdf1F34DC6207cfE3) governs redemption timing. Queue duration depends on available pool liquidity and pool delegate decisions — no on-chain maximum queue duration constant was read this run. The November 2025 audit (Spearbit+Sherlock) covered a WM upgrade adding support for multiple pending requests per owner.
    E6
    No permissionless escape-hatch or emergency-exit mechanism found in the MaplePool or PoolManager ABIs that bypasses the global pause or the withdrawal queue. Users cannot exit adversarially without admin cooperation if the protocol is paused.
    E7
    Exit functions (requestRedeem, redeem, withdraw, removeShares) are standard ERC-4626-adjacent methods callable directly on the MaplePool contract (0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b) via any EVM-compatible wallet or Etherscan write tab, without requiring the official frontend — assuming the protocol is not paused.
    Sources claude-sonnet-4-6 url ↗ grok-4 url ↗ gpt-5.5-thinking url ↗ View raw submissions ↗
  4. Autonomy tentative 3/3 models agree AI-only 3/3 with chat share link
    Chainlink oracles for secured-lending collateral pricing; CCIP for cross-chain deposits; oracle address governance-mutable after 3-day delay; borrower defaults are acknowledged principal risk
    Verdict

    Choosing orange because the dominant external dependency risk is the 3-day governance-mutable oracle for the secured lending pool (A9: setPriceOracle with 3-day GovernorTimelock delay on Globals 0x804a6F5F667170F545Bf14e5DDB48C70B788390C), which is below the 7-day exit-window standard. Syrup pools (~$1.4B TVL, ~95%) depend on institutional borrower repayment (opt-in credit risk, graded A2) and CCIP for cross-chain deposits (~A3, does not affect mainnet exits). Secured lending pool (~$64M, ~5%) relies on Chainlink oracle for collateral liquidations, with governance-mutable oracle address and oracle-wrapper fallback of unverified activation status. Impacted TVS under a single-dependency failure: ~5% (secured lending pool on oracle failure), ~100% on governance oracle swap (but protected by 3-day delay). Overall: oracle change with 3-day window, and borrower default exposure, qualify for orange.

    Steelman argument
    Steelman argument Syrup pools (~95% of TVL) rely on borrower repayment rather than oracle pricing; the 3-day delay on oracle changes gives notice; oracle wrappers provide sanity checks; hasSufficientCover=true for syrupUSDC; CCIP failure affects only cross-chain flow, not mainnet principal; borrower default risk is opt-in credit risk.
    Evidence (7)
    A1
    MapleGlobals exposes getLatestPrice(address) and priceOracleOf(address) view methods, and setPriceOracle(address asset, address oracle, uint96 maxDelay) write method — confirming on-chain Chainlink oracle integration for collateral pricing used in secured lending. Docs confirm: 'Chainlink Oracles — Maple Finance uses Chainlink oracles to provide price feeds for the protocol.' For syrupUSDC and syrupUSDT pools (pure USDC/USDT lending), oracle pricing is not needed for basic deposit/redeem operations — principal impact here is from borrower defaults, not oracle failure. For securedLendingUSDCPool (~$64M AUM per website), oracle failure could cause mis-priced liquidations and potential principal impairment.
    A2
    Borrowers must be whitelisted by governance (setValidBorrower on Globals). Pool delegates (protocol-appointed addresses) manage loan deployment and repayment monitoring. Repayment depends on off-chain institutional counterparties. If borrowers default, the pool cover deposit (first-loss capital from pool delegate) absorbs losses up to its limit; excess losses fall on depositors. This is accepted credit risk in the product design, not an oracle-committee-style external dependency. PoolManager for syrupUSDC has hasSufficientCover()=true at time of reading.
    A3
    Chainlink CCIP bridge: MapleCCIPReceiver (0x02B6A75c5D1F430F0614dc5AC8aD5F9D35fbA2c4) allows cross-chain deposits into syrupUSDC. Audited Dec 2025/Jan 2026 by Dedaub and Sigma Prime. If CCIP fails or is exploited, cross-chain depositors would be unable to deposit or redeem via the cross-chain path; direct Ethereum mainnet deposits and redemptions would be unaffected. CCIP failure does not directly threaten existing mainnet TVL.
    A4
    No nested restaking or receipt-of-receipt design. Maple pools lend USDC directly to institutional borrowers with collateral managed by pool delegates. Not applicable.
    A6
    Docs describe two fallback mechanisms: (1) oracle wrappers to 'prevent oracle outages and oracle manipulation from causing issues during liquidations'; (2) manualOverridePrice(address) on Globals lets the governor set a manual override price, bypassing the Chainlink feed. Activation status of oracle wrappers: DOCUMENTED but on-chain state not verified this run (listed in unknowns). The manual override requires governance action (GovernorTimelock, 3-day delay).
    A8
    Liquidation bots: Maple requires keepers for loan default processing (triggerDefault on PoolManager). If nobody calls triggerDefault when a loan is overdue, bad debt may accumulate unchecked. The pool delegate is responsible for monitoring but this is a semi-permissioned keeper role. Failure is graceful (bad debt accrues) rather than catastrophic (immediate principal loss), as the unrealizedLosses mechanism tracks unrecognized defaults.
    A9
    Governor can call setPriceOracle(address asset, address oracle, uint96 maxDelay) on Globals via the 3-day GovernorTimelock (confirmed from Globals ABI and GovernorTimelock delay). This allows swapping the Chainlink feed for any pool to an attacker-controlled oracle — a genuine A9 finding. The 3-day delay on oracle changes is below the 7-day exit-window standard, so users have 3 days to observe a queued oracle swap and react. Similarly, setWithdrawalManager on PoolManager (governor-controlled after delay) could redirect withdrawals.
    Why is this consensus tentative?
    • weak consensus margin
    • total support weight 1.14 below confidence floor (1.5)

    A fresh independent run can strengthen (or overturn) the verdict.

    Run your own prompt Submit run ↗
    Sources claude-sonnet-4-6 url ↗ grok-4 url ↗ gpt-5.5-thinking url ↗ View raw submissions ↗
  5. Open Access 3/3 models submitted
    Syrup deposit admission is on-chain permissioned: Maple/permission-admin authorization is required even through SDK/direct-contract paths.
    Tentative grades
    • gpt-5.5-thinking red
    • claude-sonnet-4-6 orange
    • grok-4 green

    No quorum yet — verdict and steelman hidden until ≥3 models agree.

    Evidence (21)
    A1
    User entry is contract-level permissioned for Syrup deposits: deposits must route through SyrupRouter, PoolPermissionManager enforces lender permissions, first-time deposits require a Maple-provided authorization signature, and only authorized lenders can deposit.
    A2
    Admission to deposit requires Maple/permission-admin authorization for new lenders; withdrawal request placement via requestRedeem is documented as directly callable and does not require new off-chain approval in the integration snippet.
    A3
    Frontend/interface restrictions are active-policy context: Maple reserves the right to block IPs or wallet identities on the Interface, and Syrup jurisdictions exclude users/entities/access from restricted jurisdictions including the United States.
    A3b
    Independent access paths exist through the published Maple JS SDK and direct smart-contract integration docs, but they do not remove the contract-level deposit authorization requirement.
    A4
    No on-chain OFAC/sanctions blocklist check was verified in the core Pool/PoolPermissionManager ABI; the verified contract-level gate is Maple's PoolPermissionManager permission bitmap/allowlist system.
    A5
    Read access is permissionless through public contracts/docs/SDK, but write access differs by function: deposits are permissioned, while withdrawal request placement is directly callable for existing holders.
    A6
    Legal extraction succeeded: interface terms include sanctions/restricted-jurisdiction clauses and reserve interface-level blocking rights; Syrup terms also state the interface is not essential to using the Protocol.
    A1
    MaplePoolPermissionManager (0xBe10aDcE8B6E3E02Db384E7FaDA5395DD113D8b3) is the contract-level access layer: exposes setLenderAllowlist(poolManager,lenders,booleans) and setPoolPermissionLevel(poolManager,level). Pool manager routes calls through canCall() which checks hasPermission() on the permission manager before admitting depositors. The exact permissionLevel configured for the syrupUSDC pool manager was not successfully read this run (noted in unknowns). Secured lending pool (0xC39a5A616F0ad1Ff45077FA2dE3f79ab8eb8b8B9) is described by website as permissioned for 'sophisticated allocators.'
    A2
    Borrowers must be whitelisted by governance (setValidBorrower on Globals, requires 4-of-7 daoMultisig via GovernorTimelock). Pool delegates are permissioned protocol-appointed operators who deploy loans and process redemptions — depositors do not need delegate approval to place a requestRedeem, but redemption fulfillment depends on the pool delegate releasing liquidity.
    A3
    Website (maple.finance) states syrupUSDC/USDT pools are 'Open for everyone (non-US)' — geographic restriction on US persons. This is an A3-passive/active combination: the 'non-US' language reads as a jurisdictional ToS restriction enforced at the frontend, not a confirmed on-chain mechanism (no OFAC contract check found in pool or permission manager ABIs). The restriction is not verified to be purely frontend-only vs. contract-enforced bitmap without reading the permissionLevel.
    A3b
    Independent access paths: syrupUSDC token (ERC-4626) is integrable by any DeFi protocol. Pool's deposit/redeem functions are callable directly on-chain (Etherscan write tab). The SYRUP token is listed on DEXes. No published standalone SDK found this run, but integration docs at docs.maple.finance/integrate-syrupusd/ exist (URL derived from website nav, not separately fetched). Third-party frontend integration paths exist through DeFi aggregators that list syrupUSDC.
    A4
    No on-chain OFAC blocklist or sanctions oracle found in the MaplePool or PoolPermissionManager contract ABIs. Contract-level sanctions filtering not confirmed.
    A5
    Read access is fully permissionless — anyone can read pool state, totalAssets, balanceOf, etc. Write access (deposit, requestRedeem) is gated by PoolPermissionManager for each pool; secured lending pool is fully permissioned; syrupUSDC pool's exact permission level unread this run.
    A6
    ToS location: linked from website footer (https://maple.finance/terms not separately fetched). Website states: syrupUSDC is 'Open for everyone (non-US)' — this is the verbatim claim from the homepage marketing copy. Full terms verbatim not extracted this run; ToS URL recorded in unknowns.
    A1
    No onlyWhitelisted, onlyRole (beyond owner on some admin functions), allowlist, isAccredited, or isKYCed modifiers on user-facing entry/exit points of syrupUSDCPool; redeem/withdraw/requestRedeem are open to any caller.
    A2
    No off-chain operator approval required to admit deposit or exit actions; all core functions are unconditional on-chain (keeper/oracle liveness affects settlement but not admission).
    A3
    Official frontend may have ToS sanctions clauses or geo-restrictions (context only); no contract-level on-chain blocklist or KYC gate surfaced.
    A3b
    Independent access paths exist: direct contract interaction via Etherscan write tab, any Ethereum wallet, or generic ERC-4626 SDKs; no published official SDK required.
    A4
    No on-chain sanctions blocklist or OFAC oracle check in pool or globals ABI surfaced.
    A5
    Read access (view state, totalAssets, convertToExit*) is fully permissionless; write access (redeem, deposit-equivalent) is also permissionless on core syrup pools.
    A6
    Website ToS (maple.finance) contains standard sanctions/self-certification language but was not extracted verbatim in this run; contract behavior is independent of frontend ToS.
    Why is this slice uncertain?
    • only 3 of 3 model submissions on record — quorum requires ≥3 agreeing models
    • submitted models do not yet agree on a single grade

    A fresh independent run can establish (or overturn) a verdict.

    Run your own prompt Submit run ↗
    Sources gpt-5.5-thinking url ↗ claude-sonnet-4-6 url ↗ grok-4 url ↗ View raw submissions ↗

Stage

Preview of the Phase-3 maturity framework. DeFiPunk'd will adopt DeFiScan v2's stages verbatim; the section is rendered below in its intended shape so the structure is visible today.

Maple has not yet been assessed under the DeFiScan v2 stage framework.
The walkaway test is the central criterion. Once stages land, protocols reach Stage 1 only if users can exit in the presence of malicious operators even when the emergency council disappears.
Scope of assessment
Stages are assessed per-protocol against DeFiScan v2's criteria: governance structure, upgradeability path, timelock durations, emergency-council scope, and the walkaway test. The analysis depends on onchain discovery (roles, owners, timelocks) and deeper review of deployed contracts — neither of which DeFiPunk'd automates at Phase 0.
Stage 0 requirements pending
Governance is largely off-chain, contracts are upgradeable with short or no timelock, and the protocol depends on a multisig or team with full discretion. At Phase 0 DeFiPunk'd does not automatically evaluate these; the assessment lands with crawler-based onchain discovery.
Stage 1 requirements pending
Users can exit or opt out on their own terms even if the team disappears. Upgrades run through a meaningful timelock with an emergency security council clearly scoped. The walkaway test is the headline criterion.
Stage 2 requirements pending
Protocol is fully permissionless and immutable, or upgrades require a supermajority of token holders with a long timelock and no emergency override. This is the terminal stage of the DeFiScan v2 framework.
Learn more about DeFiScan v2 stages →
Stages are an opinionated assessment of maturity, not a rating of security or safety. A protocol can sit at Stage 2 and still carry substantial technical or economic risk; the framework exists to incentivize decentralization, not to rank protocols.

Contract surface

Every contract in scope for this protocol — pooled from DeFiLlama's TVL adapter (mechanical) and DEFI@home discovery submissions (LLM-curated). Verified-source flags come from Etherscan + Sourcify; owner / multisig metadata is read on-chain when available. Reviewer audit context, not a slice score. A lending protocol's adapter set will list third-party collateral tokens alongside its own contracts; attribution is the grader's job.

  • 27addresses
  • 1verified source
  • 0proxies

TVL adapter pinned at 683d369. Sourcecode fetched 2026-05-06. Control fetched 2026-05-07.

Baseglobals (singleton)0x7f3c…1465discovery
Basegovernor0xd948…a3bediscoverytimelock
BaseoperationalAdmin0xa263…367fdiscoverymultisig
Basepool (cashUSDCPoolPool)0xdd5b…075ddiscovery
BasesecurityAdmin0x6150…c9eadiscoverymultisig
Basetoken (SyrupOft)0x688a…9a2fdiscoverytoken
Basetreasury0x3a5a…1736discoverytreasury
ethereumxMPL0xc7e8…0b45TVL
EthereumdaoMultisig0xd6d4…a196discoverymultisig
EthereumfixedTermLoanFactory0x36a7…1db0discovery
EthereumfixedTermLoanFactoryV20xea06…dbc6discovery
EthereumglobalAdmin0x0d8b…0200discoverymultisig
Ethereumglobals (singleton)0x804a…390cdiscovery
Ethereumgovernor/timelock0x2eff…426bdiscoverytimelock
EthereumopenTermLoanFactory0x6fad…7cf6discovery
EthereumoperationalAdmin0xce1c…34e8discoverymultisig
EthereumpermissionsAdmin0x54b1…9dcadiscoverymultisig
Ethereumpool (securedLendingUSDCPool)0xc39a…b8b9discovery
Ethereumpool (syrupUSDCPool)0x80ac…cc0bdiscovery
Ethereumpool (syrupUSDTPool)0x356b…ba7ddiscovery
EthereumpoolManagerFactory0xe463…8339discovery
Ethereumproxy (MapleCCIPReceiver)0x02b6…a2c4discovery
EthereumsecurityAdmin0x6b1a…0818discoverymultisig
Ethereumtoken (MPLv1)0x3334…35e6discoverytoken
Ethereumtoken (SYRUP proxy)0x643c…2d66discoverytoken
Ethereumtoken (xMPL)0x4937…914cdiscoverytoken
Ethereumtreasury0xa946…0b19discoverymultisig

Protocol Info

Links

[defillama] Source: DeFiLlama [:] Source: DEFI@home quorum
Twitter
@maplefinance
GitHub
maple-labs

Security

[defillama] Source: DeFiLlama [:] Source: DEFI@home quorum
Audits
7 audits
Security contact
https://docs.maple.finance/technical-resources/security/security

Technical

[:] Source: DEFI@home quorum
Voting token
SYRUP Ethereum: 0x643C4E15d7d62Ad0aBeC4a9BD4b001aA3Ef52d66
Upgradeability
Upgradeable

Provenance

[defillama] Source: DeFiLlama [:] Source: DEFI@home quorum
Review status
listed
Updated
2026-06-02 13:28 UTC

Hallmarks

  1. Dec '22V2 Deployment