From 818038ef805ded92ead6e9079adae3701d833ba5 Mon Sep 17 00:00:00 2001 From: bruce-riley <96066700+bruce-riley@users.noreply.github.com> Date: Wed, 20 Dec 2023 08:56:14 -0600 Subject: [PATCH] Deploy Sepolia based L2s (#3606) * Deploy Sepolia based L2s * Code review rework --- devnet/node.yaml | 8 + ethereum/.env.arbitrum.sepolia.testnet | 17 ++ ethereum/.env.base.sepolia.testnet | 17 ++ ethereum/.env.optimism.sepolia.testnet | 17 ++ ethereum/truffle-config.js | 29 ++ node/cmd/guardiand/adminnodes.go | 3 + node/cmd/guardiand/node.go | 126 ++++++-- node/pkg/node/options.go | 2 +- node/pkg/proto/publicrpc/v1/publicrpc.pb.go | 301 ++++++++++---------- node/pkg/query/query.go | 41 +-- node/pkg/watchers/evm/watcher.go | 5 +- proto/publicrpc/v1/publicrpc.proto | 3 + sdk/js/CHANGELOG.md | 10 + sdk/js/package.json | 2 +- sdk/js/src/utils/consts.ts | 57 ++++ sdk/testnet_consts.go | 106 +++---- sdk/vaa/structs.go | 21 ++ sdk/vaa/structs_test.go | 9 + 18 files changed, 528 insertions(+), 246 deletions(-) create mode 100644 ethereum/.env.arbitrum.sepolia.testnet create mode 100644 ethereum/.env.base.sepolia.testnet create mode 100644 ethereum/.env.optimism.sepolia.testnet diff --git a/devnet/node.yaml b/devnet/node.yaml index 58b9fa918..cfd990eda 100644 --- a/devnet/node.yaml +++ b/devnet/node.yaml @@ -107,6 +107,14 @@ spec: - ws://eth-devnet:8545 - --mantleRPC - ws://eth-devnet:8545 + - --sepoliaRPC + - ws://eth-devnet:8545 + - --arbitrumSepoliaRPC + - ws://eth-devnet:8545 + - --baseSepoliaRPC + - ws://eth-devnet:8545 + - --optimismSepoliaRPC + - ws://eth-devnet:8545 # - --wormchainURL # - wormchain:9090 # - --accountantKeyPath diff --git a/ethereum/.env.arbitrum.sepolia.testnet b/ethereum/.env.arbitrum.sepolia.testnet new file mode 100644 index 000000000..7284afce6 --- /dev/null +++ b/ethereum/.env.arbitrum.sepolia.testnet @@ -0,0 +1,17 @@ +# Arbitrum on Sepolia testnet +# Rename to .env to use with truffle migrations + +# Wormhole Core Migrations +INIT_SIGNERS=["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"] +INIT_CHAIN_ID=10003 +INIT_GOV_CHAIN_ID=0x1 +INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +INIT_EVM_CHAIN_ID=421614 + +# Bridge Migrations +BRIDGE_INIT_CHAIN_ID=10003 +BRIDGE_INIT_GOV_CHAIN_ID=0x1 +BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +# WETH is listed here: https://docs.arbitrum.io/for-devs/useful-addresses#token-bridge-smart-contracts +BRIDGE_INIT_WETH=0x980B62Da83eFf3D4576C647993b0c1D7faf17c73 +BRIDGE_INIT_FINALITY=1 \ No newline at end of file diff --git a/ethereum/.env.base.sepolia.testnet b/ethereum/.env.base.sepolia.testnet new file mode 100644 index 000000000..e360c8adf --- /dev/null +++ b/ethereum/.env.base.sepolia.testnet @@ -0,0 +1,17 @@ +# Base on Sepolia testnet env +# Rename to .env to use with truffle migrations + +# Wormhole Core Migrations +INIT_SIGNERS=["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"] +INIT_CHAIN_ID=10004 +INIT_GOV_CHAIN_ID=0x1 +INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +INIT_EVM_CHAIN_ID=84532 + +# Bridge Migrations +BRIDGE_INIT_CHAIN_ID=10004 +BRIDGE_INIT_GOV_CHAIN_ID=0x1 +BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +# WETH is listed here: https://docs.base.org/base-contracts/ +BRIDGE_INIT_WETH=0x4200000000000000000000000000000000000006 +BRIDGE_INIT_FINALITY=1 diff --git a/ethereum/.env.optimism.sepolia.testnet b/ethereum/.env.optimism.sepolia.testnet new file mode 100644 index 000000000..0f9229007 --- /dev/null +++ b/ethereum/.env.optimism.sepolia.testnet @@ -0,0 +1,17 @@ +# Optimism on Sepolia testnet +# Rename to .env to use with truffle migrations + +# Wormhole Core Migrations +INIT_SIGNERS=["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"] +INIT_CHAIN_ID=10005 +INIT_GOV_CHAIN_ID=0x1 +INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +INIT_EVM_CHAIN_ID=11155420 + +# Bridge Migrations +BRIDGE_INIT_CHAIN_ID=10005 +BRIDGE_INIT_GOV_CHAIN_ID=0x1 +BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004 +# WETH is listed here: https://help.optimism.io/hc/en-us/articles/4417948883611-What-is-ETH-WETH-How-do-they-interact- +BRIDGE_INIT_WETH=0x4200000000000000000000000000000000000006 +BRIDGE_INIT_FINALITY=1 \ No newline at end of file diff --git a/ethereum/truffle-config.js b/ethereum/truffle-config.js index a271fa991..ae54a88ae 100644 --- a/ethereum/truffle-config.js +++ b/ethereum/truffle-config.js @@ -311,6 +311,16 @@ module.exports = { }, network_id: 421613, }, + arbitrum_sepolia_testnet: { + provider: () => { + return new HDWalletProvider( + process.env.MNEMONIC, + "https://arbitrum-sepolia.publicnode.com" + //"https://sepolia-rollup.arbitrum.io/rpc" // This didn't work. + ); + }, + network_id: 421614, + }, optimism: { provider: () => { return new HDWalletProvider( @@ -330,6 +340,16 @@ module.exports = { }, network_id: 420, }, + optimism_sepolia_testnet: { + provider: () => { + return new HDWalletProvider( + process.env.MNEMONIC, + "https://rpc.ankr.com/optimism_sepolia" + // "https://sepolia.optimism.io/" <== This didn't work for testnet + ); + }, + network_id: 11155420, + }, gnosis: { provider: () => { return new HDWalletProvider( @@ -366,6 +386,15 @@ module.exports = { }, network_id: 84531, }, + base_sepolia_testnet: { + provider: () => { + return new HDWalletProvider( + process.env.MNEMONIC, + "https://sepolia.base.org" + ); + }, + network_id: 84532, + }, scroll_testnet: { provider: () => { return new HDWalletProvider( diff --git a/node/cmd/guardiand/adminnodes.go b/node/cmd/guardiand/adminnodes.go index a51854dec..d7452ceb8 100644 --- a/node/cmd/guardiand/adminnodes.go +++ b/node/cmd/guardiand/adminnodes.go @@ -118,6 +118,9 @@ func runListNodes(cmd *cobra.Command, args []string) { {"Mantle", vaa.ChainIDMantle}, {"Wormchain", vaa.ChainIDWormchain}, {"Sepolia", vaa.ChainIDSepolia}, + {"ArbitrumSepolia", vaa.ChainIDArbitrumSepolia}, + {"BaseSepolia", vaa.ChainIDBaseSepolia}, + {"OptimismSepolia", vaa.ChainIDOptimismSepolia}, } if len(only) > 0 { diff --git a/node/cmd/guardiand/node.go b/node/cmd/guardiand/node.go index 99e2e2fc4..6b260c004 100644 --- a/node/cmd/guardiand/node.go +++ b/node/cmd/guardiand/node.go @@ -181,6 +181,15 @@ var ( sepoliaRPC *string sepoliaContract *string + arbitrumSepoliaRPC *string + arbitrumSepoliaContract *string + + baseSepoliaRPC *string + baseSepoliaContract *string + + optimismSepoliaRPC *string + optimismSepoliaContract *string + logLevel *string publicRpcLogDetailStr *string publicRpcLogToTelemetry *bool @@ -352,6 +361,15 @@ func init() { baseRPC = NodeCmd.Flags().String("baseRPC", "", "Base RPC URL") baseContract = NodeCmd.Flags().String("baseContract", "", "Base contract address") + arbitrumSepoliaRPC = NodeCmd.Flags().String("arbitrumSepoliaRPC", "", "Arbitrum on Sepolia RPC URL") + arbitrumSepoliaContract = NodeCmd.Flags().String("arbitrumSepoliaContract", "", "Arbitrum on Sepolia contract address") + + baseSepoliaRPC = NodeCmd.Flags().String("baseSepoliaRPC", "", "Base on Sepolia RPC URL") + baseSepoliaContract = NodeCmd.Flags().String("baseSepoliaContract", "", "Base on Sepolia contract address") + + optimismSepoliaRPC = NodeCmd.Flags().String("optimismSepoliaRPC", "", "Optimism on Sepolia RPC URL") + optimismSepoliaContract = NodeCmd.Flags().String("optimismSepoliaContract", "", "Optimism on Sepolia contract address") + logLevel = NodeCmd.Flags().String("logLevel", "info", "Logging level (debug, info, warn, error, dpanic, panic, fatal)") publicRpcLogDetailStr = NodeCmd.Flags().String("publicRpcLogDetail", "full", "The detail with which public RPC requests shall be logged (none=no logging, minimal=only log gRPC methods, full=log gRPC method, payload (up to 200 bytes) and user agent (up to 200 bytes))") publicRpcLogToTelemetry = NodeCmd.Flags().Bool("logPublicRpcToTelemetry", true, "whether or not to include publicRpc request logs in telemetry") @@ -505,6 +523,9 @@ func runNode(cmd *cobra.Command, args []string) { *sepoliaContract = unsafeDevModeEvmContractAddress(*sepoliaContract) *scrollContract = unsafeDevModeEvmContractAddress(*scrollContract) *mantleContract = unsafeDevModeEvmContractAddress(*mantleContract) + *arbitrumSepoliaContract = unsafeDevModeEvmContractAddress(*arbitrumSepoliaContract) + *baseSepoliaContract = unsafeDevModeEvmContractAddress(*baseSepoliaContract) + *optimismSepoliaContract = unsafeDevModeEvmContractAddress(*optimismSepoliaContract) } // Verify flags @@ -665,31 +686,38 @@ func runNode(cmd *cobra.Command, args []string) { logger.Fatal("If --gatewayWS is not specified, then --gatewayLCD and --gatewayContract must not be specified") } - if *testnetMode { - if *neonRPC == "" { - logger.Fatal("Please specify --neonRPC") + // These chains are only allowed in devnet and testnet. + if *testnetMode || *unsafeDevMode { + if (*neonRPC == "") != (*neonContract == "") { + logger.Fatal("Both --neonRPC and --neonContract must be set together or both unset") } - if *neonContract == "" { - logger.Fatal("Please specify --neonContract") + if (*sepoliaRPC == "") != (*sepoliaContract == "") { + logger.Fatal("Both --sepoliaRPC and --sepoliaContract must be set together or both unset") } - if *sepoliaRPC == "" { - logger.Fatal("Please specify --sepoliaRPC") + if (*arbitrumSepoliaRPC == "") != (*arbitrumSepoliaContract == "") { + logger.Fatal("Both --arbitrumSepoliaRPC and --arbitrumSepoliaContract must be set together or both unset") } - if *sepoliaContract == "" { - logger.Fatal("Please specify --sepoliaContract") + if (*baseSepoliaRPC == "") != (*baseSepoliaContract == "") { + logger.Fatal("Both --baseSepoliaRPC and --baseSepoliaContract must be set together or both unset") + } + if (*optimismSepoliaRPC == "") != (*optimismSepoliaContract == "") { + logger.Fatal("Both --optimismSepoliaRPC and --optimismSepoliaContract must be set together or both unset") } } else { - if *neonRPC != "" && !*unsafeDevMode { - logger.Fatal("Please do not specify --neonRPC") + if *neonRPC != "" || *neonContract != "" { + logger.Fatal("Please do not specify --neonRPC or --neonContract") } - if *neonContract != "" && !*unsafeDevMode { - logger.Fatal("Please do not specify --neonContract") + if *sepoliaRPC != "" || *sepoliaContract != "" { + logger.Fatal("Please do not specify --sepoliaRPC or --sepoliaContract") } - if *sepoliaRPC != "" && !*unsafeDevMode { - logger.Fatal("Please do not specify --sepoliaRPC") + if *arbitrumSepoliaRPC != "" || *arbitrumSepoliaContract != "" { + logger.Fatal("Please do not specify --arbitrumSepoliaRPC or --arbitrumSepoliaContract") } - if *sepoliaContract != "" && !*unsafeDevMode { - logger.Fatal("Please do not specify --sepoliaContract") + if *baseSepoliaRPC != "" || *baseSepoliaContract != "" { + logger.Fatal("Please do not specify --baseSepoliaRPC or --baseSepoliaContract") + } + if *optimismSepoliaRPC != "" || *optimismSepoliaContract != "" { + logger.Fatal("Please do not specify --optimismSepoliaRPC or --optimismSepoliaContract") } } @@ -893,6 +921,9 @@ func runNode(cmd *cobra.Command, args []string) { rpcMap["pythnetWS"] = *pythnetWS if env == common.TestNet { rpcMap["sepoliaRPC"] = *sepoliaRPC + rpcMap["arbitrumSepoliaRPC"] = *arbitrumSepoliaRPC + rpcMap["baseSepoliaRPC"] = *baseSepoliaRPC + rpcMap["optimismSepoliaRPC"] = *optimismSepoliaRPC } rpcMap["scrollRPC"] = *scrollRPC rpcMap["solanaRPC"] = *solanaRPC @@ -1428,22 +1459,22 @@ func runNode(cmd *cobra.Command, args []string) { watcherConfigs = append(watcherConfigs, wc) } - if *testnetMode { - if shouldStart(neonRPC) { - if !shouldStart(solanaRPC) { - log.Fatalf("If neon is enabled then solana must also be enabled.") - } - wc := &evm.WatcherConfig{ - NetworkID: "neon", - ChainID: vaa.ChainIDNeon, - Rpc: *neonRPC, - Contract: *neonContract, - L1FinalizerRequired: "solana-finalized", - } - - watcherConfigs = append(watcherConfigs, wc) + if *testnetMode && shouldStart(neonRPC) { + if !shouldStart(solanaRPC) { + log.Fatalf("If neon is enabled then solana must also be enabled.") + } + wc := &evm.WatcherConfig{ + NetworkID: "neon", + ChainID: vaa.ChainIDNeon, + Rpc: *neonRPC, + Contract: *neonContract, + L1FinalizerRequired: "solana-finalized", } + watcherConfigs = append(watcherConfigs, wc) + } + + if *testnetMode || *unsafeDevMode { if shouldStart(sepoliaRPC) { wc := &evm.WatcherConfig{ NetworkID: "sepolia", @@ -1454,6 +1485,39 @@ func runNode(cmd *cobra.Command, args []string) { watcherConfigs = append(watcherConfigs, wc) } + + if shouldStart(arbitrumSepoliaRPC) { + wc := &evm.WatcherConfig{ + NetworkID: "arbitrum_sepolia", + ChainID: vaa.ChainIDArbitrumSepolia, + Rpc: *arbitrumSepoliaRPC, + Contract: *arbitrumSepoliaContract, + } + + watcherConfigs = append(watcherConfigs, wc) + } + + if shouldStart(baseSepoliaRPC) { + wc := &evm.WatcherConfig{ + NetworkID: "base_sepolia", + ChainID: vaa.ChainIDBaseSepolia, + Rpc: *baseSepoliaRPC, + Contract: *baseSepoliaContract, + } + + watcherConfigs = append(watcherConfigs, wc) + } + + if shouldStart(optimismSepoliaRPC) { + wc := &evm.WatcherConfig{ + NetworkID: "optimism_sepolia", + ChainID: vaa.ChainIDOptimismSepolia, + Rpc: *optimismSepoliaRPC, + Contract: *optimismSepoliaContract, + } + + watcherConfigs = append(watcherConfigs, wc) + } } var ibcWatcherConfig *node.IbcWatcherConfig = nil diff --git a/node/pkg/node/options.go b/node/pkg/node/options.go index acb3cb55b..88e51be0e 100644 --- a/node/pkg/node/options.go +++ b/node/pkg/node/options.go @@ -365,7 +365,7 @@ func GuardianOptionWatchers(watcherConfigs []watchers.WatcherConfig, ibcWatcherC return fmt.Errorf("NetworkID already configured: %s", string(wc.GetNetworkID())) } - watcherName := string(wc.GetNetworkID()) + "watch" + watcherName := string(wc.GetNetworkID()) + "_watch" logger.Debug("Setting up watcher: " + watcherName) if wc.GetNetworkID() != "solana-confirmed" { // TODO this should not be a special case, see comment in common/readiness.go diff --git a/node/pkg/proto/publicrpc/v1/publicrpc.pb.go b/node/pkg/proto/publicrpc/v1/publicrpc.pb.go index b803e73f6..566778507 100644 --- a/node/pkg/proto/publicrpc/v1/publicrpc.pb.go +++ b/node/pkg/proto/publicrpc/v1/publicrpc.pb.go @@ -57,15 +57,18 @@ const ( ChainID_CHAIN_ID_BASE ChainID = 30 ChainID_CHAIN_ID_SEI ChainID = 32 // CHAIN_ID_ROOTSTOCK = 33; - ChainID_CHAIN_ID_SCROLL ChainID = 34 - ChainID_CHAIN_ID_MANTLE ChainID = 35 - ChainID_CHAIN_ID_WORMCHAIN ChainID = 3104 - ChainID_CHAIN_ID_COSMOSHUB ChainID = 4000 - ChainID_CHAIN_ID_EVMOS ChainID = 4001 - ChainID_CHAIN_ID_KUJIRA ChainID = 4002 - ChainID_CHAIN_ID_NEUTRON ChainID = 4003 - ChainID_CHAIN_ID_CELESTIA ChainID = 4004 - ChainID_CHAIN_ID_SEPOLIA ChainID = 10002 + ChainID_CHAIN_ID_SCROLL ChainID = 34 + ChainID_CHAIN_ID_MANTLE ChainID = 35 + ChainID_CHAIN_ID_WORMCHAIN ChainID = 3104 + ChainID_CHAIN_ID_COSMOSHUB ChainID = 4000 + ChainID_CHAIN_ID_EVMOS ChainID = 4001 + ChainID_CHAIN_ID_KUJIRA ChainID = 4002 + ChainID_CHAIN_ID_NEUTRON ChainID = 4003 + ChainID_CHAIN_ID_CELESTIA ChainID = 4004 + ChainID_CHAIN_ID_SEPOLIA ChainID = 10002 + ChainID_CHAIN_ID_ARBITRUM_SEPOLIA ChainID = 10003 + ChainID_CHAIN_ID_BASE_SEPOLIA ChainID = 10004 + ChainID_CHAIN_ID_OPTIMISM_SEPOLIA ChainID = 10005 ) // Enum value maps for ChainID. @@ -111,48 +114,54 @@ var ( 4003: "CHAIN_ID_NEUTRON", 4004: "CHAIN_ID_CELESTIA", 10002: "CHAIN_ID_SEPOLIA", + 10003: "CHAIN_ID_ARBITRUM_SEPOLIA", + 10004: "CHAIN_ID_BASE_SEPOLIA", + 10005: "CHAIN_ID_OPTIMISM_SEPOLIA", } ChainID_value = map[string]int32{ - "CHAIN_ID_UNSPECIFIED": 0, - "CHAIN_ID_SOLANA": 1, - "CHAIN_ID_ETHEREUM": 2, - "CHAIN_ID_TERRA": 3, - "CHAIN_ID_BSC": 4, - "CHAIN_ID_POLYGON": 5, - "CHAIN_ID_AVALANCHE": 6, - "CHAIN_ID_OASIS": 7, - "CHAIN_ID_ALGORAND": 8, - "CHAIN_ID_AURORA": 9, - "CHAIN_ID_FANTOM": 10, - "CHAIN_ID_KARURA": 11, - "CHAIN_ID_ACALA": 12, - "CHAIN_ID_KLAYTN": 13, - "CHAIN_ID_CELO": 14, - "CHAIN_ID_NEAR": 15, - "CHAIN_ID_MOONBEAM": 16, - "CHAIN_ID_NEON": 17, - "CHAIN_ID_TERRA2": 18, - "CHAIN_ID_INJECTIVE": 19, - "CHAIN_ID_OSMOSIS": 20, - "CHAIN_ID_SUI": 21, - "CHAIN_ID_APTOS": 22, - "CHAIN_ID_ARBITRUM": 23, - "CHAIN_ID_OPTIMISM": 24, - "CHAIN_ID_GNOSIS": 25, - "CHAIN_ID_PYTHNET": 26, - "CHAIN_ID_XPLA": 28, - "CHAIN_ID_BTC": 29, - "CHAIN_ID_BASE": 30, - "CHAIN_ID_SEI": 32, - "CHAIN_ID_SCROLL": 34, - "CHAIN_ID_MANTLE": 35, - "CHAIN_ID_WORMCHAIN": 3104, - "CHAIN_ID_COSMOSHUB": 4000, - "CHAIN_ID_EVMOS": 4001, - "CHAIN_ID_KUJIRA": 4002, - "CHAIN_ID_NEUTRON": 4003, - "CHAIN_ID_CELESTIA": 4004, - "CHAIN_ID_SEPOLIA": 10002, + "CHAIN_ID_UNSPECIFIED": 0, + "CHAIN_ID_SOLANA": 1, + "CHAIN_ID_ETHEREUM": 2, + "CHAIN_ID_TERRA": 3, + "CHAIN_ID_BSC": 4, + "CHAIN_ID_POLYGON": 5, + "CHAIN_ID_AVALANCHE": 6, + "CHAIN_ID_OASIS": 7, + "CHAIN_ID_ALGORAND": 8, + "CHAIN_ID_AURORA": 9, + "CHAIN_ID_FANTOM": 10, + "CHAIN_ID_KARURA": 11, + "CHAIN_ID_ACALA": 12, + "CHAIN_ID_KLAYTN": 13, + "CHAIN_ID_CELO": 14, + "CHAIN_ID_NEAR": 15, + "CHAIN_ID_MOONBEAM": 16, + "CHAIN_ID_NEON": 17, + "CHAIN_ID_TERRA2": 18, + "CHAIN_ID_INJECTIVE": 19, + "CHAIN_ID_OSMOSIS": 20, + "CHAIN_ID_SUI": 21, + "CHAIN_ID_APTOS": 22, + "CHAIN_ID_ARBITRUM": 23, + "CHAIN_ID_OPTIMISM": 24, + "CHAIN_ID_GNOSIS": 25, + "CHAIN_ID_PYTHNET": 26, + "CHAIN_ID_XPLA": 28, + "CHAIN_ID_BTC": 29, + "CHAIN_ID_BASE": 30, + "CHAIN_ID_SEI": 32, + "CHAIN_ID_SCROLL": 34, + "CHAIN_ID_MANTLE": 35, + "CHAIN_ID_WORMCHAIN": 3104, + "CHAIN_ID_COSMOSHUB": 4000, + "CHAIN_ID_EVMOS": 4001, + "CHAIN_ID_KUJIRA": 4002, + "CHAIN_ID_NEUTRON": 4003, + "CHAIN_ID_CELESTIA": 4004, + "CHAIN_ID_SEPOLIA": 10002, + "CHAIN_ID_ARBITRUM_SEPOLIA": 10003, + "CHAIN_ID_BASE_SEPOLIA": 10004, + "CHAIN_ID_OPTIMISM_SEPOLIA": 10005, } ) @@ -1521,8 +1530,8 @@ var file_publicrpc_v1_publicrpc_proto_rawDesc = []byte{ 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x2a, 0xdf, - 0x06, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x2a, 0xbb, + 0x07, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x4f, 0x4c, 0x41, 0x4e, 0x41, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, @@ -1576,100 +1585,106 @@ var file_publicrpc_v1_publicrpc_proto_rawDesc = []byte{ 0x1f, 0x12, 0x16, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x43, 0x45, 0x4c, 0x45, 0x53, 0x54, 0x49, 0x41, 0x10, 0xa4, 0x1f, 0x12, 0x15, 0x0a, 0x10, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c, 0x49, 0x41, 0x10, 0x92, 0x4e, - 0x32, 0x86, 0x0b, 0x0a, 0x10, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x52, 0x50, 0x43, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, - 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, - 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, - 0x61, 0x74, 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, - 0x64, 0x56, 0x41, 0x41, 0x12, 0x21, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x41, 0x41, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x56, 0x41, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x5e, 0x12, 0x5c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, - 0x76, 0x61, 0x61, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, - 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x6d, 0x69, 0x74, 0x74, - 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x7b, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, - 0x7d, 0x12, 0xbd, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x56, 0x41, 0x41, 0x12, 0x26, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x42, 0x61, 0x74, 0x63, 0x68, 0x56, 0x41, 0x41, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x56, 0x41, 0x41, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, - 0x12, 0x4f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x74, - 0x63, 0x68, 0x5f, 0x76, 0x61, 0x61, 0x2f, 0x7b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, - 0x2e, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x2f, - 0x7b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x7b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x6e, 0x63, 0x65, - 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x47, 0x75, 0x61, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x12, 0x1e, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x42, + 0x49, 0x54, 0x52, 0x55, 0x4d, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c, 0x49, 0x41, 0x10, 0x93, 0x4e, + 0x12, 0x1a, 0x0a, 0x15, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x42, 0x41, 0x53, + 0x45, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c, 0x49, 0x41, 0x10, 0x94, 0x4e, 0x12, 0x1e, 0x0a, 0x19, + 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x53, + 0x4d, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c, 0x49, 0x41, 0x10, 0x95, 0x4e, 0x32, 0x86, 0x0b, 0x0a, + 0x10, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x52, 0x50, 0x43, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x7c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, + 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, + 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, + 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x61, 0x73, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x12, + 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x73, 0x12, + 0xbb, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x41, 0x41, + 0x12, 0x21, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x41, 0x41, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x41, 0x41, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5e, 0x12, + 0x5c, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x61, 0x2f, + 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x6d, 0x69, 0x74, + 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x2e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x7d, 0x12, 0xbd, 0x01, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x56, 0x41, 0x41, 0x12, 0x26, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x56, 0x41, 0x41, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x42, 0x61, 0x74, 0x63, 0x68, 0x56, 0x41, 0x41, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x12, 0x4f, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x76, + 0x61, 0x61, 0x2f, 0x7b, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x6d, 0x69, + 0x74, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x5f, 0x69, 0x64, 0x2e, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x62, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x2e, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x7d, 0x12, 0x91, 0x01, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x75, 0x61, 0x72, + 0x64, 0x69, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x12, 0x2a, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, - 0x31, 0x2f, 0x67, 0x75, 0x61, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x65, 0x74, 0x2f, 0x63, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x74, 0x12, 0xcc, 0x01, 0x0a, 0x23, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, - 0x6f, 0x72, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x38, 0x2e, - 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, - 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, - 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, - 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x12, 0x9a, 0x01, 0x0a, 0x17, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, - 0x72, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x56, 0x41, 0x41, 0x73, - 0x12, 0x2c, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x64, 0x56, 0x41, 0x41, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, - 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, - 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x64, 0x56, 0x41, 0x41, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, - 0x6e, 0x6f, 0x72, 0x2f, 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x61, - 0x73, 0x12, 0xe4, 0x01, 0x0a, 0x15, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x49, 0x73, - 0x56, 0x41, 0x41, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x2a, 0x2e, 0x70, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, - 0x6e, 0x6f, 0x72, 0x49, 0x73, 0x56, 0x41, 0x41, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x49, - 0x73, 0x56, 0x41, 0x41, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x12, 0x6a, 0x2f, 0x76, - 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x2f, 0x69, 0x73, 0x5f, 0x76, 0x61, - 0x61, 0x5f, 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x63, - 0x68, 0x61, 0x69, 0x6e, 0x7d, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, - 0x64, 0x2e, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x7d, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x14, 0x47, 0x6f, 0x76, - 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x29, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, + 0x74, 0x47, 0x75, 0x61, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x75, 0x61, + 0x72, 0x64, 0x69, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x75, + 0x61, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x73, 0x65, 0x74, 0x2f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x12, 0xcc, 0x01, 0x0a, 0x23, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, + 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x42, 0x79, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x12, 0x38, 0x2e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, + 0x72, 0x47, 0x65, 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x41, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, + 0x79, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x65, + 0x72, 0x6e, 0x6f, 0x72, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, + 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x12, 0x9a, 0x01, 0x0a, 0x17, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x56, 0x41, 0x41, 0x73, 0x12, 0x2c, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, - 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, - 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x2f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x75, 0x73, 0x6f, 0x6e, - 0x65, 0x2f, 0x77, 0x6f, 0x72, 0x6d, 0x68, 0x6f, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, - 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x3b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x56, + 0x41, 0x41, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, + 0x6f, 0x72, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x56, 0x41, 0x41, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x2f, + 0x65, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x61, 0x73, 0x12, 0xe4, 0x01, + 0x0a, 0x15, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x49, 0x73, 0x56, 0x41, 0x41, 0x45, + 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x12, 0x2a, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, + 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x49, + 0x73, 0x56, 0x41, 0x41, 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x49, 0x73, 0x56, 0x41, 0x41, + 0x45, 0x6e, 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x72, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x6c, 0x12, 0x6a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, + 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x2f, 0x69, 0x73, 0x5f, 0x76, 0x61, 0x61, 0x5f, 0x65, 0x6e, + 0x71, 0x75, 0x65, 0x75, 0x65, 0x64, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x2e, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, + 0x7d, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x65, 0x6d, + 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x7d, 0x2f, 0x7b, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x2e, 0x73, 0x65, 0x71, 0x75, 0x65, + 0x6e, 0x63, 0x65, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x14, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, + 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x2e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, + 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, + 0x47, 0x65, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, + 0x31, 0x2f, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x6e, 0x6f, 0x72, 0x2f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x65, 0x72, 0x74, 0x75, 0x73, 0x6f, 0x6e, 0x65, 0x2f, 0x77, 0x6f, + 0x72, 0x6d, 0x68, 0x6f, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x64, 0x65, 0x2f, 0x70, 0x6b, 0x67, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2f, + 0x76, 0x31, 0x3b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/node/pkg/query/query.go b/node/pkg/query/query.go index cf75f5805..c3d44f235 100644 --- a/node/pkg/query/query.go +++ b/node/pkg/query/query.go @@ -128,25 +128,28 @@ func handleQueryRequestsImpl( // CCQ is currently only supported on EVM. supportedChains := map[vaa.ChainID]struct{}{ - vaa.ChainIDEthereum: {}, - vaa.ChainIDBSC: {}, - vaa.ChainIDPolygon: {}, - vaa.ChainIDAvalanche: {}, - vaa.ChainIDOasis: {}, - vaa.ChainIDAurora: {}, - vaa.ChainIDFantom: {}, - vaa.ChainIDKarura: {}, - vaa.ChainIDAcala: {}, - vaa.ChainIDKlaytn: {}, - vaa.ChainIDCelo: {}, - vaa.ChainIDMoonbeam: {}, - vaa.ChainIDNeon: {}, - vaa.ChainIDArbitrum: {}, - vaa.ChainIDOptimism: {}, - vaa.ChainIDBase: {}, - vaa.ChainIDScroll: {}, - vaa.ChainIDMantle: {}, - vaa.ChainIDSepolia: {}, + vaa.ChainIDEthereum: {}, + vaa.ChainIDBSC: {}, + vaa.ChainIDPolygon: {}, + vaa.ChainIDAvalanche: {}, + vaa.ChainIDOasis: {}, + vaa.ChainIDAurora: {}, + vaa.ChainIDFantom: {}, + vaa.ChainIDKarura: {}, + vaa.ChainIDAcala: {}, + vaa.ChainIDKlaytn: {}, + vaa.ChainIDCelo: {}, + vaa.ChainIDMoonbeam: {}, + vaa.ChainIDNeon: {}, + vaa.ChainIDArbitrum: {}, + vaa.ChainIDOptimism: {}, + vaa.ChainIDBase: {}, + vaa.ChainIDScroll: {}, + vaa.ChainIDMantle: {}, + vaa.ChainIDSepolia: {}, + vaa.ChainIDArbitrumSepolia: {}, + vaa.ChainIDBaseSepolia: {}, + vaa.ChainIDOptimismSepolia: {}, } // But we don't want to allow CCQ if the chain is not enabled. diff --git a/node/pkg/watchers/evm/watcher.go b/node/pkg/watchers/evm/watcher.go index 4a0629314..ae904ebfa 100644 --- a/node/pkg/watchers/evm/watcher.go +++ b/node/pkg/watchers/evm/watcher.go @@ -764,7 +764,10 @@ func (w *Watcher) getFinality(ctx context.Context) (bool, bool, error) { w.chainID == vaa.ChainIDKarura || w.chainID == vaa.ChainIDMoonbeam || w.chainID == vaa.ChainIDOptimism || - w.chainID == vaa.ChainIDSepolia { + w.chainID == vaa.ChainIDSepolia || + w.chainID == vaa.ChainIDArbitrumSepolia || + w.chainID == vaa.ChainIDBaseSepolia || + w.chainID == vaa.ChainIDOptimismSepolia { finalized = true safe = true } else if w.chainID == vaa.ChainIDScroll { diff --git a/proto/publicrpc/v1/publicrpc.proto b/proto/publicrpc/v1/publicrpc.proto index 1a8b205cd..13ff07266 100644 --- a/proto/publicrpc/v1/publicrpc.proto +++ b/proto/publicrpc/v1/publicrpc.proto @@ -49,6 +49,9 @@ enum ChainID { CHAIN_ID_NEUTRON = 4003; CHAIN_ID_CELESTIA = 4004; CHAIN_ID_SEPOLIA = 10002; + CHAIN_ID_ARBITRUM_SEPOLIA = 10003; + CHAIN_ID_BASE_SEPOLIA = 10004; + CHAIN_ID_OPTIMISM_SEPOLIA = 10005; } // MessageID is a VAA's globally unique identifier (see data availability design document). diff --git a/sdk/js/CHANGELOG.md b/sdk/js/CHANGELOG.md index 70c441c0f..65423e3f8 100644 --- a/sdk/js/CHANGELOG.md +++ b/sdk/js/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.10.7 + +### Added + +Arbitrum on Sepolia support + +Base on Sepolia support + +Optimism on Sepolia support + ## 0.10.6 ### Added diff --git a/sdk/js/package.json b/sdk/js/package.json index e71801c37..efccf6b54 100644 --- a/sdk/js/package.json +++ b/sdk/js/package.json @@ -1,6 +1,6 @@ { "name": "@certusone/wormhole-sdk", - "version": "0.10.6", + "version": "0.10.7", "description": "SDK for interacting with Wormhole", "homepage": "https://wormhole.com", "main": "./lib/cjs/index.js", diff --git a/sdk/js/src/utils/consts.ts b/sdk/js/src/utils/consts.ts index e29e732f3..aaf9eeb59 100644 --- a/sdk/js/src/utils/consts.ts +++ b/sdk/js/src/utils/consts.ts @@ -40,6 +40,9 @@ export const CHAINS = { neutron: 4003, celestia: 4004, sepolia: 10002, + arbitrum_sepolia: 10003, + base_sepolia: 10004, + optimism_sepolia: 10005, } as const; export type ChainName = keyof typeof CHAINS; @@ -71,6 +74,9 @@ export const EVMChainNames = [ "scroll", "mantle", "sepolia", + "arbitrum_sepolia", + "base_sepolia", + "optimism_sepolia", ] as const; export type EVMChainName = typeof EVMChainNames[number]; @@ -302,6 +308,24 @@ const MAINNET = { token_bridge: undefined, nft_bridge: undefined, }, + arbitrum_sepolia: { + // This is testnet only. + core: undefined, + token_bridge: undefined, + nft_bridge: undefined, + }, + base_sepolia: { + // This is testnet only. + core: undefined, + token_bridge: undefined, + nft_bridge: undefined, + }, + optimism_sepolia: { + // This is testnet only. + core: undefined, + token_bridge: undefined, + nft_bridge: undefined, + }, cosmoshub: { core: undefined, token_bridge: undefined, @@ -517,6 +541,21 @@ const TESTNET = { token_bridge: "0xDB5492265f6038831E89f495670FF909aDe94bd9", nft_bridge: "0x6a0B52ac198e4870e5F3797d5B403838a5bbFD99", }, + arbitrum_sepolia: { + core: "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35", + token_bridge: "0xC7A204bDBFe983FCD8d8E61D02b475D4073fF97e", + nft_bridge: "0x23908A62110e21C04F3A4e011d24F901F911744A", + }, + base_sepolia: { + core: "0x79A1027a6A159502049F10906D333EC57E95F083", + token_bridge: "0x86F55A04690fd7815A3D802bD587e83eA888B239", + nft_bridge: "0x268557122Ffd64c85750d630b716471118F323c8", + }, + optimism_sepolia: { + core: "0x31377888146f3253211EFEf5c676D41ECe7D58Fe", + token_bridge: "0x99737Ec4B815d816c49A385943baf0380e75c0Ac", + nft_bridge: "0x27812285fbe85BA1DF242929B906B31EE3dd1b9f", + }, cosmoshub: { core: undefined, token_bridge: undefined, @@ -731,6 +770,21 @@ const DEVNET = { token_bridge: undefined, nft_bridge: undefined, }, + arbitrum_sepolia: { + core: undefined, + token_bridge: undefined, + nft_bridge: undefined, + }, + base_sepolia: { + core: undefined, + token_bridge: undefined, + nft_bridge: undefined, + }, + optimism_sepolia: { + core: undefined, + token_bridge: undefined, + nft_bridge: undefined, + }, cosmoshub: { core: undefined, token_bridge: undefined, @@ -838,6 +892,9 @@ export const CHAIN_ID_KUJIRA = CHAINS["kujira"]; export const CHAIN_ID_NEUTRON = CHAINS["neutron"]; export const CHAIN_ID_CELESTIA = CHAINS["celestia"]; export const CHAIN_ID_SEPOLIA = CHAINS["sepolia"]; +export const CHAIN_ID_ARBITRUM_SEPOLIA = CHAINS["arbitrum_sepolia"]; +export const CHAIN_ID_BASE_SEPOLIA = CHAINS["base_sepolia"]; +export const CHAIN_ID_OPTIMISM_SEPOLIA = CHAINS["optimism_sepolia"]; // This inverts the [[CHAINS]] object so that we can look up a chain by id export type ChainIdToName = { diff --git a/sdk/testnet_consts.go b/sdk/testnet_consts.go index ec9a90ede..d1d16072d 100644 --- a/sdk/testnet_consts.go +++ b/sdk/testnet_consts.go @@ -8,59 +8,65 @@ var KnownTestnetEmitters = buildKnownEmitters(knownTestnetTokenbridgeEmitters, k // KnownTestnetTokenbridgeEmitters is a map of known tokenbridge emitters on the various L1 testnets. var KnownTestnetTokenbridgeEmitters = buildEmitterMap(knownTestnetTokenbridgeEmitters) var knownTestnetTokenbridgeEmitters = map[vaa.ChainID]string{ - vaa.ChainIDSolana: "3b26409f8aaded3f5ddca184695aa6a0fa829b0c85caf84856324896d214ca98", - vaa.ChainIDEthereum: "000000000000000000000000f890982f9310df57d00f659cf4fd87e65aded8d7", - vaa.ChainIDTerra: "0000000000000000000000000c32d68d8f22613f6b9511872dad35a59bfdf7f0", - vaa.ChainIDTerra2: "c3d4c6c2bcba163de1defb7e8f505cdb40619eee4fa618678955e8790ae1448d", - vaa.ChainIDBSC: "0000000000000000000000009dcf9d205c9de35334d646bee44b2d2859712a09", - vaa.ChainIDPolygon: "000000000000000000000000377D55a7928c046E18eEbb61977e714d2a76472a", - vaa.ChainIDAvalanche: "00000000000000000000000061e44e506ca5659e6c0bba9b678586fa2d729756", - vaa.ChainIDOasis: "00000000000000000000000088d8004a9bdbfd9d28090a02010c19897a29605c", - vaa.ChainIDAlgorand: "6241ffdc032b693bfb8544858f0403dec86f2e1720af9f34f8d65fe574b6238c", - vaa.ChainIDAptos: "0000000000000000000000000000000000000000000000000000000000000001", - vaa.ChainIDAurora: "000000000000000000000000d05ed3ad637b890d68a854d607eeaf11af456fba", - vaa.ChainIDFantom: "000000000000000000000000599cea2204b4faecd584ab1f2b6aca137a0afbe8", - vaa.ChainIDKarura: "000000000000000000000000d11de1f930ea1f7dd0290fe3a2e35b9c91aefb37", - vaa.ChainIDAcala: "000000000000000000000000eba00cbe08992edd08ed7793e07ad6063c807004", - vaa.ChainIDKlaytn: "000000000000000000000000c7a13be098720840dea132d860fdfa030884b09a", - vaa.ChainIDCelo: "00000000000000000000000005ca6037ec51f8b712ed2e6fa72219feae74e153", - vaa.ChainIDNear: "c2c0b6ecbbe9ecf91b2b7999f0264018ba68126c2e83bf413f59f712f3a1df55", - vaa.ChainIDMantle: "000000000000000000000000C7A204bDBFe983FCD8d8E61D02b475D4073fF97e", - vaa.ChainIDMoonbeam: "000000000000000000000000bc976d4b9d57e57c3ca52e1fd136c45ff7955a96", - vaa.ChainIDArbitrum: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", - vaa.ChainIDOptimism: "000000000000000000000000C7A204bDBFe983FCD8d8E61D02b475D4073fF97e", - vaa.ChainIDNeon: "000000000000000000000000c7a204bdbfe983fcd8d8e61d02b475d4073ff97e", - vaa.ChainIDXpla: "b66da121bd3621c8d2604c08c82965640fe682d606af26a302ee09094f5e62cf", - vaa.ChainIDInjective: "00000000000000000000000003f3e7b2e363f51cf6e57ef85f43a2b91dbce501", - vaa.ChainIDSui: "40440411a170b4842ae7dee4f4a7b7a58bc0a98566e998850a7bb87bf5dc05b9", - vaa.ChainIDBase: "000000000000000000000000A31aa3FDb7aF7Db93d18DDA4e19F811342EDF780", - vaa.ChainIDSei: "9328673cb5de3fd99974cefbbd90fea033f4c59a572abfd7e1a4eebcc5d18157", - vaa.ChainIDScroll: "00000000000000000000000022427d90B7dA3fA4642F7025A854c7254E4e45BF", - vaa.ChainIDSepolia: "000000000000000000000000DB5492265f6038831E89f495670FF909aDe94bd9", - vaa.ChainIDWormchain: "ef5251ea1e99ae48732800ccc7b83b57881232a73eb796b63b1d86ed2ea44e27", + vaa.ChainIDSolana: "3b26409f8aaded3f5ddca184695aa6a0fa829b0c85caf84856324896d214ca98", + vaa.ChainIDEthereum: "000000000000000000000000f890982f9310df57d00f659cf4fd87e65aded8d7", + vaa.ChainIDTerra: "0000000000000000000000000c32d68d8f22613f6b9511872dad35a59bfdf7f0", + vaa.ChainIDTerra2: "c3d4c6c2bcba163de1defb7e8f505cdb40619eee4fa618678955e8790ae1448d", + vaa.ChainIDBSC: "0000000000000000000000009dcf9d205c9de35334d646bee44b2d2859712a09", + vaa.ChainIDPolygon: "000000000000000000000000377D55a7928c046E18eEbb61977e714d2a76472a", + vaa.ChainIDAvalanche: "00000000000000000000000061e44e506ca5659e6c0bba9b678586fa2d729756", + vaa.ChainIDOasis: "00000000000000000000000088d8004a9bdbfd9d28090a02010c19897a29605c", + vaa.ChainIDAlgorand: "6241ffdc032b693bfb8544858f0403dec86f2e1720af9f34f8d65fe574b6238c", + vaa.ChainIDAptos: "0000000000000000000000000000000000000000000000000000000000000001", + vaa.ChainIDAurora: "000000000000000000000000d05ed3ad637b890d68a854d607eeaf11af456fba", + vaa.ChainIDFantom: "000000000000000000000000599cea2204b4faecd584ab1f2b6aca137a0afbe8", + vaa.ChainIDKarura: "000000000000000000000000d11de1f930ea1f7dd0290fe3a2e35b9c91aefb37", + vaa.ChainIDAcala: "000000000000000000000000eba00cbe08992edd08ed7793e07ad6063c807004", + vaa.ChainIDKlaytn: "000000000000000000000000c7a13be098720840dea132d860fdfa030884b09a", + vaa.ChainIDCelo: "00000000000000000000000005ca6037ec51f8b712ed2e6fa72219feae74e153", + vaa.ChainIDNear: "c2c0b6ecbbe9ecf91b2b7999f0264018ba68126c2e83bf413f59f712f3a1df55", + vaa.ChainIDMantle: "000000000000000000000000C7A204bDBFe983FCD8d8E61D02b475D4073fF97e", + vaa.ChainIDMoonbeam: "000000000000000000000000bc976d4b9d57e57c3ca52e1fd136c45ff7955a96", + vaa.ChainIDArbitrum: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", + vaa.ChainIDOptimism: "000000000000000000000000C7A204bDBFe983FCD8d8E61D02b475D4073fF97e", + vaa.ChainIDNeon: "000000000000000000000000c7a204bdbfe983fcd8d8e61d02b475d4073ff97e", + vaa.ChainIDXpla: "b66da121bd3621c8d2604c08c82965640fe682d606af26a302ee09094f5e62cf", + vaa.ChainIDInjective: "00000000000000000000000003f3e7b2e363f51cf6e57ef85f43a2b91dbce501", + vaa.ChainIDSui: "40440411a170b4842ae7dee4f4a7b7a58bc0a98566e998850a7bb87bf5dc05b9", + vaa.ChainIDBase: "000000000000000000000000A31aa3FDb7aF7Db93d18DDA4e19F811342EDF780", + vaa.ChainIDSei: "9328673cb5de3fd99974cefbbd90fea033f4c59a572abfd7e1a4eebcc5d18157", + vaa.ChainIDScroll: "00000000000000000000000022427d90B7dA3fA4642F7025A854c7254E4e45BF", + vaa.ChainIDSepolia: "000000000000000000000000DB5492265f6038831E89f495670FF909aDe94bd9", + vaa.ChainIDArbitrumSepolia: "000000000000000000000000C7A204bDBFe983FCD8d8E61D02b475D4073fF97e", + vaa.ChainIDBaseSepolia: "00000000000000000000000086F55A04690fd7815A3D802bD587e83eA888B239", + vaa.ChainIDOptimismSepolia: "00000000000000000000000099737Ec4B815d816c49A385943baf0380e75c0Ac", + vaa.ChainIDWormchain: "ef5251ea1e99ae48732800ccc7b83b57881232a73eb796b63b1d86ed2ea44e27", } // KnownTestnetNFTBridgeEmitters is a map of known NFT emitters on the various L1 testnets. var KnownTestnetNFTBridgeEmitters = buildEmitterMap(knownTestnetNFTBridgeEmitters) var knownTestnetNFTBridgeEmitters = map[vaa.ChainID]string{ - vaa.ChainIDSolana: "752a49814e40b96b097207e4b53fdd330544e1e661653fbad4bc159cc28a839e", - vaa.ChainIDEthereum: "000000000000000000000000d8e4c2dbdd2e2bd8f1336ea691dbff6952b1a6eb", - vaa.ChainIDBSC: "000000000000000000000000cd16e5613ef35599dc82b24cb45b5a93d779f1ee", - vaa.ChainIDPolygon: "00000000000000000000000051a02d0dcb5e52f5b92bdaa38fa013c91c7309a9", - vaa.ChainIDAvalanche: "000000000000000000000000d601baf2eee3c028344471684f6b27e789d9075d", - vaa.ChainIDOasis: "000000000000000000000000c5c25b41ab0b797571620f5204afa116a44c0eba", - vaa.ChainIDAurora: "0000000000000000000000008f399607e9ba2405d87f5f3e1b78d950b44b2e24", - vaa.ChainIDFantom: "00000000000000000000000063ed9318628d26bdcb15df58b53bb27231d1b227", - vaa.ChainIDKarura: "0000000000000000000000000a693c2d594292b6eb89cb50efe4b0b63dd2760d", - vaa.ChainIDAcala: "00000000000000000000000096f1335e0acab3cfd9899b30b2374e25a2148a6e", - vaa.ChainIDKlaytn: "00000000000000000000000094c994fc51c13101062958b567e743f1a04432de", - vaa.ChainIDCelo: "000000000000000000000000acd8190f647a31e56a656748bc30f69259f245db", - vaa.ChainIDMantle: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", - vaa.ChainIDMoonbeam: "00000000000000000000000098a0f4b96972b32fcb3bd03caeb66a44a6ab9edb", - vaa.ChainIDArbitrum: "000000000000000000000000Ee3dB83916Ccdc3593b734F7F2d16D630F39F1D0", - vaa.ChainIDOptimism: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", - vaa.ChainIDNeon: "00000000000000000000000023908a62110e21c04f3a4e011d24f901f911744a", - vaa.ChainIDBase: "000000000000000000000000F681d1cc5F25a3694E348e7975d7564Aa581db59", - vaa.ChainIDScroll: "00000000000000000000000047B9a1406BEe29a3001BFEB7e45aE45fFFB40c18", - vaa.ChainIDSepolia: "0000000000000000000000006a0B52ac198e4870e5F3797d5B403838a5bbFD99", + vaa.ChainIDSolana: "752a49814e40b96b097207e4b53fdd330544e1e661653fbad4bc159cc28a839e", + vaa.ChainIDEthereum: "000000000000000000000000d8e4c2dbdd2e2bd8f1336ea691dbff6952b1a6eb", + vaa.ChainIDBSC: "000000000000000000000000cd16e5613ef35599dc82b24cb45b5a93d779f1ee", + vaa.ChainIDPolygon: "00000000000000000000000051a02d0dcb5e52f5b92bdaa38fa013c91c7309a9", + vaa.ChainIDAvalanche: "000000000000000000000000d601baf2eee3c028344471684f6b27e789d9075d", + vaa.ChainIDOasis: "000000000000000000000000c5c25b41ab0b797571620f5204afa116a44c0eba", + vaa.ChainIDAurora: "0000000000000000000000008f399607e9ba2405d87f5f3e1b78d950b44b2e24", + vaa.ChainIDFantom: "00000000000000000000000063ed9318628d26bdcb15df58b53bb27231d1b227", + vaa.ChainIDKarura: "0000000000000000000000000a693c2d594292b6eb89cb50efe4b0b63dd2760d", + vaa.ChainIDAcala: "00000000000000000000000096f1335e0acab3cfd9899b30b2374e25a2148a6e", + vaa.ChainIDKlaytn: "00000000000000000000000094c994fc51c13101062958b567e743f1a04432de", + vaa.ChainIDCelo: "000000000000000000000000acd8190f647a31e56a656748bc30f69259f245db", + vaa.ChainIDMantle: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", + vaa.ChainIDMoonbeam: "00000000000000000000000098a0f4b96972b32fcb3bd03caeb66a44a6ab9edb", + vaa.ChainIDArbitrum: "000000000000000000000000Ee3dB83916Ccdc3593b734F7F2d16D630F39F1D0", + vaa.ChainIDOptimism: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", + vaa.ChainIDNeon: "00000000000000000000000023908a62110e21c04f3a4e011d24f901f911744a", + vaa.ChainIDBase: "000000000000000000000000F681d1cc5F25a3694E348e7975d7564Aa581db59", + vaa.ChainIDScroll: "00000000000000000000000047B9a1406BEe29a3001BFEB7e45aE45fFFB40c18", + vaa.ChainIDSepolia: "0000000000000000000000006a0B52ac198e4870e5F3797d5B403838a5bbFD99", + vaa.ChainIDArbitrumSepolia: "00000000000000000000000023908A62110e21C04F3A4e011d24F901F911744A", + vaa.ChainIDBaseSepolia: "000000000000000000000000268557122Ffd64c85750d630b716471118F323c8", + vaa.ChainIDOptimismSepolia: "00000000000000000000000027812285fbe85BA1DF242929B906B31EE3dd1b9f", } diff --git a/sdk/vaa/structs.go b/sdk/vaa/structs.go index 3ade1d17c..64661622f 100644 --- a/sdk/vaa/structs.go +++ b/sdk/vaa/structs.go @@ -230,6 +230,12 @@ func (c ChainID) String() string { return "celestia" case ChainIDSepolia: return "sepolia" + case ChainIDArbitrumSepolia: + return "arbitrum_sepolia" + case ChainIDBaseSepolia: + return "base_sepolia" + case ChainIDOptimismSepolia: + return "optimism_sepolia" default: return fmt.Sprintf("unknown chain ID: %d", c) } @@ -315,6 +321,12 @@ func ChainIDFromString(s string) (ChainID, error) { return ChainIDCelestia, nil case "sepolia": return ChainIDSepolia, nil + case "arbitrum_sepolia": + return ChainIDArbitrumSepolia, nil + case "base_sepolia": + return ChainIDBaseSepolia, nil + case "optimism_sepolia": + return ChainIDOptimismSepolia, nil default: return ChainIDUnset, fmt.Errorf("unknown chain ID: %s", s) } @@ -360,6 +372,9 @@ func GetAllNetworkIDs() []ChainID { ChainIDNeutron, ChainIDCelestia, ChainIDSepolia, + ChainIDArbitrumSepolia, + ChainIDBaseSepolia, + ChainIDOptimismSepolia, } } @@ -441,6 +456,12 @@ const ( ChainIDCelestia ChainID = 4004 // ChainIDSepolia is the ChainID of Sepolia ChainIDSepolia ChainID = 10002 + // ChainIDArbitrumSepolia is the ChainID of Arbitrum on Sepolia + ChainIDArbitrumSepolia ChainID = 10003 + // ChainIDBaseSepolia is the ChainID of Base on Sepolia + ChainIDBaseSepolia ChainID = 10004 + // ChainIDOptimismSepolia is the ChainID of Optimism on Sepolia + ChainIDOptimismSepolia ChainID = 10005 // Minimum VAA size is derrived from the following assumptions: // HEADER diff --git a/sdk/vaa/structs_test.go b/sdk/vaa/structs_test.go index 73f8cdf24..2c6b76300 100644 --- a/sdk/vaa/structs_test.go +++ b/sdk/vaa/structs_test.go @@ -65,6 +65,9 @@ func TestChainIDFromString(t *testing.T) { {input: "neutron", output: ChainIDNeutron}, {input: "celestia", output: ChainIDCelestia}, {input: "sepolia", output: ChainIDSepolia}, + {input: "arbitrum_sepolia", output: ChainIDArbitrumSepolia}, + {input: "base_sepolia", output: ChainIDBaseSepolia}, + {input: "optimism_sepolia", output: ChainIDOptimismSepolia}, {input: "Solana", output: ChainIDSolana}, {input: "Ethereum", output: ChainIDEthereum}, @@ -102,6 +105,9 @@ func TestChainIDFromString(t *testing.T) { {input: "Neutron", output: ChainIDNeutron}, {input: "Celestia", output: ChainIDCelestia}, {input: "Sepolia", output: ChainIDSepolia}, + {input: "Arbitrum_Sepolia", output: ChainIDArbitrumSepolia}, + {input: "Base_Sepolia", output: ChainIDBaseSepolia}, + {input: "Optimism_Sepolia", output: ChainIDOptimismSepolia}, } // Negative Test Cases @@ -279,6 +285,9 @@ func TestChainId_String(t *testing.T) { {input: 4003, output: "neutron"}, {input: 4004, output: "celestia"}, {input: 10002, output: "sepolia"}, + {input: 10003, output: "arbitrum_sepolia"}, + {input: 10004, output: "base_sepolia"}, + {input: 10005, output: "optimism_sepolia"}, {input: 10000, output: "unknown chain ID: 10000"}, }