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

Vote 08.10.2024 #253

Merged
merged 65 commits into from
Oct 14, 2024
Merged
Show file tree
Hide file tree
Changes from 54 commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
dbbf25a
upgrade L1 optimism bridge
kovalgek Apr 8, 2024
b181576
add optimism contracts upgrade actions
kovalgek Apr 8, 2024
1e712fe
feat: mvp code to run the voting on Sepolia
arwer13 Jul 3, 2024
e818d6a
fix l2 actions, add function to run vote for fork
kovalgek Jul 24, 2024
5298b0d
add upgrade finalization to l1, l2 bridges and l2 wstETH
kovalgek Jul 24, 2024
b979169
add tests
kovalgek Jul 26, 2024
8e7a763
add tests for oracle report and token rate notifier
kovalgek Aug 1, 2024
e51378f
fix small comments
kovalgek Aug 1, 2024
e5b453c
rename files
kovalgek Aug 8, 2024
4277d8f
disable tests for mainnet that are for sepolia state only, rename files
kovalgek Aug 9, 2024
c7375e1
feat(stETH on optimism): add fallback vote script for enabling deposits
arwer13 Aug 22, 2024
56b9b02
feat(stETH on optimism): add mvp of the upgrade script
arwer13 Aug 24, 2024
1598211
feat(stETH on optimism): add fallback vote script if L2 upgrade fails
arwer13 Aug 24, 2024
f8ac524
fix: import brownie to mitigate reverts failure
TheDZhon Sep 12, 2024
5765220
fix voting for executing on forks
kovalgek Sep 12, 2024
16537ad
top up contract balances for london hardfork
kovalgek Sep 13, 2024
abdaa2d
top up balances in fixtures
kovalgek Sep 16, 2024
d752529
use middleware to top up balances
kovalgek Sep 16, 2024
befebcb
fix typo
kovalgek Sep 17, 2024
126a1f1
fix constants
kovalgek Sep 17, 2024
1cb3aad
update description and voting text
kovalgek Sep 18, 2024
4568af1
fix test by considering gas usage in tx
kovalgek Sep 20, 2024
b27f41f
add pause and resume help methods
kovalgek Sep 20, 2024
77fd946
fix el reward test by considering gas usage in tx
kovalgek Sep 20, 2024
a678104
remove block check in snapshot test
kovalgek Sep 20, 2024
7eae83f
feat: use london hardfork for mainnet-fork instead of istanbul
Ivan-Feofanov Sep 26, 2024
88d2504
increase precision to fix the test
kovalgek Sep 27, 2024
235e523
fix: use common hardhat and anvil setBalance method
Ivan-Feofanov Sep 27, 2024
579efae
remove comment
kovalgek Sep 30, 2024
a44e546
Merge pull request #245 from lidofinance/feat/vote-steth-optimism
Ivan-Feofanov Sep 30, 2024
ce0346d
raise large action timeout to 2h 30min
Ivan-Feofanov Sep 30, 2024
b80febb
fix: node operator 33 is not exited anymore
Ivan-Feofanov Sep 30, 2024
7129442
fix: load TokenRateNotifier contract to catch error
Ivan-Feofanov Oct 1, 2024
82139e4
Merge pull request #256 from lidofinance/feat/next-vote_fix-trn-error
Ivan-Feofanov Oct 1, 2024
a84843f
Merge branch 'master' into feat/next-vote
Ivan-Feofanov Oct 1, 2024
27ce7d6
refactor steth vote script
kovalgek Oct 2, 2024
b878488
move check functions to tests, don't use addresses from config file
kovalgek Oct 2, 2024
9922c51
Merge pull request #258 from lidofinance/feat/steth_op_vote_refactoring
Ivan-Feofanov Oct 3, 2024
105d8a1
fix: get last exited validator index from the network to avoid real w…
Ivan-Feofanov Oct 3, 2024
93c2688
alliance vote and tests blocks added
kate-aleksseeva Oct 3, 2024
e5329bf
vote description fixed
kate-aleksseeva Oct 3, 2024
75f85a8
check all events
kovalgek Oct 3, 2024
3823533
small refactoring
kovalgek Oct 3, 2024
e2ea68b
Merge pull request #261 from lidofinance/feat/check_events_in_steth_o…
Ivan-Feofanov Oct 3, 2024
298bb79
Merge branch 'feat/next-vote' into feat/next-vote-alliance
Ivan-Feofanov Oct 4, 2024
3f57a0f
feat: balance check
Ivan-Feofanov Oct 4, 2024
be96b7e
Merge pull request #259 from lidofinance/feat/next-vote-alliance
Ivan-Feofanov Oct 4, 2024
db1e7b4
description is changed, contract addresses for tests added, displayin…
kate-aleksseeva Oct 4, 2024
7ee676a
use for wstETH on L2 version instead of
kovalgek Oct 4, 2024
de6ac45
fix: temporary disable easy-track snapshot test
Ivan-Feofanov Oct 4, 2024
7899b5c
Merge pull request #262 from lidofinance/feat/fix_l2_wst_version
Ivan-Feofanov Oct 4, 2024
451bbb9
fix: update metadata CID
Ivan-Feofanov Oct 4, 2024
62f1b71
call optimism portal to load events
kovalgek Oct 6, 2024
05a6e54
Merge pull request #263 from lidofinance/feat/optimism_event
kovalgek Oct 7, 2024
e3c856e
feedback fixes
kovalgek Oct 7, 2024
b47e4ae
Merge pull request #264 from lidofinance/feat/steth-on-op-feedback
kovalgek Oct 8, 2024
6d077bf
fix feedback part 2
kovalgek Oct 8, 2024
d3d1798
fix test
kovalgek Oct 8, 2024
d0929c7
Merge pull request #266 from lidofinance/feat/steth-on-op-feedback2
Psirex Oct 8, 2024
b1170bd
use env to setup vote id in fork upgrade rehearsal
kovalgek Oct 8, 2024
5b5100d
fix getting env
kovalgek Oct 11, 2024
488b2a1
Merge pull request #267 from lidofinance/feat/steth-on-op-improve-for…
kovalgek Oct 11, 2024
83c6a8c
fix: return EasyTrack check
Ivan-Feofanov Oct 14, 2024
f9371c5
feat: archive 2024_10_08 upgrade files
arwer13 Oct 14, 2024
e0495ee
Merge pull request #272 from lidofinance/feat/archive-upgrade-2024_10_08
Ivan-Feofanov Oct 14, 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
2 changes: 1 addition & 1 deletion .github/workflows/large_vote_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
run-tests-large:
name: Brownie fork LARGE tests
runs-on: [protocol-heavy-runners]
timeout-minutes: 100
timeout-minutes: 150
steps:
- uses: actions/checkout@v3
- name: Main action
Expand Down
201 changes: 201 additions & 0 deletions archive/scripts/vote_2024_08_02_sepolia.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
"""
Voting 02/08/2024.

1. Upgrade L1 Bridge implementation
2. Finalize L1 Bridge upgrade
3. Upgrade L1 LidoLocator implementation
4. Grant DEPOSITS_ENABLER_ROLE to Emergency Brakes Committee multisig
5. Send L2 upgrade call:
(a) upgrade L2TokenBridge;
(b) finalize L2TokenBridge upgrade;
(c) upgrade wstETH on L2;
(d) finalize wstETH upgrade";

"""

import time
import eth_abi
from brownie import interface, accounts
from typing import Dict
from brownie.network.transaction import TransactionReceipt
from utils.voting import bake_vote_items, confirm_vote_script, create_vote
from utils.ipfs import upload_vote_ipfs_description, calculate_vote_ipfs_description
from utils.agent import agent_forward
from tests.conftest import Helpers
from utils.config import (
contracts,
get_deployer_account,
get_is_live,
get_priority_fee,
network_name,
)
from configs.config_sepolia import (
L1_TOKENS_BRIDGE_PROXY,
L1_TOKENS_BRIDGE_NEW_IMPL,
LIDO_LOCATOR,
LIDO_LOCATOR_IMPL_UPGRADE,
L1_EMERGENCY_BRAKES_MULTISIG,
L2_TOKENS_BRIDGE_PROXY,
L2_TOKENS_BRIDGE_NEW_IMPL,
L2_OPTIMISM_BRIDGE_EXECUTOR,
L2_OPTIMISM_WSTETH_TOKEN,
L2_OPTIMISM_WSTETH_TOKEN_NEW_IMPL,
L1_OPTIMISM_CROSS_DOMAIN_MESSENGER,
AGENT
)

description = """
Voting 02/08/2024.

Upgrade L1Bridge, L2Bridge, L2 wstETH

"""

DEPOSITS_ENABLER_ROLE = "0x4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a"

