Skip to content

Commit

Permalink
Merge pull request #887 from lidofinance/feat/sync-develop
Browse files Browse the repository at this point in the history
chore: sync develop with latest master changes
  • Loading branch information
tamtamchik authored Nov 29, 2024
2 parents 39caac3 + de2cbd0 commit 04ba700
Show file tree
Hide file tree
Showing 8 changed files with 64 additions and 136 deletions.
11 changes: 5 additions & 6 deletions .github/workflows/analyse.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Analysis

on: [pull_request]
on:
pull_request:
push:
branches: [master]

jobs:
slither:
Expand Down Expand Up @@ -37,11 +40,7 @@ jobs:
- name: Run slither
run: >
poetry run slither . \
--no-fail-pedantic \
--compile-force-framework hardhat \
--sarif results.sarif \
--exclude pess-strange-setter,pess-arbitrary-call-calldata-tainted
poetry run slither . --no-fail-pedantic --sarif results.sarif
- name: Check results.sarif presence
id: results
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Coverage

on: [pull_request]
on:
pull_request:
push:
branches: [master]

jobs:
coverage:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests-integration-scratch.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Integration Tests

on: [ push ]
on: [push]

jobs:
test_hardhat_integration_scratch:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Users can deposit ether to the Lido smart contract and receive stETH tokens in r

## Bug Bounty

At the moment, the [Lido bug bounty program](https://immunefi.com/bounty/lido/) covers only the contracts in the [Lido DAO repository](https://github.com/lidofinance/lido-dao). Once the work on this repository is finished, the bug bounty program will be updated.
Please refer to the [Lido Bug Bounry](/bugbounty.md).

## Contributing

Expand Down
4 changes: 3 additions & 1 deletion slither.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
"exclude_low": true,
"exclude_medium": false,
"exclude_high": false,
"filter_paths": "(.*test.*/|.*template/|.*mocks/|node_modules/|.*brownie/|.*dependencies/)"
"filter_paths": "(.*test.*/|.*template/|.*mocks/|node_modules/|.*brownie/|.*dependencies/)",
"detectors_to_exclude": "pess-strange-setter,pess-arbitrary-call-calldata-tainted,pess-multiple-storage-read,pess-dubious-typecast",
"compile_force_framework": "hardhat"
}
59 changes: 25 additions & 34 deletions test/integration/protocol-happy-path.integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ import { bailOnFailure, Snapshot } from "test/suite";

const AMOUNT = ether("100");
const MAX_DEPOSIT = 150n;
const CURATED_MODULE_ID = 1n;
const SIMPLE_DVT_MODULE_ID = 2n;

const ZERO_HASH = new Uint8Array(32).fill(0);

Expand Down Expand Up @@ -192,11 +190,11 @@ describe("Protocol Happy Path", () => {
}
});

