Skip to content
This repository has been archived by the owner on Jul 2, 2024. It is now read-only.

Add fee and accumulator events #171

Merged
merged 6 commits into from
May 1, 2023
Merged

Add fee and accumulator events #171

merged 6 commits into from
May 1, 2023

Conversation

arjun-io
Copy link
Collaborator

@arjun-io arjun-io commented Apr 28, 2023

Adds 4 new events to the Product contract

  • PositionFeeCharged(version, amount) - when a use opens/closes a position which results in a non-zero position fee
  • FundingAccumulated(latestVersion, toVersion, (maker, taker), fee) - when funding accumulates as part of the settlement accumulation phase
  • PositionAccumulated(latestVersion, toVersion, (maker, taker)) - when position based pnl accumulates as part of the settlement accumulation phase
  • PositionFeeAccumulated(latestVersion, toVersion, (maker, taker), fee) - when position fees accumulate (to makers) as part of the settlement accumulation phase. Note that the taker amount will (currently) always be 0, but we are including it for consistency

Note that since currently Solidity library events are included in the ABI (issue here) - manual ABI patching will be necessary until the bug is fixed

Also bumps the Product.sol to Solidity version 0.8.19 for contract sizing requirements.

Settlement gas usage before:

······························|·································|··············|·············|·················|···············|··············
|  Product                    ·  settle                         ·       98028  ·     539308  ·         353830  ·           68  ·          -  │
······························|·································|··············|·············|·················|···············|··············

After:

······························|·································|··············|·············|·················|···············|··············
|  Product                    ·  settle                         ·       98028  ·     556876  ·         363160  ·           68  ·          -  │
······························|·································|··············|·············|·················|···············|··············

@github-actions
Copy link

Integration Test Coverage Report

Coverage after merging arjun/add-value-events into dev2 will be
47.88%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/perennial/contracts/collateral
   Collateral.sol83.57%65%100%96.72%110, 112–113, 120–121, 161, 212, 236, 236, 246, 257, 278–279, 53, 55–57, 86, 88–89, 91–93
packages/perennial/contracts/collateral/types
   OptimisticLedger.sol100%100%100%100%
packages/perennial/contracts/controller
   Controller.sol77.40%50%88.37%93.24%126, 140, 153, 166–167, 181–182, 191–192, 201–202, 211–212, 221–222, 232–233, 243–244, 254–255, 265, 274, 283, 292, 312, 320, 329, 337, 355, 375, 390, 397, 60, 85
   UControllerProvider.sol74.36%56.25%87.50%86.67%33–34, 40, 47, 54, 54, 54, 56, 61
packages/perennial/contracts/incentivizer
   Incentivizer.sol82.86%60.71%100%96.67%129, 141, 154, 167, 169, 184–185, 202, 214, 324, 331, 42–45, 50–53, 82–85, 96
packages/perennial/contracts/incentivizer/types
   ProductManager.sol94.12%75%100%97.78%162–163, 167, 228
   Program.sol100%100%100%100%
packages/perennial/contracts/interfaces
   ICollateral.sol100%100%100%100%
   IContractPayoffProvider.sol100%100%100%100%
   IController.sol100%100%100%100%
   IIncentivizer.sol100%100%100%100%
   IMultiInvoker.sol100%100%100%100%
   IMultiInvokerRollup.sol100%100%100%100%
   IParamProvider.sol100%100%100%100%
   IPayoffProvider.sol100%100%100%100%
   IPerennialLens.sol100%100%100%100%
   IProduct.sol100%100%100%100%
packages/perennial/contracts/interfaces/types
   Accumulator.sol60%100%60%60%30, 40
   PackedAccumulator.sol0%100%0%0%28
   PackedPosition.sol0%100%0%0%28
   PayoffDefinition.sol0%0%0%0%107, 111, 113–115, 121, 39, 39, 39, 42, 55–57, 60, 60, 60–61, 61, 65, 65, 65–66, 66, 79, 79, 79, 81, 94, 97
   PendingFeeUpdates.sol0%0%0%0%104, 108, 115, 34, 34, 34–36, 41, 51, 51, 51–53, 58, 68, 68, 68–70, 75, 80, 80, 80, 80, 80, 85–90
   Position.sol35.71%0%41.67%41.67%107, 126, 144, 144, 144, 156, 156, 156, 33, 42, 52
   PrePosition.sol0%0%0%0%112, 114, 119–120, 134–135, 135, 135, 40, 50–51, 61–62, 72–73, 83–84, 98
   ProgramInfo.sol80%33.33%100%100%51–52, 52, 52