def encode_l2_upgrade_call(proxy1: str, new_impl1: str, proxy2: str, new_impl2: str):
govBridgeExecutor = interface.OpBridgeExecutor(L2_OPTIMISM_BRIDGE_EXECUTOR)

return govBridgeExecutor.queue.encode_input(
[proxy1, proxy1, proxy2, proxy2],
[0, 0, 0, 0],
[
"proxy__upgradeTo(address)",
"finalizeUpgrade_v2()",
"proxy__upgradeTo(address)",
"finalizeUpgrade_v2(string,string)"
],
[
eth_abi.encode(["address"], [new_impl1]),
eth_abi.encode([],[]),
eth_abi.encode(["address"], [new_impl2]),
eth_abi.encode(["string", "string"], ["Wrapped liquid staked Ether 2.0","wstETH"]),
],
[False, False, False, False],
)


def encode_l1_l2_sendMessage(to: str, calldata: str):
l1_l2_msg_service = interface.OpCrossDomainMessenger(L1_OPTIMISM_CROSS_DOMAIN_MESSENGER)
min_gas_limit = 1_000_000
return l1_l2_msg_service.sendMessage.encode_input(to, calldata, min_gas_limit)


def start_vote(tx_params: Dict[str, str], silent: bool) -> bool | list[int | TransactionReceipt | None]:
"""Prepare and run voting."""

if not network_name() in ("sepolia", "sepolia-fork"):
return

lido_locator_as_proxy = interface.OssifiableProxy(LIDO_LOCATOR)
l1_token_bridge_as_proxy = interface.OssifiableProxy(L1_TOKENS_BRIDGE_PROXY)
l1_token_bridge = interface.L1LidoTokensBridge(L1_TOKENS_BRIDGE_PROXY)

call_script_items = [
# 1. L1 TokenBridge upgrade proxy
agent_forward(
[
(
l1_token_bridge_as_proxy.address,
l1_token_bridge_as_proxy.proxy__upgradeTo.encode_input(L1_TOKENS_BRIDGE_NEW_IMPL),
)
]
),
# 2. L1 TokenBridge finalize upgrade
agent_forward(
[
(
l1_token_bridge.address,
l1_token_bridge.finalizeUpgrade_v2.encode_input()
)
]
),
# 3. Upgrade L1 LidoLocator implementation
agent_forward(
[
(
lido_locator_as_proxy.address,
lido_locator_as_proxy.proxy__upgradeTo.encode_input(LIDO_LOCATOR_IMPL_UPGRADE),
)
]
),
# 4. Grant DEPOSITS_ENABLER_ROLE to Emergency Brakes Committee multisig
agent_forward(
[
(
l1_token_bridge.address,
l1_token_bridge.grantRole.encode_input(DEPOSITS_ENABLER_ROLE, L1_EMERGENCY_BRAKES_MULTISIG),
)
]
),
# 5. L2 TokenBridge
agent_forward(
[
(
L1_OPTIMISM_CROSS_DOMAIN_MESSENGER,
encode_l1_l2_sendMessage(
L2_OPTIMISM_BRIDGE_EXECUTOR,
encode_l2_upgrade_call(
L2_TOKENS_BRIDGE_PROXY,
L2_TOKENS_BRIDGE_NEW_IMPL,
L2_OPTIMISM_WSTETH_TOKEN,
L2_OPTIMISM_WSTETH_TOKEN_NEW_IMPL,
),
),
)
]
),
]

vote_desc_items = [
"1) Upgrade L1 Bridge implementation",
"2) Finalize L1 Bridge upgrade",
"3) Upgrade L1 LidoLocator implementation",
"4) Grant DEPOSITS_ENABLER_ROLE to Emergency Brakes Committee multisig",
"5) Send L2 upgrade call: (a) upgrade L2TokenBridge; (b) finalize L2TokenBridge upgrade; (c) upgrade wstETH on L2; (d) finalize wstETH upgrade",
]

vote_items = bake_vote_items(list(vote_desc_items), list(call_script_items))

if silent:
desc_ipfs = calculate_vote_ipfs_description(description)
else:
desc_ipfs = upload_vote_ipfs_description(description)

return confirm_vote_script(vote_items, silent, desc_ipfs) and list(
create_vote(vote_items, tx_params, desc_ipfs=desc_ipfs)
)


def main():
tx_params = {"from": get_deployer_account()}
if get_is_live():
tx_params["priority_fee"] = get_priority_fee()

