Contract Powers Registry / base

Morpho Blue

0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb on base

In one line

admin is a 5-of-9 multisig; retained powers: fees, ownership; 3 further owner-only function(s) the engine could not categorise (listed under coverage).

UpgradeableNot found
Source verifiedYes
Controlled byA contract
Confirmed powers2 +3 uncategorised

Can this code be replaced?

No proxy pattern found. The standard upgrade slots (EIP-1967, ZeppelinOS) are empty, the explorer does not declare a proxy, and no implementation() answered. The code at this address is very likely the code that runs. Caveat: a custom upgrade mechanism that does not use those slots would not be detected here.

Who holds the keys?

Owner / admin0xcba28b38103307ec8da98377fff9816c164f9afa
Found viaowner()
That address isA contract

owner is a contract — see admin.controller for what kind. It could be a multisig, a timelock, or a single-key wrapper — this registry does not open it. Follow the link above to see what that contract can do.

What the privileged role can still do

Each card is a capability found in the code. declared = the contract’s published interface exposes it. bytecode-heuristic = the 4-byte selector appears in the compiled code, which often means the contract implements it — but it can equally be a function this contract calls on another contract. Only a verified source settles that.

Fees can be changed

declared

The fee or tax taken on activity is set at runtime, not fixed in code.

Evidence (2)
  • setFee(tuple,uint256) abi
  • setFeeRecipient(address) abi

Control can be transferred

declared

The privileged role itself can be handed to another address, or renounced.

Evidence (2)
  • setOwner(address) abi
  • setOwner(address) bytecode-selector

What this page did not categorise

3 more functions here are restricted to a privileged role, and this engine has no category for them. The list above matches function names against a fixed set of power categories. These ones are gated in the published source — an only… modifier or a sender check — but their names match nothing, so no card was written for them. They are named here in full rather than dropped, because a report that looks complete is worse than one that says where it stops.

FunctionName shapeRestricted byRead from
enableIrm(address) turns something on/off onlyOwnercontract source
enableLltv(uint256) turns something on/off onlyOwnercontract source
setAuthorization(address,bool) sets a value require(newIsAuthorized != isAuthorized[msg.sender][authorized], ErrorsLib.ALREADY_SET)contract source

Where to start: 3 of these 3 are a repeating name shape — 2 turns something on/off, 1 sets a value — which usually means configuration rather than a new capability. The name shape is read from the name alone and claims nothing about behaviour; setOracle and setFeeRecipient share it and differ completely.

What to do with this: open the contract on the explorer and read these functions. The gate shown is the exact text found in the source. This engine does not guess what the function does. Of the 17 state-changing functions in the published interface, 3 matched a known category and 3 are listed here.

Is there a bug bounty on this?

The contract name matched 1 live program(s) in my Bounty Radar index. A name match is not proof this address is in scope — open the program and check its asset list.

ProgramPlatformMax bountyKYC
Morpho cantina$2,500,000 Not required

Raw facts

Chainbase (chainId 8453)
Contract nameMorpho
Compilerv0.8.19+commit.7dd6d404
License—
Bytecode size15,623 bytes
DELEGATECALLabsent
SELFDESTRUCTabsent
CREATE2absent
Explorerview on block explorer ↗

Has any of this changed?

This page is rebuilt from the chain and diffed against the previous day. If the implementation behind this address is replaced, or the privileged key moves, it is listed on what changed with the before and after — also as RSS, so it can reach you without you coming back.

How this was produced, and what it cannot tell you

Storage slots, bytecode and eth_call results were read from public RPC nodes; where the source is verified, the published interface was read too. Nothing here is copied from another site’s opinion. Generated in 899 ms on 2026-10-13.

What would change the answer: an upgrade after the date above; a power reachable only through a contract this one trusts; or role-based access control, whose holders this registry does not enumerate. Re-read the chain before you rely on it.

Machine-readable

Same facts as JSON, free, no key: /c/base/0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb.json. Live lookups for any address (not just this list) are $0.05 per call.

Want a human-grade read?

This page is automated pattern-matching. If you need someone to actually read the code and tell you what breaks, I do fixed-scope micro-audits — you pay after you read the report.