Skip to content

Releases: perpetual-protocol/perp-curie-contract

v2.4.0

08 Dec 10:12
db9d318

Choose a tag to compare

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[unreleased]

[2.4.0] - 2022-12-02

Added

  • Add CollateralManager.getDebtThresholdByTrader()
  • Add CollateralManager.getTotalWhitelistedDebtThreshold()

[2.3.0] - 2022-12-02

Added

  • Add Insurance.distributeFee()
  • Add Insurance.getThreshold()
  • Add Insurance.getSurplusBeneficiary()
  • Add new event ThresholdChanged, SurplusBeneficiaryChanged, FeeDistributed to InsuranceFund

[2.2.4] - 2022-12-02

  • Support remove all liquidity in quitMarket() if user has orders in closed market

[2.2.3] - 2022-10-24

Changed

  • Fix rounding issue (expect amount is not equal to response) when open position with isBaseToQuote: false and isExactInput: true

[2.2.2] - 2022-10-13

Changed

  • Change _MAX_PRICE_SPREAD_RATIO from 20% to 10%

[2.2.1] - 2022-10-11

  • Add InsuranceFund.getInsuranceFundCapacity()

[2.2.0] - 2022-09-30

Added

  • Add Vault.settleBadDebt()
  • Add InsuranceFund.repay()
  • Add new event Repaid, BadDebtSettled

Removed

  • Remove InsuranceFund.borrow()

[2.1.1] - 2022-09-21

Changed

  • AccountBalance.getLiquidatablePositionSize() returns entire position size if the position value is less than _MIN_PARTIAL_LIQUIDATE_POSITION_VALUE.

[2.1.0] - 2022-08-16

Added

  • Add Vault.withdrawAll() to withdraw all free collateral(specified) from vault
  • Add Vault.withdrawAllEther() to withdraw all ETH from vault

Changed

  • Update return parameter names in NatSpec

Fixed

  • Fix rounding issue when liquidating collaterals in full
  • Fix collateral value precision and underlying rounding issues

[2.0.1] - 2022-08-10

Added

  • Add DelegateApproval.canAddLiquidityFor to check if can add liquidity for another maker.
  • Add DelegateApproval.canRemoveLiquidityFor to check if can remove liquidity belonging to another maker.

[2.0.0] - 2022-08-10

Changed

  • liquidate() becomes position transfer instead of market selling. So liquidators now require collaterals to do liquidation.

    • liquidate() has new interfaces:

      function liquidate(
          address trader,
          address baseToken,
          int256 positionSize
      ) external;
      
      // liquidate as much as possible
      function liquidate(
          address trader,
          address baseToken,
      ) external;

Added

  • Add AccountBalance.getLiquidatablePositionSize() to calculate the liquidatable position size for trader.

Deprecated

  • function liquidate(address trader, address baseToken, uint256 oppositeAmountBound)

[1.4.0] - 2022-07-05

Added

  • Add DelegateApproval
    • Currently only allow delegating ClearingHouseOpenPosition
  • Add ClearingHouse.openPositionFor()
  • Add ClearingHouse.getDelegateApproval()

[1.3.0] - 2022-06-20

Added

  • Add BaseToken.cacheTwap to offer the flexibility of updating index prices by either users or ourselves.

[1.2.0] - 2022-04-28

Changed

  • ClearingHouse.getAccountValue() function now calls Vault.getAccountValue()
  • Vault.deposit(), Vault.withdraw(), Vault.depositFor() can be used for non-settlement token

Added

  • Vault now supports depositing non-settlement token as collateral
  • Add CollateralManager contract for non-settlement collateral related params management
  • Add Vault.depositEther(), Vault.depositEtherFor() Vault.withdrawEther() for ETH deposit/withdraw
  • Add Vault.getAccountValue() to get the account value in settlement token's decimals
  • Add Vault.getBalanceByToken() to query collateral balance by token address
  • Add Vault.getCollateralTokens() to query all non-settlement collateral token addresses of a trader
  • Add Vault.getFreeCollateralByToken() to query free collateral by given collateral token addresses
  • Add Vault.getSettlementTokenValue() to query trader's settlement token value
  • Add Vault.isLiquidatable() to check if a trader's non-settlement collateral can be liquidated
  • Add Vault.getMarginRequirementForCollateralLiquidation() to get the margin requirement that a trader's
    non-settlement collateral is eligible to be liquidated
  • Add Vault.getCollateralMmRatio() to get the mmRatio for collateral liquidation
  • Add Vault.getLiquidatableCollateralBySettlement() to get the liquidatable collateral amount by given
    repaid settlement amount
  • Add Vault.getRepaidSettlementByCollateral to get the repaid settlement amount by given collateral amount
    for liquidation
  • Add Vault.getMaxRepaidSettlementAndLiquidatableCollateral() to query the max repaid settlement amount and
    max collateral amount for liquidation
  • Add Vault.liquidateCollateral to liquidate trader's non-settlement collateral

[1.1.0] - 2022-04-12

  • Add BaseToken.pause() (only owner)
  • Add BaseToken.close(uint256) (only owner)
  • Add IBaseToken.close()
  • Add IBaseToken.getPausedTimestamp()
  • Add IBaseToken.getPausedIndexPrice()
  • Add IBaseToken.getClosedPrice()
  • Add IBaseToken.isOpen()
  • Add IBaseToken.isPaused()
  • Add IBaseToken.isClosed()
  • Add IVault.depositFor(address, address, uint256)
  • Add IClearingHouse.quitMarket(address, address)
  • Add new event PositionClosed to ClearingHouse, will emit in quitMarket(address, address)

