Browse Source

feat: add plasma, creditcoin, and missing xrplevm values (#4494)

* feat: add plasma, creditcoin, and missing xrplevm values

fix: add xprlevm to adminnodes and node rpcMap

add plasma to publicrpc.proto and generate new code

deploy core contracts to plasma testnet

--- Plasma Testnet ---
-- Wormhole Core Addresses --------------------------------------------------
| Setup address                | 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938 |
| Implementation address       | 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350 |
| Wormhole address             | 0xaBf89de706B583424328B54dD05a8fC986750Da8 |
-----------------------------------------------------------------------------

./verify -r https://testnet-rpc.plasma.to -c plasma build-forge/Implementation.sol/Implementation.json 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350
Deployed bytecode of 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350 on plasma matches build-forge/Implementation.sol/Implementation.json

./verify -r https://testnet-rpc.plasma.to -c plasma build-forge/Setup.sol/Setup.json 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938
Deployed bytecode of 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938 on plasma matches build-forge/Setup.sol/Setup.json

./verify -r https://testnet-rpc.plasma.to -c plasma build-forge/Wormhole.sol/Wormhole.json 0xaBf89de706B583424328B54dD05a8fC986750Da8
Deployed bytecode of 0xaBf89de706B583424328B54dD05a8fC986750Da8 on plasma matches build-forge/Wormhole.sol/Wormhole.json

add creditcoin info and config

deploy WH Core to CreditCoin

--- CreditCoin Testnet ---
-- Wormhole Core Addresses --------------------------------------------------
| Setup address                | 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938 |
| Implementation address       | 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350 |
| Wormhole address             | 0xaBf89de706B583424328B54dD05a8fC986750Da8 |
-----------------------------------------------------------------------------

./verify -r https://rpc.cc3-testnet.creditcoin.network -c creditcoin build-forge/Implementation.sol/Implementation.json 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350
Deployed bytecode of 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350 on creditcoin matches build-forge/Implementation.sol/Implementation.json

./verify -r https://rpc.cc3-testnet.creditcoin.network -c creditcoin build-forge/Setup.sol/Setup.json 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938
Deployed bytecode of 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938 on creditcoin matches build-forge/Setup.sol/Setup.json

./verify -r https://rpc.cc3-testnet.creditcoin.network -c creditcoin build-forge/Wormhole.sol/Wormhole.json 0xaBf89de706B583424328B54dD05a8fC986750Da8
Deployed bytecode of 0xaBf89de706B583424328B54dD05a8fC986750Da8 on creditcoin matches build-forge/Wormhole.sol/Wormhole.json

deploy WH core to CreditCoin mainnet

--- CreditCoin Mainnet ---
-- Wormhole Core Addresses --------------------------------------------------
| Setup address                | 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938 |
| Implementation address       | 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350 |
| Wormhole address             | 0xaBf89de706B583424328B54dD05a8fC986750Da8 |
-----------------------------------------------------------------------------

|- ./verify -r https://mainnet3.creditcoin.network -c creditcoin build-forge/Implementation.sol/Implementation.json 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350
Deployed bytecode of 0x32b3b68e9f053E724Da0A9e57F062BFaE6695350 on creditcoin matches build-forge/Implementation.sol/Implementation.json

./verify -r https://mainnet3.creditcoin.network -c creditcoin build-forge/Setup.sol/Setup.json 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938
Deployed bytecode of 0xe74F20a5A07921f63F2d55B8aE6d14f4AD490938 on creditcoin matches build-forge/Setup.sol/Setup.json

./verify -r https://mainnet3.creditcoin.network -c creditcoin build-forge/Wormhole.sol/Wormhole.json 0xaBf89de706B583424328B54dD05a8fC986750Da8
Deployed bytecode of 0xaBf89de706B583424328B54dD05a8fC986750Da8 on creditcoin matches build-forge/Wormhole.sol/Wormhole.json

* fix plasma and creditcoin cli flags for guardian
Aaron Clark 2 tháng trước cách đây
mục cha
commit
a194cd1445

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

@@ -0,0 +1,22 @@
+# forge 0.2.0 (ea2eff95b 2025-05-13T23:24:36.177577925Z)
+
+RPC_URL="https://mainnet3.creditcoin.network"
+FORGE_ARGS="--legacy --verifier blockscout --verifier-url https://creditcoin.blockscout.com/api/"
+CHAIN_NAME="CreditCoin"
+
+INIT_SIGNERS=["0x58CC3AE5C097b213cE3c81979e1B9f9570746AA5"]
+INIT_GOV_CHAIN_ID=0x1
+INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+INIT_CHAIN_ID=59
+INIT_EVM_CHAIN_ID=102030
+
+###                                 ###
+###  Bridge Contracts Not Deployed  ###
+###                                 ###
+
+# Bridge Migrations
+# BRIDGE_INIT_CHAIN_ID=59
+# BRIDGE_INIT_GOV_CHAIN_ID=0x1
+# BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+# BRIDGE_INIT_WETH=0x1f40d7292cFBe5Ed4c66aFc60c72f7b1012673df
+# BRIDGE_INIT_FINALITY=1

+ 24 - 0
ethereum/env/.env.creditcoin.testnet

@@ -0,0 +1,24 @@
+# forge 0.2.0 (ea2eff95b 2025-05-13T23:24:36.177577925Z)
+
+RPC_URL="https://rpc.cc3-testnet.creditcoin.network"
+FORGE_ARGS="--skip-simulation --verifier blockscout --verifier-url https://creditcoin-testnet.blockscout.com/api/"
+CHAIN_NAME="CreditCoinTestnet"
+
+INIT_SIGNERS=["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"]
+INIT_GOV_CHAIN_ID=0x1
+INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+INIT_CHAIN_ID=59
+INIT_EVM_CHAIN_ID=102031
+
+###                                 ###
+###  Bridge Contracts Not Deployed  ###
+###                                 ###
+
+# Bridge Migrations
+# BRIDGE_INIT_CHAIN_ID=59
+# BRIDGE_INIT_GOV_CHAIN_ID=0x1
+# BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+
+# There is no WETH
+# BRIDGE_INIT_WETH=0x0000000000000000000000000000000000000000
+# BRIDGE_INIT_FINALITY=1

+ 23 - 0
ethereum/env/.env.plasma.testnet

@@ -0,0 +1,23 @@
+# forge 0.2.0 (ea2eff95b 2025-05-13T23:24:36.177577925Z)
+
+RPC_URL="https://testnet-rpc.plasma.to"
+FORGE_ARGS="--skip-simulation"
+
+INIT_SIGNERS=["0x13947Bd48b18E53fdAeEe77F3473391aC727C638"]
+INIT_GOV_CHAIN_ID=0x1
+INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+INIT_CHAIN_ID=58
+INIT_EVM_CHAIN_ID=9746
+
+###                                 ###
+###  Bridge Contracts Not Deployed  ###
+###                                 ###
+
+# Bridge Migrations
+# BRIDGE_INIT_CHAIN_ID=58
+# BRIDGE_INIT_GOV_CHAIN_ID=0x1
+# BRIDGE_INIT_GOV_CONTRACT=0x0000000000000000000000000000000000000000000000000000000000000004
+
+# There is no WETH
+# BRIDGE_INIT_WETH=0x0000000000000000000000000000000000000000
+# BRIDGE_INIT_FINALITY=1

+ 3 - 0
node/cmd/guardiand/adminnodes.go

@@ -129,6 +129,9 @@ func runListNodes(cmd *cobra.Command, args []string) {
 		{"Fogo", vaa.ChainIDFogo},
 		{"Converge", vaa.ChainIDConverge},
 		{"Plume", vaa.ChainIDPlume},
+		{"XRPLEVM", vaa.ChainIDXRPLEVM},
+		{"Plasma", vaa.ChainIDPlasma},
+		{"CreditCoin", vaa.ChainIDCreditCoin},
 		// The IBC chains (4000 range) are not included here.
 		{"Sepolia", vaa.ChainIDSepolia},
 		{"ArbitrumSepolia", vaa.ChainIDArbitrumSepolia},

+ 39 - 0
node/cmd/guardiand/node.go

@@ -215,6 +215,12 @@ var (
 	xrplEvmRPC      *string
 	xrplEvmContract *string
 
+	plasmaRPC      *string
+	plasmaContract *string
+
+	creditCoinRPC      *string
+	creditCoinContract *string
+
 	sepoliaRPC      *string
 	sepoliaContract *string
 
@@ -458,6 +464,12 @@ func init() {
 	xrplEvmRPC = node.RegisterFlagWithValidationOrFail(NodeCmd, "xrplEvmRPC", "XRPLEVM RPC_URL", "ws://eth-devnet:8545", []string{"ws", "wss"})
 	xrplEvmContract = NodeCmd.Flags().String("xrplEvmContract", "", "XRPLEVM contract address")
 
+	plasmaRPC = node.RegisterFlagWithValidationOrFail(NodeCmd, "plasmaRPC", "PLASMA RPC_URL", "ws://eth-devnet:8545", []string{"ws", "wss"})
+	plasmaContract = NodeCmd.Flags().String("plasmaContract", "", "Plasma contract address")
+
+	creditCoinRPC = node.RegisterFlagWithValidationOrFail(NodeCmd, "creditCoinRPC", "CREDITCOIN RPC_URL", "ws://eth-devnet:8545", []string{"ws", "wss"})
+	creditCoinContract = NodeCmd.Flags().String("creditCoinContract", "", "CreditCoin contract address")
+
 	arbitrumSepoliaRPC = node.RegisterFlagWithValidationOrFail(NodeCmd, "arbitrumSepoliaRPC", "Arbitrum on Sepolia RPC URL", "ws://eth-devnet:8545", []string{"ws", "wss"})
 	arbitrumSepoliaContract = NodeCmd.Flags().String("arbitrumSepoliaContract", "", "Arbitrum on Sepolia contract address")
 
@@ -854,6 +866,8 @@ func runNode(cmd *cobra.Command, args []string) {
 	*convergeContract = checkEvmArgs(logger, *convergeRPC, *convergeContract, vaa.ChainIDConverge)
 	*plumeContract = checkEvmArgs(logger, *plumeRPC, *plumeContract, vaa.ChainIDPlume)
 	*xrplEvmContract = checkEvmArgs(logger, *xrplEvmRPC, *xrplEvmContract, vaa.ChainIDXRPLEVM)
+	*plasmaContract = checkEvmArgs(logger, *plasmaRPC, *plasmaContract, vaa.ChainIDPlasma)
+	*creditCoinContract = checkEvmArgs(logger, *creditCoinRPC, *creditCoinContract, vaa.ChainIDCreditCoin)
 
 	// These chains will only ever be testnet / devnet.
 	*sepoliaContract = checkEvmArgs(logger, *sepoliaRPC, *sepoliaContract, vaa.ChainIDSepolia)
@@ -1029,6 +1043,9 @@ func runNode(cmd *cobra.Command, args []string) {
 	rpcMap["mezoRPC"] = *mezoRPC
 	rpcMap["convergeRPC"] = *convergeRPC
 	rpcMap["plumeRPC"] = *plumeRPC
+	rpcMap["xrplevmRPC"] = *xrplEvmRPC
+	rpcMap["plasmaRPC"] = *plasmaRPC
+	rpcMap["creditcoinRPC"] = *creditCoinRPC
 
 	// Wormchain is in the 3000 range.
 	rpcMap["wormchainURL"] = *wormchainURL
@@ -1551,6 +1568,28 @@ func runNode(cmd *cobra.Command, args []string) {
 		watcherConfigs = append(watcherConfigs, wc)
 	}
 
+	if shouldStart(plasmaRPC) {
+		wc := &evm.WatcherConfig{
+			NetworkID:        "plasma",
+			ChainID:          vaa.ChainIDPlasma,
+			Rpc:              *plasmaRPC,
+			Contract:         *plasmaContract,
+			CcqBackfillCache: *ccqBackfillCache,
+		}
+		watcherConfigs = append(watcherConfigs, wc)
+	}
+
+	if shouldStart(creditCoinRPC) {
+		wc := &evm.WatcherConfig{
+			NetworkID:        "creditcoin",
+			ChainID:          vaa.ChainIDCreditCoin,
+			Rpc:              *creditCoinRPC,
+			Contract:         *creditCoinContract,
+			CcqBackfillCache: *ccqBackfillCache,
+		}
+		watcherConfigs = append(watcherConfigs, wc)
+	}
+
 	if shouldStart(terraWS) {
 		if env != common.UnsafeDevNet {
 			logger.Fatal("Terra classic is only allowed in unsafe dev mode")

+ 122 - 114
node/pkg/proto/publicrpc/v1/publicrpc.pb.go

@@ -83,6 +83,8 @@ const (
 	ChainID_CHAIN_ID_PLUME            ChainID = 55
 	ChainID_CHAIN_ID_AZTEC            ChainID = 56
 	ChainID_CHAIN_ID_XRPLEVM          ChainID = 57
+	ChainID_CHAIN_ID_PLASMA           ChainID = 58
+	ChainID_CHAIN_ID_CREDITCOIN       ChainID = 59
 	ChainID_CHAIN_ID_WORMCHAIN        ChainID = 3104
 	ChainID_CHAIN_ID_COSMOSHUB        ChainID = 4000
 	ChainID_CHAIN_ID_EVMOS            ChainID = 4001
@@ -154,6 +156,8 @@ var (
 		55:    "CHAIN_ID_PLUME",
 		56:    "CHAIN_ID_AZTEC",
 		57:    "CHAIN_ID_XRPLEVM",
+		58:    "CHAIN_ID_PLASMA",
+		59:    "CHAIN_ID_CREDITCOIN",
 		3104:  "CHAIN_ID_WORMCHAIN",
 		4000:  "CHAIN_ID_COSMOSHUB",
 		4001:  "CHAIN_ID_EVMOS",
@@ -222,6 +226,8 @@ var (
 		"CHAIN_ID_PLUME":            55,
 		"CHAIN_ID_AZTEC":            56,
 		"CHAIN_ID_XRPLEVM":          57,
+		"CHAIN_ID_PLASMA":           58,
+		"CHAIN_ID_CREDITCOIN":       59,
 		"CHAIN_ID_WORMCHAIN":        3104,
 		"CHAIN_ID_COSMOSHUB":        4000,
 		"CHAIN_ID_EVMOS":            4001,
@@ -1306,10 +1312,10 @@ var File_publicrpc_v1_publicrpc_proto protoreflect.FileDescriptor
 var file_publicrpc_v1_publicrpc_proto_rawDesc = []byte{
 	0x0a, 0x1c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2f, 0x76, 0x31, 0x2f, 0x70,
 	0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x1a, 0x16, 0x67, 0x6f,
-	0x73, 0x73, 0x69, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
-	0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
+	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x72, 0x70, 0x63, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x73, 0x73,
+	0x69, 0x70, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6f, 0x73, 0x73, 0x69, 0x70, 0x2e, 0x70, 0x72, 0x6f,
 	0x74, 0x6f, 0x22, 0x8c, 0x01, 0x0a, 0x09, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x44,
 	0x12, 0x3a, 0x0a, 0x0d, 0x65, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x69,
 	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
@@ -1429,7 +1435,7 @@ var file_publicrpc_v1_publicrpc_proto_rawDesc = []byte{
 	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, 0xc2, 0x0b, 0x0a, 0x07, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x44, 0x12, 0x18,
+	0x63, 0x65, 0x2a, 0xf0, 0x0b, 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,
@@ -1494,116 +1500,118 @@ var file_publicrpc_v1_publicrpc_proto_rawDesc = []byte{
 	0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x50, 0x4c, 0x55,
 	0x4d, 0x45, 0x10, 0x37, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44,
 	0x5f, 0x41, 0x5a, 0x54, 0x45, 0x43, 0x10, 0x38, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x48, 0x41, 0x49,
-	0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x58, 0x52, 0x50, 0x4c, 0x45, 0x56, 0x4d, 0x10, 0x39, 0x12, 0x17,
-	0x0a, 0x12, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x57, 0x4f, 0x52, 0x4d, 0x43,
-	0x48, 0x41, 0x49, 0x4e, 0x10, 0xa0, 0x18, 0x12, 0x17, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x49, 0x4e,
-	0x5f, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x53, 0x4d, 0x4f, 0x53, 0x48, 0x55, 0x42, 0x10, 0xa0, 0x1f,
-	0x12, 0x13, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x45, 0x56, 0x4d,
-	0x4f, 0x53, 0x10, 0xa1, 0x1f, 0x12, 0x14, 0x0a, 0x0f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49,
-	0x44, 0x5f, 0x4b, 0x55, 0x4a, 0x49, 0x52, 0x41, 0x10, 0xa2, 0x1f, 0x12, 0x15, 0x0a, 0x10, 0x43,
-	0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x4f, 0x4e, 0x10,
-	0xa3, 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, 0x16, 0x0a, 0x11, 0x43, 0x48,
-	0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x47, 0x41, 0x5a, 0x45, 0x10,
-	0xa5, 0x1f, 0x12, 0x12, 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53,
-	0x45, 0x44, 0x41, 0x10, 0xa6, 0x1f, 0x12, 0x17, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f,
-	0x49, 0x44, 0x5f, 0x44, 0x59, 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xa7, 0x1f, 0x12,
-	0x18, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x56,
-	0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0xa8, 0x1f, 0x12, 0x13, 0x0a, 0x0e, 0x43, 0x48, 0x41,
-	0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x4e, 0x4f, 0x42, 0x4c, 0x45, 0x10, 0xa9, 0x1f, 0x12, 0x15,
-	0x0a, 0x10, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c,
-	0x49, 0x41, 0x10, 0x92, 0x4e, 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, 0x12, 0x15, 0x0a, 0x10, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x48, 0x4f,
-	0x4c, 0x45, 0x53, 0x4b, 0x59, 0x10, 0x96, 0x4e, 0x12, 0x1d, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x49,
-	0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x47, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x50,
-	0x4f, 0x4c, 0x49, 0x41, 0x10, 0x97, 0x4e, 0x32, 0xc6, 0x09, 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, 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, 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,
+	0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x58, 0x52, 0x50, 0x4c, 0x45, 0x56, 0x4d, 0x10, 0x39, 0x12, 0x13,
+	0x0a, 0x0f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x50, 0x4c, 0x41, 0x53, 0x4d,
+	0x41, 0x10, 0x3a, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f,
+	0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x43, 0x4f, 0x49, 0x4e, 0x10, 0x3b, 0x12, 0x17, 0x0a, 0x12,
+	0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x57, 0x4f, 0x52, 0x4d, 0x43, 0x48, 0x41,
+	0x49, 0x4e, 0x10, 0xa0, 0x18, 0x12, 0x17, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49,
+	0x44, 0x5f, 0x43, 0x4f, 0x53, 0x4d, 0x4f, 0x53, 0x48, 0x55, 0x42, 0x10, 0xa0, 0x1f, 0x12, 0x13,
+	0x0a, 0x0e, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x45, 0x56, 0x4d, 0x4f, 0x53,
+	0x10, 0xa1, 0x1f, 0x12, 0x14, 0x0a, 0x0f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f,
+	0x4b, 0x55, 0x4a, 0x49, 0x52, 0x41, 0x10, 0xa2, 0x1f, 0x12, 0x15, 0x0a, 0x10, 0x43, 0x48, 0x41,
+	0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x4f, 0x4e, 0x10, 0xa3, 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, 0x16, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x49,
+	0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x47, 0x41, 0x5a, 0x45, 0x10, 0xa5, 0x1f,
+	0x12, 0x12, 0x0a, 0x0d, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x45, 0x44,
+	0x41, 0x10, 0xa6, 0x1f, 0x12, 0x17, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44,
+	0x5f, 0x44, 0x59, 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xa7, 0x1f, 0x12, 0x18, 0x0a,
+	0x13, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x4e,
+	0x41, 0x4e, 0x43, 0x45, 0x10, 0xa8, 0x1f, 0x12, 0x13, 0x0a, 0x0e, 0x43, 0x48, 0x41, 0x49, 0x4e,
+	0x5f, 0x49, 0x44, 0x5f, 0x4e, 0x4f, 0x42, 0x4c, 0x45, 0x10, 0xa9, 0x1f, 0x12, 0x15, 0x0a, 0x10,
+	0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c, 0x49, 0x41,
+	0x10, 0x92, 0x4e, 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, 0x12,
+	0x15, 0x0a, 0x10, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x48, 0x4f, 0x4c, 0x45,
+	0x53, 0x4b, 0x59, 0x10, 0x96, 0x4e, 0x12, 0x1d, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f,
+	0x49, 0x44, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x47, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x50, 0x4f, 0x4c,
+	0x49, 0x41, 0x10, 0x97, 0x4e, 0x32, 0xc6, 0x09, 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, 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, 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, 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,
+	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 (

+ 3 - 0
node/pkg/query/query.go

@@ -141,6 +141,9 @@ var perChainConfig = map[vaa.ChainID]PerChainConfig{
 	vaa.ChainIDFogo:            {NumWorkers: 10, TimestampCacheSupported: true},
 	vaa.ChainIDConverge:        {NumWorkers: 1, TimestampCacheSupported: true},
 	vaa.ChainIDPlume:           {NumWorkers: 1, TimestampCacheSupported: true},
+	vaa.ChainIDXRPLEVM:         {NumWorkers: 1, TimestampCacheSupported: true},
+	vaa.ChainIDPlasma:          {NumWorkers: 1, TimestampCacheSupported: true},
+	vaa.ChainIDCreditCoin:      {NumWorkers: 1, TimestampCacheSupported: true},
 }
 
 // GetPerChainConfig returns the config for the specified chain. If the chain is not configured it returns an empty struct,

+ 4 - 0
node/pkg/watchers/evm/chain_config.go

@@ -102,6 +102,8 @@ var (
 		// vaa.ChainIDConverge: Not in Mainnet yet
 		vaa.ChainIDPlume:   {Finalized: true, Safe: true, EvmChainID: 98866, PublicRPC: "https://rpc.plume.org", ContractAddr: "0xaBf89de706B583424328B54dD05a8fC986750Da8"},
 		vaa.ChainIDXRPLEVM: {Finalized: true, Safe: true, EvmChainID: 1440000, PublicRPC: "https://rpc.xrplevm.org/", ContractAddr: "0xaBf89de706B583424328B54dD05a8fC986750Da8"},
+		// vaa.ChainIDPlasma: {Finalized: true, Safe: true, EvmChainID: _, PublicRPC: "", ContractAddr: ""},
+		vaa.ChainIDCreditCoin: {Finalized: true, Safe: true, EvmChainID: 102030, PublicRPC: "https://mainnet3.creditcoin.network", ContractAddr: "0xaBf89de706B583424328B54dD05a8fC986750Da8"},
 	}
 
 	// testnetChainConfig specifies the configuration for all chains enabled in Testnet.
@@ -150,6 +152,8 @@ var (
 		vaa.ChainIDConverge:        {Finalized: true, Safe: true, EvmChainID: 52085145, PublicRPC: "https://rpc-converge-testnet-1.t.conduit.xyz", ContractAddr: "0x556B259cFaCd9896B2773310080c7c3bcE90Ff01"},
 		vaa.ChainIDPlume:           {Finalized: true, Safe: true, EvmChainID: 98867, PublicRPC: "https://testnet-rpc.plume.org", ContractAddr: "0x81705b969cDcc6FbFde91a0C6777bE0EF3A75855"},
 		vaa.ChainIDXRPLEVM:         {Finalized: true, Safe: true, EvmChainID: 1449000, PublicRPC: "https://rpc.testnet.xrplevm.org/", ContractAddr: "0xaBf89de706B583424328B54dD05a8fC986750Da8"},
+		vaa.ChainIDPlasma:          {Finalized: true, Safe: true, EvmChainID: 9746, PublicRPC: "https://testnet-rpc.plasma.to", ContractAddr: "0xaBf89de706B583424328B54dD05a8fC986750Da8"},
+		vaa.ChainIDCreditCoin:      {Finalized: true, Safe: true, EvmChainID: 102031, PublicRPC: "https://rpc.cc3-testnet.creditcoin.network", ContractAddr: "0xaBf89de706B583424328B54dD05a8fC986750Da8"},
 		vaa.ChainIDSepolia:         {Finalized: true, Safe: true, EvmChainID: 11155111, PublicRPC: "https://ethereum-sepolia-rpc.publicnode.com", ContractAddr: "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78"},
 		vaa.ChainIDArbitrumSepolia: {Finalized: true, Safe: true, EvmChainID: 421614, PublicRPC: "https://arbitrum-sepolia-rpc.publicnode.com", ContractAddr: "0x6b9C8671cdDC8dEab9c719bB87cBd3e782bA6a35"},
 		vaa.ChainIDBaseSepolia:     {Finalized: true, Safe: true, EvmChainID: 84532, PublicRPC: "https://base-sepolia-rpc.publicnode.com", ContractAddr: "0x79A1027a6A159502049F10906D333EC57E95F083"},

+ 24 - 42
proto/publicrpc/v1/publicrpc.proto

@@ -2,10 +2,10 @@ syntax = "proto3";
 
 package publicrpc.v1;
 
-option go_package = "github.com/certusone/wormhole/node/pkg/proto/publicrpc/v1;publicrpcv1";
-
-import "gossip/v1/gossip.proto";
 import "google/api/annotations.proto";
+import "gossip/v1/gossip.proto";
+
+option go_package = "github.com/certusone/wormhole/node/pkg/proto/publicrpc/v1;publicrpcv1";
 
 enum ChainID {
   CHAIN_ID_UNSPECIFIED = 0;
@@ -66,6 +66,8 @@ enum ChainID {
   CHAIN_ID_PLUME = 55;
   CHAIN_ID_AZTEC = 56;
   CHAIN_ID_XRPLEVM = 57;
+  CHAIN_ID_PLASMA = 58;
+  CHAIN_ID_CREDITCOIN = 59;
   CHAIN_ID_WORMCHAIN = 3104;
   CHAIN_ID_COSMOSHUB = 4000;
   CHAIN_ID_EVMOS = 4001;
@@ -101,48 +103,33 @@ service PublicRPCService {
   // GetLastHeartbeats returns the last heartbeat received for each guardian node in the
   // node's active guardian set. Heartbeats received by nodes not in the guardian set are ignored.
   // The heartbeat value is null if no heartbeat has yet been received.
-  rpc GetLastHeartbeats (GetLastHeartbeatsRequest) returns (GetLastHeartbeatsResponse) {
-    option (google.api.http) = {
-      get: "/v1/heartbeats"
-    };
+  rpc GetLastHeartbeats(GetLastHeartbeatsRequest) returns (GetLastHeartbeatsResponse) {
+    option (google.api.http) = {get: "/v1/heartbeats"};
   }
 
-  rpc GetSignedVAA (GetSignedVAARequest) returns (GetSignedVAAResponse) {
-    option (google.api.http) = {
-      get: "/v1/signed_vaa/{message_id.emitter_chain}/{message_id.emitter_address}/{message_id.sequence}"
-    };
+  rpc GetSignedVAA(GetSignedVAARequest) returns (GetSignedVAAResponse) {
+    option (google.api.http) = {get: "/v1/signed_vaa/{message_id.emitter_chain}/{message_id.emitter_address}/{message_id.sequence}"};
   }
 
-  rpc GetCurrentGuardianSet (GetCurrentGuardianSetRequest) returns (GetCurrentGuardianSetResponse) {
-    option (google.api.http) = {
-      get: "/v1/guardianset/current"
-    };
+  rpc GetCurrentGuardianSet(GetCurrentGuardianSetRequest) returns (GetCurrentGuardianSetResponse) {
+    option (google.api.http) = {get: "/v1/guardianset/current"};
   }
 
-  rpc GovernorGetAvailableNotionalByChain (GovernorGetAvailableNotionalByChainRequest) returns (GovernorGetAvailableNotionalByChainResponse) {
-    option (google.api.http) = {
-      get: "/v1/governor/available_notional_by_chain"
-    };
+  rpc GovernorGetAvailableNotionalByChain(GovernorGetAvailableNotionalByChainRequest) returns (GovernorGetAvailableNotionalByChainResponse) {
+    option (google.api.http) = {get: "/v1/governor/available_notional_by_chain"};
   }
 
-  rpc GovernorGetEnqueuedVAAs (GovernorGetEnqueuedVAAsRequest) returns (GovernorGetEnqueuedVAAsResponse) {
-    option (google.api.http) = {
-      get: "/v1/governor/enqueued_vaas"
-    };
+  rpc GovernorGetEnqueuedVAAs(GovernorGetEnqueuedVAAsRequest) returns (GovernorGetEnqueuedVAAsResponse) {
+    option (google.api.http) = {get: "/v1/governor/enqueued_vaas"};
   }
 
-  rpc GovernorIsVAAEnqueued (GovernorIsVAAEnqueuedRequest) returns (GovernorIsVAAEnqueuedResponse) {
-    option (google.api.http) = {
-      get: "/v1/governor/is_vaa_enqueued/{message_id.emitter_chain}/{message_id.emitter_address}/{message_id.sequence}"
-    };
+  rpc GovernorIsVAAEnqueued(GovernorIsVAAEnqueuedRequest) returns (GovernorIsVAAEnqueuedResponse) {
+    option (google.api.http) = {get: "/v1/governor/is_vaa_enqueued/{message_id.emitter_chain}/{message_id.emitter_address}/{message_id.sequence}"};
   }
 
-  rpc GovernorGetTokenList (GovernorGetTokenListRequest) returns (GovernorGetTokenListResponse) {
-    option (google.api.http) = {
-      get: "/v1/governor/token_list"
-    };
+  rpc GovernorGetTokenList(GovernorGetTokenListRequest) returns (GovernorGetTokenListResponse) {
+    option (google.api.http) = {get: "/v1/governor/token_list"};
   }
-
 }
 
 message GetSignedVAARequest {
@@ -153,8 +140,7 @@ message GetSignedVAAResponse {
   bytes vaa_bytes = 1;
 }
 
-message GetLastHeartbeatsRequest {
-}
+message GetLastHeartbeatsRequest {}
 
 message GetLastHeartbeatsResponse {
   message Entry {
@@ -175,8 +161,7 @@ message GetLastHeartbeatsResponse {
   repeated Entry entries = 1;
 }
 
-message GetCurrentGuardianSetRequest {
-}
+message GetCurrentGuardianSetRequest {}
 
 message GetCurrentGuardianSetResponse {
   GuardianSet guardian_set = 1;
@@ -189,8 +174,7 @@ message GuardianSet {
   repeated string addresses = 2;
 }
 
-message GovernorGetAvailableNotionalByChainRequest {
-}
+message GovernorGetAvailableNotionalByChainRequest {}
 
 message GovernorGetAvailableNotionalByChainResponse {
   message Entry {
@@ -205,8 +189,7 @@ message GovernorGetAvailableNotionalByChainResponse {
   repeated Entry entries = 1;
 }
 
-message GovernorGetEnqueuedVAAsRequest {
-}
+message GovernorGetEnqueuedVAAsRequest {}
 
 message GovernorGetEnqueuedVAAsResponse {
   message Entry {
@@ -230,8 +213,7 @@ message GovernorIsVAAEnqueuedResponse {
   bool is_enqueued = 1;
 }
 
-message GovernorGetTokenListRequest {
-}
+message GovernorGetTokenListRequest {}
 
 message GovernorGetTokenListResponse {
   message Entry {

+ 10 - 0
sdk/vaa/chainid_generated.go

@@ -108,6 +108,10 @@ func (c ChainID) String() string {
 		return "aztec"
 	case ChainIDXRPLEVM:
 		return "xrplevm"
+	case ChainIDPlasma:
+		return "plasma"
+	case ChainIDCreditCoin:
+		return "creditcoin"
 	case ChainIDWormchain:
 		return "wormchain"
 	case ChainIDCosmoshub:
@@ -248,6 +252,10 @@ func ChainIDFromString(s string) (ChainID, error) {
 		return ChainIDAztec, nil
 	case "xrplevm":
 		return ChainIDXRPLEVM, nil
+	case "plasma":
+		return ChainIDPlasma, nil
+	case "creditcoin":
+		return ChainIDCreditCoin, nil
 	case "wormchain":
 		return ChainIDWormchain, nil
 	case "cosmoshub":
@@ -338,6 +346,8 @@ func GetAllNetworkIDs() []ChainID {
 		ChainIDPlume,
 		ChainIDAztec,
 		ChainIDXRPLEVM,
+		ChainIDPlasma,
+		ChainIDCreditCoin,
 		ChainIDWormchain,
 		ChainIDCosmoshub,
 		ChainIDEvmos,

+ 4 - 0
sdk/vaa/structs.go

@@ -311,6 +311,10 @@ const (
 	ChainIDAztec ChainID = 56
 	// ChainIdXRPLEVM is the ChainID of XRPL-EVM
 	ChainIDXRPLEVM ChainID = 57
+	// ChainIDPlasma is the ChainID of Plasma
+	ChainIDPlasma ChainID = 58
+	// ChainIDCreditCoin is the ChainID of CreditCoin
+	ChainIDCreditCoin ChainID = 59
 
 	// ChainIDWormchain is the ChainID of Wormchain and is in its own range.
 	ChainIDWormchain ChainID = 3104