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

feat: add Sepolia support #208

Merged
merged 10 commits into from
Apr 24, 2024
17 changes: 10 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
57 changes: 57 additions & 0 deletions configs/config_sepolia.py
Original file line number Diff line number Diff line change
@@ -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"
59 changes: 45 additions & 14 deletions network-config.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -23,6 +38,7 @@ development:
timeout: 360
# https://github.com/mds1/multicall#multicall2-contract-addresses
multicall2: "0x5BA1e12693Dc8F9c48aAD8770482f4739bEeD696"

- cmd: ./ganache.sh
cmd_settings:
accounts: 10
Expand All @@ -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
Expand All @@ -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
Expand Down
16 changes: 4 additions & 12 deletions utils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 *
Expand All @@ -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

Expand Down Expand Up @@ -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:
Expand Down
Loading