Interactions
The Factory contract enables core interactions such as deploying protocols, creating markets, and retrieving protocol-related data. Key functionalities include deploying protocol instances, initializing markets, and querying metadata.
Below are some main methods. Additional methods are documented in the sections that follow
deployProtocol: Deploys a new protocol instance, assigning an initial governor and configuring ownership shares.
deployMarket: Deploys a new market under an existing protocol and connects it to the protocol’s risk engine.
getProtocolInfo: Retrieves detailed information about a specific protocol using its unique ID.
getMarket: Fetches the address of a market within a specific protocol using its protocol ID and market index.
deployProtocol
The function is called by protocol owner governance to deploy a new protocol
function deployProtocol(address initialGovernor, address emergencyExecutor, uint256 ownerShareMantissa, uint256 configuratorShareMantissa)
Parameters
Name
Type
Description
initialGovernor
address
Address of initial governor that will manage the governor timelock and risk engine configurations
emergencyExecutor
address
Address of timelock executor that can manage emergency executions
ownerShareMantissa
uint256
Percentage of accumulated fees allocated to protocol owner (scaled by 1e18)
configuratorShareMantissa
uint256
Percentage of accumulated fees allocated to governor (scaled by 1e18)
deployMarket
Deploys a new pToken for the deployed protocol and connects it to the protocol risk engine
function deployMarket(PTokenSetup memory setupParams)
external
nonReentrant
returns (address pToken);
Parameters
Name
Type
Description
setupParams
PTokenSetup
struct with initial risk params of pToken:
PTokenSetup
contains params:
protocol Id: The unique identifier for the deployed protocol that the governor timelock has access to.
underlying: The address of the ERC20 underlying token.
initialExchangeRateMantissa: The initial exchange rate scaled by 1e18.
reserveFactorMantissa: The reserve factor as a percentage scaled by 1e18. (part of it split between owner and governor).
protocolSeizeShareMantissa: The protocol’s share of seized collateral in the liquidation process scaled by 1e18 (part of it split between owner and governor).
borrowRateMaxMantissa: The maximum borrow rate scaled by 1e18.
name: The name of the pToken. (pike usdc)
symbol: The symbol of the pToken. (pUSDC)
decimals: The number of decimals for the pToken.
Returns
Name
Type
Description
pToken
address
address of deployed proxy contract
getProtocolInfo
Fetches the information of a protocol by its ID.
function getProtocolInfo(uint256 protocolId)
external
view
returns (ProtocolInfo memory);
Parameters
Name
Type
Description
protocolId
uint256
The ID of the protocol.
Returns
Name
Type
Description
ProtocolInfo
memory
The protocol Info
ProtocolInfo
contains:
protocol Id
number of deployed markets (pTokens)
address of assigned protocol owner
address of assigned initial governor
address of assigned emergencyExecutor
address of risk engine
address of oracle engine
address of timelock contract
getMarket
Fetches the address of a market (pToken) by protocol ID and index.
function getMarket(uint256 protocolId, uint256 index) external view returns (address);
Parameters
Name
Type
Description
protocolId
uint256
The ID of the protocol.
index
uint256
The index of deployed pToken starting from 0
Returns
Name
Type
Description
<none>
address
The address of the specified market.
upgradeTo
Allows the proxy to be upgraded to a new implementation.
functionupgradeTo(address newImplementation) external;
Parameters
newImplementation
address
The address of the proxy's new implementation.
Last updated