Browse Source

node,sdk: Mantle mainnet

Evan Gray 1 năm trước cách đây
mục cha
commit
a9393500a1

+ 22 - 0
ethereum/env/.env.mantle.mainnet

@@ -0,0 +1,22 @@
+# Mantle mainnet env
+# Rename to .env
+
+# Common config for forge deployment
+RPC_URL=https://rpc.ankr.com/mantle
+FORGE_ARGS="--slow --priority-gas-price 0 --gas-estimate-multiplier 130 --skip-simulation"
+
+# Wormhole Core Migrations
+INIT_SIGNERS=["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5"]
+INIT_CHAIN_ID=35
+INIT_GOV_CHAIN_ID=0x1
+INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+INIT_EVM_CHAIN_ID=5000
+
+# Bridge Migrations
+BRIDGE_INIT_CHAIN_ID=35
+BRIDGE_INIT_GOV_CHAIN_ID=0x1
+BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+
+# See https://docs.mantle.xyz/network/introduction/faqs#q.-whats-the-usdwmnt-token-contract-address
+BRIDGE_INIT_WETH=0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8
+BRIDGE_INIT_FINALITY=1

+ 1 - 1
node/cmd/guardiand/node.go

@@ -644,7 +644,7 @@ func runNode(cmd *cobra.Command, args []string) {
 	*optimismContract = checkEvmArgs(logger, *optimismRPC, *optimismContract, "optimism", true)
 	*baseContract = checkEvmArgs(logger, *baseRPC, *baseContract, "base", true)
 	*scrollContract = checkEvmArgs(logger, *scrollRPC, *scrollContract, "scroll", true)
-	*mantleContract = checkEvmArgs(logger, *mantleRPC, *mantleContract, "mantle", false)
+	*mantleContract = checkEvmArgs(logger, *mantleRPC, *mantleContract, "mantle", true)
 	*blastContract = checkEvmArgs(logger, *blastRPC, *blastContract, "blast", true)
 	*xlayerContract = checkEvmArgs(logger, *xlayerRPC, *xlayerContract, "xlayer", true)
 	*berachainContract = checkEvmArgs(logger, *berachainRPC, *berachainContract, "berachain", false)

+ 2 - 0
node/hack/repair_eth/repair_eth.go

@@ -47,6 +47,7 @@ var etherscanAPIMap = map[vaa.ChainID]string{
 	vaa.ChainIDOptimism: "https://api-optimistic.etherscan.io",
 	vaa.ChainIDBase:     "https://api.basescan.org",
 	vaa.ChainIDScroll:   "https://api.scrollscan.com",
+	vaa.ChainIDMantle:   "", // TODO: Does Mantle have an etherscan equivalent API endpoint?
 	vaa.ChainIDBlast:    "https://api.blastscan.io",
 	vaa.ChainIDXLayer:   "", // TODO: Does X Layer have an etherscan API endpoint?
 }
@@ -68,6 +69,7 @@ var coreContractMap = map[vaa.ChainID]string{
 	vaa.ChainIDOptimism:  strings.ToLower("0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722"),
 	vaa.ChainIDBase:      strings.ToLower("0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"),
 	vaa.ChainIDScroll:    strings.ToLower("0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"),
+	vaa.ChainIDMantle:    strings.ToLower("0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"),
 	vaa.ChainIDBlast:     strings.ToLower("0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6"),
 	vaa.ChainIDXLayer:    strings.ToLower("0x194B123c5E96B9b2E49763619985790Dc241CAC0"),
 }

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

@@ -36,6 +36,7 @@ func chainList() []chainConfigEntry {
 		{emitterChainID: vaa.ChainIDBase, dailyLimit: 2_000_000, bigTransactionSize: 200_000},
 		{emitterChainID: vaa.ChainIDSei, dailyLimit: 5_000_000, bigTransactionSize: 500_000},
 		{emitterChainID: vaa.ChainIDScroll, dailyLimit: 500_000, bigTransactionSize: 50_000},
+		{emitterChainID: vaa.ChainIDMantle, dailyLimit: 500_000, bigTransactionSize: 50_000},
 		{emitterChainID: vaa.ChainIDBlast, dailyLimit: 500_000, bigTransactionSize: 50_000},
 		{emitterChainID: vaa.ChainIDXLayer, dailyLimit: 500_000, bigTransactionSize: 50_000},
 		{emitterChainID: vaa.ChainIDWormchain, dailyLimit: 500_000, bigTransactionSize: 50_000},

+ 4 - 0
sdk/js/CHANGELOG.md

@@ -1,5 +1,9 @@
 # Changelog
 
+## 0.10.17
+
+Add Mantle mainnet support
+
 ## 0.10.16
 
 Add X Layer mainnet support

+ 1 - 1
sdk/js/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@certusone/wormhole-sdk",
-  "version": "0.10.16",
+  "version": "0.10.17",
   "description": "SDK for interacting with Wormhole",
   "homepage": "https://wormhole.com",
   "main": "./lib/cjs/index.js",

+ 2 - 2
sdk/js/src/utils/consts.ts

@@ -314,8 +314,8 @@ const MAINNET = {
     nft_bridge: undefined,
   },
   mantle: {
-    core: undefined,
-    token_bridge: undefined,
+    core: "0xbebdb6C8ddC678FfA9f8748f85C815C556Dd8ac6",
+    token_bridge: "0x24850c6f61C438823F01B7A3BF2B89B72174Fa9d",
     nft_bridge: undefined,
   },
   blast: {

+ 1 - 0
sdk/mainnet_consts.go

@@ -119,6 +119,7 @@ var knownTokenbridgeEmitters = map[vaa.ChainID]string{
 	vaa.ChainIDBase:      "0000000000000000000000008d2de8d2f73F1F4cAB472AC9A881C9b123C79627",
 	vaa.ChainIDXpla:      "8f9cf727175353b17a5f574270e370776123d90fd74956ae4277962b4fdee24c",
 	vaa.ChainIDScroll:    "00000000000000000000000024850c6f61C438823F01B7A3BF2B89B72174Fa9d",
+	vaa.ChainIDMantle:    "00000000000000000000000024850c6f61C438823F01B7A3BF2B89B72174Fa9d",
 	vaa.ChainIDBlast:     "00000000000000000000000024850c6f61C438823F01B7A3BF2B89B72174Fa9d",
 	vaa.ChainIDXLayer:    "0000000000000000000000005537857664B0f9eFe38C9f320F75fEf23234D904",
 	vaa.ChainIDInjective: "00000000000000000000000045dbea4617971d93188eda21530bc6503d153313",