vote_id, _ = start_vote(tx_params=tx_params, silent=False)

vote_id >= 0 and print(f"Vote created: {vote_id}.")

time.sleep(5) # hack for waiting thread #2.

def startAndExecuteForForkUpgrade():
ACCOUNT_WITH_MONEY = "0x4200000000000000000000000000000000000023"
deployerAccount = get_deployer_account()

# Top up accounts
accountWithEth = accounts.at(ACCOUNT_WITH_MONEY, force=True)
accountWithEth.transfer(deployerAccount.address, "2 ethers")
accountWithEth.transfer(AGENT, "2 ethers")

tx_params = {"from": deployerAccount}
if get_is_live():
tx_params["priority_fee"] = get_priority_fee()

vote_id, _ = start_vote(tx_params=tx_params, silent=True)
vote_tx = Helpers.execute_vote(accounts, vote_id, contracts.voting)

print(f"voteId = {vote_id}, gasUsed = {vote_tx.gas_used}")

vote_id >= 0 and print(f"Vote created: {vote_id}.")

time.sleep(5) # hack for waiting thread #2.
133 changes: 133 additions & 0 deletions archive/tests/test_2024_08_02_sepolia.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
"""
Tests for voting xx/xx/2024
"""
import eth_abi
from scripts.vote_2024_xx_xx_upgrade_optimism_bridge import start_vote
from brownie import interface, reverts
from utils.test.tx_tracing_helpers import *
from utils.config import (
contracts,
LDO_HOLDER_ADDRESS_FOR_TESTS,
network_name,
get_deployer_account,
AGENT
)

L1_TOKEN_BRIDGE_PROXY: str = "0x4Abf633d9c0F4aEebB4C2E3213c7aa1b8505D332"
L1_TOKEN_BRIDGE_OLD_IMPL: str = "0x02825dbCaFbBfda57511dBD73d22c2787B653814"
L1_TOKEN_BRIDGE_NEW_IMPL: str = "0x8375029773953d91CaCfa452b7D24556b9F318AA"

LIDO_LOCATOR_PROXY: str = "0x8f6254332f69557A72b0DA2D5F0Bc07d4CA991E7"
LIDO_LOCATOR_OLD_IMPL: str = "0x604dc1776eEbe7ddCf4cf5429226Ad20a5a294eE"
LIDO_LOCATOR_NEW_IMPL: str = "0x314Ab8D774c0580942E832f971Bbc7A27B1c2552"

DEPOSITS_ENABLER_ROLE = "0x4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a"
L1_EMERGENCY_BRAKES_MULTISIG = "0xa5F1d7D49F581136Cf6e58B32cBE9a2039C48bA1"

L2_OPTIMISM_BRIDGE_EXECUTOR = "0xf695357C66bA514150Da95b189acb37b46DDe602"
L2_TOKENS_BRIDGE_PROXY = "0xdBA2760246f315203F8B716b3a7590F0FFdc704a"
L2_TOKENS_BRIDGE_NEW_IMPL = "0xD48c69358193a34aC035ea7dfB70daDea1600112"
L2_OPTIMISM_WSTETH_TOKEN = "0x24B47cd3A74f1799b32B2de11073764Cb1bb318B"
L2_OPTIMISM_WSTETH_TOKEN_NEW_IMPL = "0x298953B9426eba4F35a137a4754278a16d97A063"

WST_ETH = "0xB82381A3fBD3FaFA77B3a7bE693342618240067b"


def test_vote(helpers, accounts, vote_ids_from_env):
if not network_name() in ("sepolia", "sepolia-fork"):
return

deployerAccount = get_deployer_account()

# Top up accounts
accountWithEth = accounts.at('0x4200000000000000000000000000000000000023', force=True)
accountWithEth.transfer(deployerAccount.address, "2 ethers")
accountWithEth.transfer(AGENT, "2 ethers")

l1_token_bridge_proxy = interface.OssifiableProxy(L1_TOKEN_BRIDGE_PROXY);
l1_token_bridge = interface.L1LidoTokensBridge(L1_TOKEN_BRIDGE_PROXY);

# L1 Bridge has old implementation
l1_token_bridge_implementation_address_before = l1_token_bridge_proxy.proxy__getImplementation()
assert l1_token_bridge_implementation_address_before == L1_TOKEN_BRIDGE_OLD_IMPL, "Old address is incorrect"

# L1 Bridge doesn't have version before update
with reverts():
l1_token_bridge.getContractVersion()

# Upgrade LidoLocator implementation
lido_locator_proxy = interface.OssifiableProxy(LIDO_LOCATOR_PROXY);
lido_locator_implementation_address_before = lido_locator_proxy.proxy__getImplementation()
assert lido_locator_implementation_address_before == LIDO_LOCATOR_OLD_IMPL, "Old address is incorrect"

# Multisig hasn't been assigned as deposit enabler
assert l1_token_bridge.hasRole(DEPOSITS_ENABLER_ROLE, L1_EMERGENCY_BRAKES_MULTISIG) is False

wst_eth = interface.WstETH(WST_ETH)
wst_eth_bridge_balance_before = wst_eth.balanceOf(L1_TOKEN_BRIDGE_PROXY)

# START VOTE
if len(vote_ids_from_env) > 0:
(vote_id,) = vote_ids_from_env
else:
tx_params = {"from": LDO_HOLDER_ADDRESS_FOR_TESTS}
vote_id, _ = start_vote(tx_params, silent=True)

vote_tx = helpers.execute_vote(accounts, vote_id, contracts.voting)

print(f"voteId = {vote_id}, gasUsed = {vote_tx.gas_used}")

# validate vote events
if not network_name() in ("sepolia", "sepolia-fork"):
assert count_vote_items_by_events(vote_tx, contracts.voting) == 5, "Incorrect voting items count"

# L1 Bridge has new implementation
l1_token_bridge_implementation_address_after = l1_token_bridge_proxy.proxy__getImplementation()
assert l1_token_bridge_implementation_address_before != l1_token_bridge_implementation_address_after, "Implementation is not changed"
assert l1_token_bridge_implementation_address_after == L1_TOKEN_BRIDGE_NEW_IMPL, "New address is incorrect"

# update L1 Bridge to 2 version
assert l1_token_bridge.getContractVersion() == 2

# LidoLocator has new implementation
lido_locator_implementation_address_after = lido_locator_proxy.proxy__getImplementation()
assert lido_locator_implementation_address_before != lido_locator_implementation_address_after, "Implementation is not changed"
assert lido_locator_implementation_address_after == LIDO_LOCATOR_NEW_IMPL, "New address is incorrect"

# Multisig has been assigned as deposit enabler
assert l1_token_bridge.hasRole(DEPOSITS_ENABLER_ROLE, L1_EMERGENCY_BRAKES_MULTISIG) is True

# Check bytecode that was send to messenger to update L2 bridge and wstETH token
sentMessage = vote_tx.events['SentMessage']['message']
encoded_l2_upgrade_call = encode_l2_upgrade_call(
L2_TOKENS_BRIDGE_PROXY,
L2_TOKENS_BRIDGE_NEW_IMPL,
L2_OPTIMISM_WSTETH_TOKEN,
L2_OPTIMISM_WSTETH_TOKEN_NEW_IMPL,
)
assert sentMessage == encoded_l2_upgrade_call

wst_eth_bridge_balance_after = wst_eth.balanceOf(L1_TOKEN_BRIDGE_PROXY)
assert wst_eth_bridge_balance_before == wst_eth_bridge_balance_after


def encode_l2_upgrade_call(proxy1: str, new_impl1: str, proxy2: str, new_impl2: str):
govBridgeExecutor = interface.OpBridgeExecutor(L2_OPTIMISM_BRIDGE_EXECUTOR)

return govBridgeExecutor.queue.encode_input(
[proxy1, proxy1, proxy2, proxy2],
[0, 0, 0, 0],
[
"proxy__upgradeTo(address)",
"finalizeUpgrade_v2()",
"proxy__upgradeTo(address)",
"finalizeUpgrade_v2(string,string)"
],
[
eth_abi.encode(["address"], [new_impl1]),
eth_abi.encode([],[]),
eth_abi.encode(["address"], [new_impl2]),
eth_abi.encode(["string", "string"], ["Wrapped liquid staked Ether 2.0","wstETH"]),
],
[False, False, False, False],
)
24 changes: 23 additions & 1 deletion configs/config_mainnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@

# Multisigs
FINANCE_MULTISIG = "0x48F300bD3C52c7dA6aAbDE4B683dEB27d38B9ABb"
L1_EMERGENCY_BRAKES_MULTISIG = "0x73b047fe6337183A454c5217241D780a932777bD"

# Other
INSURANCE_FUND = "0x8B3f33234ABD88493c0Cd28De33D583B70beDe35"
Expand All @@ -79,7 +80,7 @@
BALANCER_REWARDS_MANAGER = "0x1dD909cDdF3dbe61aC08112dC0Fdf2Ab949f79D8"

# Auxiliary addresses
LDO_HOLDER_ADDRESS_FOR_TESTS = "0x820fb25352bb0c5e03e07afc1d86252ffd2f0a18"
LDO_HOLDER_ADDRESS_FOR_TESTS = "0xAD4f7415407B83a081A0Bee22D05A8FDC18B42da"
LDO_VOTE_EXECUTORS_FOR_TESTS = [
"0x3e40d73eb977dc6a537af587d48316fee66e9c8c",
"0xb8d83908aab38a159f3da47a59d84db8e1838712",
Expand All @@ -99,6 +100,7 @@
# LidoLocator
LIDO_LOCATOR = "0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb"
LIDO_LOCATOR_IMPL = "0x1D920cc5bACf7eE506a271a5259f2417CaDeCE1d"
LIDO_LOCATOR_IMPL_NEW = "0x39aFE23cE59e8Ef196b81F0DCb165E9aD38b9463"

# Other upgrade addresses
LIDO_V2_UPGRADE_TEMPLATE = "0xa818fF9EC93122Bf9401ab4340C42De638CD600a"
Expand Down Expand Up @@ -302,6 +304,26 @@
OBOL_LIDO_SPLIT_FACTORY = "0xA9d94139A310150Ca1163b5E23f3E1dbb7D9E2A6"
OBOL_LIDO_SPLIT_IMPL = "0x2fB59065F049e0D0E3180C6312FA0FeB5Bbf0FE3"

# Ethereum Part for Optimism bridge
L1_TOKEN_RATE_NOTIFIER = "0xe6793B9e4FbA7DE0ee833F9D02bba7DB5EB27823"
L1_OPTIMISM_TOKEN_RATE_PUSHER = "0xd54c1c6413caac3477AC14b2a80D5398E3c32FfE"
L1_OPTIMISM_TOKENS_BRIDGE = "0x76943C0D61395d8F2edF9060e1533529cAe05dE6"
L1_OPTIMISM_TOKENS_BRIDGE_IMPL = "0x29C5c51A031165CE62F964966A6399b81165EFA4"
L1_OPTIMISM_TOKENS_BRIDGE_IMPL_NEW = "0x168Cfea1Ad879d7032B3936eF3b0E90790b6B6D4"
L1_OPTIMISM_CROSS_DOMAIN_MESSENGER = "0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1"

## Optimism Part of Optimism bridge
L2_OPTIMISM_GOVERNANCE_EXECUTOR = "0xefa0db536d2c8089685630fafe88cf7805966fc3"
L2_OPTIMISM_TOKENS_BRIDGE = "0x8E01013243a96601a86eb3153F0d9Fa4fbFb6957"
L2_OPTIMISM_TOKENS_BRIDGE_IMPL = "0x23B96aDD54c479C6784Dd504670B5376B808f4C7"
L2_OPTIMISM_TOKENS_BRIDGE_IMPL_NEW = "0x2734602C0CEbbA68662552CacD5553370B283E2E"
L2_OPTIMISM_TOKEN_RATE_ORACLE = "0x294ED1f214F4e0ecAE31C3Eae4F04EBB3b36C9d0"
L2_OPTIMISM_STETH_TOKEN = "0x76A50b8c7349cCDDb7578c6627e79b5d99D24138"
L2_OPTIMISM_STETH_TOKEN_IMPL = "0xe9b65dA5DcBe92f1b397991C464FF568Dc98D761"
L2_OPTIMISM_WSTETH_TOKEN = "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"
L2_OPTIMISM_WSTETH_TOKEN_IMPL = "0x92834c37dF982A13bb0f8C3F6608E26F0546538e"
L2_OPTIMISM_WSTETH_TOKEN_IMPL_NEW = "0xFe57042De76c8D6B1DF0E9E2047329fd3e2B7334"

# TRP
TRP_VESTING_ESCROW_FACTORY = "0xDA1DF6442aFD2EC36aBEa91029794B9b2156ADD0"
TRP_FACTORY_DEPLOY_BLOCK_NUMBER = 16540381
Loading
Loading