Perp v2
Perp v2
  • About Perpetual Protocol
    • Social Links
    • Governance
    • v2 Era Ecosystem
    • PERP Token
  • Terms of Service
  • General
    • Wallets
    • Transfering Assets
    • Deposit & Withdrawal
    • Perpetual + Uniswap
    • FAQs
    • Guides
    • Legacy Reward Programs
    • Security
  • Hot Tub
  • Trading on Perp v2
    • How It Works
    • UI Overview
    • Perpetual Futures Basics
    • Trading Quick-start
    • Opening and Closing Positions
    • Account Value & More
    • Funding Payments
    • Order Types
    • Trading Fees and Gas Fees
    • Managing Risk
    • Multi-collateral
    • More docs
  • Providing Liquidity
    • Basics
    • Introduction to Maker UI
    • Add / Remove Liquidity
    • Estimated Fees and Rewards APR
    • More on LPing
    • Tools for LPs
  • Perp v2 Specs
  • Developer Docs
    • Developer FAQs
    • Source Code
    • Protocol Attributes
    • Contract guide
      • AccountBalance
      • BaseToken
      • ClearingHouse
      • CollateralManager
      • DelegateApproval
      • Exchange
      • InsuranceFund
      • MarketRegistry
      • OrderBook
      • QuoteToken
      • Vault
      • VirtualToken
    • Interface Contracts
      • IAccountBalance
      • IBaseToken
      • IClearingHouse
      • IClearingHouseConfig
      • IClearingHouseConfigEvent
      • ICollateralManager
      • IDelegateApproval
      • IERC20Metadata
      • IExchange
      • IIndexPrice
      • IInsuranceFund
      • IMarketRegistry
      • IOrderBook
      • IVault
      • IVirtualToken
    • Integration guide
    • Dev tools
Powered by GitBook
On this page
  • Functions​
  • Events​

Was this helpful?

  1. Developer Docs
  2. Interface Contracts

IInsuranceFund

Last updated 1 year ago

Was this helpful?

Functions

repay

  function repay(
  ) external

If insurance has negative accountValue of vault, will deposit amount to vault

distributeFee

  function distributeFee(
  ) external returns (uint256 surplus)

If balance of InsuranceFund is over distributionThreshold, transfer diff to SurplusBeneficiary

Insurance Fund should only distribute revenues surplus earned on the platform. In other words, funds directly held in the Insurance Fund contract (insuranceFundWalletBalance) contributes to insuranceFundTotalBalance but not necessarily to surplus. Anyone can send funds to Insurance Fund and help it reach distributionThreshold sooner, but once surplus exceeds the revenues earned on the platform (insuranceFundFreeCollateral), sending more funds won’t increase surplus further

Return Values:

Name
Type
Description

surplus

uint256

The surplus of distribution

getToken

  function getToken(
  ) external returns (address token)

Get settlement token address

Return Values:

Name
Type
Description

token

address

The address of settlement token

  function getBorrower(
  ) external returns (address vault)

(Deprecated function, will be removed in the next release), Get borrower(Vault) address

Name
Type
Description

vault

address

The address of Vault

  function getVault(
  ) external returns (address vault)

Get Vault address

Name
Type
Description

vault

address

The address of Vault

  function getInsuranceFundCapacity(
  ) external returns (int256 capacityX10_S)

Get InsuranceFund capacity

Name
Type
Description

capacityX10_S

int256

The capacity value (settlementTokenValue + walletBalance) in settlement token's decimals

  function getDistributionThreshold(
  ) external returns (uint256 distributionThreshold)

Get insurance distributution threshold, this value is for fee distribution

Name
Type
Description

distributionThreshold

uint256

The distribution threshold number

  function getSurplusBeneficiary(
  ) external returns (address surplusBeneficiary)

Get SurplusBeneficiary

Name
Type
Description

surplusBeneficiary

address

The address of SurplusBeneficiary

  event BorrowerChanged(
    address borrower
  )

(Deprecated function, will be removed in the next release), In the previous version Vault used to "borrow" from IF by calling IF.borrow(). We have since removed the behavior but kept the variable name "borrower" for backward-compatibility

Name
Type
Description

borrower

address

The address of the borrower (actually is Vault address)

  event VaultChanged(
    address vault
  )
Name
Type
Description

vault

address

The address of the vault

  event Repaid(
    uint256 repaidAmount,
    uint256 tokenBalanceAfterRepaid
  )
Name
Type
Description

repaidAmount

uint256

Repaid amount of the token

tokenBalanceAfterRepaid

uint256

InsuranceFund's token balance after repay

  event DistributionThresholdChanged(
    uint256 distributionThreshold
  )

We will transfer fee to SurplusBeneficiary if InsuranceFund free collateral is over distribution threshold

Name
Type
Description

distributionThreshold

uint256

Distribution threshold amount

  event SurplusBeneficiaryChanged(
    address surplusBeneficiary
  )
Name
Type
Description

surplusBeneficiary

address

The address of SurplusBeneficiary

  event FeeDistributed(
    uint256 surplus,
    uint256 insuranceFundCapacity,
    uint256 insuranceFundFreeCollateral,
    uint256 distributionThreshold
  )
Name
Type
Description

surplus

uint256

The amount of distribution

insuranceFundCapacity

uint256

The capacity of insuranceFund contract

insuranceFundFreeCollateral

uint256

The free collateral(usdc) of insuranceFund contract in vault

distributionThreshold

uint256

The distribution threshold amount

getBorrower

Return Values:

getVault

Return Values:

getInsuranceFundCapacity

Return Values:

getDistributionThreshold

Return Values:

getSurplusBeneficiary

Return Values:

Events

BorrowerChanged

Parameters:

VaultChanged

Parameters:

Repaid

Parameters:

DistributionThresholdChanged

Parameters:

SurplusBeneficiaryChanged

Parameters:

FeeDistributed

Parameters:

​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​