packages/perennial/contracts/lens
   PerennialLens.sol0%0%0%0%103, 103, 106–116, 133, 142, 151–160, 168, 168–169, 177, 177–178, 186, 186–187, 19, 195, 195–196, 205, 205–206, 214, 214–215, 226, 226, 229–231, 240, 240–242, 250, 250–252, 261, 261–263, 265–266, 27, 274, 274–275, 292, 292–293, 302, 302–303, 312, 312–313, 322, 322–323, 334, 334, 337, 348, 348, 351, 363, 363, 366, 375, 375–376, 387, 387, 39, 390, 399, 399, 40, 400–401, 401, 401, 403–404, 404, 404–405, 408–409, 41–42, 423, 423–425, 43, 437, 437, 44, 440, 442–448, 45, 464, 464–471, 490, 500, 513–514, 519–520, 54–56, 65, 65–77, 89–91
packages/perennial/contracts/multiinvoker
   MultiInvoker.sol98.14%94%100%100%350, 366, 50
   MultiInvokerRollup.sol91.06%86.84%92.86%92.96%150, 180, 186–187, 189, 200–201, 201, 201, 259
packages/perennial/contracts/product
   Product.sol0%0%0%0%102–103, 106, 110, 113, 116, 116, 116, 118, 123, 127, 129, 136, 136, 136, 136–138, 155, 158, 158, 158, 161–163, 163, 167, 170, 174, 177, 177, 177, 179, 182, 188, 190, 198, 208, 208–209, 209–210, 210–211, 211–212, 212–213, 213–214, 214–215, 215–216, 216, 218, 22, 220–221, 223–224, 224, 224–226, 229, 237, 247, 247–248, 248–249, 249–250, 250–251, 251–252, 252, 254, 258, 260–261, 263–264, 264, 264–266, 269, 277, 287, 287–288, 288–289, 289–290, 290–291, 291–292, 292–293, 293–294, 294–295, 295–296, 296,

