diff --git a/README.md b/README.md index a7ed6d67..7d8a1210 100644 --- a/README.md +++ b/README.md @@ -83,26 +83,29 @@ By default, you should start composing new scripts and test using forked network You have three forked networks to work with: - `mainnet-fork` -- `goerli-fork` - `holesky-fork` +- `sepolia-fork` To start new voting on the live networks you could proceed with: - `mainnet` -- `goerli` - `holesky` +- `sepolia` -> Note: you can't run tests on the live networks. +> [!CAUTION] +> You can't run tests on the live networks. In a typical weekly omnibus workflow, you need only `mainnet-fork` and `mainnet` networks. In case of large test campaign on Lido upgrades, -it also could be useful to go with `goerli` and `goerli-fork` testnets first. - -> **Holesky specifics.** -> Due to Holesky not being supported by Infura yet, setting RPC URL for Holesky is different. Instead of setting `WEB3_INFURA_PROJECT_ID` env variable set `HOLESKY_RPC_URL`. +it also could be useful to go with `holesky` and `holesky-fork` testnets first. +> [!WARNING] > **Holesky is partially supported.** > At the moment not all parameters are set in `configs/config_holesky.py` and acceptance/regression/snapshot tests are not operational. +> +> **Sepolia is partially supported.** +> At the moment not all parameters are set in `configs/config_sepolia.py` and acceptance/regression/snapshot tests are not operational. + ### Environment variables setup diff --git a/configs/config_sepolia.py b/configs/config_sepolia.py new file mode 100644 index 00000000..45f6ce7f --- /dev/null +++ b/configs/config_sepolia.py @@ -0,0 +1,57 @@ +# Use this config as address book only +CHAIN_NETWORK_NAME = "sepolia" +# DAO +ARAGON_KERNEL = "0x6155bD199ECcc79Ff4e8B392f6cBD9c9874E8916" +LDO_TOKEN = "0xd06dF83b8ad6D89C86a187fba4Eae918d497BdCB" +# Standard (or forked) Aragon apps +ACL = "0x8A1AA86d35b2EE8C9369618E7D7b40000cCD3295" +AGENT = "0x32A0E5828B62AAb932362a4816ae03b860b65e83" +FINANCE = "0x75c7b1D23f1cad7Fb4D60281d7069E46440BC179" +VOTING = "0x39A0EbdEE54cB319f4F42141daaBDb6ba25D341A" +TOKEN_MANAGER = "0xC73cd4B2A7c1CBC5BF046eB4A7019365558ABF66" +# Our custom Aragon apps +LIDO = "0x3e3FE7dBc6B4C189E7128855dD526361c49b40Af" +LIDO_LEGACY_ORACLE = "0x3483c140EF7F2716460198Ff831a8e53F05F1606" +LIDO_NODE_OPERATORS_REGISTRY = "0x33d6E15047E8644F8DDf5CD05d202dfE587DA6E3" +# Aragon APM Repos +VOTING_REPO = "" +LIDO_LIDO_REPO = "" +LIDO_NODE_OPERATORS_REGISTRY_REPO = "" +LIDO_LEGACY_ORACLE_REPO = "" + +DEPOSIT_SECURITY_MODULE_V1 = "0x6885E36BFcb68CB383DfE90023a462C03BCB2AE5" +LIDO_DEPOSIT_SECURITY_MODULE = "0x6885E36BFcb68CB383DfE90023a462C03BCB2AE5" + +DUMMY_IMPL = "" + +LIDO_LOCATOR = "0x8f6254332f69557A72b0DA2D5F0Bc07d4CA991E7" +BURNER = "0x61Bb0Ef69262d5EF1cc2873cf61766751D99B699" +EXECUTION_LAYER_REWARDS_VAULT = "0x94B1B8e2680882f8652882e7F196169dE3d9a3B2" +HASH_CONSENSUS_FOR_AO = "0x758D8c3CE794b3Dfe3b3A3482B7eD33de2109D95" +ACCOUNTING_ORACLE = "0xd497Be005638efCf09F6BFC8DAFBBB0BB72cD991" +HASH_CONSENSUS_FOR_VEBO = "0x098a952BD200005382aEb3229e38ae39A7616F56" +LIDO_VALIDATORS_EXIT_BUS_ORACLE = "0x7637d44c9f2e9cA584a8B5D2EA493012A5cdaEB6" +ORACLE_REPORT_SANITY_CHECKER = "0xbac2A471443F18aC5C31078b96C5797A78fCc680" +LIDO_WITHDRAWAL_QUEUE = "0x1583C7b3f4C3B008720E6BcE5726336b0aB25fdd" +GATE_SEAL = "" +EIP712_STETH = "0x9726CA9AEFF4BC8FB8C084BdAbdB71608248E3f8" +WITHDRAWAL_VAULT = "0xDe7318Afa67eaD6d6bbC8224dfCe5ed6e4b86d76" +STAKING_ROUTER = "0x4F36aAEb18Ab56A4e380241bea6ebF215b9cb12c" +ORACLE_DAEMON_CONFIG = "0x7bC76076b0f3879b4A750450C0Ccf02c6Ca11220" + +INSURANCE_FUND = "" +RELAY_ALLOWED_LIST = "" + +LDO_HOLDER_ADDRESS_FOR_TESTS = "0x8360927B5BC431771C21E347eA29529b6eE94b78" +LDO_VOTE_EXECUTORS_FOR_TESTS = [ + "0x32A0E5828B62AAb932362a4816ae03b860b65e83", + "0x8360927B5BC431771C21E347eA29529b6eE94b78", + "0xaa6bfBCD634EE744CB8FE522b29ADD23124593D3", +] + +ORACLE_COMMITTEE = [] + +DSM_GUARDIANS = [] + +WSTETH_TOKEN = "0xB82381A3fBD3FaFA77B3a7bE693342618240067b" +CHAIN_DEPOSIT_CONTRACT = "0x7f02C3E3c98b133055B8B348B2Ac625669Ed295D" diff --git a/network-config.yaml b/network-config.yaml index ddbfafe4..deca032b 100644 --- a/network-config.yaml +++ b/network-config.yaml @@ -1,15 +1,30 @@ live: -- name: Ethereum - networks: - - chainid: 17000 - explorer: https://api-holesky.etherscan.io/api - host: $HOLESKY_RPC_URL - id: holesky - # New backward-compatible multicall contract. multicall2 is missing on Holesky. See https://github.com/mds1/multicall - multicall2: "0xcA11bde05977b3631167028862bE2a173976CA11" - name: Holesky (Infura) - provider: infura + - name: Ethereum + networks: + - chainid: 17000 + explorer: https://api-holesky.etherscan.io/api + host: https://holesky.infura.io/v3/$WEB3_INFURA_PROJECT_ID + id: holesky + # multicall2 is missing on Holesky. New backward-compatible multicall contract. + # See https://github.com/mds1/multicall + multicall2: "0xcA11bde05977b3631167028862bE2a173976CA11" + name: Holesky (Infura) + provider: infura + + - name: Ethereum + networks: + - chainid: 11155111 + explorer: https://api-sepolia.etherscan.io/api + host: https://sepolia.infura.io/v3/$WEB3_INFURA_PROJECT_ID + id: sepolia + # multicall2 is missing on Sepolia. New backward-compatible multicall contract. + # See https://github.com/mds1/multicall + multicall2: "0xcA11bde05977b3631167028862bE2a173976CA11" + name: Sepolia (Infura) + provider: infura + development: + - cmd: ./ganache.sh cmd_settings: accounts: 10 @@ -23,6 +38,7 @@ development: timeout: 360 # https://github.com/mds1/multicall#multicall2-contract-addresses multicall2: "0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696" + - cmd: ./ganache.sh cmd_settings: accounts: 10 @@ -33,20 +49,35 @@ development: port: 8545 host: http://127.0.0.1 id: goerli-fork - name: goerli-fork + name: Ganache-CLI (Goerli Fork) timeout: 360 + - cmd: ./ganache.sh cmd_settings: accounts: 10 chain_id: 17000 - fork: $HOLESKY_RPC_URL + fork: holesky gas_limit: 30000000 mnemonic: brownie port: 8545 host: http://127.0.0.1 id: holesky-fork - name: holesky-fork + name: Ganache-CLI (Holesky Fork) timeout: 360 + + - cmd: ./ganache.sh + cmd_settings: + accounts: 10 + chain_id: 11155111 + fork: sepolia + gas_limit: 30000000 + mnemonic: brownie + port: 8545 + host: http://127.0.0.1 + id: sepolia-fork + name: Ganache-CLI (Sepolia Fork) + timeout: 360 + - cmd: ./ganache.sh cmd_settings: accounts: 10 @@ -57,7 +88,7 @@ development: port: 8545 host: http://127.0.0.1 id: local-fork - name: local-fork + name: Ganache-CLI (Local Fork) explorer: https://api.etherscan.io/api timeout: 360 # https://github.com/mds1/multicall#multicall2-contract-addresses diff --git a/utils/config.py b/utils/config.py index 1cae1afe..0cd0672d 100644 --- a/utils/config.py +++ b/utils/config.py @@ -32,6 +32,9 @@ def network_name() -> Optional[str]: elif network_name() in ("holesky", "holesky-fork"): print(f'Using {color("cyan")}config_holesky.py{color} addresses') from configs.config_holesky import * +elif network_name() in ("sepolia", "sepolia-fork"): + print(f'Using {color("yellow")}config_sepolia.py{color} addresses') + from configs.config_sepolia import * else: print(f'Using {color("magenta")}config_mainnet.py{color} addresses') from configs.config_mainnet import * @@ -46,6 +49,7 @@ def get_is_live() -> bool: "local-fork", "mainnet-fork", "holesky-fork", + "sepolia-fork", ] return network.show_active() not in dev_networks @@ -128,18 +132,6 @@ def prompt_bool() -> Optional[bool]: sys.stdout.write("Please respond with 'yes' or 'no'") -def get_config_params() -> Dict[str, str]: - if network_name() in ("goerli", "goerli-fork"): - import configs.config_goerli - - ret = {x: globals()[x] for x in dir(configs.config_goerli) if not x.startswith("__")} - else: - import configs.config_mainnet - - ret = {x: globals()[x] for x in dir(configs.config_mainnet) if not x.startswith("__")} - return ret - - class ContractsLazyLoader: @property def lido_v1(self) -> interface.LidoV1: