Optimism mainnet deploy (#1869)

* Optimism mainnet deploy

* node: added OP token to manual_tokens

* Add to readiness

* File should not have been committed

* Remove readiness since it goes with watcher

* Allow optimism watcher in mainnet

* Add to devnet config

Co-authored-by: Christine Eun <ceun@jumptrading.com>
This commit is contained in:
bruce-riley 2022-11-10 13:56:38 -06:00 committed by GitHub
parent d4f9d3f8b2
commit 074c98a952
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 38 additions and 24 deletions

View File

@ -88,6 +88,8 @@ spec:
- ws://eth-devnet:8545
- --arbitrumRPC
- ws://eth-devnet:8545
- --optimismRPC
- ws://eth-devnet:8545
- --neonRPC
- ws://eth-devnet:8545
# - --wormchainWS

View File

@ -7,3 +7,11 @@ INIT_CHAIN_ID=24
INIT_GOV_CHAIN_ID=0x1
INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
INIT_EVM_CHAIN_ID=10
# Bridge Migrations
BRIDGE_INIT_CHAIN_ID=24
BRIDGE_INIT_GOV_CHAIN_ID=0x1
BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
# There is no WETH.
BRIDGE_INIT_WETH=0x0000000000000000000000000000000000000000
BRIDGE_INIT_FINALITY=1

View File

@ -107,6 +107,7 @@ func runListNodes(cmd *cobra.Command, args []string) {
{"Pythnet", vaa.ChainIDPythNet},
{"Moonbeam", vaa.ChainIDMoonbeam},
{"Arbitrum", vaa.ChainIDArbitrum},
{"Optimism", vaa.ChainIDOptimism},
{"Xpla", vaa.ChainIDXpla},
{"Injective", vaa.ChainIDInjective},
{"Neon", vaa.ChainIDNeon},

View File

@ -573,6 +573,10 @@ func runNode(cmd *cobra.Command, args []string) {
}
}
if (*optimismRPC == "") != (*optimismContract == "") {
logger.Fatal("Both --optimismContract and --optimismRPC must be set together or both unset")
}
if *testnetMode {
if *neonRPC == "" {
logger.Fatal("Please specify --neonRPC")
@ -589,9 +593,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *injectiveContract == "" {
logger.Fatal("Please specify --injectiveContract")
}
if (*optimismRPC == "") != (*optimismContract == "") {
logger.Fatal("Both --optimismContract and --optimismRPC must be set together or both unset")
}
} else {
if *neonRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --neonRPC")
@ -608,12 +609,6 @@ func runNode(cmd *cobra.Command, args []string) {
if *injectiveContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --injectiveContract")
}
if *optimismRPC != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --optimismRPC")
}
if *optimismContract != "" && !*unsafeDevMode {
logger.Fatal("Please do not specify --optimismContract")
}
}
if *nodeName == "" {
logger.Fatal("Please specify --nodeName")
@ -1049,6 +1044,18 @@ func runNode(cmd *cobra.Command, args []string) {
return err
}
}
if shouldStart(optimismRPC) {
if ethWatcher == nil {
log.Fatalf("if optimism is enabled then ethereum must also be enabled.")
}
logger.Info("Starting Optimism watcher")
readiness.RegisterComponent(common.ReadinessOptimismSyncing)
chainObsvReqC[vaa.ChainIDOptimism] = make(chan *gossipv1.ObservationRequest, observationRequestBufferSize)
if err := supervisor.Run(ctx, "optimismwatch",
evm.NewEthWatcher(*optimismRPC, optimismContractAddr, "optimism", common.ReadinessOptimismSyncing, vaa.ChainIDOptimism, lockC, nil, 1, chainObsvReqC[vaa.ChainIDOptimism], *unsafeDevMode, ethWatcher).Run); err != nil {
return err
}
}
if shouldStart(terraWS) {
logger.Info("Starting Terra watcher")
@ -1157,18 +1164,6 @@ func runNode(cmd *cobra.Command, args []string) {
return err
}
}
if shouldStart(optimismRPC) {
if ethWatcher == nil {
log.Fatalf("if optimism is enabled then ethereum must also be enabled.")
}
logger.Info("Starting Optimism watcher")
readiness.RegisterComponent(common.ReadinessOptimismSyncing)
chainObsvReqC[vaa.ChainIDOptimism] = make(chan *gossipv1.ObservationRequest, observationRequestBufferSize)
if err := supervisor.Run(ctx, "optimismwatch",
evm.NewEthWatcher(*optimismRPC, optimismContractAddr, "optimism", common.ReadinessOptimismSyncing, vaa.ChainIDOptimism, lockC, nil, 1, chainObsvReqC[vaa.ChainIDOptimism], *unsafeDevMode, ethWatcher).Run); err != nil {
return err
}
}
if shouldStart(injectiveWS) {
logger.Info("Starting Injective watcher")
readiness.RegisterComponent(common.ReadinessInjectiveSyncing)

View File

@ -43,6 +43,7 @@ var etherscanAPIMap = map[vaa.ChainID]string{
vaa.ChainIDCelo: "https://celoscan.xyz/api",
vaa.ChainIDMoonbeam: "https://api-moonbeam.moonscan.io",
vaa.ChainIDArbitrum: "https://api.arbiscan.io",
vaa.ChainIDOptimism: "https://api-optimistic.etherscan.io",
}
var coreContractMap = map[vaa.ChainID]string{
@ -59,6 +60,7 @@ var coreContractMap = map[vaa.ChainID]string{
vaa.ChainIDCelo: strings.ToLower("0xa321448d90d4e5b0A732867c18eA198e75CAC48E"),
vaa.ChainIDMoonbeam: strings.ToLower("0xC8e2b0cD52Cf01b0Ce87d389Daa3d414d4cE29f3"),
vaa.ChainIDArbitrum: strings.ToLower("0xa5f208e072434bC67592E4C49C1B991BA79BCA46"),
vaa.ChainIDOptimism: strings.ToLower("0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722"),
}
var (

View File

@ -28,6 +28,7 @@ func chainList() []chainConfigEntry {
chainConfigEntry{emitterChainID: vaa.ChainIDTerra2, dailyLimit: 500_000, bigTransactionSize: 50_000},
chainConfigEntry{emitterChainID: vaa.ChainIDMoonbeam, dailyLimit: 5_000_000, bigTransactionSize: 500_000},
chainConfigEntry{emitterChainID: vaa.ChainIDArbitrum, dailyLimit: 200_000, bigTransactionSize: 20_000},
chainConfigEntry{emitterChainID: vaa.ChainIDOptimism, dailyLimit: 200_000, bigTransactionSize: 20_000},
chainConfigEntry{emitterChainID: vaa.ChainIDAptos, dailyLimit: 5_000_000, bigTransactionSize: 500_000},
chainConfigEntry{emitterChainID: vaa.ChainIDXpla, dailyLimit: 200_000, bigTransactionSize: 20_000},
}

View File

@ -14,7 +14,7 @@ func TestTokenListSize(t *testing.T) {
/* Assuming that governed tokens will need to be updated every time
we regenerate it */
assert.Equal(t, 132, len(tokenConfigEntries))
assert.Equal(t, 133, len(tokenConfigEntries))
}
func TestTokenListAddressSize(t *testing.T) {

View File

@ -15,5 +15,6 @@ func manualTokenList() []tokenConfigEntry {
tokenConfigEntry{chain: 13, addr: "0000000000000000000000005096db80b21ef45230c9e423c373f1fc9c0198dd", symbol: "WEMIX", coinGeckoId: "wemix-token", decimals: 8, price: 1.74},
tokenConfigEntry{chain: 13, addr: "0000000000000000000000005c74070fdea071359b86082bd9f9b3deaafbe32b", symbol: "KDAI", coinGeckoId: "dai", decimals: 8, price: 1.00},
tokenConfigEntry{chain: 15, addr: "0000000000000000000000000000000000000000000000000000000000000000", symbol: "NEAR", coinGeckoId: "near", decimals: 8, price: 3.85},
tokenConfigEntry{chain: 24, addr: "0000000000000000000000004200000000000000000000000000000000000042", symbol: "OP", coinGeckoId: "optimism", decimals: 8, price: 1.31},
}
}

View File

@ -202,8 +202,8 @@ const MAINNET = {
},
optimism: {
core: "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722",
token_bridge: undefined,
nft_bridge: undefined,
token_bridge: "0x1D68124e65faFC907325e3EDbF8c4d84499DAa8b",
nft_bridge: "0xfE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585",
},
gnosis: {
core: "0xa321448d90d4e5b0A732867c18eA198e75CAC48E",

View File

@ -115,6 +115,7 @@ var knownTokenbridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDNear: "148410499d3fcda4dcfd68a1ebfcdddda16ab28326448d4aae4d2f0465cdfcb7",
vaa.ChainIDMoonbeam: "000000000000000000000000B1731c586ca89a23809861c6103F0b96B3F57D92",
vaa.ChainIDArbitrum: "0000000000000000000000000b2402144Bb366A632D14B83F244D2e0e21bD39c",
vaa.ChainIDOptimism: "0000000000000000000000001D68124e65faFC907325e3EDbF8c4d84499DAa8b",
vaa.ChainIDXpla: "8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c",
}
@ -135,6 +136,7 @@ var knownNFTBridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDCelo: "000000000000000000000000A6A377d75ca5c9052c9a77ED1e865Cc25Bd97bf3",
vaa.ChainIDMoonbeam: "000000000000000000000000453cfBe096C0f8D763E8C5F24B441097d577bdE2",
vaa.ChainIDArbitrum: "0000000000000000000000003dD14D553cFD986EAC8e3bddF629d82073e188c8",
vaa.ChainIDOptimism: "000000000000000000000000fE8cD454b4A1CA468B57D79c0cc77Ef5B6f64585",
}
func GetEmitterAddressForChain(chainID vaa.ChainID, emitterType EmitterType) (vaa.Address, error) {

View File

@ -27,6 +27,7 @@ var knownTestnetTokenbridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDNear: "c2c0b6ecbbe9ecf91b2b7999f0264018ba68126c2e83bf413f59f712f3a1df55",
vaa.ChainIDMoonbeam: "000000000000000000000000bc976d4b9d57e57c3ca52e1fd136c45ff7955a96",
vaa.ChainIDArbitrum: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A",
vaa.ChainIDOptimism: "000000000000000000000000C7A204bDBFe983FCD8d8E61D02b475D4073fF97e",
vaa.ChainIDNeon: "000000000000000000000000c7a204bdbfe983fcd8d8e61d02b475d4073ff97e",
vaa.ChainIDXpla: "b66da121bd3621c8d2604c08c82965640fe682d606af26a302ee09094f5e62cf",
}
@ -48,5 +49,6 @@ var knownTestnetNFTBridgeEmitters = map[vaa.ChainID]string{
vaa.ChainIDCelo: "000000000000000000000000acd8190f647a31e56a656748bc30f69259f245db",
vaa.ChainIDMoonbeam: "00000000000000000000000098a0f4b96972b32fcb3bd03caeb66a44a6ab9edb",
vaa.ChainIDArbitrum: "000000000000000000000000Ee3dB83916Ccdc3593b734F7F2d16D630F39F1D0",
vaa.ChainIDOptimism: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A",
vaa.ChainIDNeon: "00000000000000000000000023908a62110e21c04f3a4e011d24f901f911744a",
}