bruce-riley пре 1 година
родитељ
комит
14144c8c10

+ 12 - 8
clients/js/README.md

@@ -255,8 +255,9 @@ Options:
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
-   "xpla", "btc", "base", "sei", "rootstock", "wormchain", "cosmoshub", "evmos",
-                                                            "kujira", "sepolia"]
+     "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "wormchain",
+               "cosmoshub", "evmos", "kujira", "neutron", "celestia", "sepolia",
+                         "arbitrum_sepolia", "base_sepolia", "optimism_sepolia"]
   -n, --network           Network
   -n, --network           Network
                             [required] [choices: "mainnet", "testnet", "devnet"]
                             [required] [choices: "mainnet", "testnet", "devnet"]
   -a, --contract-address  Contract to submit VAA to (override config)   [string]
   -a, --contract-address  Contract to submit VAA to (override config)   [string]
@@ -311,15 +312,17 @@ Options:
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
-   "xpla", "btc", "base", "sei", "rootstock", "wormchain", "cosmoshub", "evmos",
-                                                            "kujira", "sepolia"]
+     "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "wormchain",
+               "cosmoshub", "evmos", "kujira", "neutron", "celestia", "sepolia",
+                         "arbitrum_sepolia", "base_sepolia", "optimism_sepolia"]
       --dst-chain   destination chain
       --dst-chain   destination chain
            [required] [choices: "solana", "ethereum", "terra", "bsc", "polygon",
            [required] [choices: "solana", "ethereum", "terra", "bsc", "polygon",
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
-   "xpla", "btc", "base", "sei", "rootstock", "wormchain", "cosmoshub", "evmos",
-                                                            "kujira", "sepolia"]
+     "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "wormchain",
+               "cosmoshub", "evmos", "kujira", "neutron", "celestia", "sepolia",
+                         "arbitrum_sepolia", "base_sepolia", "optimism_sepolia"]
       --dst-addr    destination address                      [string] [required]
       --dst-addr    destination address                      [string] [required]
       --token-addr  token address               [string] [default: native token]
       --token-addr  token address               [string] [default: native token]
       --amount      token amount                             [string] [required]
       --amount      token amount                             [string] [required]
@@ -351,8 +354,9 @@ Positionals:
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
         "avalanche", "oasis", "algorand", "aurora", "fantom", "karura", "acala",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
             "klaytn", "celo", "near", "moonbeam", "neon", "terra2", "injective",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
          "osmosis", "sui", "aptos", "arbitrum", "optimism", "gnosis", "pythnet",
-   "xpla", "btc", "base", "sei", "rootstock", "wormchain", "cosmoshub", "evmos",
-                                                            "kujira", "sepolia"]
+     "xpla", "btc", "base", "sei", "rootstock", "scroll", "mantle", "wormchain",
+               "cosmoshub", "evmos", "kujira", "neutron", "celestia", "sepolia",
+                         "arbitrum_sepolia", "base_sepolia", "optimism_sepolia"]
   tx       Source transaction hash                                      [string]
   tx       Source transaction hash                                      [string]
 
 
 Options:
 Options:

+ 15 - 15
clients/js/package-lock.json

