-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathadd_new_id_addressprovider.py
114 lines (88 loc) · 3.22 KB
/
add_new_id_addressprovider.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# flake8 no-qa E402
# Contract deployed at: 0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98
# Deployed at: Ethereum, Arbitrum, Optimism, Base, Bsc, Polygon,
# Fantom, Gnosis, Aurora, Celo, Mantle,
# Linea, Polygon zkEVM, Scroll, Fraxtal, Avalanche, Kava
import os
import boa
from boa.network import NetworkEnv
from eth_account import Account
from rich.console import Console as RichConsole
import sys
sys.path.append("./")
from scripts.address_provider_constants import (
ADDRESS_PROVIDER_MAPPING,
addresses,
)
FIDDY_DEPLOYER = "0x2d12D0907A388811e3AA855A550F959501d303EE"
ADDRESS_PROVIDER = (
"0x5ffe7FB82894076ECB99A30D6A32e969e6e35E98" # gets replaced for zksync
)
def fetch_url(network):
return os.getenv("DRPC_URL") % (network, os.getenv("DRPC_KEY"))
def main(network, fork, url):
"""
Deploy the AddressProvider to the network.
"""
console = RichConsole()
if network == "zksync":
if not fork:
boa_zksync.set_zksync_env(url)
console.log("Prodmode on zksync Era ...")
else:
boa_zksync.set_zksync_fork(url)
console.log("Forkmode on zksync Era ...")
boa.env.set_eoa(Account.from_key(os.environ["FIDDYDEPLOYER"]))
else:
if fork:
boa.env.fork(url)
console.log("Forkmode ...")
boa.env.eoa = FIDDY_DEPLOYER # set eoa address here
else:
console.log("Prodmode ...")
boa.set_env(NetworkEnv(url))
boa.env.add_account(Account.from_key(os.environ["FIDDYDEPLOYER"]))
address_provider_obj = boa.load_partial("contracts/AddressProviderNG.vy")
address_provider = address_provider_obj.at(ADDRESS_PROVIDER)
# set up address provider
ids = []
addresses_for_id = []
descriptions = []
for id in addresses[network].keys():
address = addresses[network][id]
description = ADDRESS_PROVIDER_MAPPING[id]
existing_id = address_provider.get_id_info(id)
if not address:
continue
if (
existing_id[0].lower()
== "0x0000000000000000000000000000000000000000"
):
console.log(f"New id {id} at {address} for {description}.")
ids.append(id)
addresses_for_id.append(address)
descriptions.append(description)
elif existing_id[0].lower() != address.lower():
console.log(f"Updating id {id} for {description} with {address}.")
address_provider.update_id(id, address, description)
if len(ids) > 20:
raise
if len(ids) > 0:
console.log("Adding new IDs to the Address Provider.")
address_provider.add_new_ids(ids, addresses_for_id, descriptions)
console.log("Done!")
if __name__ == "__main__":
network = "zksync"
url = ""
fork = False
if network == "zksync":
import boa_zksync
url = "https://mainnet.era.zksync.io"
ADDRESS_PROVIDER = "0x3934a3bB913E4a44316a89f5a83876B9C63e4F31"
elif network == "fraxtal":
network_url = "https://rpc.frax.com"
elif network == "kava":
network_url = "https://rpc.ankr.com/kava_evm"
else:
network_url = fetch_url(network)
main(network, fork, url)