Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split maxSettlementFee into maxSyncFee and maxAsyncFee #508

Merged
merged 9 commits into from
Dec 17, 2024

Conversation

prateekdefi
Copy link
Contributor

@prateekdefi prateekdefi commented Dec 2, 2024

Issue: https://linear.app/perennial/issue/PE-1982/[feature]-split-maxsettlementfee

Migration Note:

  • Reset Oracle parameters and set new parameters

@prateekdefi prateekdefi marked this pull request as ready for review December 3, 2024 13:19
@prateekdefi prateekdefi marked this pull request as draft December 5, 2024 18:07
@prateekdefi prateekdefi marked this pull request as ready for review December 9, 2024 10:14
Copy link
Contributor

@EdNoepel EdNoepel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add deployment notes to PR description, stating that all oracle parameters must be reset in the deployment. Otherwise, the first 24 bits of maxSyncFee would be read from where maxOracleFee was stored in v2.3.

Copy link
Contributor

@EdNoepel EdNoepel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

/// @param maxSyncFee The max sync fee
/// @param maxAsyncFee The max async fee
/// @param callbacks The number of settlement callbacks to be made
function applyFeeMaximum(PriceResponse memory self, UFixed6 maxSyncFee, UFixed6 maxAsyncFee, uint256 callbacks) internal pure {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

instead of

if (self.syncFee.gt(maxSyncFee))
    self.syncFee = maxSyncFee;

it's a bit cleaner to write these caps as:

self.syncFee = self.syncFee.min(maxSyncFee);

function applyFeeMaximum(PriceResponse memory self, UFixed6 maxSyncFee, UFixed6 maxAsyncFee, uint256 callbacks) internal pure {
if (self.syncFee.gt(maxSyncFee))
self.syncFee = maxSyncFee;
UFixed6 asyncFee = self.asyncFee.mul(UFixed6Lib.from(callbacks));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The async fee maximum will cap the individual async fees charges (so that if we have tons of orders in a single version we're not capping the total amount charged).

So no need to multiply this by the callback amount, that won't be needed anymore.

@@ -207,8 +207,8 @@ contract KeeperOracle is IKeeperOracle, Instance {
priceResponse.asyncFee = UFixed6Lib.from(factory.settlementGasOracle().cost(0), true);
priceResponse.oracleFee = keeperOracleParameter.oracleFee;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually now that applyFeeMaximum is so simple, maybe we can just apply the .min(oracleParameter....) directly on these above and delete the helper function altogether.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed helper method in aac4ffe

Copy link

[Periphery] Unit Test Coverage Report

Coverage after merging prateek/pe-1982-split-maxSettlementFee into v2.4 will be
56.58%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/oracle/contracts
   Oracle.sol100%100%100%100%
   OracleFactory.sol92.59%100%85.71%95%58
packages/oracle/contracts/chainlink
   ChainlinkFactory.sol100%100%100%100%
packages/oracle/contracts/keeper
   KeeperFactory.sol87.06%100%76.92%88.89%165–166, 168–169, 213, 240, 83–84
   KeeperOracle.sol72.37%100%70.59%72.88%110, 163, 165–167, 169, 171–175, 178–179, 224, 73, 87
packages/oracle/contracts/keeper/libs
   DedupLib.sol100%100%100%100%
packages/oracle/contracts/keeper/types
   KeeperOracleParameter.sol100%100%100%100%
   PriceResponse.sol100%100%100%100%
packages/oracle/contracts/metaquants
   MetaQuantsFactory.sol0%100%0%0%25–27, 33–36, 40, 51–52, 54–57, 59, 61, 63, 65–66, 75
packages/oracle/contracts/payoff
   Inverse.sol100%100%100%100%
   PowerHalf.sol100%100%100%100%
   PowerTwo.sol100%100%100%100%
packages/oracle/contracts/pyth
   PythFactory.sol100%100%100%100%
packages/oracle/contracts/types
   OracleParameter.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts
   Account.sol27.78%100%22.22%29.63%103, 108–109, 58, 64, 67–68, 71, 76–78, 81, 83–84, 89, 94–97
   AccountVerifier.sol100%100%100%100%
   Controller.sol81%100%100%75.95%103–105, 112–113, 204, 216, 227, 229–231, 235–237, 240, 250–252, 259
   Controller_Arbitrum.sol0%100%0%0%29, 41
   Controller_Incentivized.sol0%100%0%0%111, 128–129, 146, 154, 156–157, 164, 183, 186, 205, 208, 227, 230, 249, 252, 271, 274, 286–287, 290, 293, 302–303, 305, 307, 309, 56, 72–77, 94
   Controller_Optimism.sol0%100%0%0%29, 41
packages/periphery/contracts/CollateralAccounts/libs
   RebalanceLib.sol0%100%0%0%26, 29–30, 32–33, 36, 39, 43
packages/periphery/contracts/CollateralAccounts/test
   RebalanceConfigTester.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts/types
   Action.sol100%100%100%100%
   DeployAccount.sol100%100%100%100%
   MarketTransfer.sol100%100%100%100%
   RebalanceConfig.sol100%100%100%100%
   RebalanceConfigChange.sol100%100%100%100%
   RelayedAccessUpdateBatch.sol100%100%100%100%
   RelayedGroupCancellation.sol100%100%100%100%
   RelayedNonceCancellation.sol100%100%100%100%
   RelayedOperatorUpdate.sol100%100%100%100%
   RelayedSignerUpdate.sol100%100%100%100%
   Withdrawal.sol100%100%100%100%
packages/periphery/contracts/Coordinator
   Coordinator.sol100%100%100%100%
packages/periphery/contracts/MultiInvoker
   MultiInvoker.sol0%100%0%0%103, 110, 117–118, 120, 127–128, 130–131, 143, 145, 147, 149, 152, 154, 157, 159, 161, 163–164, 168, 192, 195, 197, 207–208, 211–212, 225, 243–244, 247, 249, 252, 256–257, 264, 269, 277–278, 280, 282, 290–291, 299–301, 303, 312–313, 315, 324–326, 329, 338–341, 344, 362, 364–365, 367, 376, 381–383, 388–390, 395–396, 72–77, 83–85, 88–89, 96–97
packages/periphery/contracts/TriggerOrders
   Manager.sol81.71%100%83.33%81.25%167–168, 170, 208, 212, 214, 216, 237–239, 254–255
   Manager_Arbitrum.sol100%100%100%100%
   Manager_Optimism.sol0%100%0%0%27, 35
   OrderVerifier.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders/test
   TriggerOrderTester.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders/types
   Action.sol100%100%100%100%
   CancelOrderAction.sol100%100%100%100%
   InterfaceFee.sol100%100%100%100%
   PlaceOrderAction.sol100%100%100%100%
   TriggerOrder.sol100%100%100%100%
packages/vault/contracts
   Vault.sol0%100%0%0%103, 109, 115–116, 124–125, 134, 136, 143, 145, 151, 153–154, 157, 163–164, 166, 168–169, 176–178, 186–190, 197, 199, 201, 207, 209, 211–214, 217, 223–224, 230–231, 237–238, 244–245, 247–248, 255–256, 258–260, 274–275, 277–280, 286–287, 289–291, 309–310, 313–323, 326, 329–331, 334–336, 338, 345, 355–356, 363, 366, 370–371, 377–378, 381, 384, 388, 401, 403, 411–416, 426, 432, 449, 463, 465–468, 470, 472–473, 476–478, 482–484, 487–489, 496–498, 505, 518–519, 522, 532–533, 71, 73–76, 82, 89, 96
   VaultFactory.sol0%100%0%0%33–34, 39, 53, 57–59, 61, 68–69
packages/vault/contracts/libs
   StrategyLib.sol0%100%0%0%116–117, 119–120, 122–126, 132, 135–136, 150, 153, 157, 159, 162, 164, 176–180, 182–183, 185–186, 188, 194, 196, 199–202, 205, 90–95
packages/vault/contracts/types
   Account.sol100%100%100%100%
   Checkpoint.sol100%100%100%100%
   Registration.sol100%100%100%100%
   VaultParameter.sol100%100%100%100%

Copy link

Code Size Diff:

View Report
 ·---------------------------------|--------------------------------|--------------------------------·
 |  Solc version: 0.8.24           ·  Optimizer enabled: true       ·  Runs: 1000000                 │
 ··································|································|·································
 |  Contract Name                  ·  Deployed size (KiB) (change)  ·  Initcode size (KiB) (change)  │
 ··································|································|·································
 |  AccessUpdateBatchLib           ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  AccessUpdateLib                ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  Accumulator6Lib                ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Accumulator6StorageLib         ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Address                        ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  AddressStorageLib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  AdiabaticMath6                 ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  BeaconProxy                    ·                 0.693 (0.000)  ·                 1.796 (0.000)  │
 ··································|································|·································
 |  BoolStorageLib                 ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Bytes32StorageLib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  CheckpointLib                  ·                 7.131 (0.000)  ·                 7.163 (0.000)  │
 ··································|································|·································
 |  CheckpointStorageLib           ·                 0.751 (0.000)  ·                 0.783 (0.000)  │
 ··································|································|·································
 |  CheckpointTester               ·                 8.129 (0.000)  ·                 8.155 (0.000)  │
 ··································|································|·································
 |  CommonLib                      ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  Create2                        ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  CurveMath6                     ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  ECDSA                          ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  EnumerableSet                  ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  ERC1967Proxy                   ·                 0.220 (0.000)  ·                 1.007 (0.000)  │
 ··································|································|·································
 |  ERC20                          ·                 3.235 (0.000)  ·                 4.142 (0.000)  │
 ··································|································|·································
 |  ERC20PresetMinterPauser        ·                 8.197 (0.000)  ·                 9.599 (0.000)  │
 ··································|································|·································
 |  Fixed18Lib                     ·                 0.486 (0.000)  ·                 0.517 (0.000)  │
 ··································|································|·································
 |  Fixed18StorageLib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Fixed6Lib                      ·                 0.481 (0.000)  ·                 0.512 (0.000)  │
 ··································|································|·································
 |  Fixed6StorageLib               ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  GlobalLib                      ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  GlobalStorageLib               ·                 1.199 (0.000)  ·                 1.231 (0.000)  │
 ··································|································|·································
 |  GlobalTester                   ·                 2.215 (0.000)  ·                 2.241 (0.000)  │
 ··································|································|·································
 |  GroupCancellationLib           ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  GuaranteeGlobalTester          ·                 2.583 (0.000)  ·                 2.609 (0.000)  │
 ··································|································|·································
 |  GuaranteeLib                   ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  GuaranteeLocalTester           ·                 2.991 (0.000)  ·                 3.018 (0.000)  │
 ··································|································|·································
 |  GuaranteeStorageGlobalLib      ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  GuaranteeStorageLib            ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  GuaranteeStorageLocalLib       ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Int256StorageLib               ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  IntentLib                      ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  InvariantLib                   ·                 6.911 (0.000)  ·                 6.943 (0.000)  │
 ··································|································|·································
 |  LinearAdiabatic6Lib            ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  LocalLib                       ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  LocalStorageLib                ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  LocalTester                    ·                 1.359 (0.000)  ·                 1.386 (0.000)  │
 ··································|································|·································
 |  MagicValueLib                  ·                 3.448 (0.000)  ·                 3.479 (0.000)  │
 ··································|································|·································
 |  Market                         ·                23.185 (0.000)  ·                23.325 (0.000)  │
 ··································|································|·································
 |  MarketFactory                  ·                11.980 (0.000)  ·                12.196 (0.000)  │
 ··································|································|·································
 |  MarketParameterStorageLib      ·                 1.110 (0.000)  ·                 1.143 (0.000)  │
 ··································|································|·································
 |  MarketParameterTester          ·                 1.253 (0.000)  ·                 1.279 (0.000)  │
 ··································|································|·································
 |  Math                           ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  MockToken                      ·                 3.941 (0.000)  ·                 4.689 (0.000)  │
 ··································|································|·································
 |  NoopAdiabatic6Lib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  NumberMath                     ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  OperatorUpdateLib              ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  OrderGlobalTester              ·                 3.135 (0.000)  ·                 3.161 (0.000)  │
 ··································|································|·································
 |  OrderLib                       ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  OrderLocalTester               ·                 3.350 (0.000)  ·                 3.376 (0.000)  │
 ··································|································|·································
 |  OrderStorageGlobalLib          ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  OrderStorageLib                ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  OrderStorageLocalLib           ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  PAccumulator6Lib               ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  PController6Lib                ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  PositionGlobalTester           ·                 5.058 (0.000)  ·                 5.084 (0.000)  │
 ··································|································|·································
 |  PositionLib                    ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  PositionLocalTester            ·                 5.108 (0.000)  ·                 5.135 (0.000)  │
 ··································|································|·································
 |  PositionStorageGlobalLib       ·                 0.526 (0.000)  ·                 0.559 (0.000)  │
 ··································|································|·································
 |  PositionStorageLib             ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  PositionStorageLocalLib        ·                 0.569 (0.000)  ·                 0.602 (0.000)  │
 ··································|································|·································
 |  ProtocolParameterStorageLib    ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  ProtocolParameterTester        ·                 1.529 (0.000)  ·                 1.556 (0.000)  │
 ··································|································|·································
 |  ProxyAdmin                     ·                 2.255 (0.000)  ·                 2.348 (0.000)  │
 ··································|································|·································
 |  RiskParameterStorageLib        ·                 2.783 (0.000)  ·                 2.815 (0.000)  │
 ··································|································|·································
 |  RiskParameterTester            ·                 2.425 (0.000)  ·                 2.451 (0.000)  │
 ··································|································|·································
 |  SafeERC20                      ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  SignatureChecker               ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  SignedMath                     ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  SignerUpdateLib                ·                 0.169 (0.000)  ·                 0.198 (0.000)  │
 ··································|································|·································
 |  StorageSlot                    ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Strings                        ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  TimelockController             ·                 9.532 (0.000)  ·                10.858 (0.000)  │
 ··································|································|·································
 |  Token18Lib                     ·                 0.138 (0.000)  ·                 0.166 (0.000)  │
 ··································|································|·································
 |  Token18StorageLib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  TransparentUpgradeableProxy    ·                 2.590 (0.000)  ·                 3.633 (0.000)  │
 ··································|································|·································
 |  UFixed18Lib                    ·                 0.303 (0.000)  ·                 0.333 (0.000)  │
 ··································|································|·································
 |  UFixed18StorageLib             ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  UFixed6Lib                     ·                 0.291 (0.000)  ·                 0.321 (0.000)  │
 ··································|································|·································
 |  UFixed6StorageLib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  Uint256StorageLib              ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  UJumpRateUtilizationCurve6Lib  ·                 0.056 (0.000)  ·                 0.083 (0.000)  │
 ··································|································|·································
 |  UpgradeableBeacon              ·                 1.165 (0.000)  ·                 1.462 (0.000)  │
 ··································|································|·································
 |  Verifier                       ·                 8.411 (0.000)  ·                 8.734 (0.000)  │
 ··································|································|·································
 |  VersionLib                     ·                11.684 (0.000)  ·                11.716 (0.000)  │
 ··································|································|·································
 |  VersionStorageLib              ·                 1.882 (0.000)  ·                 1.914 (0.000)  │
 ··································|································|·································
 |  VersionTester                  ·                 8.442 (0.000)  ·                 8.469 (0.000)  │
 ·---------------------------------|--------------------------------|--------------------------------·

Copy link

Gas Report Diff:

View Report
······························································································································
|  Solidity and Network Configuration                                                                                        │
·······································|··················|·················|··················|······························
|  Solidity: 0.8.24                    ·  Optim: true     ·  Runs: 1000000  ·  viaIR: true     ·    Block: 32,000,000 gas    │
·······································|··················|·················|··················|······························
|  Methods                                                                                                                   │
·······································|··················|·················|··················|···············|··············
|  Contracts / Methods                 ·  Min             ·  Max            ·  Avg             ·  # calls      ·  usd (avg)  │
·······································|··················|·················|··················|···············|··············
|  ERC20                               ·                                                                                     │
·······································|··················|·················|··················|···············|··············
|      approve                         ·          46,727  ·         47,051  ·          46,755  ·          130  ·          -  │
·······································|··················|·················|··················|···············|··············
|      transfer                        ·          30,283  ·         47,395  ·     39,792 -761  ·            9  ·          -  │
·······································|··················|·················|··················|···············|··············
|  ERC20PresetMinterPauser             ·                                                                                     │
·······································|··················|·················|··················|···············|··············
|      pause                           ·               -  ·              -  ·          53,568  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|  Market                              ·                                                                                     │
·······································|··················|·················|··················|···············|··············
|      claimExposure                   ·          77,034  ·         80,460  ·          78,747  ·            2  ·          -  │
·······································|··················|·················|··················|···············|··············
|      claimFee                        ·  21,420 -58,975  ·        102,412  ·   84,246 -2,731  ·           24  ·          -  │
·······································|··················|·················|··················|···············|··············
|      settle                          ·         158,993  ·        590,650  ·  375,505 -1,302  ·          141  ·          -  │
·······································|··················|·················|··················|···············|··············
|      update                          ·         485,521  ·        489,968  ·         487,180  ·            8  ·          -  │
·······································|··················|·················|··················|···············|··············
|      update                          ·         715,801  ·        756,547  ·         749,750  ·            6  ·          -  │
·······································|··················|·················|··················|···············|··············
|      update                          ·         290,390  ·        815,045  ·    573,120 +181  ·          154  ·          -  │
·······································|··················|·················|··················|···············|··············
|      update                          ·         529,670  ·        800,970  ·  680,877 -1,633  ·           11  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateBeneficiary               ·               -  ·              -  ·          65,866  ·           60  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateCoordinator               ·               -  ·              -  ·          66,532  ·           60  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateParameter                 ·          60,755  ·         80,703  ·     75,344 -118  ·           88  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateRiskParameter             ·         101,227  ·        158,645  ·    139,227 -401  ·           94  ·          -  │
·······································|··················|·················|··················|···············|··············
|  MarketFactory                       ·                                                                                     │
·······································|··················|·················|··················|···············|··············
|      create                          ·               -  ·              -  ·         413,495  ·           62  ·          -  │
·······································|··················|·················|··················|···············|··············
|      initialize                      ·          77,476  ·        103,246  ·          90,361  ·            4  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateAccessBatch               ·               -  ·              -  ·          79,661  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateAccessBatchWithSignature  ·               -  ·              -  ·         132,577  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateExtension                 ·               -  ·              -  ·       55,047 -6  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateOperator                  ·               -  ·              -  ·          53,239  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateOperatorWithSignature     ·               -  ·              -  ·         101,957  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateParameter                 ·          42,502  ·         59,590  ·          44,238  ·           20  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updatePauser                    ·               -  ·              -  ·          54,216  ·            2  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateReferralFee               ·          37,782  ·         54,882  ·          52,032  ·           12  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateSigner                    ·          31,793  ·         53,705  ·          44,940  ·            5  ·          -  │
·······································|··················|·················|··················|···············|··············
|      updateSignerWithSignature       ·               -  ·              -  ·         101,625  ·            1  ·          -  │
·······································|··················|·················|··················|···············|··············
|  Verifier                            ·                                                                                     │
·······································|··················|·················|··················|···············|··············
|      initialize                      ·               -  ·              -  ·          76,409  ·            2  ·          -  │
·······································|··················|·················|··················|···············|··············
|  Deployments                                            ·                                    ·  % of limit   ·             │
·······································|··················|·················|··················|···············|··············
|  CheckpointLib                       ·               -  ·              -  ·       1,630,371  ·        5.1 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  CheckpointStorageLib                ·               -  ·              -  ·         218,154  ·        0.7 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  GlobalStorageLib                    ·               -  ·              -  ·         316,332  ·          1 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  InvariantLib                        ·               -  ·              -  ·       1,576,200  ·        4.9 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  MagicValueLib                       ·               -  ·              -  ·         815,913  ·        2.5 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  Market                              ·   5,189,411 -12  ·      5,189,423  ·    5,189,417 -6  ·       16.2 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  MarketFactory                       ·               -  ·              -  ·       2,691,259  ·        8.4 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  MarketParameterStorageLib           ·               -  ·              -  ·         296,364  ·        0.9 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  PositionStorageGlobalLib            ·               -  ·              -  ·         168,721  ·        0.5 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  PositionStorageLocalLib             ·               -  ·              -  ·         178,242  ·        0.6 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  ProxyAdmin                          ·               -  ·              -  ·         574,001  ·        1.8 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  RiskParameterStorageLib             ·               -  ·              -  ·         663,050  ·        2.1 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  TransparentUpgradeableProxy         ·               -  ·              -  ·      689,929 +3  ·        2.2 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  Verifier                            ·               -  ·              -  ·       1,906,491  ·          6 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  VersionLib                          ·               -  ·              -  ·       2,635,888  ·        8.2 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  VersionStorageLib                   ·               -  ·              -  ·         467,797  ·        1.5 %  ·          -  │
·······································|··················|·················|··················|···············|··············
|  Key                                                                                                                       │
······························································································································
|  ◯  Execution gas for this method does not include intrinsic gas overhead                                                  │
······························································································································
|  △  Cost was non-zero but below the precision setting for the currency display (see options)                               │
······························································································································
|  Toolchain:  hardhat                                                                                                       │
······························································································································

Copy link

[Core] Integration Test Coverage Report

Coverage after merging prateek/pe-1982-split-maxSettlementFee into v2.4 will be
97.91%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/core/contracts
   InsuranceFund.sol80%50%100%100%29, 34, 39, 39, 49
   Market.sol98.31%93.88%100%100%130, 144, 185, 237, 706, 878
   MarketFactory.sol96.74%90.63%100%100%125, 151, 180
   Verifier.sol84.85%75%100%100%35, 48, 64, 80, 96
packages/core/contracts/interfaces
   IInsuranceFund.sol100%100%100%100%
   IMarket.sol100%100%100%100%
   IMarketFactory.sol100%100%100%100%
   IMarketFactorySigners.sol100%100%100%100%
   IOracleProvider.sol100%100%100%100%
   IOracleProviderFactory.sol100%100%100%100%
   IVerifier.sol100%100%100%100%
packages/core/contracts/libs
   CheckpointLib.sol100%100%100%100%
   InvariantLib.sol60.66%47.50%100%85%109, 115–116, 35–36, 38–39, 39, 39, 39, 48, 52, 52, 60, 65–66, 66, 72–73, 77, 83–84, 84, 98
   MagicValueLib.sol63.16%50%100%62.50%55–58, 58, 58–59
   VersionLib.sol98.76%95.83%100%99.18%442–443
packages/core/contracts/types
   AccessUpdate.sol100%100%100%100%
   AccessUpdateBatch.sol100%100%100%100%
   Checkpoint.sol74.07%50%100%100%50–56
   Global.sol79.69%53.57%100%100%145–157
   Guarantee.sol89.55%65%100%100%197–199, 222–225
   Intent.sol100%100%100%100%
   Local.sol82.14%50%100%100%84–88
   MarketParameter.sol76.67%50%100%87.50%100–101, 85–86, 88–89, 99
   OperatorUpdate.sol100%100%100%100%
   OracleReceipt.sol100%100%100%100%
   OracleVersion.sol100%100%100%100%
   Order.sol86.31%67.24%96.77%96.20%103, 109–110, 162, 182, 182, 240, 396–401, 472–474, 500–505
   Position.sol86.32%61.11%90%93.62%111, 148, 203, 216, 300, 330–332, 377, 395
   ProtocolParameter.sol73.53%50%100%100%71–73, 79–84
   RiskParameter.sol69.33%47.62%100%96.67%134, 140, 142, 148, 150–151, 153–154, 156, 158, 160, 168, 168, 168–169, 179–186
   SignerUpdate.sol100%100%100%100%
   Version.sol70.27%50%100%100%100–119, 98–99

Copy link

[Core] Unit Test Coverage Report

Coverage after merging prateek/pe-1982-split-maxSettlementFee into v2.4 will be
100.00%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/core/contracts
   InsuranceFund.sol100%100%100%100%
   Market.sol99.72%98.98%100%100%144
   MarketFactory.sol100%100%100%100%
   Verifier.sol93.94%90%100%100%35, 80
packages/core/contracts/interfaces
   IInsuranceFund.sol100%100%100%100%
   IMarket.sol100%100%100%100%
   IMarketFactory.sol100%100%100%100%
   IMarketFactorySigners.sol100%100%100%100%
   IOracleProvider.sol100%100%100%100%
   IOracleProviderFactory.sol100%100%100%100%
   IVerifier.sol100%100%100%100%
packages/core/contracts/libs
   CheckpointLib.sol100%100%100%100%
   InvariantLib.sol100%100%100%100%
   MagicValueLib.sol100%100%100%100%
   VersionLib.sol100%100%100%100%
packages/core/contracts/types
   AccessUpdate.sol100%100%100%100%
   AccessUpdateBatch.sol100%100%100%100%
   Checkpoint.sol100%100%100%100%
   Global.sol96.88%92.86%100%100%151, 153
   Guarantee.sol100%100%100%100%
   Intent.sol100%100%100%100%
   Local.sol100%100%100%100%
   MarketParameter.sol100%100%100%100%
   OperatorUpdate.sol100%100%100%100%
   OracleReceipt.sol100%100%100%100%
   OracleVersion.sol100%100%100%100%
   Order.sol98.21%94.83%100%100%103, 399, 99
   Position.sol100%100%100%100%
   ProtocolParameter.sol100%100%100%100%
   RiskParameter.sol96%92.86%100%100%179, 182, 186
   SignerUpdate.sol100%100%100%100%
   Version.sol100%100%100%100%

Copy link

[Core] Combined Test Coverage Report

Coverage after merging prateek/pe-1982-split-maxSettlementFee into v2.4 will be
100.00%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/core/contracts
   InsuranceFund.sol100%100%100%100%
   Market.sol100%100%100%100%
   MarketFactory.sol100%100%100%100%
   Verifier.sol100%100%100%100%
packages/core/contracts/libs
   CheckpointLib.sol100%100%100%100%
   InvariantLib.sol100%100%100%100%
   MagicValueLib.sol100%100%100%100%
   VersionLib.sol100%100%100%100%
packages/core/contracts/types
   AccessUpdate.sol100%100%100%100%
   AccessUpdateBatch.sol100%100%100%100%
   Checkpoint.sol100%100%100%100%
   Global.sol100%100%100%100%
   Guarantee.sol100%100%100%100%
   Intent.sol100%100%100%100%
   Local.sol100%100%100%100%
   MarketParameter.sol100%100%100%100%
   OperatorUpdate.sol100%100%100%100%
   Order.sol100%100%100%100%
   Position.sol100%100%100%100%
   ProtocolParameter.sol100%100%100%100%
   RiskParameter.sol100%100%100%100%
   SignerUpdate.sol100%100%100%100%
   Version.sol100%100%100%100%

Copy link

[Periphery] Integration Test Coverage Report

Coverage after merging prateek/pe-1982-split-maxSettlementFee into v2.4 will be
93.83%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/oracle/contracts
   Oracle.sol65.33%100%65%65.45%111–112, 121, 142, 155, 178–179, 181, 183–184, 195, 197, 202–203, 54, 67–68, 94, 99
   OracleFactory.sol100%100%100%100%
packages/oracle/contracts/chainlink
   ChainlinkFactory.sol100%100%100%100%
packages/oracle/contracts/keeper
   KeeperFactory.sol97.65%100%92.31%98.61%213
   KeeperOracle.sol97.37%100%94.12%98.31%87
packages/oracle/contracts/keeper/libs
   DedupLib.sol100%100%100%100%
packages/oracle/contracts/keeper/types
   KeeperOracleParameter.sol93.75%100%100%92.31%56
   PriceResponse.sol100%100%100%100%
packages/oracle/contracts/metaquants
   MetaQuantsFactory.sol100%100%100%100%
packages/oracle/contracts/payoff
   Inverse.sol0%100%0%0%9
   PowerHalf.sol0%100%0%0%13
   PowerTwo.sol100%100%100%100%
packages/oracle/contracts/pyth
   PythFactory.sol100%100%100%100%
packages/oracle/contracts/types
   OracleParameter.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts
   Account.sol100%100%100%100%
   AccountVerifier.sol91.67%100%91.67%91.67%38
   Controller.sol92%100%90.48%92.41%147, 155, 271, 274, 289, 306
   Controller_Arbitrum.sol100%100%100%100%
   Controller_Incentivized.sol100%100%100%100%
   Controller_Optimism.sol0%100%0%0%29, 41
packages/periphery/contracts/CollateralAccounts/libs
   RebalanceLib.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts/test
   RebalanceConfigTester.sol0%100%0%0%10, 14
packages/periphery/contracts/CollateralAccounts/types
   Action.sol100%100%100%100%
   DeployAccount.sol100%100%100%100%
   MarketTransfer.sol100%100%100%100%
   RebalanceConfig.sol20%100%33.33%14.29%34–35, 43–44, 46, 50
   RebalanceConfigChange.sol85.71%100%100%83.33%43
   RelayedAccessUpdateBatch.sol100%100%100%100%
   RelayedGroupCancellation.sol100%100%100%100%
   RelayedNonceCancellation.sol100%100%100%100%
   RelayedOperatorUpdate.sol100%100%100%100%
   RelayedSignerUpdate.sol100%100%100%100%
   Withdrawal.sol100%100%100%100%
packages/periphery/contracts/Coordinator
   Coordinator.sol0%100%0%0%20, 26–27, 33–34, 40–42, 49–50
packages/periphery/contracts/MultiInvoker
   MultiInvoker.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders
   Manager.sol100%100%100%100%
   Manager_Arbitrum.sol100%100%100%100%
   Manager_Optimism.sol0%100%0%0%27, 35
   OrderVerifier.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders/test
   TriggerOrderTester.sol0%100%0%0%17, 21, 25, 29
packages/periphery/contracts/TriggerOrders/types
   Action.sol100%100%100%100%
   CancelOrderAction.sol100%100%100%100%
   InterfaceFee.sol100%100%100%100%
   PlaceOrderAction.sol100%100%100%100%
   TriggerOrder.sol95.56%100%100%94.29%120, 47
packages/vault/contracts
   Vault.sol100%100%100%100%
   VaultFactory.sol100%100%100%100%
packages/vault/contracts/libs
   StrategyLib.sol100%100%100%100%
packages/vault/contracts/types
   Account.sol100%100%100%100%
   Checkpoint.sol100%100%100%100%
   Registration.sol100%100%100%100%
   VaultParameter.sol100%100%100%100%

Copy link

[Periphery] Combined Test Coverage Report

Coverage after merging prateek/pe-1982-split-maxSettlementFee into v2.4 will be
99.38%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/oracle/contracts
   Oracle.sol100%100%100%100%
   OracleFactory.sol100%100%100%100%
packages/oracle/contracts/chainlink
   ChainlinkFactory.sol100%100%100%100%
packages/oracle/contracts/keeper
   KeeperFactory.sol97.65%100%92.31%98.61%213
   KeeperOracle.sol97.37%100%94.12%98.31%87
packages/oracle/contracts/keeper/libs
   DedupLib.sol100%100%100%100%
packages/oracle/contracts/keeper/types
   KeeperOracleParameter.sol100%100%100%100%
   PriceResponse.sol100%100%100%100%
packages/oracle/contracts/metaquants
   MetaQuantsFactory.sol100%100%100%100%
packages/oracle/contracts/payoff
   Inverse.sol100%100%100%100%
   PowerHalf.sol100%100%100%100%
   PowerTwo.sol100%100%100%100%
packages/oracle/contracts/pyth
   PythFactory.sol100%100%100%100%
packages/oracle/contracts/types
   OracleParameter.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts
   Account.sol100%100%100%100%
   AccountVerifier.sol100%100%100%100%
   Controller.sol100%100%100%100%
   Controller_Arbitrum.sol100%100%100%100%
   Controller_Incentivized.sol100%100%100%100%
   Controller_Optimism.sol0%100%0%0%29, 41
packages/periphery/contracts/CollateralAccounts/libs
   RebalanceLib.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts/test
   RebalanceConfigTester.sol100%100%100%100%
packages/periphery/contracts/CollateralAccounts/types
   Action.sol100%100%100%100%
   DeployAccount.sol100%100%100%100%
   MarketTransfer.sol100%100%100%100%
   RebalanceConfig.sol100%100%100%100%
   RebalanceConfigChange.sol100%100%100%100%
   RelayedAccessUpdateBatch.sol100%100%100%100%
   RelayedGroupCancellation.sol100%100%100%100%
   RelayedNonceCancellation.sol100%100%100%100%
   RelayedOperatorUpdate.sol100%100%100%100%
   RelayedSignerUpdate.sol100%100%100%100%
   Withdrawal.sol100%100%100%100%
packages/periphery/contracts/Coordinator
   Coordinator.sol100%100%100%100%
packages/periphery/contracts/MultiInvoker
   MultiInvoker.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders
   Manager.sol100%100%100%100%
   Manager_Arbitrum.sol100%100%100%100%
   Manager_Optimism.sol0%100%0%0%27, 35
   OrderVerifier.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders/test
   TriggerOrderTester.sol100%100%100%100%
packages/periphery/contracts/TriggerOrders/types
   Action.sol100%100%100%100%
   CancelOrderAction.sol100%100%100%100%
   InterfaceFee.sol100%100%100%100%
   PlaceOrderAction.sol100%100%100%100%
   TriggerOrder.sol100%100%100%100%
packages/vault/contracts
   Vault.sol100%100%100%100%
   VaultFactory.sol100%100%100%100%
packages/vault/contracts/libs
   StrategyLib.sol100%100%100%100%
packages/vault/contracts/types
   Account.sol100%100%100%100%
   Checkpoint.sol100%100%100%100%
   Registration.sol100%100%100%100%
   VaultParameter.sol100%100%100%100%

@prateekdefi prateekdefi merged commit 340d533 into v2.4 Dec 17, 2024
16 checks passed
@prateekdefi prateekdefi deleted the prateek/pe-1982-split-maxSettlementFee branch December 17, 2024 07:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants