Skip to content

Commit 3a4935c

Browse files
authored
Algol release 2.74.1 (Synthetixio#1832)
1 parent 4d87087 commit 3a4935c

34 files changed

+991
-243
lines changed

.circleci/config.yml

+16-16
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
job-audit:
1717
working_directory: ~/repo
1818
docker:
19-
- image: synthetixio/docker-sec-tools:16.14-ubuntu
19+
- image: synthetixio/docker-sec-tools:16.15-ubuntu
2020
auth:
2121
username: $DOCKERHUB_USERNAME
2222
password: $DOCKERHUB_TOKEN
@@ -33,7 +33,7 @@ jobs:
3333
job-compile:
3434
working_directory: ~/repo
3535
docker:
36-
- image: synthetixio/docker-node:16.14-ubuntu
36+
- image: synthetixio/docker-node:16.15-ubuntu
3737
auth:
3838
username: $DOCKERHUB_USERNAME
3939
password: $DOCKERHUB_TOKEN
@@ -45,7 +45,7 @@ jobs:
4545
job-fork-tests-ovm:
4646
working_directory: ~/repo
4747
docker:
48-
- image: synthetixio/docker-node:16.14-ubuntu
48+
- image: synthetixio/docker-node:16.15-ubuntu
4949
auth:
5050
username: $DOCKERHUB_USERNAME
5151
password: $DOCKERHUB_TOKEN
@@ -74,7 +74,7 @@ jobs:
7474
job-fork-tests:
7575
working_directory: ~/repo
7676
docker:
77-
- image: synthetixio/docker-node:16.14-ubuntu
77+
- image: synthetixio/docker-node:16.15-ubuntu
7878
auth:
7979
username: $DOCKERHUB_USERNAME
8080
password: $DOCKERHUB_TOKEN
@@ -152,7 +152,7 @@ jobs:
152152
job-lint:
153153
working_directory: ~/repo
154154
docker:
155-
- image: synthetixio/docker-node:16.14-ubuntu
155+
- image: synthetixio/docker-node:16.15-ubuntu
156156
auth:
157157
username: $DOCKERHUB_USERNAME
158158
password: $DOCKERHUB_TOKEN
@@ -164,7 +164,7 @@ jobs:
164164
job-pack-browser:
165165
working_directory: ~/repo
166166
docker:
167-
- image: synthetixio/docker-node:16.14-ubuntu
167+
- image: synthetixio/docker-node:16.15-ubuntu
168168
auth:
169169
username: $DOCKERHUB_USERNAME
170170
password: $DOCKERHUB_TOKEN
@@ -178,7 +178,7 @@ jobs:
178178
job-prepare:
179179
working_directory: ~/repo
180180
docker:
181-
- image: synthetixio/docker-node:16.14-ubuntu
181+
- image: synthetixio/docker-node:16.15-ubuntu
182182
auth:
183183
username: $DOCKERHUB_USERNAME
184184
password: $DOCKERHUB_TOKEN
@@ -208,7 +208,7 @@ jobs:
208208
job-simulate-release:
209209
working_directory: ~/repo
210210
docker:
211-
- image: synthetixio/docker-node:16.14-ubuntu
211+
- image: synthetixio/docker-node:16.15-ubuntu
212212
auth:
213213
username: $DOCKERHUB_USERNAME
214214
password: $DOCKERHUB_TOKEN
@@ -235,7 +235,7 @@ jobs:
235235
job-static-analysis:
236236
working_directory: ~/repo
237237
docker:
238-
- image: synthetixio/docker-node:16.14-ubuntu
238+
- image: synthetixio/docker-node:16.15-ubuntu
239239
auth:
240240
username: $DOCKERHUB_USERNAME
241241
password: $DOCKERHUB_TOKEN
@@ -255,7 +255,7 @@ jobs:
255255
job-test-deploy-script:
256256
working_directory: ~/repo
257257
docker:
258-
- image: synthetixio/docker-node:16.14-ubuntu
258+
- image: synthetixio/docker-node:16.15-ubuntu
259259
auth:
260260
username: $DOCKERHUB_USERNAME
261261
password: $DOCKERHUB_TOKEN
@@ -281,7 +281,7 @@ jobs:
281281
job-unit-tests-coverage-report:
282282
working_directory: ~/repo
283283
docker:
284-
- image: synthetixio/docker-sec-tools:16.14-ubuntu
284+
- image: synthetixio/docker-sec-tools:16.15-ubuntu
285285
auth:
286286
username: $DOCKERHUB_USERNAME
287287
password: $DOCKERHUB_TOKEN
@@ -297,7 +297,7 @@ jobs:
297297
job-unit-tests-coverage:
298298
working_directory: ~/repo
299299
docker:
300-
- image: synthetixio/docker-node:16.14-ubuntu
300+
- image: synthetixio/docker-node:16.15-ubuntu
301301
auth:
302302
username: $DOCKERHUB_USERNAME
303303
password: $DOCKERHUB_TOKEN
@@ -327,7 +327,7 @@ jobs:
327327
job-unit-tests-gas-report:
328328
working_directory: ~/repo
329329
docker:
330-
- image: synthetixio/docker-node:16.14-ubuntu
330+
- image: synthetixio/docker-node:16.15-ubuntu
331331
auth:
332332
username: $DOCKERHUB_USERNAME
333333
password: $DOCKERHUB_TOKEN
@@ -348,7 +348,7 @@ jobs:
348348
job-unit-tests:
349349
working_directory: ~/repo
350350
docker:
351-
- image: synthetixio/docker-node:16.14-ubuntu
351+
- image: synthetixio/docker-node:16.15-ubuntu
352352
auth:
353353
username: $DOCKERHUB_USERNAME
354354
password: $DOCKERHUB_TOKEN
@@ -384,7 +384,7 @@ jobs:
384384
job-validate-deployments:
385385
working_directory: ~/repo
386386
docker:
387-
- image: synthetixio/docker-node:16.14-ubuntu
387+
- image: synthetixio/docker-node:16.15-ubuntu
388388
auth:
389389
username: $DOCKERHUB_USERNAME
390390
password: $DOCKERHUB_TOKEN
@@ -403,7 +403,7 @@ jobs:
403403
job-validate-etherscan:
404404
working_directory: ~/repo
405405
docker:
406-
- image: synthetixio/docker-node:16.14-ubuntu
406+
- image: synthetixio/docker-node:16.15-ubuntu
407407
auth:
408408
username: $DOCKERHUB_USERNAME
409409
password: $DOCKERHUB_TOKEN
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
working_directory: ~/repo
22
docker:
3-
- image: synthetixio/docker-node:16.14-ubuntu
3+
- image: synthetixio/docker-node:16.15-ubuntu
44
auth:
55
username: $DOCKERHUB_USERNAME
66
password: $DOCKERHUB_TOKEN
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
working_directory: ~/repo
22
docker:
3-
- image: synthetixio/docker-sec-tools:16.14-ubuntu
3+
- image: synthetixio/docker-sec-tools:16.15-ubuntu
44
auth:
55
username: $DOCKERHUB_USERNAME
66
password: $DOCKERHUB_TOKEN

.github/workflows/slither-analysis.yml

+14-10
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,32 @@ jobs:
1414
runs-on: ubuntu-latest
1515

1616
container:
17-
image: ghcr.io/synthetixio/docker-sec-tools/ubuntu:16.14
17+
image: ghcr.io/synthetixio/docker-sec-tools/ubuntu:16.15
1818
credentials:
1919
username: synthetixio
2020
password: ${{ secrets.GH_PACKAGES_READ_ONLY }}
2121

2222
steps:
2323
- name: Checkout
24-
uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 # pin@v2
24+
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # pin@v3.0.2
2525

2626
- name: Set npm cache directory
2727
run: npm config set cache .npm-cache --global
28-
continue-on-error: true
2928

30-
- uses: actions/cache@136d96b4aee02b1f0de3ba493b1d47135042d9c0 # pin@v3
29+
- name: Get npm cache directory
30+
id: npm-cache-dir
31+
run: echo "::set-output name=dir::$(npm config get cache)"
32+
33+
- name: Get node version
34+
id: node-version
35+
run: echo "::set-output name=version::$(node --version)"
36+
37+
- uses: actions/cache@c3f1317a9e7b1ef106c153ac8c0f00fed3ddbc0d # pin@v3.0.4
3138
with:
32-
path: |
33-
.npm-cache
34-
node_modules
35-
key: ${{ runner.os }}-ubuntu-${{ hashFiles('**/package-lock.json') }}
39+
path: ${{ steps.npm-cache-dir.outputs.dir }}
40+
key: ${{ runner.os }}-ubuntu-${{ steps.node-version.outputs.version }}-${{ hashFiles('**/package-lock.json') }}
3641
restore-keys: |
37-
${{ runner.os }}-ubuntu-
38-
continue-on-error: true
42+
${{ runner.os }}-ubuntu-${{ steps.node-version.outputs.version }}-
3943
4044
- name: Install dependencies
4145
run: npm ci --prefer-offline

contracts/Issuer.sol

+1-1
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,7 @@ contract Issuer is Owned, MixinSystemSettings, IIssuer {
702702
require(liquidator().isLiquidationOpen(account, isSelfLiquidation), "Not open for liquidation");
703703

704704
// Get the penalty for the liquidation type
705-
uint penalty = isSelfLiquidation ? getSelfLiquidationPenalty() : getLiquidationPenalty();
705+
uint penalty = isSelfLiquidation ? getSelfLiquidationPenalty() : getSnxLiquidationPenalty();
706706

707707
// Get the account's debt balance
708708
(uint debtBalance, , bool anyRateIsInvalid) =

contracts/MixinSystemSettings.sol

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ contract MixinSystemSettings is MixinResolver {
1919
bytes32 internal constant SETTING_LIQUIDATION_RATIO = "liquidationRatio";
2020
bytes32 internal constant SETTING_LIQUIDATION_ESCROW_DURATION = "liquidationEscrowDuration";
2121
bytes32 internal constant SETTING_LIQUIDATION_PENALTY = "liquidationPenalty";
22+
bytes32 internal constant SETTING_SNX_LIQUIDATION_PENALTY = "snxLiquidationPenalty";
2223
bytes32 internal constant SETTING_SELF_LIQUIDATION_PENALTY = "selfLiquidationPenalty";
2324
bytes32 internal constant SETTING_FLAG_REWARD = "flagReward";
2425
bytes32 internal constant SETTING_LIQUIDATE_REWARD = "liquidateReward";
@@ -144,6 +145,10 @@ contract MixinSystemSettings is MixinResolver {
144145
return flexibleStorage().getUIntValue(SETTING_CONTRACT_NAME, SETTING_LIQUIDATION_PENALTY);
145146
}
146147

148+
function getSnxLiquidationPenalty() internal view returns (uint) {
149+
return flexibleStorage().getUIntValue(SETTING_CONTRACT_NAME, SETTING_SNX_LIQUIDATION_PENALTY);
150+
}
151+
147152
function getSelfLiquidationPenalty() internal view returns (uint) {
148153
return flexibleStorage().getUIntValue(SETTING_CONTRACT_NAME, SETTING_SELF_LIQUIDATION_PENALTY);
149154
}

contracts/SystemSettings.sol

+15-3
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,18 @@ contract SystemSettings is Owned, MixinSystemSettings, ISystemSettings {
7272
return getLiquidationRatio();
7373
}
7474

75-
// SIP-15 Liquidations
76-
// penalty taken away from target of liquidation (with 18 decimals). E.g. 10% is 0.1e18
75+
// SIP-97 Liquidations
76+
// penalty taken away from target of Collateral liquidation (with 18 decimals). E.g. 10% is 0.1e18
7777
function liquidationPenalty() external view returns (uint) {
7878
return getLiquidationPenalty();
7979
}
8080

81+
// SIP-251 Differentiate Liquidation Penalties
82+
// penalty taken away from target of SNX liquidation (with 18 decimals). E.g. 30% is 0.3e18
83+
function snxLiquidationPenalty() external view returns (uint) {
84+
return getSnxLiquidationPenalty();
85+
}
86+
8187
/* ========== SIP-148: Upgrade Liquidation Mechanism ========== */
8288

8389
/// @notice Get the escrow duration for liquidation rewards
@@ -311,7 +317,7 @@ contract SystemSettings is Owned, MixinSystemSettings, ISystemSettings {
311317
flexibleStorage().setLiquidationRatio(
312318
SETTING_LIQUIDATION_RATIO,
313319
_liquidationRatio,
314-
getLiquidationPenalty(),
320+
getSnxLiquidationPenalty(),
315321
getIssuanceRatio()
316322
);
317323
emit LiquidationRatioUpdated(_liquidationRatio);
@@ -322,6 +328,11 @@ contract SystemSettings is Owned, MixinSystemSettings, ISystemSettings {
322328
emit LiquidationEscrowDurationUpdated(duration);
323329
}
324330

331+
function setSnxLiquidationPenalty(uint penalty) external onlyOwner {
332+
flexibleStorage().setSnxLiquidationPenalty(SETTING_SNX_LIQUIDATION_PENALTY, penalty);
333+
emit SnxLiquidationPenaltyUpdated(penalty);
334+
}
335+
325336
function setLiquidationPenalty(uint penalty) external onlyOwner {
326337
flexibleStorage().setLiquidationPenalty(SETTING_LIQUIDATION_PENALTY, penalty);
327338
emit LiquidationPenaltyUpdated(penalty);
@@ -530,6 +541,7 @@ contract SystemSettings is Owned, MixinSystemSettings, ISystemSettings {
530541
event LiquidationRatioUpdated(uint newRatio);
531542
event LiquidationEscrowDurationUpdated(uint newDuration);
532543
event LiquidationPenaltyUpdated(uint newPenalty);
544+
event SnxLiquidationPenaltyUpdated(uint newPenalty);
533545
event SelfLiquidationPenaltyUpdated(uint newPenalty);
534546
event FlagRewardUpdated(uint newReward);
535547
event LiquidateRewardUpdated(uint newReward);

contracts/SystemSettingsLib.sol

+15-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ library SystemSettingsLib {
2828
uint public constant MAX_LIQUIDATION_RATIO = 1e18; // 100% issuance ratio
2929
uint public constant RATIO_FROM_TARGET_BUFFER = 2e18; // 200% - mininimum buffer between issuance ratio and liquidation ratio
3030

31-
uint public constant MAX_LIQUIDATION_PENALTY = 3e18 / 10; // Max 30% liquidation penalty / bonus
31+
uint public constant MAX_LIQUIDATION_PENALTY = 9e18 / 10; // Max 90% liquidation penalty / bonus
3232

3333
uint public constant MAX_LIQUIDATION_DELAY = 3 days;
3434
uint public constant MIN_LIQUIDATION_DELAY = 300; // 5 min
@@ -145,11 +145,11 @@ library SystemSettingsLib {
145145
IFlexibleStorage flexibleStorage,
146146
bytes32 settingName,
147147
uint _liquidationRatio,
148-
uint getLiquidationPenalty,
148+
uint getSnxLiquidationPenalty,
149149
uint getIssuanceRatio
150150
) external {
151151
require(
152-
_liquidationRatio <= MAX_LIQUIDATION_RATIO.divideDecimal(SafeDecimalMath.unit().add(getLiquidationPenalty)),
152+
_liquidationRatio <= MAX_LIQUIDATION_RATIO.divideDecimal(SafeDecimalMath.unit().add(getSnxLiquidationPenalty)),
153153
"liquidationRatio > MAX_LIQUIDATION_RATIO / (1 + penalty)"
154154
);
155155

@@ -169,11 +169,12 @@ library SystemSettingsLib {
169169
flexibleStorage.setUIntValue(SETTINGS_CONTRACT_NAME, settingName, duration);
170170
}
171171

172-
function setLiquidationPenalty(
172+
function setSnxLiquidationPenalty(
173173
IFlexibleStorage flexibleStorage,
174174
bytes32 settingName,
175175
uint penalty
176176
) external {
177+
// MAX_LIQUIDATION_PENALTY is enforced on both Collateral and SNX liquidations
177178
require(penalty <= MAX_LIQUIDATION_PENALTY, "penalty > MAX_LIQUIDATION_PENALTY");
178179

179180
flexibleStorage.setUIntValue(SETTINGS_CONTRACT_NAME, settingName, penalty);
@@ -189,6 +190,16 @@ library SystemSettingsLib {
189190
flexibleStorage.setUIntValue(SETTINGS_CONTRACT_NAME, settingName, penalty);
190191
}
191192

193+
function setLiquidationPenalty(
194+
IFlexibleStorage flexibleStorage,
195+
bytes32 settingName,
196+
uint penalty
197+
) external {
198+
require(penalty <= MAX_LIQUIDATION_PENALTY, "penalty > MAX_LIQUIDATION_PENALTY");
199+
200+
flexibleStorage.setUIntValue(SETTINGS_CONTRACT_NAME, settingName, penalty);
201+
}
202+
192203
function setFlagReward(
193204
IFlexibleStorage flexibleStorage,
194205
bytes32 settingName,

contracts/interfaces/ISystemSettings.sol

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ interface ISystemSettings {
2121

2222
function liquidationPenalty() external view returns (uint);
2323

24+
function snxLiquidationPenalty() external view returns (uint);
25+
2426
function selfLiquidationPenalty() external view returns (uint);
2527

2628
function flagReward() external view returns (uint);

0 commit comments

Comments
 (0)