it("Should deposit 100 ETH to node operators", async () => {
const { lido, withdrawalQueue } = ctx.contracts;
it("Should deposit to staking modules", async () => {
const { lido, withdrawalQueue, stakingRouter } = ctx.contracts;

const { depositSecurityModule } = ctx.contracts;
const { depositedValidators: depositedValidatorsBefore } = await lido.getBeaconStat();

const withdrawalsUninitializedStETH = await withdrawalQueue.unfinalizedStETH();
const depositableEther = await lido.getDepositableEther();
const bufferedEtherBeforeDeposit = await lido.getBufferedEther();
Expand All @@ -212,42 +210,35 @@ describe("Protocol Happy Path", () => {
});

const dsmSigner = await impersonate(depositSecurityModule.address, ether("100"));
const stakingModules = await stakingRouter.getStakingModules();

let depositCount = 0n;
let expectedBufferedEtherAfterDeposit = bufferedEtherBeforeDeposit;
for (const module of stakingModules) {
const depositTx = await lido.connect(dsmSigner).deposit(MAX_DEPOSIT, module.id, ZERO_HASH);
const depositReceipt = await trace<ContractTransactionReceipt>(`lido.deposit (${module.name})`, depositTx);
const unbufferedEvent = ctx.getEvents(depositReceipt, "Unbuffered")[0];
const unbufferedAmount = unbufferedEvent?.args[0] || 0n;
const deposits = unbufferedAmount / ether("32");

log.debug("Staking module", {
"Module": module.name,
"Deposits": deposits,
"Unbuffered amount": ethers.formatEther(unbufferedAmount),
});

depositCount += deposits;
expectedBufferedEtherAfterDeposit -= unbufferedAmount;
}

const depositNorTx = await lido.connect(dsmSigner).deposit(MAX_DEPOSIT, CURATED_MODULE_ID, ZERO_HASH);
const depositNorReceipt = await trace<ContractTransactionReceipt>("lido.deposit (Curated Module)", depositNorTx);

const unbufferedEventNor = ctx.getEvents(depositNorReceipt, "Unbuffered")[0];
const unbufferedAmountNor = unbufferedEventNor.args[0];

const depositCountsNor = unbufferedAmountNor / ether("32");
let expectedBufferedEtherAfterDeposit = bufferedEtherBeforeDeposit - unbufferedAmountNor;

const depositSdvtTx = await lido.connect(dsmSigner).deposit(MAX_DEPOSIT, SIMPLE_DVT_MODULE_ID, ZERO_HASH);
const depositSdvtReceipt = await trace<ContractTransactionReceipt>("lido.deposit (Simple DVT)", depositSdvtTx);

const unbufferedEventSdvt = ctx.getEvents(depositSdvtReceipt, "Unbuffered")[0];
const depositedValidatorsChangedEventSdvt = ctx.getEvents(depositSdvtReceipt, "DepositedValidatorsChanged")[0];

const unbufferedAmountSdvt = unbufferedEventSdvt.args[0];
const newValidatorsCountSdvt = depositedValidatorsChangedEventSdvt.args[0];

const depositCountsTotal = depositCountsNor + unbufferedAmountSdvt / ether("32");
expectedBufferedEtherAfterDeposit -= unbufferedAmountSdvt;

expect(depositCountsTotal).to.be.gt(0n, "Deposit counts");
expect(newValidatorsCountSdvt).to.equal(
depositedValidatorsBefore + depositCountsTotal,
"New validators count after deposit",
);
expect(depositCount).to.be.gt(0n, "Deposits");

const bufferedEtherAfterDeposit = await lido.getBufferedEther();

expect(depositCountsNor).to.be.gt(0n, "Deposit counts");
expect(bufferedEtherAfterDeposit).to.equal(expectedBufferedEtherAfterDeposit, "Buffered ether after deposit");

log.debug("After deposit", {
"Deposits": depositCount,
"Buffered ether": ethers.formatEther(bufferedEtherAfterDeposit),
"Unbuffered amount (NOR)": ethers.formatEther(unbufferedAmountNor),
});
});

Expand Down
File renamed without changes.
117 changes: 25 additions & 92 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2036,14 +2036,7 @@ __metadata:
languageName: node
linkType: hard

"@types/chai@npm:*":
version: 4.3.17
resolution: "@types/chai@npm:4.3.17"
checksum: 10c0/322a74489cdfde9c301b593d086c539584924c4c92689a858e0930708895a5ab229c31c64ac26b137615ef3ffbff1866851c280c093e07b3d3de05983d3793e0
languageName: node
linkType: hard

"@types/chai@npm:^4.3.19":
"@types/chai@npm:*, @types/chai@npm:^4.3.19":
version: 4.3.19
resolution: "@types/chai@npm:4.3.19"
checksum: 10c0/8fd573192e486803c4d04185f2b0fab554660d9a1300dbed5bde9747ab8bef15f462a226f560ed5ca48827eecaf8d71eed64aa653ff9aec72fb2eae272e43a84
Expand All @@ -2068,17 +2061,7 @@ __metadata:
languageName: node
linkType: hard

"@types/eslint@npm:*":
version: 9.6.0
resolution: "@types/eslint@npm:9.6.0"
dependencies:
"@types/estree": "npm:*"
"@types/json-schema": "npm:*"
checksum: 10c0/69301356bc73b85e381ae00931291de2e96d1cc49a112c592c74ee32b2f85412203dea6a333b4315fd9839bb14f364f265cbfe7743fc5a78492ee0326dd6a2c1
languageName: node
linkType: hard

"@types/eslint@npm:^9.6.1":
"@types/eslint@npm:*, @types/eslint@npm:^9.6.1":
version: 9.6.1
resolution: "@types/eslint@npm:9.6.1"
dependencies:
Expand All @@ -2097,14 +2080,7 @@ __metadata:
languageName: node
linkType: hard

"@types/estree@npm:*":
version: 1.0.5
resolution: "@types/estree@npm:1.0.5"
checksum: 10c0/b3b0e334288ddb407c7b3357ca67dbee75ee22db242ca7c56fe27db4e1a31989cb8af48a84dd401deb787fe10cc6b2ab1ee82dc4783be87ededbe3d53c79c70d
languageName: node
linkType: hard

"@types/estree@npm:^1.0.6":
"@types/estree@npm:*, @types/estree@npm:^1.0.6":
version: 1.0.6
resolution: "@types/estree@npm:1.0.6"
checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a
Expand Down Expand Up @@ -2165,19 +2141,12 @@ __metadata:
languageName: node
linkType: hard

"@types/node@npm:*":
version: 22.5.0
resolution: "@types/node@npm:22.5.0"
"@types/node@npm:*, @types/node@npm:22.7.5":
version: 22.7.5
resolution: "@types/node@npm:22.7.5"
dependencies:
undici-types: "npm:~6.19.2"
checksum: 10c0/45aa75c5e71645fac42dced4eff7f197c3fdfff6e8a9fdacd0eb2e748ff21ee70ffb73982f068a58e8d73b2c088a63613142c125236cdcf3c072ea97eada1559
languageName: node
linkType: hard

"@types/node@npm:18.15.13":
version: 18.15.13
resolution: "@types/node@npm:18.15.13"
checksum: 10c0/6e5f61c559e60670a7a8fb88e31226ecc18a21be103297ca4cf9848f0a99049dae77f04b7ae677205f2af494f3701b113ba8734f4b636b355477a6534dbb8ada
checksum: 10c0/cf11f74f1a26053ec58066616e3a8685b6bcd7259bc569738b8f752009f9f0f7f85a1b2d24908e5b0f752482d1e8b6babdf1fbb25758711ec7bb9500bfcd6e60
languageName: node
linkType: hard

Expand All @@ -2190,15 +2159,6 @@ __metadata:
languageName: node
linkType: hard

"@types/node@npm:22.7.5":
version: 22.7.5
resolution: "@types/node@npm:22.7.5"
dependencies:
undici-types: "npm:~6.19.2"
checksum: 10c0/cf11f74f1a26053ec58066616e3a8685b6bcd7259bc569738b8f752009f9f0f7f85a1b2d24908e5b0f752482d1e8b6babdf1fbb25758711ec7bb9500bfcd6e60
languageName: node
linkType: hard

"@types/node@npm:^10.0.3":
version: 10.17.60
resolution: "@types/node@npm:10.17.60"
Expand Down Expand Up @@ -4834,7 +4794,7 @@ __metadata:
languageName: node
linkType: hard

"elliptic@npm:^6.5.2, elliptic@npm:^6.5.4":
"elliptic@npm:^6.5.2, elliptic@npm:^6.5.7":
version: 6.5.7
resolution: "elliptic@npm:6.5.7"
dependencies:
Expand Down Expand Up @@ -5693,7 +5653,7 @@ __metadata:
languageName: node
linkType: hard

"ethers@npm:^6.13.4":
"ethers@npm:^6.13.4, ethers@npm:^6.7.0":
version: 6.13.4
resolution: "ethers@npm:6.13.4"
dependencies:
Expand All @@ -5708,21 +5668,6 @@ __metadata:
languageName: node
linkType: hard

"ethers@npm:^6.7.0":
version: 6.13.2
resolution: "ethers@npm:6.13.2"
dependencies:
"@adraffy/ens-normalize": "npm:1.10.1"
"@noble/curves": "npm:1.2.0"
"@noble/hashes": "npm:1.3.2"
"@types/node": "npm:18.15.13"
aes-js: "npm:4.0.0-beta.5"
tslib: "npm:2.4.0"
ws: "npm:8.17.1"
checksum: 10c0/5956389a180992f8b6d90bc21b2e0f28619a098513d3aeb7a350a0b7c5852d635a9d7fd4ced1af50c985dd88398716f66dfd4a2de96c5c3a67150b93543d92af
languageName: node
linkType: hard

"ethjs-unit@npm:0.1.6":
version: 0.1.6
resolution: "ethjs-unit@npm:0.1.6"
Expand Down Expand Up @@ -8824,6 +8769,15 @@ __metadata:
languageName: node
linkType: hard

"node-addon-api@npm:^5.0.0":
version: 5.1.0
resolution: "node-addon-api@npm:5.1.0"
dependencies:
node-gyp: "npm:latest"
checksum: 10c0/0eb269786124ba6fad9df8007a149e03c199b3e5a3038125dfb3e747c2d5113d406a4e33f4de1ea600aa2339be1f137d55eba1a73ee34e5fff06c52a5c296d1d
languageName: node
linkType: hard

"node-emoji@npm:^1.10.0":
version: 1.11.0
resolution: "node-emoji@npm:1.11.0"
Expand Down Expand Up @@ -9420,14 +9374,7 @@ __metadata:
languageName: node
linkType: hard

"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1":
version: 1.0.1
resolution: "picocolors@npm:1.0.1"
checksum: 10c0/c63cdad2bf812ef0d66c8db29583802355d4ca67b9285d846f390cc15c2f6ccb94e8cb7eb6a6e97fc5990a6d3ad4ae42d86c84d3146e667c739a4234ed50d400
languageName: node
linkType: hard

"picocolors@npm:^1.1.0":
"picocolors@npm:^1.0.0, picocolors@npm:^1.0.1, picocolors@npm:^1.1.0":
version: 1.1.1
resolution: "picocolors@npm:1.1.1"
checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58
Expand Down Expand Up @@ -10289,14 +10236,14 @@ __metadata:
linkType: hard

"secp256k1@npm:^4.0.1":
version: 4.0.3
resolution: "secp256k1@npm:4.0.3"
version: 4.0.4
resolution: "secp256k1@npm:4.0.4"
dependencies:
elliptic: "npm:^6.5.4"
node-addon-api: "npm:^2.0.0"
elliptic: "npm:^6.5.7"
node-addon-api: "npm:^5.0.0"
node-gyp: "npm:latest"
node-gyp-build: "npm:^4.2.0"
checksum: 10c0/de0a0e525a6f8eb2daf199b338f0797dbfe5392874285a145bb005a72cabacb9d42c0197d0de129a1a0f6094d2cc4504d1f87acb6a8bbfb7770d4293f252c401
checksum: 10c0/cf7a74343566d4774c64332c07fc2caf983c80507f63be5c653ff2205242143d6320c50ee4d793e2b714a56540a79e65a8f0056e343b25b0cdfed878bc473fd8
languageName: node
linkType: hard

Expand Down Expand Up @@ -11529,14 +11476,7 @@ __metadata:
languageName: node
linkType: hard

"tslib@npm:2.4.0":
version: 2.4.0
resolution: "tslib@npm:2.4.0"
checksum: 10c0/eb19bda3ae545b03caea6a244b34593468e23d53b26bf8649fbc20fce43e9b21a71127fd6d2b9662c0fe48ee6ff668ead48fd00d3b88b2b716b1c12edae25b5d
languageName: node
linkType: hard

"tslib@npm:2.7.0":
"tslib@npm:2.7.0, tslib@npm:^2.6.2":
version: 2.7.0
resolution: "tslib@npm:2.7.0"
checksum: 10c0/469e1d5bf1af585742128827000711efa61010b699cb040ab1800bcd3ccdd37f63ec30642c9e07c4439c1db6e46345582614275daca3e0f4abae29b0083f04a6
Expand All @@ -11550,13 +11490,6 @@ __metadata:
languageName: node
linkType: hard

"tslib@npm:^2.6.2":
version: 2.6.3
resolution: "tslib@npm:2.6.3"
checksum: 10c0/2598aef53d9dbe711af75522464b2104724d6467b26a60f2bdac8297d2b5f1f6b86a71f61717384aa8fd897240467aaa7bcc36a0700a0faf751293d1331db39a
languageName: node
linkType: hard

"tsort@npm:0.0.1":
version: 0.0.1
resolution: "tsort@npm:0.0.1"
Expand Down

0 comments on commit 04ba700

Please sign in to comment.