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

release v 1.1 #67

Open
wants to merge 371 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
371 commits
Select commit Hold shift + click to select a range
33b6ed1
fix: NatSpec comments
zuzueeka Oct 7, 2022
702619b
fix: AllowedRecipientsRegistry.sol compilation
arwer13 Oct 8, 2022
9a0b7fd
test(AllowedRecipientsRegistry): constructor
arwer13 Oct 8, 2022
97abb05
test(TopUpAllowedRecipients.sol): refactor and add more cases
arwer13 Oct 8, 2022
966f16a
test(limits): a few more allowed recipients motions
arwer13 Oct 9, 2022
18c21dd
fix(tests): make all current tests pass
arwer13 Oct 9, 2022
d31a02f
refactor(tests): allowed recipients motions
arwer13 Oct 9, 2022
d6ad63c
tests(limits): test simple motions for top up factory
arwer13 Oct 9, 2022
ed2a829
fix: another comment for payment, error in docstring
zuzueeka Oct 10, 2022
4e20f92
feat: add tests for add/remove allowed recipient
rkolpakov Oct 10, 2022
4bc8959
Merge pull request #27 from lidofinance/feat/add-remove-allowed-recip…
arwer13 Oct 10, 2022
cc36e4f
feat: add tests for allowed recipient registry
rkolpakov Oct 11, 2022
58ab57c
Merge pull request #28 from lidofinance/feature/allowed-recipients-re…
arwer13 Oct 11, 2022
3e1c940
tests(limits): various refactoring and small fixing
arwer13 Oct 11, 2022
42305f8
tests(limits): refine two top up motions tests
arwer13 Oct 11, 2022
a3e5c1e
tests(limits): fix possible test failure if run near the end of curre…
arwer13 Oct 11, 2022
f954de8
tests(limits): add 3 top up motion tests
arwer13 Oct 11, 2022
9f73bea
tests(limits): check spendable amount if limit increased/decreased
arwer13 Oct 11, 2022
92ef2e6
tests(limits): unparametrize test for period time range calculation
arwer13 Oct 11, 2022
e12dbf6
fix: added test for AddAllowedRecipient on correct EVMScript
zuzueeka Oct 11, 2022
57c239a
fix: added test for AddAllowedRecipient for ERROR_ALLOWED_RECIPIENT_A…
zuzueeka Oct 11, 2022
5dda91f
fix: added tests for RemoveAllowedRecipient for correct EVMScript and…
zuzueeka Oct 11, 2022
6c38cc9
Merge branch 'develop' of github.com:lidofinance/easy-track into develop
arwer13 Oct 11, 2022
bbdbe2d
fix: TopUpAllowedRecipients rearrranged tests, added test for permiss…
zuzueeka Oct 11, 2022
4eeaaf3
fix: TopUpAllowedRecipients rearrranged tests, added test for permiss…
zuzueeka Oct 11, 2022
31b61dd
feat: add tests for BokkyPooBahsDateTimeContract
rkolpakov Oct 12, 2022
46a2fa2
Merge pull request #29 from lidofinance/feature/tests-for-datetime-lib
arwer13 Oct 12, 2022
dc4484c
fix: resrranged tests, added some for AllowedRecipientsRegistry
zuzueeka Oct 12, 2022
e0467a9
Merge branch 'develop' of https://github.com/lidofinance/easy-track i…
zuzueeka Oct 12, 2022
83fcaec
feat: update spent amount tests
rkolpakov Oct 13, 2022
1e2c81a
Merge branch 'develop' of github.com:lidofinance/easy-track into feat…
rkolpakov Oct 14, 2022
7a72cf8
feat: add tests for period start/end from timestamp
rkolpakov Oct 14, 2022
7040bbd
Merge pull request #30 from lidofinance/feature/update-spent-amount-t…
arwer13 Oct 14, 2022
b0efab1
tests(limits): refactor a few tests
arwer13 Oct 15, 2022
b4c19c6
tests(limits): add few high-level motion tests
arwer13 Oct 15, 2022
1e62dde
tests(limits): add test for setLimitParameters
arwer13 Oct 16, 2022
bced181
tests(limits): fix coverage a bit (based on brownie coverage report)
arwer13 Oct 17, 2022
dd4ad98
fix: added tests for top_up_allowed_recipients: creates evm script co…
zuzueeka Oct 18, 2022
c23abbc
test(limits): refactoring
arwer13 Oct 18, 2022
6dfdd07
tests(limits): remove excess assert from utility functions
arwer13 Oct 19, 2022
a293381
docs: update readme on coverage of non-branching functions
arwer13 Oct 19, 2022
80575d7
added test for test_multiple_role_holders
zuzueeka Oct 19, 2022
37b3d6c
fix: test_multiple_role_holders
zuzueeka Oct 19, 2022
b962f2e
refactor(test_allowed_recipients_registry.py): fix TODO
arwer13 Oct 19, 2022
1b10868
tests(limits): be safe against period switch while a registry test is…
arwer13 Oct 19, 2022
04939c2
tests(limits): resolve registry and motions TODOs after review
arwer13 Oct 22, 2022
dacebd8
feat: make dates more readable
rkolpakov Oct 24, 2022
8bd0222
tests: remove obsolete TODO
arwer13 Oct 24, 2022
0efc863
Merge pull request #33 from lidofinance/fix/date-related-tests
arwer13 Oct 24, 2022
5065137
feat: add property-based tests for date-time lib
rkolpakov Oct 28, 2022
30fc768
feat(limits): changeable date time library in LimitsChecker
arwer13 Oct 28, 2022
d8b9794
tests: refactor test_property_based_timestamp_from_date
arwer13 Oct 28, 2022
2312647
Merge pull request #35 from lidofinance/feature/property-based-date-t…
arwer13 Oct 28, 2022
bc3628c
allowed recipients factory
bulbozaur Nov 2, 2022
23bbf50
review fixes
bulbozaur Nov 2, 2022
2adf3f1
complex usage
bulbozaur Nov 2, 2022
3326ce9
events and return values
bulbozaur Nov 3, 2022
96a492e
events and topup only
bulbozaur Nov 3, 2022
2407679
allowed recipients builder
bulbozaur Nov 4, 2022
df3d3b6
move contract to ext
bulbozaur Nov 4, 2022
ff95026
fix test
bulbozaur Nov 4, 2022
bc56ffd
feature: rename SET_LIMIT_PARAMETERS_ROLE to SET_PARAMETERS_ROLE
arwer13 Nov 4, 2022
77feb4e
feat: add contract flattener
rkolpakov Nov 4, 2022
8d141e7
tests
bulbozaur Nov 6, 2022
69c2452
deploy script
bulbozaur Nov 6, 2022
1dd29ab
Merge remote-tracking branch 'origin/develop' into feature/contract-f…
rkolpakov Nov 7, 2022
8aa7f76
add date time contract to deploy script
bulbozaur Nov 7, 2022
380396e
move deploy params to builder
bulbozaur Nov 7, 2022
ee82ab6
comments
bulbozaur Nov 7, 2022
5e15544
scripts
bulbozaur Nov 7, 2022
5cc07f3
tests: add tests for LimitsChecker::setBokkyPooBahsDateTimeContract
arwer13 Nov 8, 2022
62bf4d2
tests: fix test_spendable_amount_renewal_if_period_duration_changed
arwer13 Nov 8, 2022
4eba42c
Merge pull request #36 from lidofinance/feature/changeable-datetime-lib
arwer13 Nov 8, 2022
4be346a
linter
bulbozaur Nov 8, 2022
58523db
feat(limits): changeable date time library in LimitsChecker
arwer13 Oct 28, 2022
749f1c7
feature: rename SET_LIMIT_PARAMETERS_ROLE to SET_PARAMETERS_ROLE
arwer13 Nov 4, 2022
f3065a9
tests: add tests for LimitsChecker::setBokkyPooBahsDateTimeContract
arwer13 Nov 8, 2022
31b7cb9
tests: fix test_spendable_amount_renewal_if_period_duration_changed
arwer13 Nov 8, 2022
a72826f
update role
bulbozaur Nov 8, 2022
0be1b33
feat: add goerli datetime lib
rkolpakov Nov 8, 2022
cba7e83
update date contract
bulbozaur Nov 8, 2022
e38e315
full setup script
bulbozaur Nov 8, 2022
95f9c55
test
bulbozaur Nov 8, 2022
17e0c3a
acceptance test full setup
bulbozaur Nov 8, 2022
23b8e6c
fix tests
bulbozaur Nov 9, 2022
d21d95c
create setups scripts
bulbozaur Nov 9, 2022
3598373
scripts logs
bulbozaur Nov 9, 2022
04ad358
fix conftest
bulbozaur Nov 9, 2022
296442e
run allowed recipients scenario tests on deployed contracts
Psirex Nov 7, 2022
15bbcbe
Add happy path tests for allowed recipients
Psirex Nov 9, 2022
05a0163
Allow mainnet-fork and goerli-fork networks in contracts
Psirex Nov 9, 2022
1f988a5
Move allowed recipients registry setup via voting to integration tests
Psirex Nov 9, 2022
328da14
Use entire_allowed_recipients_setup only in test_allowed_recipients_m…
Psirex Nov 9, 2022
552d7a8
remove easy_track_defaults fixture
Psirex Nov 9, 2022
18dd995
fix: dependency ordering
rkolpakov Nov 9, 2022
4abf179
fix: flattener didn't include main contract
rkolpakov Nov 9, 2022
0bd8776
Merge branch 'feature/contract-flattener' into feature/allowed-recipi…
rkolpakov Nov 9, 2022
73943d1
Merge pull request #39 from lidofinance/feature/allowed-recipients-sc…
bulbozaur Nov 9, 2022
1155df1
Update utils.lido lib to work correctly with different networks
Psirex Nov 9, 2022
beda997
Split integration_test file into separate test files
Psirex Nov 9, 2022
b6d6dce
Remove test_allowed_recipients_motions tests
Psirex Nov 9, 2022
0f1f69c
remove executor from builder constructor params
bulbozaur Nov 10, 2022
770de02
tests fix
bulbozaur Nov 10, 2022
956d833
use side effect fixtures via pytest's usefixtures
Psirex Nov 14, 2022
8c7cd1d
Keep spent amount on limit params update
Psirex Nov 14, 2022
36a473e
Discard changes for limit keeping
Psirex Nov 14, 2022
6251564
review fixes
bulbozaur Nov 16, 2022
9b9bdd6
Don't change spent amount on limit params update
Psirex Nov 16, 2022
4041fe1
Add unsafeSetSpentAmount method to LimitsChecker
Psirex Nov 17, 2022
8a843ba
test: timeshift from period start to period
rkolpakov Nov 17, 2022
5c224f3
list of roles holders from tx log
bulbozaur Nov 18, 2022
ee4a8cf
test fix
bulbozaur Nov 18, 2022
9d34d10
Merge pull request #41 from lidofinance/test/spendable_renewal_if_per…
bulbozaur Nov 18, 2022
ac12abb
Merge pull request #40 from lidofinance/feature/limits-cheker-params-…
bulbozaur Nov 18, 2022
4f2ef23
Rename file with integration tests for allowed recipients
Psirex Nov 20, 2022
6c2abc5
Merge branch 'develop' into feature/allowed-recipients-factory
Psirex Nov 20, 2022
965f86b
Merge pull request #37 from lidofinance/feature/allowed-recipients-fa…
Psirex Nov 21, 2022
cf5e788
Set beginning of the period in allowed recipients happy path test
Psirex Nov 21, 2022
ebcd440
Add script to deploy BokkyPooBashDateTimeContract
Psirex Nov 23, 2022
3b9431d
Update the mainnet address of the date-time contract
Psirex Nov 23, 2022
47810fe
Add progress logging to date-time contract tests
Psirex Nov 23, 2022
f791f9f
Add AllowedRecipientsBuilder to lido contracts
Psirex Nov 23, 2022
8872327
Add script to create full recipients setup
Psirex Nov 23, 2022
c7ccce8
Tweak acceptance tests for allowed recipients
Psirex Nov 23, 2022
e7e2df6
Modify allowed recipients integrations tests to work with prefilled r…
Psirex Nov 23, 2022
09341e0
Grant missing role for deployed factories in tests
Psirex Nov 23, 2022
0fdd324
Handle eth in the get_balances fixture
Psirex Nov 24, 2022
fb04079
Set empty config in the single setup deploy script
Psirex Nov 24, 2022
4120286
chore(CI): Bump python version for slither
dgusakov Nov 25, 2022
3ac4c03
Merge pull request #43 from lidofinance/fix-python-for-slither
Psirex Nov 25, 2022
7fb52fe
Assert sender balance in check_top_up_motion_enactment
Psirex Nov 29, 2022
8b5f0b8
Colorized logs in the allowed recipients motions conftest
Psirex Nov 29, 2022
d7fc069
Add log for top-up factory addition into EasyTrack
Psirex Nov 29, 2022
78c5164
scripts: compare bytecode
bulbozaur Nov 30, 2022
83fca8d
Merge pull request #44 from lidofinance/feature/compare-bytecode-script
bulbozaur Nov 30, 2022
ea59140
fix: diff checker
bulbozaur Nov 30, 2022
c8f11f1
add AllowedRecipientsBuilder address on goerli
zuzueeka Jan 30, 2023
2dabd46
add fix for launching tests 28-31 Jan
zuzueeka Jan 30, 2023
58e5aa1
update ganache
zuzueeka Feb 6, 2023
5675240
Merge pull request #42 from lidofinance/feature/allowed-recipients-de…
bulbozaur Feb 6, 2023
134386c
add accounting oracle interface
zuzueeka May 22, 2023
bcb1bb2
update lido interface
zuzueeka May 22, 2023
0bdd57f
update NO registry interface
zuzueeka May 22, 2023
890824f
add V2 permissions and contract addresses
zuzueeka May 22, 2023
44ef6f8
add error margin for stETH checks
zuzueeka May 22, 2023
addd68d
add condition for steth error margin check
zuzueeka May 22, 2023
8c7d4a5
rename STETH_ERROR_MARGIN to STETH_ERROR_MARGIN_WEI
zuzueeka Jun 14, 2023
91b907f
add shares balances checks
zuzueeka Jun 14, 2023
f6b2646
remove oracle from lido.py
zuzueeka Jun 14, 2023
3db4f90
fix: remove both oracle interfaces
TheDZhon Jun 14, 2023
e93adb5
fix: assign `MANAGE_NODE_OPERATOR_ROLE` in tests
TheDZhon Jun 14, 2023
1a8d519
Merge pull request #48 from lidofinance/fix/factories_for_stETH_topup
zuzueeka Jun 15, 2023
137996f
simple DVT related factories
bulbozaur Sep 11, 2023
b77f01d
solidity version
bulbozaur Sep 12, 2023
a04a88f
aragon acl permissions
bulbozaur Sep 12, 2023
ad790d4
aragon acl 2 roles w diff params
bulbozaur Sep 12, 2023
4419ad7
aragon roles test
bulbozaur Sep 18, 2023
6a82c3d
Add cluster with manager
bulbozaur Sep 20, 2023
eb47431
activate node operators factory data validation
bulbozaur Sep 20, 2023
dd50ba7
Deactivate node operators input validation
bulbozaur Sep 20, 2023
27ea5d7
set name input data validation
bulbozaur Sep 20, 2023
750d7bb
fix naming
bulbozaur Sep 20, 2023
0055d4d
set reward addresses input validation
bulbozaur Sep 20, 2023
8610bd3
update target limit validation
bulbozaur Sep 20, 2023
ad6954f
linter
bulbozaur Sep 20, 2023
80e089a
transfer node operator manager input validation
bulbozaur Sep 20, 2023
c77a8ef
increase vetted keys update to spec
bulbozaur Sep 20, 2023
cf882ac
update set vetted validators limit factory
bulbozaur Sep 20, 2023
4bf68d0
review updates
bulbozaur Sep 22, 2023
c317a2d
restore renonce factory
bulbozaur Sep 26, 2023
259abdb
review update
bulbozaur Oct 2, 2023
ced7e03
add target validator limits factory
bulbozaur Oct 3, 2023
1a821c3
review fixes
bulbozaur Oct 9, 2023
475ca78
tests
bulbozaur Oct 16, 2023
e0d2d44
unit tests
bulbozaur Oct 17, 2023
3f19e80
review update
bulbozaur Oct 19, 2023
da48032
review update
bulbozaur Oct 19, 2023
62e1b1a
Merge branch 'master' into develop
TheDZhon Oct 20, 2023
6ede292
fix: add wf workaround
TheDZhon Oct 20, 2023
158ad58
naming and optimisation
bulbozaur Oct 20, 2023
e5b379c
fix: motion can be enacted several times in one period
rkolpakov Oct 20, 2023
71d2944
feat: improve test creating top up motions several times
rkolpakov Oct 20, 2023
2b93080
Merge pull request #59 from lidofinance/fix/limits-checker-integratio…
rkolpakov Oct 20, 2023
6fae29a
comments
bulbozaur Oct 22, 2023
5583129
Merge remote-tracking branch 'origin/develop' into feature/extra-nor-…
bulbozaur Oct 22, 2023
da086e9
test update
bulbozaur Oct 23, 2023
9d6d116
fix git ignore
bulbozaur Oct 23, 2023
9033742
fix tests
bulbozaur Oct 23, 2023
02fe700
holesky support
bulbozaur Oct 23, 2023
803e9f0
deploy script
bulbozaur Oct 23, 2023
b829e53
bytecode verificator
bulbozaur Oct 23, 2023
e51b6e2
diffyscan draft
bulbozaur Oct 23, 2023
69beab4
fix verificator
bulbozaur Oct 23, 2023
112423f
verification script
bulbozaur Oct 23, 2023
84a1af2
vote id env support
bulbozaur Oct 23, 2023
601889b
holesky deployment
bulbozaur Oct 24, 2023
691a2ec
after deploy fixes
bulbozaur Oct 25, 2023
af38c0a
bytecode verification
bulbozaur Oct 25, 2023
98afb4a
MANAGE_SIGNING_KEYS role test
bulbozaur Oct 30, 2023
ab466f7
feat: add scenario for collisions
BATMAH69 Nov 25, 2023
9ef77e4
restore Increase vetted keys factories, update tests
bulbozaur Nov 25, 2023
4136547
Merge remote-tracking branch 'origin/feature/extra-nor-factories-coll…
bulbozaur Nov 25, 2023
44ce89b
fix: remove try cache (used for debugging)
BATMAH69 Nov 26, 2023
74613f6
Merge pull request #61 from lidofinance/feature/extra-nor-factories-c…
BATMAH69 Nov 26, 2023
b1bae3a
feat: add cases for increase_vetted_validators, add cancel for revert…
BATMAH69 Nov 26, 2023
3670b48
Merge pull request #62 from lidofinance/feature/extra-nor-factories-c…
bulbozaur Nov 26, 2023
3f363f2
linter
bulbozaur Nov 26, 2023
9379791
increase vetted keys tests
bulbozaur Nov 26, 2023
b6495f0
test comments
bulbozaur Nov 26, 2023
8f77c78
test if manager has general permission
bulbozaur Nov 26, 2023
8e1c2aa
replace param creation with lib
bulbozaur Nov 26, 2023
a3edfe6
Gas optimizations: cycles
bulbozaur Dec 19, 2023
232c9a6
Gas optimizations: external calls
bulbozaur Dec 21, 2023
f6b982e
ChangeNodeOperatorManagers redundant memory allocation
bulbozaur Dec 19, 2023
c206eae
Duplication of INodeOperatorsRegistry interface
bulbozaur Dec 19, 2023
c9015ad
Not used parts of code
bulbozaur Dec 19, 2023
176dc36
Typos in comments/names
bulbozaur Dec 21, 2023
0ebb5e9
Insufficient checks
bulbozaur Dec 21, 2023
a7a442d
Merge pull request #63 from lidofinance/fix/audit-report
bulbozaur Dec 21, 2023
4a8806e
add holesky configs
zuzueeka Dec 25, 2023
bccc999
change the deploy args, parameters initialization
bulbozaur Dec 25, 2023
a23f6a5
add more acceptance tests
zuzueeka Dec 26, 2023
433e22e
Merge pull request #65 from lidofinance/feature/add_holesky_network
bulbozaur Dec 26, 2023
d5a63f1
Simple DVT ET factories mainnet deployment
bulbozaur Dec 26, 2023
38995b7
add more acceptance tests for single recipient setup
zuzueeka Dec 27, 2023
a4d54dc
Merge pull request #66 from lidofinance/feature/add_holesky_network
bulbozaur Dec 27, 2023
83f8c1c
fix wrong no active state
bulbozaur Apr 22, 2024
12bfab3
Merge branch 'develop' into feature/extra-nor-factories
bulbozaur Apr 22, 2024
f62f107
Merge pull request #54 from lidofinance/feature/extra-nor-factories
bulbozaur Apr 22, 2024
552bd8b
update deps and fix deprecations
bulbozaur Apr 30, 2024
878d8c1
fix signature
bulbozaur Apr 30, 2024
b6c6edc
remove unused
bulbozaur Apr 30, 2024
4f03d2d
black
bulbozaur Apr 30, 2024
68d3530
fix brownie revert
bulbozaur Apr 30, 2024
5738198
fix slither ci
bulbozaur Apr 30, 2024
0e905d5
fix verify bytecode
bulbozaur Apr 30, 2024
425be15
chore: Update gh action sintax
dgusakov Apr 30, 2024
e741c80
chore: Remove error skip
dgusakov Apr 30, 2024
285415e
fix verify bytecode ci
bulbozaur Apr 30, 2024
c5f7c5f
Merge pull request #68 from lidofinance/fix-action
bulbozaur Apr 30, 2024
9ab3bfd
use foundry for slither
bulbozaur May 7, 2024
e1c7b96
remappings.txt
bulbozaur May 7, 2024
3fd946b
disable ci
bulbozaur May 7, 2024
6326f7a
Merge pull request #70 from lidofinance/feature/slither-fix
bulbozaur May 7, 2024
23c3656
chore: update .python-version
dgusakov May 8, 2024
a39a621
add dateutil dep
bulbozaur May 8, 2024
887fee9
chore: Add WEB3_INFURA_PROJECT_ID to README
dgusakov May 8, 2024
449a9bb
network for tests
bulbozaur May 8, 2024
efaa7ce
remove holesky duplicate block, add addresses
zuzueeka Sep 27, 2024
019f01d
add holesky voters addresses
zuzueeka Sep 27, 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
49 changes: 49 additions & 0 deletions .github/workflows/slither.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Slither Analysis

