For the complete documentation index, see llms.txt. This page is also available as Markdown.

E-Mode & Segregated Risk

Dolomite's risk override system empowers users to borrow against assets with increased LTVs or modified risk parameters to partition risk and maximize underwriting potential.

Automatic E-Mode is currently available on Ethereum and Berachain. It is not available on Arbitrum, Mantle, or X Layer. Categories and parameters are configured by network and may change.

E-Mode & Segregated Risk turns on and off automatically based on the complete composition of assets in a position. When the position qualifies for a configured category, the category's margin ratio and liquidation penalty override the default settings. Adding an incompatible asset causes the position to return to the applicable default risk settings.

For the borrower workflow, see Automatic E-Mode. For the risk model, see Account Risk Override.

To get the current risk override setter, you can query the following function on DolomiteMargin .

You can query current risk settings on the Dolomite Account Risk Override using the following functions:

getAccountRiskOverride

Description:

Gets the risk overrides for a given account owner. In the context of an operation, this function is called within _verifyFinalState, after all of the operation's actions have occurred. Thus, it is safe to read the account's state from Dolomite Margin's storage.

Parameters:

  • account (Account.Info calldata): The account whose risk override should be retrieved, represented by an Account.Info struct.

Returns:

  • Decimal.D256 memory marginRatioOverride: The margin ratio override for this account. When a margin ratio override is specified that is non-zero, all margin premiums are ignored for the position.

  • Decimal.D256 memory liquidationRewardOverride: The liquidation penalty that would be paid by this account if the position is liquidated. When a liquidation reward override is specified that is non-zero, all liquidation reward premiums are ignored for the position.

library Account {
    struct Info {
        address owner;
        uint256 number;
    }
}

library Decimal {
    struct D256 {
        value uint256;
    }
}

function getAccountRiskOverride(
    Account.Info calldata account
)
external
view
returns
(
    Decimal.D256 memory marginRatioOverride,
    Decimal.D256 memory liquidationRewardOverride
);

Last updated

Was this helpful?