@arjun-io arjun-io changed the base branch from dev2 to arjun/param-delegate April 29, 2023 17:57
if (!positionFee.isZero()) controller().collateral().settleAccount(account, Fixed18Lib.from(-1, positionFee));
if (!positionFee.isZero()) {
controller().collateral().settleAccount(account, Fixed18Lib.from(-1, positionFee));
emit PositionFeeCharged(account, latestOracleVersion.version, positionFee);
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: should we move these to always call as well like we do for MakeClosed etc?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yeah I think that does make more sense, especially since we're emitting 0 value events elsewhere

Base automatically changed from arjun/param-delegate to dev2 May 1, 2023 15:06
@arjun-io arjun-io requested a review from kbrizzle May 1, 2023 15:09
@github-actions
Copy link

github-actions bot commented May 1, 2023

Unit Test Coverage Report

Coverage after merging arjun/add-value-events into dev2 will be
53.02%
Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
packages/perennial/contracts/collateral
   Collateral.sol93.57%85%100%100%110, 113, 236, 53, 57, 86, 91–93
packages/perennial/contracts/collateral/types
   OptimisticLedger.sol100%100%100%100%
packages/perennial/contracts/controller
   Controller.sol100%100%100%100%
   UControllerProvider.sol84.62%81.25%87.50%86.67%33, 54, 54, 54, 56
packages/perennial/contracts/incentivizer
   Incentivizer.sol95.71%89.29%100%100%141, 154, 167, 186, 42, 82
packages/perennial/contracts/incentivizer/types
   ProductManager.sol100%100%100%100%
   Program.sol100%100%100%100%
packages/perennial/contracts/interfaces
   ICollateral.sol100%100%100%100%
   IContractPayoffProvider.sol100%100%100%100%
   IController.sol100%100%100%100%
   IIncentivizer.sol100%100%100%100%
   IMultiInvoker.sol100%100%100%100%
   IMultiInvokerRollup.sol100%100%100%100%
   IParamProvider.sol100%100%100%100%
   IPayoffProvider.sol100%100%100%100%
   IPerennialLens.sol100%100%100%100%
   IProduct.sol100%100%100%100%
packages/perennial/contracts/interfaces/types
   Accumulator.sol60%100%60%60%30, 40
   PackedAccumulator.sol0%100%0%0%28
   PackedPosition.sol0%100%0%0%28
   PayoffDefinition.sol0%0%0%0%107, 111, 113–115, 121, 39, 39, 39, 42, 55–57, 60, 60, 60–61, 61, 65, 65, 65–66, 66, 79, 79, 79, 81, 94, 97
   PendingFeeUpdates.sol0%0%0%0%104, 108, 115, 34, 34, 34–36, 41, 51, 51, 51–53, 58, 68, 68, 68–70, 75, 80, 80, 80, 80, 80, 85–90
   Position.sol35.71%0%41.67%41.67%107, 126, 144, 144, 144, 156, 156, 156, 33, 42, 52
   PrePosition.sol0%0%0%0%112, 114, 119–120, 134–135, 135, 135, 40, 50–51, 61–62, 72–73, 83–84, 98
   ProgramInfo.sol100%100%100%100%
packages/perennial/contracts/lens
   PerennialLens.sol0%0%0%0%103, 103, 106–116, 133, 142, 151–160, 168, 168–169, 177, 177–178, 186, 186–187, 19, 195, 195–196, 205, 205–206, 214, 214–215, 226, 226, 229–231, 240, 240–242, 250, 250–252, 261, 261–263, 265–266, 27, 274, 274–275, 292, 292–293, 302, 302–303, 312, 312–313, 322, 322–323, 334, 334, 337, 348, 348, 351, 363, 363, 366, 375, 375–376, 387, 387, 39, 390, 399, 399, 40, 400–401, 401, 401, 403–404, 404, 404–405, 408–409, 41–42, 423, 423–425, 43, 437, 437, 44, 440, 442–448, 45, 464, 464–471, 490, 500, 513–514, 519–520, 54–56, 65, 65–77, 89–91
packages/perennial/contracts/multiinvoker
   MultiInvoker.sol92.55%90%95.24%93.33%156–157, 159, 366, 380, 380, 380–382, 384, 49
   MultiInvokerRollup.sol92.68%89.47%92.86%94.37%146, 150, 150–151, 153, 201, 211–212
packages/perennial/contracts/periphery
   CoordinatorDelegatable.sol100%100%100%100%
packages/perennial/contracts/product
   Product.sol0%0%0%0%102–103, 106, 110, 113, 116, 116, 116, 118, 123, 127, 129, 136, 136, 136, 136–138, 155, 158, 158, 158, 161–163, 163, 167, 170, 174, 177, 177, 177, 179, 182, 188, 190, 198, 208, 208–209, 209–210, 210–211, 211–212, 212–213, 213–214, 214–215, 215–216, 216, 218, 22, 220–221, 223–224, 224, 224, 226–227, 235, 245, 245–246, 246–247, 247–248, 248–249, 249–250, 250, 252, 256, 258–259, 261–262, 262, 262, 264–265, 273, 283, 283–284, 284–285, 285–286, 286–287, 287–288, 288–289, 289–290, 290–291, 291–292, 292, 294, 296–297, 299–300, 300, 300, 302–303, 311, 321, 321–322, 322–323, 323–324, 324–325, 325–326, 326–327, 327, 329, 333, 335–336, 338–339, 339, 339, 341–342, 350, 350, 350, 350, 350, 350–352, 355–356, 359, 368, 378, 387, 396, 405, 414, 422, 432, 440, 450, 460, 469, 47, 47, 479, 48, 480–481, 49, 490,

@arjun-io arjun-io merged commit 438e32e into dev2 May 1, 2023
@arjun-io arjun-io deleted the arjun/add-value-events branch May 1, 2023 19:57
arjun-io added a commit that referenced this pull request May 17, 2023
* Add AccessControlledCoordinatorOwner periphery contract

* remove funding and position fee updates from param admin

* fix integration test

* add natspec, test to transfer ownership

* Add fee and accumulator events

* emit PositionFeeCharged event on 0 value fees
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants