Skip to content

Commit 63fff03

Browse files
authored
Fix EIP712 compliance by hashing bytes and removing signature from type and settlement feed setting in option asset (#312)
1 parent af6962c commit 63fff03

File tree

12 files changed

+117
-113
lines changed

12 files changed

+117
-113
lines changed

.gas-snapshot

Lines changed: 87 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ GAS_MAX_PORTFOLIO:testGas_PMRM_2Expiries_Big() (gas: 36912299)
77
GAS_MAX_PORTFOLIO:testGas_PMRM_2Expiries_Max() (gas: 87983263)
88
GAS_MAX_PORTFOLIO:testGas_PMRM_2Expiries_Med() (gas: 17088974)
99
GAS_MAX_PORTFOLIO:testGas_PMRM_2Expiries_Small() (gas: 8708093)
10-
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Big() (gas: 40747590)
11-
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Max() (gas: 89055224)
12-
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Med() (gas: 20379228)
13-
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Small() (gas: 11217571)
14-
GAS_MAX_PORTFOLIO:testGas_PMRM_8Expiries_Max() (gas: 108187051)
10+
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Big() (gas: 40740361)
11+
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Max() (gas: 89047734)
12+
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Med() (gas: 20372132)
13+
GAS_MAX_PORTFOLIO:testGas_PMRM_4Expiries_Small() (gas: 11210542)
14+
GAS_MAX_PORTFOLIO:testGas_PMRM_8Expiries_Max() (gas: 108164229)
1515
GAS_MAX_PORTFOLIO:testGas_PMRM_Only_Perps() (gas: 1366640)
1616
GAS_MAX_PORTFOLIO:testGas_SRM_SingleMarket_2Expiry_Big() (gas: 41438922)
1717
GAS_MAX_PORTFOLIO:testGas_SRM_SingleMarket_2Expiry_Max() (gas: 113227281)
@@ -29,51 +29,51 @@ GAS_MAX_PORTFOLIO:testGas_SRM_TwoMarkets_Max() (gas: 115805672)
2929
GAS_MAX_PORTFOLIO:testGas_SRM_TwoMarkets_Med() (gas: 18030815)
3030
GAS_MAX_PORTFOLIO:testGas_SRM_TwoMarkets_Perps() (gas: 1994471)
3131
GAS_MAX_PORTFOLIO:testGas_SRM_TwoMarkets_Small() (gas: 8600152)
32-
INTEGRATION_BorrowAgainstOptionsTest:testBorrowAgainstITMCall() (gas: 1502621)
32+
INTEGRATION_BorrowAgainstOptionsTest:testBorrowAgainstITMCall() (gas: 1501939)
3333
INTEGRATION_BorrowAgainstOptionsTest:testBorrowAgainstITMPut() (gas: 1498449)
34-
INTEGRATION_CashAssetMisc:testBigInsolventAuctionLockWithdraw() (gas: 1051573)
35-
INTEGRATION_CashAssetMisc:testCanRecoverFromLock() (gas: 1255971)
36-
INTEGRATION_CashAssetMisc:testExchangeRateIsStableWhenCashBalanceIsZero() (gas: 636546)
37-
INTEGRATION_CashAssetMisc:testExchangeRateIsStableWithLargeNetSettledCash() (gas: 1151298)
38-
INTEGRATION_CashAssetMisc:testExchangeRateIsStableWithTinyNetSettledCash() (gas: 1088255)
39-
INTEGRATION_Liquidation:testAuctionFlow() (gas: 1320855)
40-
INTEGRATION_Liquidation:testCannotMakeBidderPayMoreThanCashLimit() (gas: 2720898)
41-
INTEGRATION_Liquidation:testLiquidateAccountUnderDifferentManager() (gas: 2537867)
42-
INTEGRATION_Liquidation:testLiquidationFrontrunProtection() (gas: 2300799)
43-
INTEGRATION_Liquidation:testLiquidationRaceCondition() (gas: 2660243)
44-
INTEGRATION_Liquidation:test_BMAfterLiquidation() (gas: 2835926)
45-
INTEGRATION_MultiwayTradeTest:testFourWayTradeITMCall() (gas: 1140607)
46-
INTEGRATION_MultiwayTradeTest:testThreeWayTradeITMCall() (gas: 980256)
47-
INTEGRATION_MultiwayTradeTest:testThreeWayTradeITMPut() (gas: 982223)
34+
INTEGRATION_CashAssetMisc:testBigInsolventAuctionLockWithdraw() (gas: 1049785)
35+
INTEGRATION_CashAssetMisc:testCanRecoverFromLock() (gas: 1254183)
36+
INTEGRATION_CashAssetMisc:testExchangeRateIsStableWhenCashBalanceIsZero() (gas: 635864)
37+
INTEGRATION_CashAssetMisc:testExchangeRateIsStableWithLargeNetSettledCash() (gas: 1149509)
38+
INTEGRATION_CashAssetMisc:testExchangeRateIsStableWithTinyNetSettledCash() (gas: 1086466)
39+
INTEGRATION_Liquidation:testAuctionFlow() (gas: 1316705)
40+
INTEGRATION_Liquidation:testCannotMakeBidderPayMoreThanCashLimit() (gas: 2713908)
41+
INTEGRATION_Liquidation:testLiquidateAccountUnderDifferentManager() (gas: 2533716)
42+
INTEGRATION_Liquidation:testLiquidationFrontrunProtection() (gas: 2293809)
43+
INTEGRATION_Liquidation:testLiquidationRaceCondition() (gas: 2653289)
44+
INTEGRATION_Liquidation:test_BMAfterLiquidation() (gas: 2833188)
45+
INTEGRATION_MultiwayTradeTest:testFourWayTradeITMCall() (gas: 1138817)
46+
INTEGRATION_MultiwayTradeTest:testThreeWayTradeITMCall() (gas: 978467)
47+
INTEGRATION_MultiwayTradeTest:testThreeWayTradeITMPut() (gas: 980434)
4848
INTEGRATION_MultiwayTradeTest:testThreeWayTradeNoOIFee() (gas: 591995)
49-
INTEGRATION_MultiwayTradeTest:testThreeWayTradeOTMCall() (gas: 1192486)
50-
INTEGRATION_MultiwayTradeTest:testThreeWayTradeOTMPut() (gas: 1194586)
49+
INTEGRATION_MultiwayTradeTest:testThreeWayTradeOTMCall() (gas: 1190696)
50+
INTEGRATION_MultiwayTradeTest:testThreeWayTradeOTMPut() (gas: 1192796)
5151
INTEGRATION_SRM_BaseAsset:testCanBorrowAgainstBase() (gas: 386291)
52-
INTEGRATION_SRM_Example:testInitialMargin() (gas: 981486)
53-
INTEGRATION_SRM_OptionSettlement:testSettleLongCallImbalance() (gas: 871504)
54-
INTEGRATION_SRM_OptionSettlement:testSettleLongPutImbalance() (gas: 933605)
55-
INTEGRATION_SRM_OptionSettlement:testSettleShortCallImbalance() (gas: 895046)
56-
INTEGRATION_SRM_OptionSettlement:testSettleShortPutImbalance() (gas: 952279)
57-
INTEGRATION_SRM_OptionSettlement:testSettleWhileHavingMultipleOptions() (gas: 1705992)
58-
INTEGRATION_SRM_PerpSettlement:testCanSettleIntoNegativeCash() (gas: 268728)
59-
INTEGRATION_SRM_PerpSettlement:testCanSettleUnrealizedLossForAnyAccount() (gas: 248693)
60-
INTEGRATION_SRM_PerpSettlement:testCanSettleUnrealizedPNLForAnyAccount() (gas: 308079)
61-
INTEGRATION_SRM_PerpSettlement:testCanSettleWhenOngoingAuction() (gas: 700460)
62-
INTEGRATION_SRM_PerpSettlement:testSettleLongPosition() (gas: 468864)
63-
INTEGRATION_SRM_PerpSettlement:testSettleShortPosition() (gas: 468797)
52+
INTEGRATION_SRM_Example:testInitialMargin() (gas: 978726)
53+
INTEGRATION_SRM_OptionSettlement:testSettleLongCallImbalance() (gas: 869715)
54+
INTEGRATION_SRM_OptionSettlement:testSettleLongPutImbalance() (gas: 931816)
55+
INTEGRATION_SRM_OptionSettlement:testSettleShortCallImbalance() (gas: 893257)
56+
INTEGRATION_SRM_OptionSettlement:testSettleShortPutImbalance() (gas: 950490)
57+
INTEGRATION_SRM_OptionSettlement:testSettleWhileHavingMultipleOptions() (gas: 1700721)
58+
INTEGRATION_SRM_PerpSettlement:testCanSettleIntoNegativeCash() (gas: 268046)
59+
INTEGRATION_SRM_PerpSettlement:testCanSettleUnrealizedLossForAnyAccount() (gas: 248011)
60+
INTEGRATION_SRM_PerpSettlement:testCanSettleUnrealizedPNLForAnyAccount() (gas: 307397)
61+
INTEGRATION_SRM_PerpSettlement:testCanSettleWhenOngoingAuction() (gas: 699778)
62+
INTEGRATION_SRM_PerpSettlement:testSettleLongPosition() (gas: 468182)
63+
INTEGRATION_SRM_PerpSettlement:testSettleShortPosition() (gas: 468115)
6464
INTEGRATION_SecurityModule_CashAsset:testDepositIntoSM() (gas: 253138)
6565
INTEGRATION_SecurityModule_CashAsset:testPaySMFeeForInsolvency() (gas: 507850)
6666
INTEGRATION_SecurityModule_CashAsset:testRecoverERC20() (gas: 40349)
6767
INTEGRATION_SecurityModule_CashAsset:testWithdrawFromSM() (gas: 293262)
68-
INTEGRATION_SocializeLosses:testSocializeLosses() (gas: 2145170)
68+
INTEGRATION_SocializeLosses:testSocializeLosses() (gas: 2133975)
6969
LiquidationSimTests_PM:testLiquidationSim1() (gas: 13197470)
7070
LiquidationSimTests_PM:testLiquidationSim2() (gas: 13212883)
7171
LiquidationSimTests_PM:testLiquidationSim3() (gas: 13211139)
7272
LiquidationSimTests_PM:testLiquidationSim4() (gas: 21300403)
7373
LiquidationSimTests_PM:testLiquidationSim5() (gas: 21293990)
7474
LiquidationSimTests_PM:testLiquidationSim6() (gas: 29511518)
7575
MECH_InterestRateFeesTest:testNoInterestPaidForNoBorrow() (gas: 420756)
76-
OracleDataSubmitterTest:testSubmitBatchData() (gas: 124572)
76+
OracleDataSubmitterTest:testSubmitBatchData() (gas: 123205)
7777
TestAuctionEdgeCases:testGetInsolventBidPriceEdgeCases() (gas: 257478)
7878
TestPMRM_Admin:testAddScenarios() (gas: 232124)
7979
TestPMRM_Admin:testCanSetMaxExpiries() (gas: 14902)
@@ -206,69 +206,69 @@ UNIT_InterestRateModel:testSimpleBorrowInterestFactor() (gas: 8738)
206206
UNIT_InterestRateScenario:testScenario() (gas: 1977170)
207207
UNIT_LendingDeposit20Decimals:testDepositWorkWithTokensWith20Decimals() (gas: 239998)
208208
UNIT_LendingDeposit6Decimals:testDepositWorkWithTokensWith6Decimals() (gas: 240015)
209-
UNIT_LyraForwardFeed:testCanGetFixedSettlementPriceAfterExpiry() (gas: 129288)
210-
UNIT_LyraForwardFeed:testCanPassInDataAndUpdateFwdFeed() (gas: 81798)
211-
UNIT_LyraForwardFeed:testCanSetSettlementData() (gas: 114037)
212-
UNIT_LyraForwardFeed:testCannotGetInvalidForwardDiff() (gas: 121144)
213-
UNIT_LyraForwardFeed:testCannotSetFwdInTheFuture() (gas: 41372)
214-
UNIT_LyraForwardFeed:testCannotSetFwdPastExpiry() (gas: 44961)
215-
UNIT_LyraForwardFeed:testCannotSetInvalidForwardConfidence() (gas: 44680)
216-
UNIT_LyraForwardFeed:testCannotSetInvalidSettlementData() (gas: 45620)
217-
UNIT_LyraForwardFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 42262)
218-
UNIT_LyraForwardFeed:testCannotUpdateFwdFeedAfterDeadline() (gas: 41673)
219-
UNIT_LyraForwardFeed:testCannotUpdateFwdFeedFromInvalidSigner() (gas: 46056)
220-
UNIT_LyraForwardFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 105209)
209+
UNIT_LyraForwardFeed:testCanGetFixedSettlementPriceAfterExpiry() (gas: 128184)
210+
UNIT_LyraForwardFeed:testCanPassInDataAndUpdateFwdFeed() (gas: 80695)
211+
UNIT_LyraForwardFeed:testCanSetSettlementData() (gas: 112933)
212+
UNIT_LyraForwardFeed:testCannotGetInvalidForwardDiff() (gas: 118923)
213+
UNIT_LyraForwardFeed:testCannotSetFwdInTheFuture() (gas: 40268)
214+
UNIT_LyraForwardFeed:testCannotSetFwdPastExpiry() (gas: 43857)
215+
UNIT_LyraForwardFeed:testCannotSetInvalidForwardConfidence() (gas: 43576)
216+
UNIT_LyraForwardFeed:testCannotSetInvalidSettlementData() (gas: 44516)
217+
UNIT_LyraForwardFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 41113)
218+
UNIT_LyraForwardFeed:testCannotUpdateFwdFeedAfterDeadline() (gas: 40569)
219+
UNIT_LyraForwardFeed:testCannotUpdateFwdFeedFromInvalidSigner() (gas: 44952)
220+
UNIT_LyraForwardFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 103000)
221221
UNIT_LyraForwardFeed:testRevertsWhenFetchingInvalidExpiry() (gas: 22819)
222222
UNIT_LyraForwardFeed:testSetNewSpotFeed() (gas: 451335)
223223
UNIT_LyraForwardFeed:testSetSettlementHeartBeat() (gas: 14835)
224-
UNIT_LyraForwardFeed:testSplitForwardFeed() (gas: 140689)
224+
UNIT_LyraForwardFeed:testSplitForwardFeed() (gas: 139579)
225225
UNIT_LyraRateFeed:testCanAddSigner() (gas: 32765)
226-
UNIT_LyraRateFeed:testCanPassInDataAndUpdateRateFeed() (gas: 60553)
227-
UNIT_LyraRateFeed:testCannotSetRateInTheFuture() (gas: 34096)
226+
UNIT_LyraRateFeed:testCanPassInDataAndUpdateRateFeed() (gas: 59731)
227+
UNIT_LyraRateFeed:testCannotSetRateInTheFuture() (gas: 33274)
228228
UNIT_LyraRateFeed:testCannotSetRateOutOfRange() (gas: 10731)
229-
UNIT_LyraRateFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 35119)
230-
UNIT_LyraRateFeed:testCannotUpdateRateFeedAfterDeadline() (gas: 34442)
231-
UNIT_LyraRateFeed:testCannotUpdateRateFeedFromInvalidSigner() (gas: 38760)
232-
UNIT_LyraRateFeed:testCantPassInInvalidConfidence() (gas: 36913)
233-
UNIT_LyraRateFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 78142)
229+
UNIT_LyraRateFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 34252)
230+
UNIT_LyraRateFeed:testCannotUpdateRateFeedAfterDeadline() (gas: 33620)
231+
UNIT_LyraRateFeed:testCannotUpdateRateFeedFromInvalidSigner() (gas: 37938)
232+
UNIT_LyraRateFeed:testCantPassInInvalidConfidence() (gas: 36090)
233+
UNIT_LyraRateFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 76496)
234234
UNIT_LyraRateFeed:testSetRate() (gas: 59356)
235-
UNIT_LyraSpotDiffFeed:testCanPassInDataAndUpdateSpotDiffFeed() (gas: 64973)
236-
UNIT_LyraSpotDiffFeed:testCannotGetInvalidForwardDiff() (gas: 95129)
237-
UNIT_LyraSpotDiffFeed:testCannotSetInvalidConfidence() (gas: 34032)
238-
UNIT_LyraSpotDiffFeed:testCannotSetSpotDiffInTheFuture() (gas: 31535)
239-
UNIT_LyraSpotDiffFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 32531)
240-
UNIT_LyraSpotDiffFeed:testCannotUpdateSpotDiffFeedAfterDeadline() (gas: 31860)
241-
UNIT_LyraSpotDiffFeed:testCannotUpdateSpotDiffFeedFromInvalidSigner() (gas: 36239)
242-
UNIT_LyraSpotDiffFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 84536)
235+
UNIT_LyraSpotDiffFeed:testCanPassInDataAndUpdateSpotDiffFeed() (gas: 64291)
236+
UNIT_LyraSpotDiffFeed:testCannotGetInvalidForwardDiff() (gas: 93758)
237+
UNIT_LyraSpotDiffFeed:testCannotSetInvalidConfidence() (gas: 33350)
238+
UNIT_LyraSpotDiffFeed:testCannotSetSpotDiffInTheFuture() (gas: 30853)
239+
UNIT_LyraSpotDiffFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 31804)
240+
UNIT_LyraSpotDiffFeed:testCannotUpdateSpotDiffFeedAfterDeadline() (gas: 31178)
241+
UNIT_LyraSpotDiffFeed:testCannotUpdateSpotDiffFeedFromInvalidSigner() (gas: 35557)
242+
UNIT_LyraSpotDiffFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 83171)
243243
UNIT_LyraSpotDiffFeed:testSetSpotFeed() (gas: 406432)
244244
UNIT_LyraSpotFeed:testCanAddSigner() (gas: 32632)
245-
UNIT_LyraSpotFeed:testCanHashFeedData() (gas: 12866)
246-
UNIT_LyraSpotFeed:testCanPassInDataAndUpdateSpotFeed() (gas: 57143)
245+
UNIT_LyraSpotFeed:testCanHashFeedData() (gas: 12533)
246+
UNIT_LyraSpotFeed:testCanPassInDataAndUpdateSpotFeed() (gas: 56461)
247247
UNIT_LyraSpotFeed:testCanSetSignerRequired() (gas: 14765)
248-
UNIT_LyraSpotFeed:testCanUseMultipleSigners() (gas: 81500)
249-
UNIT_LyraSpotFeed:testCannotReadStaleData() (gas: 58714)
248+
UNIT_LyraSpotFeed:testCanUseMultipleSigners() (gas: 80826)
249+
UNIT_LyraSpotFeed:testCannotReadStaleData() (gas: 58032)
250250
UNIT_LyraSpotFeed:testCannotSetSignerRequiredToZero() (gas: 10762)
251-
UNIT_LyraSpotFeed:testCannotSetSpotInTheFuture() (gas: 31604)
252-
UNIT_LyraSpotFeed:testCannotSubmitMismatchedData() (gas: 20065)
253-
UNIT_LyraSpotFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 32670)
254-
UNIT_LyraSpotFeed:testCannotUpdateIfNotEnoughSigners() (gas: 33556)
255-
UNIT_LyraSpotFeed:testCannotUpdateSpotFeedAfterDeadline() (gas: 31929)
256-
UNIT_LyraSpotFeed:testCannotUpdateSpotFeedFromInvalidSigner() (gas: 36287)
257-
UNIT_LyraSpotFeed:testCannotUpdateWithNoSigners() (gas: 16635)
258-
UNIT_LyraSpotFeed:testCannotUseSameSigner() (gas: 44959)
259-
UNIT_LyraSpotFeed:testCannotUseSameSigner2() (gas: 60305)
260-
UNIT_LyraSpotFeed:testCantPassInInvalidConfidence() (gas: 34133)
251+
UNIT_LyraSpotFeed:testCannotSetSpotInTheFuture() (gas: 30922)
252+
UNIT_LyraSpotFeed:testCannotSubmitMismatchedData() (gas: 19732)
253+
UNIT_LyraSpotFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 31943)
254+
UNIT_LyraSpotFeed:testCannotUpdateIfNotEnoughSigners() (gas: 32882)
255+
UNIT_LyraSpotFeed:testCannotUpdateSpotFeedAfterDeadline() (gas: 31247)
256+
UNIT_LyraSpotFeed:testCannotUpdateSpotFeedFromInvalidSigner() (gas: 35605)
257+
UNIT_LyraSpotFeed:testCannotUpdateWithNoSigners() (gas: 16302)
258+
UNIT_LyraSpotFeed:testCannotUseSameSigner() (gas: 44285)
259+
UNIT_LyraSpotFeed:testCannotUseSameSigner2() (gas: 59631)
260+
UNIT_LyraSpotFeed:testCantPassInInvalidConfidence() (gas: 33451)
261261
UNIT_LyraSpotFeed:testDomainSeparator() (gas: 7770)
262-
UNIT_LyraSpotFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 73941)
263-
UNIT_LyraVolFeed:testCanPassInDataAndUpdateVolFeed() (gas: 209318)
262+
UNIT_LyraSpotFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 72576)
263+
UNIT_LyraVolFeed:testCanPassInDataAndUpdateVolFeed() (gas: 207651)
264264
UNIT_LyraVolFeed:testCannotGetVolWithNoData() (gas: 25825)
265-
UNIT_LyraVolFeed:testCannotPassInTimestampHigherThanExpiry() (gas: 41037)
266-
UNIT_LyraVolFeed:testCannotSetInvalidConfidence() (gas: 40295)
267-
UNIT_LyraVolFeed:testCannotSetVolInTheFuture() (gas: 36894)
268-
UNIT_LyraVolFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 37786)
269-
UNIT_LyraVolFeed:testCannotUpdateVolFeedAfterDeadline() (gas: 37174)
270-
UNIT_LyraVolFeed:testCannotUpdateVolFeedFromInvalidSigner() (gas: 41444)
271-
UNIT_LyraVolFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 223023)
265+
UNIT_LyraVolFeed:testCannotPassInTimestampHigherThanExpiry() (gas: 39370)
266+
UNIT_LyraVolFeed:testCannotSetInvalidConfidence() (gas: 38627)
267+
UNIT_LyraVolFeed:testCannotSetVolInTheFuture() (gas: 35227)
268+
UNIT_LyraVolFeed:testCannotSubmitPriceWithReplacedSigner() (gas: 36073)
269+
UNIT_LyraVolFeed:testCannotUpdateVolFeedAfterDeadline() (gas: 35507)
270+
UNIT_LyraVolFeed:testCannotUpdateVolFeedFromInvalidSigner() (gas: 39777)
271+
UNIT_LyraVolFeed:testIgnoreUpdateIfOlderDataIsPushed() (gas: 219684)
272272
UNIT_LyraVolFeed:testRevertsWhenFetchingInvalidExpiry() (gas: 26002)
273273
UNIT_OptionAssetOITest:testCanTradeCrossManager() (gas: 361355)
274274
UNIT_OptionAssetOITest:testCloseAllPositionsMakeOIZero() (gas: 144596)

src/assets/OptionAsset.sol

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,18 @@ contract OptionAsset is IOptionAsset, PositionTracking, GlobalSubIdOITracking, M
4444
settlementFeed = ISettlementFeed(_settlementFeed);
4545
}
4646

47+
///////////////////////
48+
// Admin Functions //
49+
///////////////////////
50+
51+
/**
52+
* @notice Set the settlement feed contract
53+
*/
54+
function setSettlementFeed(address _settlementFeed) external onlyOwner {
55+
settlementFeed = ISettlementFeed(_settlementFeed);
56+
emit SettlementFeedSet(_settlementFeed);
57+
}
58+
4759
///////////////////////
4860
// Transfer Hook //
4961
///////////////////////

src/feeds/BaseLyraFeed.sol

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ import {IBaseLyraFeed} from "../interfaces/IBaseLyraFeed.sol";
1919
* @dev We inherit ERC712 for easy signature verification, but the TypeHash and object is not ERC712 compliant.
2020
*/
2121
abstract contract BaseLyraFeed is EIP712, Ownable2Step, IDataReceiver, IBaseLyraFeed {
22-
bytes32 public constant FEED_DATA_TYPEHASH =
23-
keccak256("FeedData(bytes data,uint256 deadline,uint64 timestamp,address signer,bytes signature)");
22+
bytes32 public constant FEED_DATA_TYPEHASH = keccak256("FeedData(bytes data,uint256 deadline,uint64 timestamp)");
2423

2524
////////////////////////
2625
// Variables //
@@ -124,6 +123,6 @@ abstract contract BaseLyraFeed is EIP712, Ownable2Step, IDataReceiver, IBaseLyra
124123
}
125124

