Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
182 commits
Select commit Hold shift + click to select a range
8fcfe96
feat: per frame data
vgorkavenko Oct 30, 2024
c437e20
feat: sync and proposal duties
vgorkavenko Jan 22, 2025
eead54b
fix: type
vgorkavenko Feb 3, 2025
f48ce02
fix: linter
vgorkavenko Feb 3, 2025
76fdc39
refactor: calculate_distribution
vgorkavenko Feb 4, 2025
1aa7228
refactor: `State` and tests
vgorkavenko Feb 13, 2025
8163d4d
refactor: distribution and tests
vgorkavenko Feb 13, 2025
f3896d4
fix: log tests
vgorkavenko Feb 13, 2025
27073f4
fix: review
vgorkavenko Feb 14, 2025
cbedd04
fix: coverage + renaming
vgorkavenko Feb 14, 2025
c83aa47
fix: get_stuck_operators
vgorkavenko Feb 14, 2025
b58e727
refactor: get digests for `get_stuck_operators`
vgorkavenko Feb 14, 2025
bacfa9c
fix: `mock_get_staking_module`
vgorkavenko Feb 17, 2025
f37f281
Merge branch 'feat/csm/state-data-as-tuples' into feat/csm/new-duties
vgorkavenko Feb 17, 2025
21c8f1c
chore: sync with base (with no new tests). WIP
vgorkavenko Feb 17, 2025
00bba7c
wip: smoke
vgorkavenko Feb 18, 2025
6d0ab01
fix: _calculate_frames
vgorkavenko Feb 19, 2025
9ebdc41
feat: cached `find_frame`
vgorkavenko Feb 19, 2025
f9d4f6d
refactor: `init_or_migrate` and `_migrate_frames_data`
vgorkavenko Feb 19, 2025
84eb94f
refactor: `find_frame`
vgorkavenko Feb 19, 2025
ac0d8b0
refactor: `init_or_migrate` -> `migrate`
vgorkavenko Feb 19, 2025
9583a6b
refactor: `calculate_distribution` types
vgorkavenko Feb 19, 2025
80dc2f6
refactor: `test_csm_module.py`
vgorkavenko Feb 19, 2025
0d122e8
feat: add negative value checking in `calc_rewards_distribution_in_fr…
vgorkavenko Feb 19, 2025
f9290da
fix: linter
vgorkavenko Feb 19, 2025
0731525
refactor: `frames` now is `State` attribute
vgorkavenko Feb 19, 2025
15d5ab2
refactor: `migrate`
vgorkavenko Feb 19, 2025
e5f601e
Merge pull request #557 from lidofinance/feat/csm/state-data-as-tuples
vgorkavenko Feb 19, 2025
33e97b1
Merge branch 'csm-v2' into feat/csm/new-duties
vgorkavenko Feb 19, 2025
703af02
chore: sync with base
vgorkavenko Feb 19, 2025
6a9a898
wip
vgorkavenko Feb 20, 2025
78271ca
feat: CSParametersRegistry
vgorkavenko Feb 20, 2025
4c15f19
fix: mypy
vgorkavenko Feb 21, 2025
9dc0fc9
Merge pull request #635 from lidofinance/feat/cs-params-registry
vgorkavenko Feb 21, 2025
3f15293
refactor: split Tree into an ABC and RewardTree
madlabman Feb 19, 2025
998a7c7
wip: add StrikeTree
madlabman Feb 20, 2025
9135457
feat: custom encoder/decoder for tree class
madlabman Feb 20, 2025
23fec90
refactor: Tree subclasses
madlabman Feb 20, 2025
6055b9d
wip: StrikesList impl
madlabman Feb 20, 2025
84b9354
chore: fix tree types inhereted fields
madlabman Feb 21, 2025
572da36
chore: better typing for StrikesList
madlabman Feb 21, 2025
631aa83
wip: add get_strikes_params
madlabman Feb 21, 2025
049527b
chore: fix test_tree
madlabman Feb 21, 2025
78b327e
feat: update to v2 in tests
vgorkavenko Feb 21, 2025
0555562
fix: blockstamp_for_forking
vgorkavenko Feb 22, 2025
811be11
fix: ignore
vgorkavenko Feb 24, 2025
34531cd
fix: some TODOs
vgorkavenko Feb 24, 2025
3495efb
feat: remove `stuck` from CSM
vgorkavenko Feb 24, 2025
2988bfc
remove: delete stucks from CSM
madlabman Feb 25, 2025
9964748
Merge pull request #638 from lidofinance/remove-stuck
madlabman Feb 25, 2025
b705e7a
feat: add CSStrikes contract to csm extension
madlabman Feb 21, 2025
6e5102a
refactor: rewards_tree instead of just tree
madlabman Feb 21, 2025
7c352d8
wip: extend StrikesList API
madlabman Feb 21, 2025
41cab5a
Merge branch 'refs/heads/csm-v2' into feat/csm/new-duties
vgorkavenko Feb 25, 2025
f08d980
feat: remove `_get_staking_module`
vgorkavenko Feb 25, 2025
f0a6ebc
feat: deliver strikes
madlabman Feb 21, 2025
62d2222
feat: query for strikes params
madlabman Feb 21, 2025
793cdee
refactor: strikes refactoring
madlabman Feb 24, 2025
4de655f
chore: fix missing condition
madlabman Feb 24, 2025
2806394
feat: change StrikesList API
madlabman Feb 24, 2025
81fcd06
refactor: StrikesTree decode routine changes
madlabman Feb 24, 2025
1f68cb9
feat: track strikes per frame
madlabman Feb 24, 2025
fd18fe2
chore: reorder statements
madlabman Feb 25, 2025
2540340
Merge remote-tracking branch 'origin/csm-v2' into csm-strikes
madlabman Feb 25, 2025
e57eef8
fix: participation share should be rounded up
vgorkavenko Feb 26, 2025
9861c4f
fix: only active during the frame validators should be accounted
vgorkavenko Feb 26, 2025
ce5a0a8
fix: `CSM_ORACLE_MAX_CONCURRENCY`
vgorkavenko Feb 26, 2025
b488a6f
revert: new line
vgorkavenko Feb 26, 2025
5db9b8b
refactor: `Duties.merge`
vgorkavenko Feb 26, 2025
6f0eb5d
refactor: `ValidatorDuty.index` -> `validator_index`
vgorkavenko Feb 26, 2025
1ea0999
refactor: types
vgorkavenko Feb 26, 2025
1e43756
refactor: distribution return values
vgorkavenko Feb 26, 2025
94986e8
fix: after refactoring
vgorkavenko Feb 26, 2025
5b77b7c
refactor: `get_block_attestations_and_sync` lru cache size
vgorkavenko Feb 26, 2025
0696b55
fix: StrikesList equal to itself
madlabman Feb 26, 2025
9fced15
wip: tests for strikes
madlabman Feb 26, 2025
b457241
tests: remove _get_staking_module
vgorkavenko Feb 26, 2025
d53d59f
chore: QoL refactoring
madlabman Feb 26, 2025
9b2c5b0
wip: fix tests
madlabman Feb 26, 2025
71ae9bb
feat: state tests
vgorkavenko Feb 26, 2025
5092e14
fix: test_checkpoint
vgorkavenko Feb 26, 2025
8429ef9
feat: remove `eip7549_supported`
vgorkavenko Feb 26, 2025
059c621
feat: customized decoder for RewardsTree
madlabman Feb 26, 2025
92f9c62
refactor: factor out LastReport
madlabman Feb 26, 2025
4cbee0f
chore: fix linter warnings
madlabman Feb 26, 2025
ff60ce7
test: cover LastReport class
madlabman Feb 27, 2025
cf87cc0
fix: test logs
vgorkavenko Feb 27, 2025
7f3ae45
fix: test_get_block_attestations_and_sync
vgorkavenko Feb 27, 2025
45490e0
fix: test_build_report
vgorkavenko Feb 27, 2025
0f3a0f8
wip: tests for csm distribution
madlabman Feb 27, 2025
3b11503
remove: redundant cache
madlabman Feb 27, 2025
364e679
chore: do not modify last_report.strikes value by an accident
madlabman Feb 27, 2025
cf2e935
chore: refactor rewards merge
madlabman Feb 27, 2025
574147a
fix: wipe strikes if got empty dict
madlabman Feb 27, 2025
0aff5ff
chore: sanity checks in LastReport
madlabman Feb 27, 2025
19cbfa3
Merge pull request #634 from lidofinance/csm-strikes
vgorkavenko Feb 27, 2025
7ec12f0
chore: linter
vgorkavenko Feb 27, 2025
a06f574
Merge branch 'refs/heads/csm-v2' into feat/csm/new-duties
vgorkavenko Feb 27, 2025
62f2741
chore: merge with strikes
vgorkavenko Feb 27, 2025
9c8a040
chore: linter
vgorkavenko Feb 27, 2025
e8a1b7c
fix: distribution tests as is
vgorkavenko Feb 28, 2025
0361a91
refactor: validator duties outcome
vgorkavenko Feb 28, 2025
0c45b1a
refactor: `warning` -> `info`
vgorkavenko Feb 28, 2025
0a89389
Merge pull request #607 from lidofinance/feat/csm/new-duties
vgorkavenko Feb 28, 2025
1e36696
Merge pull request #636 from lidofinance/feat/tests-with-csm-v2-update
vgorkavenko Feb 28, 2025
af1142e
Merge branch 'develop' into csm-v2
vgorkavenko Feb 28, 2025
bdc8ded
feat: distribution tests and refactoring
vgorkavenko Mar 6, 2025
ed751ec
test: add smoke tests for CSM contracts
madlabman Mar 6, 2025
f5ef0a4
refactor: use new check_is_instance_of function
madlabman Mar 6, 2025
a2e806d
chore: black
madlabman Mar 6, 2025
0aa11af
feat: no rebate if no distribution
vgorkavenko Mar 6, 2025
296183a
chore: add assert to make sure a contract is instantiated
madlabman Mar 6, 2025
0e75bec
fix: add CSM address to test
madlabman Mar 6, 2025
97201a0
fix: review
vgorkavenko Mar 7, 2025
d5ff9b3
Merge pull request #644 from lidofinance/feat/csm-v2-distribution-tests
madlabman Mar 7, 2025
f786839
chore: add xfail tests for CSM v2
madlabman Mar 7, 2025
ff7874c
Merge pull request #645 from lidofinance/csm-contracts-smokes
vgorkavenko Mar 7, 2025
58fb97f
fix: clear frames in state.clear
madlabman Mar 19, 2025
b7f4762
Merge pull request #661 from lidofinance/fix-state-clear
madlabman Mar 19, 2025
9245e0d
fix: missing perf coefficients logging
madlabman Mar 21, 2025
8015c0d
test: refactor state tests to use random state file location
madlabman Mar 21, 2025
06dd20d
test: fix test failed because of logging perf coeffs
madlabman Mar 21, 2025
71be373
Merge pull request #666 from lidofinance/tests-refactor
madlabman Mar 21, 2025
657adf8
chore: missing word in log
madlabman Mar 25, 2025
b171789
tests: fix `deployer`
vgorkavenko Mar 28, 2025
cf30ad3
feat: reset main cycle timeout
vgorkavenko Mar 28, 2025
c5b0c64
Merge pull request #670 from lidofinance/fix/timeout-in-thread
vgorkavenko Mar 31, 2025
2654954
fix: cs params
vgorkavenko Apr 25, 2025
b0a5a20
Merge pull request #702 from lidofinance/fix/cs-params
vgorkavenko Apr 28, 2025
0cf4e05
Merge branch 'feat/oracle-v6' into csm-v2
vgorkavenko May 8, 2025
cdfd551
fix: after merge
vgorkavenko May 8, 2025
3633e8f
fix: linter
vgorkavenko May 8, 2025
043d26e
fix: tests
vgorkavenko May 8, 2025
a1b6486
fix: tests
vgorkavenko May 8, 2025
5ede0c6
fix: use `to_0x_hex` in encoder
vgorkavenko May 8, 2025
eff02e0
feat: run fork tests on v6 branch before merge
vgorkavenko May 8, 2025
12713ec
fix: action
vgorkavenko May 8, 2025
d90df7d
fix: upgrade to v2
vgorkavenko May 9, 2025
4cb9725
fix: `32` -> `slots_per_epoch`
vgorkavenko May 14, 2025
07126ec
feat: add `DistributionResult`
vgorkavenko May 14, 2025
19a32ce
fix: attrs
vgorkavenko May 14, 2025
2d8a620
refactor: _merge_strikes to return value
madlabman May 14, 2025
e303ebc
fix: use `defaultdict`
vgorkavenko May 14, 2025
78b743c
test: fix test
madlabman May 14, 2025
d749020
fix: revert commented tests
vgorkavenko May 15, 2025
b30f925
feat: new key number intervals implementation
vgorkavenko May 19, 2025
3d61e73
Merge branch 'feat/oracle-v6' into csm-v2
vgorkavenko May 19, 2025
95675ec
fix: linter after merge
vgorkavenko May 19, 2025
d41619d
fix: new abis, strikes address
vgorkavenko May 19, 2025
8fe4325
refactor: sort active validators
vgorkavenko May 19, 2025
84b0a6d
chore: remove `FIXME`
vgorkavenko May 19, 2025
2d607af
fix: `KeyNumberValue` parsing
vgorkavenko May 19, 2025
f367d5b
refactor: `PerformanceCoefficients` now uses constants
vgorkavenko May 20, 2025
d17fbe8
fix: use `persist-credentials`
vgorkavenko May 20, 2025
e2beee6
refactor: type aliases, log, condition
vgorkavenko May 20, 2025
1788e94
refactor: review
vgorkavenko May 20, 2025
2006c6c
fix: linter
vgorkavenko May 20, 2025
b038341
refactor: a bunch of review changes
madlabman May 20, 2025
7b5461b
fix: return logging back
madlabman May 20, 2025
60c1d73
feat: check for list/dict response in http provider
madlabman May 21, 2025
7262c99
chore: black tests
madlabman May 21, 2025
6953e11
refactor: use explicit validator for http provider
madlabman May 22, 2025
dd942d6
test: add retval_validator simple test
madlabman May 22, 2025
e78082f
chore: remove unused checks in last_report
madlabman May 22, 2025
6f1946c
chore: wrap tree creation error with ValueError
madlabman May 22, 2025
c3626b5
chore: mark cs_module check with pytest.mark.mainnet
madlabman May 22, 2025
c7e2b5e
chore: move distributed_so_far update
madlabman May 22, 2025
573d810
refactor: make frames a property
madlabman May 22, 2025
b9f3364
test: add smoke for csm extension
madlabman May 22, 2025
8911fac
feat(csm-v2): fix infinite recursion
chasingrainbows May 23, 2025
93ee2c5
chore: update CSM abis
madlabman May 23, 2025
88f6290
feat(csm-v2): speed up csm contracts load for fork tests
chasingrainbows May 23, 2025
cfc3cfe
fix: json-stream base processing
vgorkavenko May 23, 2025
a64055e
fix: add `xfail` for `test_lido_module_report`
vgorkavenko May 23, 2025
ccaf3c8
fix: use `skip` instead of `xfail`
vgorkavenko May 26, 2025
5b16619
fix: intervals signature
vgorkavenko May 26, 2025
e2b239c
fix: linter
vgorkavenko May 26, 2025
9a9cc92
fix: tests with intervals
vgorkavenko May 26, 2025
a745896
fix: env parsing for tests
vgorkavenko May 26, 2025
1f02c4c
feat: add `distributed_rewards` per-validator for logs
vgorkavenko May 26, 2025
5bcb088
revert: url
vgorkavenko May 26, 2025
1e76859
chore: remove branch `feat/oracle-v6` from workflow trigger
vgorkavenko May 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 34 additions & 4 deletions .github/workflows/mainnet_fork_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,43 @@ permissions:
jobs:
tests:
runs-on: ubuntu-latest

env:
FORGE_REV: v0.3.0
steps:
- uses: actions/checkout@v3

# TODO: Remove after upgrade to CSM v2 on Mainnet.
- name: Checkout CSM repo
uses: actions/checkout@v4
with:
repository: 'lidofinance/community-staking-module'
ref: 'develop'
path: 'testruns/community-staking-module'
persist-credentials: false

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: ${{ env.FORGE_REV }}

- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: "testruns/community-staking-module/.nvmrc"
cache: 'yarn'
cache-dependency-path: "testruns/community-staking-module/yarn.lock"

- name: Install Just
run: cargo install "[email protected]"

- name: Install dependencies
working-directory: testruns/community-staking-module
run: just deps

- name: Build contracts
working-directory: testruns/community-staking-module
run: just build

- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
Expand All @@ -42,9 +75,6 @@ jobs:
run: |
poetry install --no-interaction --with=dev

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

- name: Mainnet Fork Tests
run: poetry run pytest -m 'fork' -n auto tests
env:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ coverage.xml
*.py,cover
.hypothesis/
.pytest_cache/
testruns/

# Translations
*.mo
Expand Down
2 changes: 1 addition & 1 deletion assets/CSAccounting.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion assets/CSFeeDistributor.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion assets/CSFeeOracle.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion assets/CSModule.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/CSParametersRegistry.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/CSStrikes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"type":"constructor","inputs":[{"name":"module","type":"address","internalType":"address"},{"name":"oracle","type":"address","internalType":"address"},{"name":"exitPenalties","type":"address","internalType":"address"},{"name":"parametersRegistry","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"ACCOUNTING","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICSAccounting"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"EXIT_PENALTIES","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICSExitPenalties"}],"stateMutability":"view"},{"type":"function","name":"MODULE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICSModule"}],"stateMutability":"view"},{"type":"function","name":"ORACLE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"PARAMETERS_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICSParametersRegistry"}],"stateMutability":"view"},{"type":"function","name":"ejector","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICSEjector"}],"stateMutability":"view"},{"type":"function","name":"getInitializedVersion","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getRoleMember","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRoleMemberCount","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hashLeaf","inputs":[{"name":"keyStrikes","type":"tuple","internalType":"struct ICSStrikes.KeyStrikes","components":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"keyIndex","type":"uint256","internalType":"uint256"},{"name":"data","type":"uint256[]","internalType":"uint256[]"}]},{"name":"pubkey","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"initialize","inputs":[{"name":"admin","type":"address","internalType":"address"},{"name":"_ejector","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"processBadPerformanceProof","inputs":[{"name":"keyStrikesList","type":"tuple[]","internalType":"struct ICSStrikes.KeyStrikes[]","components":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"keyIndex","type":"uint256","internalType":"uint256"},{"name":"data","type":"uint256[]","internalType":"uint256[]"}]},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"proofFlags","type":"bool[]","internalType":"bool[]"},{"name":"refundRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"processOracleReport","inputs":[{"name":"_treeRoot","type":"bytes32","internalType":"bytes32"},{"name":"_treeCid","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setEjector","inputs":[{"name":"_ejector","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"treeCid","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"treeRoot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"verifyProof","inputs":[{"name":"keyStrikesList","type":"tuple[]","internalType":"struct ICSStrikes.KeyStrikes[]","components":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"keyIndex","type":"uint256","internalType":"uint256"},{"name":"data","type":"uint256[]","internalType":"uint256[]"}]},{"name":"pubkeys","type":"bytes[]","internalType":"bytes[]"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"proofFlags","type":"bool[]","internalType":"bool[]"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"EjectorSet","inputs":[{"name":"ejector","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StrikesDataUpdated","inputs":[{"name":"treeRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"treeCid","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"StrikesDataWiped","inputs":[],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidProof","inputs":[]},{"type":"error","name":"InvalidReportData","inputs":[]},{"type":"error","name":"MerkleProofInvalidMultiproof","inputs":[]},{"type":"error","name":"NotEnoughStrikesToEject","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"SenderIsNotOracle","inputs":[]},{"type":"error","name":"ValueNotEvenlyDivisible","inputs":[]},{"type":"error","name":"ZeroAdminAddress","inputs":[]},{"type":"error","name":"ZeroBadPerformancePenaltyAmount","inputs":[]},{"type":"error","name":"ZeroEjectionFeeAmount","inputs":[]},{"type":"error","name":"ZeroEjectorAddress","inputs":[]},{"type":"error","name":"ZeroExitPenaltiesAddress","inputs":[]},{"type":"error","name":"ZeroModuleAddress","inputs":[]},{"type":"error","name":"ZeroOracleAddress","inputs":[]},{"type":"error","name":"ZeroParametersRegistryAddress","inputs":[]}]
10 changes: 9 additions & 1 deletion src/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@
MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA = Gwei(2**7 * 10**9)
MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT = Gwei(2**8 * 10**9)
# https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/beacon-chain.md#time-parameters
SLOTS_PER_HISTORICAL_ROOT = 2**13 # 8192
SLOTS_PER_HISTORICAL_ROOT = 2**13 # 8192
# https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/beacon-chain.md#sync-committee
EPOCHS_PER_SYNC_COMMITTEE_PERIOD = 256

# https://github.com/ethereum/consensus-specs/blob/dev/specs/electra/beacon-chain.md#withdrawals-processing
MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP = 2**3
Expand All @@ -45,9 +47,15 @@
SHARE_RATE_PRECISION_E27 = 10**27
TOTAL_BASIS_POINTS = 10000

# Lido CSM constants for network performance calculation
ATTESTATIONS_WEIGHT = 54
BLOCKS_WEIGHT = 8
SYNC_WEIGHT = 2

# Local constants
GWEI_TO_WEI = 10**9
MAX_BLOCK_GAS_LIMIT = 30_000_000
UINT64_MAX = 2**64 - 1
UINT256_MAX = 2**256 - 1

ALLOWED_KAPI_VERSION = Version('1.5.0')
4 changes: 2 additions & 2 deletions src/modules/checks/suites/consensus_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ def check_attestation_committees(web3: Web3, blockstamp):
assert web3.cc.get_attestation_committees(blockstamp, epoch), "consensus-client provide no attestation committees"


def check_block_attestations(web3: Web3, blockstamp):
def check_block_attestations_and_sync(web3: Web3, blockstamp):
"""Check that consensus-client able to provide block attestations"""
assert web3.cc.get_block_attestations(blockstamp.slot_number), "consensus-client provide no block attestations"
assert web3.cc.get_block_attestations_and_sync(blockstamp.slot_number), "consensus-client provide no block attestations and sync"
Loading