[1.0.15] - 2022-02-09

Changed

  • emit PositionChanged event in cancelExcessOrders and cancelAllExcessOrders

[1.0.14] - 2022-01-28

Added

  • Add IClearingHouse.liquidate(address, address, uint) to liquidate with slippage protection.

[1.0.13] - 2022-01-21

Deploy

  • Deploy SOL market to optimism

[1.0.12] - 2022-01-20

Deploy

  • Deploy LUNA market to optimism

[1.0.11] - 2022-01-18

Deploy

  • Deploy AVAX market to optimism

[1.0.10] - 2022-01-17

Changed

  • Add _backstopLiquidityProviderMap in ClearingHouseConfigStorageV2. It's for only configured backstopLiquidityProvider can liquidate the trader's position who has bad debt.

Deploy

  • Upgrade AccountBalance, ClearingHouse, ClearingHouseConfig, Exchange, Vault

[1.0.9] - 2022-01-14

Changed

  • Revert swap if _maxTickCrossedWithinBlockMap[baseToken] is 0

Deploy

  • Upgrade Exchange on Optimism

[1.0.9-staging] - 2022-01-13

  • Upgrade Exchange for zero tick crossing

[1.0.8] - 2022-01-12

Code is same as v1.0.8-staging.

Deploy

  • Upgrade ClearingHouse on Optimism

[1.0.8-staging] - 2022-01-11

Fixed

  • revert when reducing position with bad debt

Deploy

  • Upgrade ClearingHouse on Optimism Kovan

[1.0.7] - 2022-01-06

Deploy

  • Upgrade vBTC and vETH on Optimism

[1.0.7-staging] - 2022-01-05

Added

  • add BaseToken.setPriceFeed() to set address of price feed.

Deploy

  • Upgrade vBTC and vETH on Optimism Kovan

[1.0.6] - 2022-01-05

  • Only includes new deployments on Optimism Kovan compared with 1.0.5.

[1.0.6-staging] - 2022-01-04

  • Clean deploy all contracts on Optimism Kovan except external contracts (DefaultProxyAdmin, USDC, UniswapV3Factory). Note that the contract proxy addresses has been changed. Can find all contract addresses in ./metadata/optimismKovan.json.

[1.0.5] - 2022-01-03

Added

  • Deploy AVAXUSDBandPriceFeed on Optimism.
  • Deploy LUNAUSDBandPriceFeed on Optimism.
  • Deploy SOLUSDBandPriceFeed on Optimism.

[1.0.4] - 2021-12-23

  • Add fluctuation limit on exchange.swap

[1.0.3] - 2021-12-10

  • Fix permission check in setttleFunding and updateFundingGrowthAndLiquidityCoefficientInFundingPayment

[1.0.3-staging] - 2021-12-10

  • Fix permission check in setttleFunding and updateFundingGrowthAndLiquidityCoefficientInFundingPayment

[1.0.1] - 2021-11-25

  • Code is the same as 1.0.0, but it's a clean deploy to Optimism Mainnet.
  • Contract source code is also included.

[1.0.0] - 2021-11-24

  • Code is the same as 1.0.0-staging, but it's a clean deploy to Optimism Mainnet.

[1.0.0-staging] - 2021-11-24

  • Code is the same as 0.15.1-staging, but it's a clean deploy to Optimism Kovan and Arbitrum Rinkeby.

[0.15.1-staging] - 2021-11-23

  • No public change in this version.

[0.15.0-staging] - 2021-11-22

Changed

  • rename ClearingHouse.settleAllFundingAndPendingFee to ClearingHouse.settleAllFunding
  • rename AccountBalance.addTakerBalances to AccountBalance.modifyTakerBalance
  • rename params of AccountBalance.modifyTakerBalance
    1. deltaTakerBase to base
    2. deltaTakerQuote to quote
  • rename params of AccountBalance.settleBalanceAndDeregister
    1. deltaTakerBase to takerBase
    2. deltaTakerQuote to takerQuote
  • rename AccountBalance.addOwedRealizedPnl to AccountBalance.modifyOwedRealizedPnl
  • rename param delta of AccountBalance.modifyOwedRealizedPnl as amount
  • rename the param sqrtPriceAfter in the ClearingHouse.PositionChanged event to sqrtPriceAfterX96
  • rename error codes in ClearingHouse
    1. CH_NEO to CH_CLWTISO
    2. CH_PSC to CH_PSCF
    3. CH_ANC to CH_ENC
    4. CH_ANC to CH_TFNC
  • rename params of ClearingHouse.openPosition
    1. deltaBase to base
    2. deltaQuote to quote
  • rename params of ClearingHouse.closePosition
    1. deltaBase to base
    2. deltaQuote to quote
  • rename error code in Exchange: EX_ANC to EX_BNC
  • rename params in struct Exchange.SwapResponse
    1. deltaAvailableBase to base
    2. deltaAvailableQuote to quote
  • rename params in struct Exchange.RealizePnlParams
    1. deltaAvailableBase to base
    2. deltaAvailableQuote to quote
  • rename OrderBook.getOwedFee as OrderBook.getPendingFee
  • rename params in struct OrderBook.RemoveLiquidityResponse
    1. deltaTakerBase to takerBase
    2. deltaTakerQuote to takerQuote
  • renam...
Read more