126125
function hashFeedData(FeedData memory feedData) public pure returns (bytes32) {
127-
return keccak256(abi.encode(FEED_DATA_TYPEHASH, feedData.data, feedData.deadline, feedData.timestamp));
126+
return keccak256(abi.encode(FEED_DATA_TYPEHASH, keccak256(feedData.data), feedData.deadline, feedData.timestamp));
128127
}
129128
}

src/interfaces/IOptionAsset.sol

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ interface IOptionAsset is IAsset, IPositionTracking, IGlobalSubIdOITracking {
2222
*/
2323
function calcSettlementValue(uint subId, int balance) external view returns (int payout, bool priceSettled);
2424

25+
////////////////
26+
// Events //
27+
////////////////
28+
event SettlementFeedSet(address settlementFeed);
29+
2530
////////////////
2631
// Errors //
2732
////////////////

src/interfaces/IPMRM.sol

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {ISpotFeed} from "./ISpotFeed.sol";
55
import {IForwardFeed} from "./IForwardFeed.sol";
66
import {IInterestRateFeed} from "./IInterestRateFeed.sol";
77
import {IVolFeed} from "./IVolFeed.sol";
8-
import {ISettlementFeed} from "./ISettlementFeed.sol";
98

109
interface IPMRM {
1110
enum VolShockDirection {
@@ -20,7 +19,6 @@ interface IPMRM {
2019
IForwardFeed forwardFeed;
2120
IInterestRateFeed interestRateFeed;
2221
IVolFeed volFeed;
23-
ISettlementFeed settlementFeed;
2422
}
2523

2624
struct Portfolio {
@@ -93,7 +91,6 @@ interface IPMRM {
9391
event SpotFeedUpdated(ISpotFeed spotFeed);
9492
event StableFeedUpdated(ISpotFeed stableFeed);
9593
event ForwardFeedUpdated(IForwardFeed forwardFeed);
96-
event SettlementFeedUpdated(ISettlementFeed settlementFeed);
9794
event ScenariosUpdated(IPMRM.Scenario[] scenarios);
9895

9996
////////////

src/risk-managers/PMRM.sol

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import {IInterestRateFeed} from "../interfaces/IInterestRateFeed.sol";
2323
import {IPMRM} from "../interfaces/IPMRM.sol";
2424
import {IWrappedERC20Asset} from "../interfaces/IWrappedERC20Asset.sol";
2525
import {IDutchAuction} from "../interfaces/IDutchAuction.sol";
26-
import {ISettlementFeed} from "../interfaces/ISettlementFeed.sol";
2726
import {IForwardFeed} from "../interfaces/IForwardFeed.sol";
2827
import {IBasePortfolioViewer} from "../interfaces/IBasePortfolioViewer.sol";
2928

@@ -54,7 +53,6 @@ contract PMRM is IPMRM, ILiquidatableManager, BaseManager, ReentrancyGuard {
5453
IVolFeed public volFeed;
5554
ISpotFeed public stableFeed;
5655
IForwardFeed public forwardFeed;
57-
ISettlementFeed public settlementFeed;
5856

5957
/// @dev lib contract
6058
IPMRMLib public immutable lib;
@@ -84,7 +82,6 @@ contract PMRM is IPMRM, ILiquidatableManager, BaseManager, ReentrancyGuard {
8482
forwardFeed = feeds_.forwardFeed;
8583
interestRateFeed = feeds_.interestRateFeed;
8684
volFeed = feeds_.volFeed;
87-
settlementFeed = feeds_.settlementFeed;
8885
lib = lib_;
8986

9087
baseAsset = baseAsset_;
@@ -132,11 +129,6 @@ contract PMRM is IPMRM, ILiquidatableManager, BaseManager, ReentrancyGuard {
132129
emit ForwardFeedUpdated(_forwardFeed);
133130
}
134131

135-
function setSettlementFeed(ISettlementFeed _settlementFeed) external onlyOwner {
136-
settlementFeed = _settlementFeed;
137-
emit SettlementFeedUpdated(_settlementFeed);
138-
}
139-
140132
/**
141133
* @notice Sets the scenarios for managing margin positions.
142134
* @dev Only the contract owner can invoke this function.

test/assets/optionAsset/unit-tests/Basics.t.sol

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ contract UNIT_TestOptionBasics is Test {
4545
// Transfer //
4646
//////////////
4747

48+
function testCanChangeSettlementFeed() public {
49+
assertEq(address(option.settlementFeed()), address(0));
50+
option.setSettlementFeed(alice);
51+
assertEq(address(option.settlementFeed()), alice);
52+
}
53+
4854
function testWhitelistedManagerCheck() public {
4955
option.setWhitelistManager(address(manager), true);
5056

0 commit comments

Comments
 (0)