Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Oracle V4 EPIC #495

Merged
merged 180 commits into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
180 commits
Select commit Hold shift + click to select a range
3ef727a
Add holesky WF
mvaleev Oct 6, 2023
80324d6
Merge pull request #404 from lidofinance/feat/add_holesky_wf
mvaleev Oct 6, 2023
578c70d
feat: upgrade package version in dockerfile
br3d Oct 6, 2023
aa23a3f
zero division fix
F4ever Oct 6, 2023
d16af2d
pin to minor version
F4ever Oct 23, 2023
bf37945
Add more logs to ejector module
F4ever Oct 3, 2023
6512cdc
write validators to file
F4ever Oct 23, 2023
74e4717
Merge branch 'feat/upgdade_dockerfile' of github.com:lidofinance/lido…
F4ever Oct 23, 2023
b7ddcb9
lint fix
F4ever Oct 23, 2023
45a101c
Update src/modules/ejector/ejector.py
F4ever Oct 24, 2023
96bd460
add test
F4ever Oct 24, 2023
3bd64e9
black to tests
F4ever Oct 24, 2023
45c0d47
Move lido linters to checks.yml
ptqa Oct 30, 2023
74265f4
Merge pull request #414 from lidofinance/feature/sre-698-checks-consi…
F4ever Oct 30, 2023
7d93587
revert logic changes
F4ever Nov 1, 2023
80486c4
Merge branch 'fix/zero-division-error' into fix/develop_hotfix
infloop Mar 17, 2024
d7adef6
fix empty list exception
F4ever Oct 4, 2023
092234a
fix: linter
F4ever Oct 4, 2023
3c6b0d7
Merge branch 'feat/upgdade_dockerfile' into fix/develop_hotfix
infloop Mar 17, 2024
f71e71f
feat: bump curl version in Dockerfile
infloop Mar 17, 2024
9146bf5
Merge pull request #424 from lidofinance/fix/develop_hotfix
infloop Mar 18, 2024
472fd18
Revert "Fix/develop hotfix"
F4ever Apr 1, 2024
7019141
Merge pull request #413 from lidofinance/feat/log-requests-in-ejector…
F4ever May 23, 2024
960cfb2
Merge pull request #425 from lidofinance/revert-424-fix/develop_hotfix
F4ever Jun 20, 2024
0deeede
Revert "Feat: add more logs to code and log validators request in eje…
F4ever Jun 20, 2024
8558c54
CSM performance oracle module (#440)
madlabman Jun 20, 2024
6024a58
fix: checker events in range (#486)
madlabman Jun 24, 2024
8a98c49
fix: align CSM module with ConsensusModule interface (#485)
madlabman Jun 25, 2024
9876af9
CSM oracle review fixes (#487)
madlabman Jun 27, 2024
a7ed2f9
fix: get r_ref_slot before initial epoch (#488)
vgorkavenko Jun 28, 2024
bcb83de
fix: pinata provider (#490)
madlabman Jul 2, 2024
81f29b0
feat: csm metrics (#489)
vgorkavenko Jul 16, 2024
599cc13
feat: custom errors + kapi check (#491)
F4ever Jul 16, 2024
7bfc4f7
fix: add `processing_delay` explainer (#492)
vgorkavenko Jul 16, 2024
b95a354
negative rebase update (#494)
F4ever Jul 25, 2024
99b2f0d
feat: secrets from env or file (#496)
madlabman Jul 26, 2024
ef27adc
feat/minor text fixes
F4ever Jul 26, 2024
f732dae
Merge branch 'develop' into feat/beta2-review-fixes
F4ever Jul 26, 2024
ad7da65
Review fixes
F4ever Jul 26, 2024
d6941ac
feat: improve contract compatibility check
F4ever Aug 1, 2024
143cf3b
batch for nos
F4ever Aug 1, 2024
a60e7d1
text refactoring
F4ever Aug 1, 2024
7476cf3
review fixes
F4ever Aug 1, 2024
b96d079
Add validator index predicate
F4ever Aug 1, 2024
4522039
typing fix
F4ever Aug 2, 2024
ccac065
fix tests
F4ever Aug 5, 2024
fb12431
black .
F4ever Aug 5, 2024
089b3dc
Refactor accounting report building (#498)
hweawer Aug 7, 2024
80c2a1d
feat: reuse `get_lido_node_operators_by_modules`
vgorkavenko Aug 9, 2024
8d4d3e4
fix: linter
vgorkavenko Aug 9, 2024
efd7ba9
fix: tweak cache
F4ever Aug 9, 2024
784e9ff
Merge branch 'feat/beta2-review-fixes' of github.com:lidofinance/lido…
F4ever Aug 9, 2024
9bf98e8
update
F4ever Aug 11, 2024
c64a7a9
tests: current_frame_range tests for CSM module (#500)
madlabman Aug 12, 2024
6ce70bb
fix: ejector bug
F4ever Aug 12, 2024
82b54c4
Merge branch 'feat/beta2-review-fixes' of github.com:lidofinance/lido…
F4ever Aug 12, 2024
cf0ba95
fix: get_first_non_missed_slot (#499)
vgorkavenko Aug 12, 2024
7d3241c
feat: drop state in `refresh_contracts` (#503)
vgorkavenko Aug 12, 2024
9812237
fix: move metrics setting to `_check_duty` (#501)
vgorkavenko Aug 12, 2024
c8586af
Merge branch 'feat/beta2-review-fixes' into feat/get-digests-for-csm
vgorkavenko Aug 12, 2024
47dab65
fix: finalize renaming
F4ever Aug 12, 2024
0e508f8
Merge branch 'feat/beta2-review-fixes' of github.com:lidofinance/lido…
F4ever Aug 12, 2024
4f260cc
fix mypy
F4ever Aug 12, 2024
2760e43
feat: add test
vgorkavenko Aug 12, 2024
6aefb85
test fix
F4ever Aug 12, 2024
64127b7
Merge branch 'feat/beta2-review-fixes' into feat/get-digests-for-csm
vgorkavenko Aug 12, 2024
c398872
var name back
F4ever Aug 12, 2024
6547d06
Merge branch 'feat/beta2-review-fixes' into feat/get-digests-for-csm
vgorkavenko Aug 12, 2024
9939887
Misc refactoring in CSM module (#502)
madlabman Aug 12, 2024
697d80b
chore: handle frame change in collect data (#506)
madlabman Aug 12, 2024
f534368
feat: pause check
F4ever Aug 12, 2024
f0f0386
Merge branch 'feat/beta2-review-fixes' of github.com:lidofinance/lido…
F4ever Aug 12, 2024
14eaa26
fix: iterator edge cases
F4ever Aug 13, 2024
5a7fb21
Merge branch 'feat/beta2-review-fixes' into feat/get-digests-for-csm
vgorkavenko Aug 13, 2024
18a8a27
feat: get module_id
vgorkavenko Aug 13, 2024
042eb0b
fix test
F4ever Aug 13, 2024
b228e97
black tests
F4ever Aug 13, 2024
6f44e17
Merge pull request #497 from lidofinance/feat/beta2-review-fixes
F4ever Aug 13, 2024
e21b3e6
fix: test
vgorkavenko Aug 13, 2024
7757411
Merge branch 'develop' into feat/get-digests-for-csm
vgorkavenko Aug 13, 2024
acdd818
feat: CACHE_DIR variable
madlabman Aug 13, 2024
991deca
set min for NodeOperatorLimitMode
F4ever Aug 13, 2024
e70f671
Merge pull request #507 from lidofinance/cache-in-dir
F4ever Aug 13, 2024
adef784
fix: raise exception when no digests
vgorkavenko Aug 13, 2024
9df0317
fix: if digests is None
vgorkavenko Aug 13, 2024
7e3ebcb
Merge pull request #504 from lidofinance/feat/get-digests-for-csm
F4ever Aug 13, 2024
d4a689b
Merge pull request #508 from lidofinance/feat/nolimit-tweak
F4ever Aug 13, 2024
886e0b7
tweak contract interactions
F4ever Aug 13, 2024
5be6496
fix linters
F4ever Aug 13, 2024
b29956d
cache fix
F4ever Aug 13, 2024
91bb1ce
added to field
F4ever Aug 13, 2024
3ae7c9a
change some logs to debug level
F4ever Aug 13, 2024
ff0c83d
tweak logs
F4ever Aug 13, 2024
84578b3
log tweak
F4ever Aug 13, 2024
1cba421
fix tests and pylint
F4ever Aug 14, 2024
cb2cf2a
Merge pull request #509 from lidofinance/feat/contract-interaction-re…
F4ever Aug 14, 2024
bec116f
Merge pull request #510 from lidofinance/feat/improve-logs
F4ever Aug 14, 2024
8285408
review changes
F4ever Aug 15, 2024
5264188
replace override with inheritance
F4ever Aug 15, 2024
7263717
Merge pull request #511 from lidofinance/feat/review-fixes
F4ever Aug 20, 2024
e37544e
feat: State dump CID in tree dump
madlabman Aug 20, 2024
3076674
refactor: pass state_cid as metadata to the tree dump function
madlabman Aug 22, 2024
f214e4a
refactor: decompose build_report
madlabman Aug 22, 2024
b574797
refactor: just CID everywhere
madlabman Aug 22, 2024
d3fbd72
chore: fix formatring
madlabman Aug 22, 2024
d796ea3
feat: special Log instead of State dump
madlabman Aug 23, 2024
6082d05
fix: dense tree encoding
madlabman Aug 28, 2024
c663bc9
chore: formatting
madlabman Aug 28, 2024
af5398c
feat: add distributed field to operator in log
madlabman Aug 28, 2024
443c30e
chore: reconsider usage of field
madlabman Aug 28, 2024
29b3d28
chore: bump black and apply formatter
madlabman Aug 30, 2024
2cab72b
refactor: State network_aggr refactoring
madlabman Aug 30, 2024
3b733f2
test: fix wrong meta in test
madlabman Aug 30, 2024
e064a3a
refactor: get_csm_tree_cid nullable
madlabman Aug 30, 2024
5c10665
chore: Iterable -> Iterator for generator functions
madlabman Aug 30, 2024
361455b
refactor: csm.log classes rename
madlabman Aug 30, 2024
6a4b1fa
refactor: split ternary
madlabman Aug 30, 2024
32de3a7
feat: exclude operators with slashed validators in the frame (#513)
vgorkavenko Sep 2, 2024
d061582
chore: bump curl
madlabman Sep 2, 2024
2f9b09e
test: fix distribution test
madlabman Sep 2, 2024
dbd4a62
Merge pull request #512 from lidofinance/upload-state
F4ever Sep 4, 2024
339438c
fix: defaultdict access dont raise KeyError
madlabman Sep 9, 2024
13366d5
Merge pull request #515 from lidofinance/fix-defaultdict-access
F4ever Sep 9, 2024
e8e6e16
feat: tests for `collect_data`
vgorkavenko Sep 4, 2024
db4da8a
fix: black
vgorkavenko Sep 4, 2024
59c2faf
fix: review
vgorkavenko Sep 16, 2024
f6ab2af
chore: doc for `CHECKPOINT_SLOT_DELAY_EPOCHS`
vgorkavenko Sep 16, 2024
b631929
feat: separate CSM frame log publishing (#517)
madlabman Sep 17, 2024
8a41fa7
Fix flaky test
hweawer Sep 18, 2024
05ef0b6
Reformat with black
hweawer Sep 18, 2024
c77253f
Generation with bound
hweawer Sep 18, 2024
223197f
Reformat with black
hweawer Sep 18, 2024
569701c
Convert to string
hweawer Sep 18, 2024
87ee53f
Black formatting
hweawer Sep 18, 2024
919f8da
Move generation to the model
hweawer Sep 18, 2024
7a2d395
Remove the imports
hweawer Sep 18, 2024
a58efae
Merge pull request #518 from lidofinance/fix-flaky-test-total-age
F4ever Sep 18, 2024
56c2a00
feat: tests for csm build report (#516)
vgorkavenko Sep 19, 2024
deb9bef
Update src/modules/csm/csm.py
vgorkavenko Sep 19, 2024
622b20b
fix: review
vgorkavenko Sep 19, 2024
932f293
fix: expression
vgorkavenko Sep 19, 2024
b3187ad
Merge pull request #514 from lidofinance/feat/collect-data-test
F4ever Sep 19, 2024
17ad5ab
fix: negative rebase check with lido handleOracleReport simulation
F4ever Sep 19, 2024
7a91ce6
feat: tobytes32
F4ever Sep 19, 2024
acacbb9
fix: typings
F4ever Sep 19, 2024
f8e35d0
chore: add explaining log to collect_data
madlabman Sep 20, 2024
c095709
fix for erigon nodes
F4ever Sep 20, 2024
6386071
feat: change test order
F4ever Sep 20, 2024
95b4c1a
params to kwargs
F4ever Sep 20, 2024
c5df799
log to warn
F4ever Sep 20, 2024
dd2882f
revert formatting
F4ever Sep 20, 2024
dc103f4
Merge pull request #519 from lidofinance/fix/negative-rebase-emulate-…
F4ever Sep 20, 2024
4e1e221
Merge pull request #520 from lidofinance/add-log
F4ever Sep 20, 2024
5d85372
Improve unit tests coverage
hweawer Sep 23, 2024
4f925b2
feat: add more fields to FramePerfLog
madlabman Sep 25, 2024
904fcc1
Increase unit tests coverage
hweawer Sep 30, 2024
b18a38a
Increase middleware coverage
hweawer Oct 1, 2024
7480e5a
test: add more checks for log encode
madlabman Oct 2, 2024
f653f9c
Do not calculate wr batches if no eth
F4ever Oct 2, 2024
f9af40e
Revert src changes
hweawer Oct 3, 2024
5d159d8
Disble warning
hweawer Oct 3, 2024
884b9de
Reformat
hweawer Oct 3, 2024
9d39d08
Change tests
hweawer Oct 3, 2024
ec708b9
Merge pull request #527 from lidofinance/increase-converage-middleware
F4ever Oct 3, 2024
c3376ea
Merge pull request #526 from lidofinance/more-unit-tests
F4ever Oct 3, 2024
60affa2
Formatting
hweawer Oct 3, 2024
2e3fced
Linter
hweawer Oct 3, 2024
6ac8b26
Merge pull request #524 from lidofinance/improve-coverage-for-metrics
F4ever Oct 3, 2024
c66456f
Merge pull request #528 from lidofinance/fix/finalization-batches
F4ever Oct 3, 2024
986dc68
chore: fix checkpoint slot comment
madlabman Oct 7, 2024
de4f9ae
chore: add note for finalized_epoch computation
madlabman Oct 7, 2024
f9c0dc7
update upload logic
F4ever Oct 7, 2024
cf8417f
fix: linters
F4ever Oct 7, 2024
1d21b1f
Merge pull request #531 from lidofinance/fix-csm-findings
F4ever Oct 7, 2024
a0088a4
Merge pull request #525 from lidofinance/frame-log-extend
F4ever Oct 7, 2024
2fa55d5
fix mypy
F4ever Oct 7, 2024
9ac8abc
add test for ipfs providers
F4ever Oct 7, 2024
f3b33f8
Merge pull request #533 from lidofinance/feat/parse-cid-to-v0
F4ever Oct 8, 2024
6bcd63b
fix: staking reward v2 backward compatibility
F4ever Oct 9, 2024
9383143
Merge pull request #534 from lidofinance/fix/staking-router-compatibi…
F4ever Oct 10, 2024
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
6 changes: 5 additions & 1 deletion .env.example
avsetsin marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@ CONSENSUS_CLIENT_URI=http://...
EXECUTION_CLIENT_URI=http://...
KEYS_API_URI=https://...
LIDO_LOCATOR_ADDRESS=0x1...
MEMBER_PRIV_KEY=aaa...
CSM_MODULE_ADDRESS=0x...
MEMBER_PRIV_KEY=aaa...
GW3_ACCESS_KEY=1234....
GW3_SECRET_KEY=abcd1234...
PINATA_JWT=...
14 changes: 14 additions & 0 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Tests and Checks

on: push

jobs:
security:
uses: lidofinance/linters/.github/workflows/security.yml@master
permissions:
security-events: write
contents: read
docker:
uses: lidofinance/linters/.github/workflows/docker.yml@master
actions:
uses: lidofinance/linters/.github/workflows/actions.yml@master
4 changes: 2 additions & 2 deletions .github/workflows/ci-dev.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: CI Dev
name: CI Dev Holesky

on:
workflow_dispatch:
Expand Down Expand Up @@ -26,5 +26,5 @@ jobs:
APP_ID: ${{ secrets.APP_ID }}
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}
TARGET_REPO: "lidofinance/infra-mainnet"
TARGET_WORKFLOW: "deploy_testnet_lido_oracle.yaml"
TARGET_WORKFLOW: "deploy_holesky_testnet_lido_oracle.yaml"
TARGET: "develop"
26 changes: 9 additions & 17 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Python 3.11
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.11"
python-version: "3.12"

- name: Setup poetry
run: >
Expand All @@ -31,18 +31,22 @@ jobs:
poetry install --no-interaction --with=dev
- name: Test with pytest
run: poetry run pytest -m "not integration and not e2e" --cov=src tests
run: poetry run pytest --cov=src tests
env:
EXECUTION_CLIENT_URI: ${{ secrets.EXECUTION_CLIENT_URI }}
CONSENSUS_CLIENT_URI: ${{ secrets.CONSENSUS_CLIENT_URI }}
KEYS_API_URI: ${{ secrets.KEYS_API_URI }}

linters:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Python 3.11
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.11"
python-version: "3.12"

- name: Setup poetry
run: >
Expand All @@ -64,15 +68,3 @@ jobs:

- name: Lint mypy
run: poetry run mypy src

security:
uses: lidofinance/linters/.github/workflows/security.yml@master
permissions:
security-events: write
contents: read

docker:
uses: lidofinance/linters/.github/workflows/docker.yml@master

actions:
uses: lidofinance/linters/.github/workflows/actions.yml@master
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ venv.bak/
.dmypy.json
dmypy.json

.ruff_cache/

# Pyre type checker
.pyre/

Expand All @@ -134,4 +136,7 @@ dmypy.json

# vim
*.swp
.direnv

# Cache
*.pkl
*.buf
9 changes: 4 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
FROM python:3.11-slim as base
FROM python:3.12.4-slim as base

RUN apt-get update && apt-get install -y --no-install-recommends -qq \
gcc=4:10.2.1-1 \
libffi-dev=3.3-6 \
g++=4:10.2.1-1 \
curl=7.74.0-1.3+deb11u7 \
libffi-dev=3.4.4-1 \
g++=4:12.2.0-3 \
curl=7.88.1-10+deb12u7 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

Expand Down
177 changes: 104 additions & 73 deletions README.md
F4ever marked this conversation as resolved.
Show resolved Hide resolved

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions assets/CSAccounting.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"type":"function","name":"chargeFee","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"chargeRecipient","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claimRewardsStETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"stETHAmount","type":"uint256","internalType":"uint256"},{"name":"rewardAddress","type":"address","internalType":"address"},{"name":"cumulativeFeeShares","type":"uint256","internalType":"uint256"},{"name":"rewardsProof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsUnstETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"stEthAmount","type":"uint256","internalType":"uint256"},{"name":"rewardAddress","type":"address","internalType":"address"},{"name":"cumulativeFeeShares","type":"uint256","internalType":"uint256"},{"name":"rewardsProof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimRewardsWstETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"wstETHAmount","type":"uint256","internalType":"uint256"},{"name":"rewardAddress","type":"address","internalType":"address"},{"name":"cumulativeFeeShares","type":"uint256","internalType":"uint256"},{"name":"rewardsProof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"compensateLockedBondETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositETH","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositStETH","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"stETHAmount","type":"uint256","internalType":"uint256"},{"name":"permit","type":"tuple","internalType":"struct ICSAccounting.PermitInput","components":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositWstETH","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"wstETHAmount","type":"uint256","internalType":"uint256"},{"name":"permit","type":"tuple","internalType":"struct ICSAccounting.PermitInput","components":[{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"feeDistributor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICSFeeDistributor"}],"stateMutability":"view"},{"type":"function","name":"getActualLockedBond","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBond","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondAmountByKeysCount","inputs":[{"name":"keys","type":"uint256","internalType":"uint256"},{"name":"curve","type":"tuple","internalType":"struct ICSBondCurve.BondCurve","components":[{"name":"points","type":"uint256[]","internalType":"uint256[]"},{"name":"trend","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondAmountByKeysCount","inputs":[{"name":"keys","type":"uint256","internalType":"uint256"},{"name":"curveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondAmountByKeysCountWstETH","inputs":[{"name":"keysCount","type":"uint256","internalType":"uint256"},{"name":"curveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondAmountByKeysCountWstETH","inputs":[{"name":"keysCount","type":"uint256","internalType":"uint256"},{"name":"curve","type":"tuple","internalType":"struct ICSBondCurve.BondCurve","components":[{"name":"points","type":"uint256[]","internalType":"uint256[]"},{"name":"trend","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondCurve","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ICSBondCurve.BondCurve","components":[{"name":"points","type":"uint256[]","internalType":"uint256[]"},{"name":"trend","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getBondCurveId","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondLockRetentionPeriod","inputs":[],"outputs":[{"name":"retention","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBondShares","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurveInfo","inputs":[{"name":"curveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ICSBondCurve.BondCurve","components":[{"name":"points","type":"uint256[]","internalType":"uint256[]"},{"name":"trend","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getKeysCountByBondAmount","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"curve","type":"tuple","internalType":"struct ICSBondCurve.BondCurve","components":[{"name":"points","type":"uint256[]","internalType":"uint256[]"},{"name":"trend","type":"uint256","internalType":"uint256"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getKeysCountByBondAmount","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"curveId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLockedBondInfo","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct ICSBondLock.BondLock","components":[{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"retentionUntil","type":"uint128","internalType":"uint128"}]}],"stateMutability":"view"},{"type":"function","name":"getRequiredBondForNextKeys","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"additionalKeys","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRequiredBondForNextKeysWstETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"additionalKeys","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnbondedKeysCount","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnbondedKeysCountToEject","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lockBondETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"penalize","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"releaseLockedBondETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resetBondCurve","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBondCurve","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"},{"name":"curveId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settleLockedBondETH","inputs":[{"name":"nodeOperatorId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"totalBondShares","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}]
Loading
Loading