Browse Source

feat (watcher): add linea mainnet (#4464)

* feat (watcher): add linea mainnet

* chore: lint

* add linea mainnet tokenbridge address

* add linea to governor mainnet chains
Aaron Clark 3 months ago
parent
commit
1b16d041ab

+ 19 - 0
ethereum/env/.env.linea.mainnet

@@ -0,0 +1,19 @@
+# Common config for forge deployment
+RPC_URL=https://rpc.linea.build
+FORGE_ARGS="--slow"
+
+# Wormhole Core Migrations
+INIT_SIGNERS=["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5"]
+INIT_CHAIN_ID=38
+INIT_GOV_CHAIN_ID=0x1
+INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+INIT_EVM_CHAIN_ID=59144
+
+# Bridge Migrations
+BRIDGE_INIT_CHAIN_ID=38
+BRIDGE_INIT_GOV_CHAIN_ID=0x1
+BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+
+# https://github.com/Consensys/linea-token-list/blob/main/json/linea-mainnet-token-shortlist.json#L826
+BRIDGE_INIT_WETH=0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f
+BRIDGE_INIT_FINALITY=1

+ 1 - 0
node/pkg/governor/mainnet_chains.go

@@ -39,5 +39,6 @@ func ChainList() []ChainConfigEntry {
 		{EmitterChainID: vaa.ChainIDInk, DailyLimit: 500_000, BigTransactionSize: 50_000},
 		{EmitterChainID: vaa.ChainIDMezo, DailyLimit: 500_000, BigTransactionSize: 50_000},
 		{EmitterChainID: vaa.ChainIDXRPLEVM, DailyLimit: 500_000, BigTransactionSize: 50_000},
+		{EmitterChainID: vaa.ChainIDLinea, DailyLimit: 500_000, BigTransactionSize: 50_000},
 	}
 }

+ 2 - 0
node/pkg/governor/mainnet_tokens_test.go

@@ -46,6 +46,8 @@ func TestGovernedChainHasGovernedAssets(t *testing.T) {
 		vaa.ChainIDMezo: true,
 		// TODO: Remove this once we have governed tokens for XRPLEVM.
 		vaa.ChainIDXRPLEVM: true,
+		// TODO: Remove this once we have governed tokens for Linea.
+		vaa.ChainIDLinea: true,
 	}
 	if len(ignoredChains) > 0 {
 		ignoredOutput := []string{}

+ 2 - 1
node/pkg/watchers/evm/chain_config.go

@@ -87,7 +87,8 @@ var (
 
 		vaa.ChainIDMantle: {Finalized: true, Safe: true, EvmChainID: 5000, PublicRPC: "https://mantle-rpc.publicnode.com", ContractAddr: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"},
 		vaa.ChainIDXLayer: {Finalized: true, Safe: true, EvmChainID: 196, PublicRPC: "https://xlayerrpc.okx.com", ContractAddr: "0x194B123c5E96B9b2E49763619985790Dc241CAC0"},
-		// vaa.ChainIDLinea:   Not in Mainnet yet.
+		// As of 9/06/2024 Linea supports polling for finalized but not safe.
+		vaa.ChainIDLinea:     {Finalized: true, Safe: false, EvmChainID: 59144, PublicRPC: "https://rpc.linea.build", ContractAddr: "0x0C56aebD76E6D9e4a1Ec5e94F4162B4CBbf77b32"},
 		vaa.ChainIDBerachain: {Finalized: true, Safe: true, EvmChainID: 80094, PublicRPC: "https://berachain-rpc.publicnode.com", ContractAddr: "0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D"},
 		vaa.ChainIDSeiEVM:    {Finalized: true, Safe: true, EvmChainID: 1329, PublicRPC: "https://evm-rpc.sei-apis.com", ContractAddr: "0xCa1D5a146B03f6303baF59e5AD5615ae0b9d146D"},
 		// vaa.ChainIDEclipse:    Not supported in the guardian.

+ 6 - 2
node/pkg/watchers/evm/custom_consistency_level.go

@@ -69,10 +69,14 @@ type CCLMap map[vaa.ChainID]string
 
 var (
 	// cclMainnetMap specifies the custom consistency level contracts for each mainnet chain.
-	cclMainnetMap = CCLMap{}
+	cclMainnetMap = CCLMap{
+		vaa.ChainIDLinea: "0x6A4B4A882F5F0a447078b4Fd0b4B571A82371ec2",
+	}
 
 	// cclTestnetMap specifies the custom consistency level contracts for each testnet chain.
-	cclTestnetMap = CCLMap{}
+	cclTestnetMap = CCLMap{
+		vaa.ChainIDLinea: "0x6A4B4A882F5F0a447078b4Fd0b4B571A82371ec2",
+	}
 
 	// cclDevnetMap specifies the custom consistency level contracts for each devnet chain.
 	cclDevnetMap = CCLMap{

+ 1 - 0
sdk/mainnet_consts.go

@@ -123,6 +123,7 @@ var knownTokenbridgeEmitters = map[vaa.ChainID]string{
 	vaa.ChainIDInk:        "0000000000000000000000003Ff72741fd67D6AD0668d93B41a09248F4700560",
 	vaa.ChainIDMezo:       "000000000000000000000000F97B81E513f53c7a6B57Bd0b103a6c295b3096C5",
 	vaa.ChainIDXRPLEVM:    "00000000000000000000000047F5195163270345fb4d7B9319Eda8C64C75E278",
+	vaa.ChainIDLinea:      "000000000000000000000000167E0752de62cb76EFc0Fbb165Bd342c6e2Bb251",
 }
 
 // KnownNFTBridgeEmitters is a list of well-known mainnet emitters for the NFT bridge.