-
Notifications
You must be signed in to change notification settings - Fork 45
feat: CSM Performance Oracle v2 #633
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
Merged
Merged
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 c437e20
feat: sync and proposal duties
vgorkavenko eead54b
fix: type
vgorkavenko f48ce02
fix: linter
vgorkavenko 76fdc39
refactor: calculate_distribution
vgorkavenko 1aa7228
refactor: `State` and tests
vgorkavenko 8163d4d
refactor: distribution and tests
vgorkavenko f3896d4
fix: log tests
vgorkavenko 27073f4
fix: review
vgorkavenko cbedd04
fix: coverage + renaming
vgorkavenko c83aa47
fix: get_stuck_operators
vgorkavenko b58e727
refactor: get digests for `get_stuck_operators`
vgorkavenko bacfa9c
fix: `mock_get_staking_module`
vgorkavenko f37f281
Merge branch 'feat/csm/state-data-as-tuples' into feat/csm/new-duties
vgorkavenko 21c8f1c
chore: sync with base (with no new tests). WIP
vgorkavenko 00bba7c
wip: smoke
vgorkavenko 6d0ab01
fix: _calculate_frames
vgorkavenko 9ebdc41
feat: cached `find_frame`
vgorkavenko f9d4f6d
refactor: `init_or_migrate` and `_migrate_frames_data`
vgorkavenko 84eb94f
refactor: `find_frame`
vgorkavenko ac0d8b0
refactor: `init_or_migrate` -> `migrate`
vgorkavenko 9583a6b
refactor: `calculate_distribution` types
vgorkavenko 80dc2f6
refactor: `test_csm_module.py`
vgorkavenko 0d122e8
feat: add negative value checking in `calc_rewards_distribution_in_fr…
vgorkavenko f9290da
fix: linter
vgorkavenko 0731525
refactor: `frames` now is `State` attribute
vgorkavenko 15d5ab2
refactor: `migrate`
vgorkavenko e5f601e
Merge pull request #557 from lidofinance/feat/csm/state-data-as-tuples
vgorkavenko 33e97b1
Merge branch 'csm-v2' into feat/csm/new-duties
vgorkavenko 703af02
chore: sync with base
vgorkavenko 6a9a898
wip
vgorkavenko 78271ca
feat: CSParametersRegistry
vgorkavenko 4c15f19
fix: mypy
vgorkavenko 9dc0fc9
Merge pull request #635 from lidofinance/feat/cs-params-registry
vgorkavenko 3f15293
refactor: split Tree into an ABC and RewardTree
madlabman 998a7c7
wip: add StrikeTree
madlabman 9135457
feat: custom encoder/decoder for tree class
madlabman 23fec90
refactor: Tree subclasses
madlabman 6055b9d
wip: StrikesList impl
madlabman 84b9354
chore: fix tree types inhereted fields
madlabman 572da36
chore: better typing for StrikesList
madlabman 631aa83
wip: add get_strikes_params
madlabman 049527b
chore: fix test_tree
madlabman 78b327e
feat: update to v2 in tests
vgorkavenko 0555562
fix: blockstamp_for_forking
vgorkavenko 811be11
fix: ignore
vgorkavenko 34531cd
fix: some TODOs
vgorkavenko 3495efb
feat: remove `stuck` from CSM
vgorkavenko 2988bfc
remove: delete stucks from CSM
madlabman 9964748
Merge pull request #638 from lidofinance/remove-stuck
madlabman b705e7a
feat: add CSStrikes contract to csm extension
madlabman 6e5102a
refactor: rewards_tree instead of just tree
madlabman 7c352d8
wip: extend StrikesList API
madlabman 41cab5a
Merge branch 'refs/heads/csm-v2' into feat/csm/new-duties
vgorkavenko f08d980
feat: remove `_get_staking_module`
vgorkavenko f0a6ebc
feat: deliver strikes
madlabman 62d2222
feat: query for strikes params
madlabman 793cdee
refactor: strikes refactoring
madlabman 4de655f
chore: fix missing condition
madlabman 2806394
feat: change StrikesList API
madlabman 81fcd06
refactor: StrikesTree decode routine changes
madlabman 1f68cb9
feat: track strikes per frame
madlabman fd18fe2
chore: reorder statements
madlabman 2540340
Merge remote-tracking branch 'origin/csm-v2' into csm-strikes
madlabman e57eef8
fix: participation share should be rounded up
vgorkavenko 9861c4f
fix: only active during the frame validators should be accounted
vgorkavenko ce5a0a8
fix: `CSM_ORACLE_MAX_CONCURRENCY`
vgorkavenko b488a6f
revert: new line
vgorkavenko 5db9b8b
refactor: `Duties.merge`
vgorkavenko 6f0eb5d
refactor: `ValidatorDuty.index` -> `validator_index`
vgorkavenko 1ea0999
refactor: types
vgorkavenko 1e43756
refactor: distribution return values
vgorkavenko 94986e8
fix: after refactoring
vgorkavenko 5b77b7c
refactor: `get_block_attestations_and_sync` lru cache size
vgorkavenko 0696b55
fix: StrikesList equal to itself
madlabman 9fced15
wip: tests for strikes
madlabman b457241
tests: remove _get_staking_module
vgorkavenko d53d59f
chore: QoL refactoring
madlabman 9b2c5b0
wip: fix tests
madlabman 71ae9bb
feat: state tests
vgorkavenko 5092e14
fix: test_checkpoint
vgorkavenko 8429ef9
feat: remove `eip7549_supported`
vgorkavenko 059c621
feat: customized decoder for RewardsTree
madlabman 92f9c62
refactor: factor out LastReport
madlabman 4cbee0f
chore: fix linter warnings
madlabman ff60ce7
test: cover LastReport class
madlabman cf87cc0
fix: test logs
vgorkavenko 7f3ae45
fix: test_get_block_attestations_and_sync
vgorkavenko 45490e0
fix: test_build_report
vgorkavenko 0f3a0f8
wip: tests for csm distribution
madlabman 3b11503
remove: redundant cache
madlabman 364e679
chore: do not modify last_report.strikes value by an accident
madlabman cf2e935
chore: refactor rewards merge
madlabman 574147a
fix: wipe strikes if got empty dict
madlabman 0aff5ff
chore: sanity checks in LastReport
madlabman 19cbfa3
Merge pull request #634 from lidofinance/csm-strikes
vgorkavenko 7ec12f0
chore: linter
vgorkavenko a06f574
Merge branch 'refs/heads/csm-v2' into feat/csm/new-duties
vgorkavenko 62f2741
chore: merge with strikes
vgorkavenko 9c8a040
chore: linter
vgorkavenko e8a1b7c
fix: distribution tests as is
vgorkavenko 0361a91
refactor: validator duties outcome
vgorkavenko 0c45b1a
refactor: `warning` -> `info`
vgorkavenko 0a89389
Merge pull request #607 from lidofinance/feat/csm/new-duties
vgorkavenko 1e36696
Merge pull request #636 from lidofinance/feat/tests-with-csm-v2-update
vgorkavenko af1142e
Merge branch 'develop' into csm-v2
vgorkavenko bdc8ded
feat: distribution tests and refactoring
vgorkavenko ed751ec
test: add smoke tests for CSM contracts
madlabman f5ef0a4
refactor: use new check_is_instance_of function
madlabman a2e806d
chore: black
madlabman 0aa11af
feat: no rebate if no distribution
vgorkavenko 296183a
chore: add assert to make sure a contract is instantiated
madlabman 0e75bec
fix: add CSM address to test
madlabman 97201a0
fix: review
vgorkavenko d5ff9b3
Merge pull request #644 from lidofinance/feat/csm-v2-distribution-tests
madlabman f786839
chore: add xfail tests for CSM v2
madlabman ff7874c
Merge pull request #645 from lidofinance/csm-contracts-smokes
vgorkavenko 58fb97f
fix: clear frames in state.clear
madlabman b7f4762
Merge pull request #661 from lidofinance/fix-state-clear
madlabman 9245e0d
fix: missing perf coefficients logging
madlabman 8015c0d
test: refactor state tests to use random state file location
madlabman 06dd20d
test: fix test failed because of logging perf coeffs
madlabman 71be373
Merge pull request #666 from lidofinance/tests-refactor
madlabman 657adf8
chore: missing word in log
madlabman b171789
tests: fix `deployer`
vgorkavenko cf30ad3
feat: reset main cycle timeout
vgorkavenko c5b0c64
Merge pull request #670 from lidofinance/fix/timeout-in-thread
vgorkavenko 2654954
fix: cs params
vgorkavenko b0a5a20
Merge pull request #702 from lidofinance/fix/cs-params
vgorkavenko 0cf4e05
Merge branch 'feat/oracle-v6' into csm-v2
vgorkavenko cdfd551
fix: after merge
vgorkavenko 3633e8f
fix: linter
vgorkavenko 043d26e
fix: tests
vgorkavenko a1b6486
fix: tests
vgorkavenko 5ede0c6
fix: use `to_0x_hex` in encoder
vgorkavenko eff02e0
feat: run fork tests on v6 branch before merge
vgorkavenko 12713ec
fix: action
vgorkavenko d90df7d
fix: upgrade to v2
vgorkavenko 4cb9725
fix: `32` -> `slots_per_epoch`
vgorkavenko 07126ec
feat: add `DistributionResult`
vgorkavenko 19a32ce
fix: attrs
vgorkavenko 2d8a620
refactor: _merge_strikes to return value
madlabman e303ebc
fix: use `defaultdict`
vgorkavenko 78b743c
test: fix test
madlabman d749020
fix: revert commented tests
vgorkavenko b30f925
feat: new key number intervals implementation
vgorkavenko 3d61e73
Merge branch 'feat/oracle-v6' into csm-v2
vgorkavenko 95675ec
fix: linter after merge
vgorkavenko d41619d
fix: new abis, strikes address
vgorkavenko 8fe4325
refactor: sort active validators
vgorkavenko 84b0a6d
chore: remove `FIXME`
vgorkavenko 2d607af
fix: `KeyNumberValue` parsing
vgorkavenko f367d5b
refactor: `PerformanceCoefficients` now uses constants
vgorkavenko d17fbe8
fix: use `persist-credentials`
vgorkavenko e2beee6
refactor: type aliases, log, condition
vgorkavenko 1788e94
refactor: review
vgorkavenko 2006c6c
fix: linter
vgorkavenko b038341
refactor: a bunch of review changes
madlabman 7b5461b
fix: return logging back
madlabman 60c1d73
feat: check for list/dict response in http provider
madlabman 7262c99
chore: black tests
madlabman 6953e11
refactor: use explicit validator for http provider
madlabman dd942d6
test: add retval_validator simple test
madlabman e78082f
chore: remove unused checks in last_report
madlabman 6f1946c
chore: wrap tree creation error with ValueError
madlabman c3626b5
chore: mark cs_module check with pytest.mark.mainnet
madlabman c7e2b5e
chore: move distributed_so_far update
madlabman 573d810
refactor: make frames a property
madlabman b9f3364
test: add smoke for csm extension
madlabman 8911fac
feat(csm-v2): fix infinite recursion
chasingrainbows 93ee2c5
chore: update CSM abis
madlabman 88f6290
feat(csm-v2): speed up csm contracts load for fork tests
chasingrainbows cfc3cfe
fix: json-stream base processing
vgorkavenko a64055e
fix: add `xfail` for `test_lido_module_report`
vgorkavenko ccaf3c8
fix: use `skip` instead of `xfail`
vgorkavenko 5b16619
fix: intervals signature
vgorkavenko e2b239c
fix: linter
vgorkavenko 9a9cc92
fix: tests with intervals
vgorkavenko a745896
fix: env parsing for tests
vgorkavenko 1f02c4c
feat: add `distributed_rewards` per-validator for logs
vgorkavenko 5bcb088
revert: url
vgorkavenko 1e76859
chore: remove branch `feat/oracle-v6` from workflow trigger
vgorkavenko File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -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: | ||
|
|
@@ -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: | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -50,6 +50,7 @@ coverage.xml | |
| *.py,cover | ||
| .hypothesis/ | ||
| .pytest_cache/ | ||
| testruns/ | ||
|
|
||
| # Translations | ||
| *.mo | ||
|
|
||
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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":[]}] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.