wormhole/proto/publicrpc/v1/publicrpc.proto

96 lines
2.8 KiB
Protocol Buffer

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";
enum ChainID {
CHAIN_ID_UNSPECIFIED = 0;
CHAIN_ID_SOLANA = 1;
CHAIN_ID_ETHEREUM = 2;
CHAIN_ID_TERRA = 3;
CHAIN_ID_BSC = 4;
}
// MessageID is a VAA's globally unique identifier (see data availability design document).
message MessageID {
// Emitter chain ID.
ChainID emitter_chain = 1;
// Hex-encoded (without leading 0x) emitter address.
string emitter_address = 2;
// Sequence number for (emitter_chain, emitter_address).
int64 sequence = 3;
}
// PublicRPCService service exposes endpoints to be consumed externally; GUIs, historical record keeping, etc.
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 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"
};
}
}
message GetSignedVAARequest {
MessageID message_id = 1;
}
message GetSignedVAAResponse {
bytes vaa_bytes = 1;
}
message GetLastHeartbeatsRequest {
}
message GetLastHeartbeatsResponse {
message Entry {
// Verified, hex-encoded (with leading 0x) guardian address. This is the guardian address
// which signed this heartbeat. The GuardianAddr field inside the heartbeat
// is NOT verified - remote nodes can put arbitrary data in it.
string verified_guardian_addr = 1;
// Base58-encoded libp2p node address that sent this heartbeat, used to
// distinguish between multiple nodes running for the same guardian.
string p2p_node_addr = 2;
// Raw heartbeat received from the network. Data is only as trusted
// as the guardian node that sent it - none of the fields are verified.
gossip.v1.Heartbeat raw_heartbeat = 3;
}
repeated Entry entries = 1;
}
message GetCurrentGuardianSetRequest {
}
message GetCurrentGuardianSetResponse {
GuardianSet guardian_set = 1;
}
message GuardianSet {
// Guardian set index
uint32 index = 1;
// List of guardian addresses as human-readable hex-encoded (leading 0x) addresses.
repeated string addresses = 2;
}