on:
push:
branches:
- '*'
pull_request:
branches: [develop, master]

jobs:
analyze:
runs-on: ubuntu-latest
permissions:
contents: read
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v3

- uses: actions/setup-python@v4
with:
python-version: "3.10.6"

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

- name: Install poetry requirements
run: >
curl -sSL https://install.python-poetry.org | python - &&
poetry install

- name: Run slither
run: >
poetry run slither . --sarif results.sarif --fail-none --compile-force-framework foundry

- name: Check results.sarif presence
id: results
if: always()
shell: bash
run: >
test -f results.sarif &&
echo 'value=present' >> $GITHUB_OUTPUT ||
echo 'value=not' >> $GITHUB_OUTPUT

- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v2
if: ${{ always() && steps.results.outputs.value == 'present' }}
with:
sarif_file: results.sarif
36 changes: 0 additions & 36 deletions .github/workflows/verify-bytecode.yml

This file was deleted.

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,5 @@ reports/
.vscode
.pytest_cache
node_modules
/contracts_flattened
/contracts_flattened
logs
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.9.10
3.10.6
46 changes: 32 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

## Problem

Lido DAO governance currently relies on Aragon voting model. This means DAO approves or rejects proposals via direct governance token voting. Though transparent and reliable, it is not a convenient way to make decisions only affecting small groups of Lido DAO members. Besides, direct token voting doesn't exactly reflect all the decision making processes within the Lido DAO and is often used only to rubberstamp an existing consensus.
There are a few natural sub-governance groups within the DAO, e.g. validators commitee, financial operations team and LEGO commitee. Every day they need to take routine actions only related to their field of expertise. The decisions they make hardly ever spark any debate in the comunity, and votings on such decisions often struggle to attract wider DAO attention and thus, to pass.
Lido DAO governance currently relies on Aragon voting model. This means DAO approves or rejects proposals via direct governance token voting. Though transparent and reliable, it is not a convenient way to make decisions only affecting small groups of Lido DAO members. Besides, direct token voting doesn't exactly reflect all the decision making processes within the Lido DAO and is often used only to rubber-stamp an existing consensus.
There are a few natural sub-governance groups within the DAO, e.g. validators committee, financial operations team and LEGO committee. Every day they need to take routine actions only related to their field of expertise. The decisions they make hardly ever spark any debate in the community, and votings on such decisions often struggle to attract wider DAO attention and thus, to pass.