@@ -10,7 +10,7 @@
       "license": "Apache-2.0",
       "license": "Apache-2.0",
       "dependencies": {
       "dependencies": {
         "@celo-tools/celo-ethers-wrapper": "^0.1.0",
         "@celo-tools/celo-ethers-wrapper": "^0.1.0",
-        "@certusone/wormhole-sdk": "^0.10.5-beta.3",
+        "@certusone/wormhole-sdk": "^0.10.7",
         "@cosmjs/encoding": "^0.26.2",
         "@cosmjs/encoding": "^0.26.2",
         "@improbable-eng/grpc-web-node-http-transport": "^0.15.0",
         "@improbable-eng/grpc-web-node-http-transport": "^0.15.0",
         "@injectivelabs/networks": "^1.10.7",
         "@injectivelabs/networks": "^1.10.7",
@@ -494,11 +494,11 @@
       }
       }
     },
     },
     "node_modules/@certusone/wormhole-sdk": {
     "node_modules/@certusone/wormhole-sdk": {
-      "version": "0.10.5-beta.3",
-      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.5-beta.3.tgz",
-      "integrity": "sha512-Q1IrWYQ/NPpLcuPs3J8MbUeRwBxBOTZFwLs3jahohgUFCQhGuBwhgpv02CdEYBR/iZpgaDrj2Eo3HOe3uNlYVA==",
+      "version": "0.10.7",
+      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.7.tgz",
+      "integrity": "sha512-1qV/MYM7deFl+/d1kK34PzDsgDaUQrNvrUVCeUw60WQP8ySf/vWiWk5ny6kaad16d+Qv8JxmVRuHMV4GxZR9/g==",
       "dependencies": {
       "dependencies": {
-        "@certusone/wormhole-sdk-proto-web": "0.0.6",
+        "@certusone/wormhole-sdk-proto-web": "0.0.7",
         "@certusone/wormhole-sdk-wasm": "^0.0.1",
         "@certusone/wormhole-sdk-wasm": "^0.0.1",
         "@coral-xyz/borsh": "0.2.6",
         "@coral-xyz/borsh": "0.2.6",
         "@mysten/sui.js": "0.32.2",
         "@mysten/sui.js": "0.32.2",
@@ -524,9 +524,9 @@
       }
       }
     },
     },
     "node_modules/@certusone/wormhole-sdk-proto-web": {
     "node_modules/@certusone/wormhole-sdk-proto-web": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.6.tgz",
-      "integrity": "sha512-LTyjsrWryefx5WmkoBP6FQ2EjLxhMExAGxLkloHUhufVQZdrbGh0htBBUviP+HaDSJBCMPMtulNFwkBJV6muqQ==",
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.7.tgz",
+      "integrity": "sha512-GCe1/bcqMS0Mt+hsWp4SE4NLL59pWmK0lhQXO0oqAKl0G9AuuTdudySMDF/sLc7z5H2w34bSuSrIEKvPuuSC+w==",
       "dependencies": {
       "dependencies": {
         "@improbable-eng/grpc-web": "^0.15.0",
         "@improbable-eng/grpc-web": "^0.15.0",
         "protobufjs": "^7.0.0",
         "protobufjs": "^7.0.0",
@@ -8367,11 +8367,11 @@
       "requires": {}
       "requires": {}
     },
     },
     "@certusone/wormhole-sdk": {
     "@certusone/wormhole-sdk": {
-      "version": "0.10.5-beta.3",
-      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.5-beta.3.tgz",
-      "integrity": "sha512-Q1IrWYQ/NPpLcuPs3J8MbUeRwBxBOTZFwLs3jahohgUFCQhGuBwhgpv02CdEYBR/iZpgaDrj2Eo3HOe3uNlYVA==",
+      "version": "0.10.7",
+      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk/-/wormhole-sdk-0.10.7.tgz",
+      "integrity": "sha512-1qV/MYM7deFl+/d1kK34PzDsgDaUQrNvrUVCeUw60WQP8ySf/vWiWk5ny6kaad16d+Qv8JxmVRuHMV4GxZR9/g==",
       "requires": {
       "requires": {
-        "@certusone/wormhole-sdk-proto-web": "0.0.6",
+        "@certusone/wormhole-sdk-proto-web": "0.0.7",
         "@certusone/wormhole-sdk-wasm": "^0.0.1",
         "@certusone/wormhole-sdk-wasm": "^0.0.1",
         "@coral-xyz/borsh": "0.2.6",
         "@coral-xyz/borsh": "0.2.6",
         "@injectivelabs/networks": "1.10.12",
         "@injectivelabs/networks": "1.10.12",
@@ -8402,9 +8402,9 @@
       }
       }
     },
     },
     "@certusone/wormhole-sdk-proto-web": {
     "@certusone/wormhole-sdk-proto-web": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.6.tgz",
-      "integrity": "sha512-LTyjsrWryefx5WmkoBP6FQ2EjLxhMExAGxLkloHUhufVQZdrbGh0htBBUviP+HaDSJBCMPMtulNFwkBJV6muqQ==",
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/@certusone/wormhole-sdk-proto-web/-/wormhole-sdk-proto-web-0.0.7.tgz",
+      "integrity": "sha512-GCe1/bcqMS0Mt+hsWp4SE4NLL59pWmK0lhQXO0oqAKl0G9AuuTdudySMDF/sLc7z5H2w34bSuSrIEKvPuuSC+w==",
       "requires": {
       "requires": {
         "@improbable-eng/grpc-web": "^0.15.0",
         "@improbable-eng/grpc-web": "^0.15.0",
         "protobufjs": "^7.0.0",
         "protobufjs": "^7.0.0",

+ 1 - 1
clients/js/package.json

@@ -30,7 +30,7 @@
   ],
   ],
   "dependencies": {
   "dependencies": {
     "@celo-tools/celo-ethers-wrapper": "^0.1.0",
     "@celo-tools/celo-ethers-wrapper": "^0.1.0",
-    "@certusone/wormhole-sdk": "^0.10.5-beta.3",
+    "@certusone/wormhole-sdk": "^0.10.7",
     "@cosmjs/encoding": "^0.26.2",
     "@cosmjs/encoding": "^0.26.2",
     "@improbable-eng/grpc-web-node-http-transport": "^0.15.0",
     "@improbable-eng/grpc-web-node-http-transport": "^0.15.0",
     "@injectivelabs/networks": "^1.10.7",
     "@injectivelabs/networks": "^1.10.7",

+ 8 - 1
clients/js/src/chains/generic/getOriginalAsset.ts

@@ -60,7 +60,12 @@ export const getOriginalAsset = async (
     case "optimism":
     case "optimism":
     case "polygon":
     case "polygon":
     // case "rootstock":
     // case "rootstock":
-    case "sepolia": {
+    case "scroll":
+    case "mantle":
+    case "sepolia":
+    case "arbitrum_sepolia":
+    case "base_sepolia":
+    case "optimism_sepolia": {
       const provider = getProviderForChain(chainName, network, { rpc });
       const provider = getProviderForChain(chainName, network, { rpc });
       return getOriginalAssetEth(
       return getOriginalAssetEth(
         tokenBridgeAddress,
         tokenBridgeAddress,
@@ -113,6 +118,8 @@ export const getOriginalAsset = async (
     case "cosmoshub":
     case "cosmoshub":
     case "evmos":
     case "evmos":
     case "kujira":
     case "kujira":
+    case "neutron":
+    case "celestia":
     case "rootstock":
     case "rootstock":
       throw new Error(`${chainName} not supported`);
       throw new Error(`${chainName} not supported`);
     default:
     default:

+ 8 - 1
clients/js/src/chains/generic/getWrappedAssetAddress.ts

@@ -70,7 +70,12 @@ export const getWrappedAssetAddress = async (
     case "optimism":
     case "optimism":
     case "polygon":
     case "polygon":
     // case "rootstock":
     // case "rootstock":
-    case "sepolia": {
+    case "scroll":
+    case "mantle":
+    case "sepolia":
+    case "arbitrum_sepolia":
+    case "base_sepolia":
+    case "optimism_sepolia": {
       const provider = getProviderForChain(chainName, network, { rpc });
       const provider = getProviderForChain(chainName, network, { rpc });
       return getForeignAssetEth(
       return getForeignAssetEth(
         tokenBridgeAddress,
         tokenBridgeAddress,
@@ -159,6 +164,8 @@ export const getWrappedAssetAddress = async (
     case "cosmoshub":
     case "cosmoshub":
     case "evmos":
     case "evmos":
     case "kujira":
     case "kujira":
+    case "neutron":
+    case "celestia":
     case "rootstock":
     case "rootstock":
       throw new Error(`${chainName} not supported`);
       throw new Error(`${chainName} not supported`);
     default:
     default:

+ 7 - 0
clients/js/src/chains/generic/provider.ts

@@ -97,7 +97,12 @@ export const getProviderForChain = <T extends ChainId | ChainName>(
     case "optimism":
     case "optimism":
     case "polygon":
     case "polygon":
     // case "rootstock":
     // case "rootstock":
+    case "scroll":
+    case "mantle":
     case "sepolia":
     case "sepolia":
+    case "arbitrum_sepolia":
+    case "base_sepolia":
+    case "optimism_sepolia":
       return new ethers.providers.JsonRpcProvider(rpc) as ChainProvider<T>;
       return new ethers.providers.JsonRpcProvider(rpc) as ChainProvider<T>;
     case "terra":
     case "terra":
     case "terra2":
     case "terra2":
@@ -157,6 +162,8 @@ export const getProviderForChain = <T extends ChainId | ChainName>(
     case "cosmoshub":
     case "cosmoshub":
     case "evmos":
     case "evmos":
     case "kujira":
     case "kujira":
+    case "neutron":
+    case "celestia":
     case "rootstock":
     case "rootstock":
       throw new Error(`${chainName} not supported`);
       throw new Error(`${chainName} not supported`);
     default:
     default:

+ 4 - 0
clients/js/src/cmds/submit.ts

@@ -190,6 +190,10 @@ async function executeSubmit(
     throw Error("Evmos is not supported yet");
     throw Error("Evmos is not supported yet");
   } else if (chain === "kujira") {
   } else if (chain === "kujira") {
     throw Error("kujira is not supported yet");
     throw Error("kujira is not supported yet");
+  } else if (chain === "neutron") {
+    throw Error("neutron is not supported yet");
+  } else if (chain === "celestia") {
+    throw Error("celestia is not supported yet");
   } else if (chain === "rootstock") {
   } else if (chain === "rootstock") {
     throw Error("rootstock is not supported yet");
     throw Error("rootstock is not supported yet");
   } else {
   } else {

+ 4 - 0
clients/js/src/cmds/transfer.ts

@@ -144,6 +144,10 @@ export const handler = async (
     throw Error("evmos is not supported yet");
     throw Error("evmos is not supported yet");
   } else if (srcChain === "kujira") {
   } else if (srcChain === "kujira") {
     throw Error("kujira is not supported yet");
     throw Error("kujira is not supported yet");
+  } else if (srcChain === "neutron") {
+    throw Error("neutron is not supported yet");
+  } else if (srcChain === "celestia") {
+    throw Error("celestia is not supported yet");
   } else if (srcChain === "rootstock") {
   } else if (srcChain === "rootstock") {
     throw Error("rootstock is not supported yet");
     throw Error("rootstock is not supported yet");
   } else {
   } else {

+ 105 - 0
clients/js/src/consts/networks.ts

@@ -193,6 +193,41 @@ const MAINNET = {
     key: undefined,
     key: undefined,
     chain_id: undefined,
     chain_id: undefined,
   },
   },
+  neutron: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  celestia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  scroll: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  mantle: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  arbitrum_sepolia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  base_sepolia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  optimism_sepolia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
 };
 };
 
 
 const TESTNET = {
 const TESTNET = {
@@ -373,6 +408,41 @@ const TESTNET = {
     key: undefined,
     key: undefined,
     chain_id: undefined,
     chain_id: undefined,
   },
   },
+  neutron: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  celestia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  scroll: {
+    rpc: "https://rpc.ankr.com/scroll_sepolia_testnet",
+    key: getEnvVar("ETH_KEY_TESTNET"),
+    chain_id: 534353,
+  },
+  mantle: {
+    rpc: "https://rpc.ankr.com/mantle_testnet",
+    key: getEnvVar("ETH_KEY_TESTNET"),
+    chain_id: 5001,
+  },
+  arbitrum_sepolia: {
+    rpc: "https://arbitrum-sepolia.publicnode.com",
+    key: getEnvVar("ETH_KEY_TESTNET"),
+    chain_id: 421614,
+  },
+  base_sepolia: {
+    rpc: "https://sepolia.base.org",
+    key: getEnvVar("ETH_KEY_TESTNET"),
+    chain_id: 84532,
+  },
+  optimism_sepolia: {
+    rpc: "https://rpc.ankr.com/optimism_sepolia",
+    key: getEnvVar("ETH_KEY_TESTNET"),
+    chain_id: 11155420,
+  },
 };
 };
 
 
 const DEVNET = {
 const DEVNET = {
@@ -530,6 +600,41 @@ const DEVNET = {
     rpc: undefined,
     rpc: undefined,
     key: undefined,
     key: undefined,
   },
   },
+  neutron: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  celestia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  scroll: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  mantle: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  arbitrum_sepolia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  base_sepolia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
+  optimism_sepolia: {
+    rpc: undefined,
+    key: undefined,
+    chain_id: undefined,
+  },
 };
 };
 
 
 /**
 /**