Paboxo

Governance & admin

Who can change Paboxo and what they can do, read from the chain.

Everything on this page is read from Robinhood Chain mainnet (chainId 4663), with the block it was read at, so you can check it yourself with any RPC.

The protocol Safe

Admin power over Paboxo sits with one Safe multisig, the protocol Safe:

0xeA39Abc1381c6f3f54356A4A9FEE926722Ba8263

It is a 2-of-4 Safe: getThreshold() returns 2 and getOwners() returns four addresses (read at block 114333553). No Safe module and no transaction guard is set (block 114333553), so nothing can execute through the Safe without two owner signatures. The Safe also receives the protocol fee.

Who holds which role

Every role on every mainnet contract, grouped by kind of contract. "Protocol Safe" is the Safe above, and "Pauser key" is the key that can only pause (see the pauser).

The table is the role snapshot at block 113202590, built by replaying every role, ownership and upgrade event of these contracts and then checking each holder on-chain with hasRole() and owner(). No role, ownership or upgrade event was emitted by any of them between that block and block 114329614.

ContractsCountRole → holder
Lending pool factories2
owner(): Protocol Safe
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
PAUSER_ROLE: Protocol Safe
MARKET_CREATOR_ROLE: Protocol Safe
Lending pools12
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
PAUSER_ROLE: Pauser key
Lending pool routers12
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
Interest rate models2
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe, a lending pool factory
Health checks (IsHealthy)2
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
Price data streams2
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
Price-feed adapters11
owner(): Protocol Safe
Market calendar1
owner(): Protocol Safe
Earn vault (USDG)1
CURATOR_ROLE: Protocol Safe
Earn vault factory1
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
VAULT_CREATOR_ROLE: Protocol Safe
LP collateral config1
owner(): Protocol Safe
Event emitters2
DEFAULT_ADMIN_ROLE: Protocol Safe, a lending pool factory
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe
ADMIN_ROLE: Protocol Safe, a lending pool factory, the lending pools
Retired feed adapters (read by no market)4
owner(): Pauser key
Borrower positions6
DEFAULT_ADMIN_ROLE: Protocol Safe
UPGRADER_ROLE: Protocol Safe
OWNER_ROLE: Protocol Safe

What the roles do:

RoleLets the holder
DEFAULT_ADMIN_ROLEgrant and revoke the other roles on that contract
UPGRADER_ROLEupgrade the contract's code (they are UUPS proxies; the address stays)
OWNER_ROLEchange the contract's settings: risk and rate parameters, price feeds, fees, caps; on a lending pool, also unpause it
PAUSER_ROLEpause; on a lending pool, pause only (see below)
MARKET_CREATOR_ROLElist a new market through the factory
VAULT_CREATOR_ROLEcreate an Earn vault through the vault factory
CURATOR_ROLEchoose which markets the Earn vault lends to, and their caps and queues
ADMIN_ROLE (event emitter)emit protocol events; held by the contracts that emit them
owner()the single owner of a contract without roles: feed adapters, the market calendar, the LP config

Some contracts hold roles themselves: a lending pool factory sets each new market's rate curve on its interest rate model, and it lets each new lending pool report events through the event emitter.

The Earn vault's upgrade right is not stored in the vault. It resolves on every call to the Earn vault factory's vaultAdmin, which is the protocol Safe (read at block 114329614).

The four retired feed adapters are the launch adapters that were replaced. Neither price data stream reads them: for every asset, tokenPriceFeed() returns one of the current adapters listed on contracts (read at block 114329614), so they change no price the protocol uses.

The pauser

Pausing is instant by design. A pauser key holds PAUSER_ROLE on every lending pool so that a market can be stopped in one transaction, without waiting for two Safe signatures, if something goes wrong.

  • A paused market stops supplying, withdrawing, borrowing, repaying and liquidating. Interest keeps accruing while it is paused.
  • The pauser cannot unpause. Resuming a market takes the Safe (OWNER_ROLE); the pauser key can stop a market but cannot change, move or upgrade anything.

Every other admin role moved to the Safe on 4 November 2026 (block 105757627); see contracts.

History of admin changes

The protocol Safe has executed 18 transactions (its nonce() at block 114333553). The ones that changed something for users are recorded on status, with their blocks:

How admin roles are held today is on contracts and status.

On this page