## Solution

Expand All @@ -23,7 +23,7 @@ See [specification.md](https://github.com/lidofinance/easy-track/blob/master/spe

## EVMScript Factory Requirements

### Methods Compability
### Methods Compatibility

**Every EVMScript factory must implement [`IEVMScriptFactory`](https://github.com/lidofinance/easy-track/blob/master/contracts/interfaces/IEVMScriptFactory.sol) interface.**

Expand All @@ -33,7 +33,7 @@ Methods from this interface are used by EasyTrack at the motion lifecycle.

**Every action done by EasyTrack must be allowed to do also by Aragon Voting.**

This requirement fills automatically in cases when easy tracks do actions provided by the Aragon application. But for contracts outside the Aragon ecosystem access to Voting must be provided explicitly. To grant such access you can use role-based control access contracts from the OpenZeppelin package. To see an example of how this pattern was used in EVMScript factories see the `RewardPrgoramsRegistry.sol` contract.
This requirement fills automatically in cases when easy tracks do actions provided by the Aragon application. But for contracts outside the Aragon ecosystem access to Voting must be provided explicitly. To grant such access you can use role-based control access contracts from the OpenZeppelin package. To see an example of how this pattern was used in EVMScript factories see the `RewardProgramsRegistry.sol` contract.

### Onchain EVMScript calldata decoding

Expand All @@ -55,18 +55,15 @@ Permissions for EVMScript factory must contain only methods used by generated EV

## Project Setup

To use the tools that this project provides, please pull the repository from GitHub and install its dependencies as follows. It is recommended to use a Python virtual environment.
To use the tools that this project provides, please pull the repository from GitHub and install its dependencies as follows.

```bash
git clone https://github.com/lidofinance/easy-track
cd easy-track
npm install

# in case of pyyaml installation issue, it should be installed manually
# see issue for details https://github.com/yaml/pyyaml/issues/601
poetry run pip install "cython<3.0" pyyaml==5.4.1 --no-build-isolation
yarn install

poetry install
poetry run brownie networks import network-config.yaml True
poetry shell
```

Expand Down Expand Up @@ -130,19 +127,26 @@ Script requires next ENV variables to be set:

## Tests

Set infura project ID
```bash
export WEB3_INFURA_PROJECT_ID=<YOUR_PROJECT_ID>
```

The fastest way to run the tests is:

```bash
brownie test
brownie test --network mainnet-fork
```

Run tests with coverage and gas profiling:

```bash
brownie test --coverage --gas
brownie test --network mainnet-fork --coverage --gas
```

#### Coverage notes
### Coverage notes

#### Immutable issues

Current brownie version has problems with coverage reports for some contracts. Contracts which use `immutable` variables don't get on the resulting report. Details can be found in this [issue](https://github.com/eth-brownie/brownie/issues/1087). Easy Track uses `immutable` modifier in next contracts:

Expand All @@ -153,5 +157,19 @@ Current brownie version has problems with coverage reports for some contracts. C
- [RemoveRewardProgram.sol](https://github.com/lidofinance/easy-track/blob/a72858804481009f2e09508ffbf93d8a4aee6c84/contracts/EVMScriptFactories/RemoveRewardProgram.sol#L23)
- [TopUpLegoProgram.sol](https://github.com/lidofinance/easy-track/blob/a72858804481009f2e09508ffbf93d8a4aee6c84/contracts/EVMScriptFactories/TopUpLegoProgram.sol#L26)
- [TopUpRewardProgram.sol](https://github.com/lidofinance/easy-track/blob/a72858804481009f2e09508ffbf93d8a4aee6c84/contracts/EVMScriptFactories/TopUpRewardPrograms.sol#L27)
- [TopUpAllowedRecipients.sol](https://github.com/lidofinance/easy-track/blob/522ae893f6c03516354a8d1950b29b3203adae52/contracts/EVMScriptFactories/TopUpAllowedRecipients.sol#L29)

The workaround for the coverage problem is removing the `immutable` modifier from the above contracts. Without modifier above contracts will be listed in the coverage report.

#### No-branching issue

Another brownie issue is that some functions do not get into the coverage report. For example `decodeEVMScriptCallData` of `RemoveAllowedRecipient` contract:

```
contract: RemoveAllowedRecipient - 100.0%
RemoveAllowedRecipient.createEVMScript - 100.0%
```

Although in brownie coverage report explorer (`brownie gui`) in statements section the function body is highlighted green, which means it is covered.

The workaround for the coverage problem is removing the `immutable` modifier from the above contracts. Without modifier above contracts will be listed in the coverage report
It seems such functions are not reflected in % coverage report, due to absence of branching in the function body. Adding dummy branching brings them to the report.
Loading
Loading