Skip to content

Commit 148e37c

Browse files
authored
Merge pull request #16 from TokenLogic-com-au/gelato-oracle
Update Certora Harness
2 parents 8c91622 + e1268c4 commit 148e37c

File tree

6 files changed

+109
-8
lines changed

6 files changed

+109
-8
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"files": [
3+
"certora/gsm/harness/GelatoOracleSwapFreezerHarness.sol",
4+
"src/contracts/facilitators/gsm/swapFreezer/GelatoOracleSwapFreezer.sol",
5+
],
6+
"packages": [
7+
"aave-v3-origin/=lib/aave-v3-origin/src",
8+
],
9+
"assert_autofinder_success": true,
10+
"optimistic_loop":true,
11+
… "-depth 20",
12+
],
13+
"verify":
14+
"GelatoOracleSwapFreezerHarness:certora/gsm/specs/gsm/GelatoOracleSwapFreezer.spec",
15+
//"build_cache": true,
16+
}

certora/gsm/conf/gsm/OracleSwapFreezer.conf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"files": [
3-
"certora/gsm/harness/OracleSwapFreezerHarness.sol",
4-
"src/contracts/facilitators/gsm/swapFreezer/OracleSwapFreezer.sol",
3+
"certora/gsm/harness/ChainlinkOracleSwapFreezerHarness.sol",
4+
"src/contracts/facilitators/gsm/swapFreezer/ChainlinkOracleSwapFreezer.sol",
55
],
66
"packages": [
77
"aave-v3-origin/=lib/aave-v3-origin/src",
@@ -14,13 +14,13 @@
1414
"solc": "solc8.20",
1515
"rule_sanity" : "basic",
1616
"multi_assert_check": true,
17-
"msg": "OracleSwapFreezer",
17+
"msg": "ChainlinkOracleSwapFreezer",
1818
"smt_timeout": "4000",
1919
"prover_args": [
2020
"-copyLoopUnroll 6",
2121
"-depth 20",
2222
],
2323
"verify":
24-
"OracleSwapFreezerHarness:certora/gsm/specs/gsm/OracleSwapFreezer.spec",
24+
"ChainlinkOracleSwapFreezerHarness:certora/gsm/specs/gsm/ChainlinkOracleSwapFreezer.spec",
2525
//"build_cache": true,
2626
}

certora/gsm/harness/OracleSwapFreezerHarness.sol renamed to certora/gsm/harness/ChainlinkOracleSwapFreezerHarness.sol

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
// SPDX-License-Identifier: No-License
12
pragma solidity ^0.8.0;
23

3-
import {OracleSwapFreezer} from 'src/contracts/facilitators/gsm/swapFreezer/OracleSwapFreezer.sol';
4+
import {ChainlinkOracleSwapFreezer} from 'src/contracts/facilitators/gsm/swapFreezer/ChainlinkOracleSwapFreezer.sol';
45
import {IPoolAddressesProvider} from 'aave-v3-origin/contracts/interfaces/IPoolAddressesProvider.sol';
56
import {IPriceOracle} from 'aave-v3-origin/contracts/interfaces/IPriceOracle.sol';
67
//import {AutomationCompatibleInterface} from '../dependencies/chainlink/AutomationCompatibleInterface.sol';
78
import {IGsm} from 'src/contracts/facilitators/gsm/interfaces/IGsm.sol';
89

