Governor

JuiceGovernor Contract

This inherits the core functionality of the ProtocolGovernor and adds a function for claiming gas fees on behalf of protocol contracts that have registered with it.

It has the following responsibilities:

  • Role assignment to addresses for action authorization.

  • Setting common dependency addresses to be used by all contracts integrated with it.

    • There are two types of common dependencies: Immutable and Mutable.

      • Immutable dependencies can only be set once because updating them can cause the protocol to break since they are contracts that are not expected to change without a redeployment of the protocol.

      • Mutable dependencies can be updated at any time since they are only bound by a contract interface.

  • Configuring protocol fees.

    • All fee configurations must be less than 100%.

DependenciesMutableDescription

Lend Asset

No

ERC20 used to facilitate lending and borrowing across the protocol. Will be USDB.

Blast

No

Blast contract for managing native yield

Pyth

No

For interacting with Pyth Network

Gelato Automate

No

Entry point for integrating with Gelato Network

No

N/A

Yes

N/A

Fee Collector

Yes

Recipient of protocol fees

Yes

Returns a price denominated in Lend Asset given some asset address

All contracts integrate with this via the ProtocolModule and JuiceModule, which implement typed internal methods for these contracts to fetch external dependencies, fee values, and role assignment.

The owner of this contract is the Protocol Owner and can perform contract owner interactions for all the contracts that integrate with it.

It implements Ownable2Step and will be owned by a Safe multisig.

It also tracks the following roles:

RoleFunctionality

AccountManager

Grant Account role

AccountManager

Open loan on LendingPool for someone

Account

Deposit and withdraw into Strategies

Last updated