9-
contract OracleSwapFreezerHarness is OracleSwapFreezer {
10+
contract ChainlinkOracleSwapFreezerHarness is ChainlinkOracleSwapFreezer {
1011
constructor(
1112
IGsm gsm,
1213
address underlyingAsset,
@@ -17,7 +18,7 @@ contract OracleSwapFreezerHarness is OracleSwapFreezer {
1718
uint128 unfreezeUpperBound,
1819
bool allowUnfreeze
1920
)
20-
OracleSwapFreezer(
21+
ChainlinkOracleSwapFreezer(
2122
gsm,
2223
underlyingAsset,
2324
addressProvider,
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
// SPDX-License-Identifier: No-License
2+
pragma solidity ^0.8.0;
3+
4+
import {GelatoOracleSwapFreezer} from 'src/contracts/facilitators/gsm/swapFreezer/GelatoOracleSwapFreezer.sol';
5+
import {IPoolAddressesProvider} from 'aave-v3-origin/contracts/interfaces/IPoolAddressesProvider.sol';
6+
import {IPriceOracle} from 'aave-v3-origin/contracts/interfaces/IPriceOracle.sol';
7+
import {IGsm} from 'src/contracts/facilitators/gsm/interfaces/IGsm.sol';
8+
9+
contract GelatoOracleSwapFreezerHarness is GelatoOracleSwapFreezer {
10+
constructor(
11+
IGsm gsm,
12+
address underlyingAsset,
13+
IPoolAddressesProvider addressProvider,
14+
uint128 freezeLowerBound,
15+
uint128 freezeUpperBound,
16+
uint128 unfreezeLowerBound,
17+
uint128 unfreezeUpperBound,
18+
bool allowUnfreeze
19+
)
20+
GelatoOracleSwapFreezer(
21+
gsm,
22+
underlyingAsset,
23+
addressProvider,
24+
freezeLowerBound,
25+
freezeUpperBound,
26+
unfreezeLowerBound,
27+
unfreezeUpperBound,
28+
allowUnfreeze
29+
)
30+
{}
31+
32+
function validateBounds(
33+
uint128 freezeLowerBound,
34+
uint128 freezeUpperBound,
35+
uint128 unfreezeLowerBound,
36+
uint128 unfreezeUpperBound,
37+
bool allowUnfreeze
38+
) external pure returns (bool) {
39+
return
40+
_validateBounds(
41+
freezeLowerBound,
42+
freezeUpperBound,
43+
unfreezeLowerBound,
44+
unfreezeUpperBound,
45+
allowUnfreeze
46+
);
47+
}
48+
49+
function isActionAllowed(Action actionToExecute) external view returns (bool) {
50+
return _isActionAllowed(actionToExecute);
51+
}
52+
53+
function getAction() external view returns (uint8) {
54+
Action res = _getAction();
55+
if (res == Action.NONE) return 0;
56+
if (res == Action.FREEZE) return 1;
57+
if (res == Action.UNFREEZE) return 2;
58+
return 3;
59+
}
60+
61+
function isSeized() external view returns (bool) {
62+
return GSM.getIsSeized();
63+
}
64+
65+
function isFreezeAllowed() external view returns (bool) {
66+
return _isActionAllowed(Action.FREEZE);
67+
}
68+
69+
function isUnfreezeAllowed() external view returns (bool) {
70+
return _isActionAllowed(Action.UNFREEZE);
71+
}
72+
73+
function isFrozen() external view returns (bool) {
74+
return GSM.getIsFrozen();
75+
}
76+
77+
function getPrice() external view returns (uint256) {
78+
return IPriceOracle(ADDRESS_PROVIDER.getPriceOracle()).getAssetPrice(UNDERLYING_ASSET);
79+
}
80+
81+
function hasRole() external view returns (bool) {
82+
return GSM.hasRole(GSM.SWAP_FREEZER_ROLE(), address(this));
83+
}
84+
}

certora/gsm/specs/gsm/OracleSwapFreezer.spec renamed to certora/gsm/specs/gsm/ChainlinkOracleSwapFreezer.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
// verifies properties of OracleSwapFreezer
2+
// verifies properties of ChainlinkOracleSwapFreezer
33

44
methods {
55
function getFreezeBound() external returns (uint128, uint128) envfree;

certora/gsm/specs/gsm/GelatoOracleSwapFreezer.spec

Whitespace-only changes.

0 commit comments

Comments
 (0)