prysm-pulse/proto/beacon/rpc/v1/services.proto
terence tsao 1b5b8a57e0 Remove unused proto schemas (#3005)
* Update io_kubernetes_build commit hash to 1246899

* Update dependency build_bazel_rules_nodejs to v0.33.1

* Update dependency com_github_hashicorp_golang_lru to v0.5.1

* Update libp2p

* Update io_bazel_rules_k8s commit hash to e68d5d7

* Starting to remove old protos

* Bazel build proto passes

* Fixing pb version

* Cleaned up core package

* Fixing tests

* 6 tests failing

* Update proto bugs

* Fixed incorrect validator ordering proto

* Sync with master

* Update go-ssz commit

* Removed bad copies from v1alpha1 folder

* add json spec json to pb handler

* add nested proto example

* proto/testing test works

* fix refactoring build failures

* use merged ssz

* push latest changes

* used forked json encoding

* used forked json encoding

* fix warning

* fix build issues

* fix test and lint

* fix build

* lint
2019-07-22 10:03:57 -04:00

207 lines
5.1 KiB
Protocol Buffer

syntax = "proto3";
package ethereum.beacon.rpc.v1;
import "google/protobuf/empty.proto";
import "proto/beacon/p2p/v1/types.proto";
import "proto/eth/v1alpha1/beacon_block.proto";
import "proto/eth/v1alpha1/attestation.proto";
import "google/api/annotations.proto";
import "protoc-gen-swagger/options/annotations.proto";
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = {
info: {
title: "Prysm";
version: "0.0.0";
contact: {
name: "Prysmatic Labs";
url: "https://prysmaticlabs.com";
email: "team@prysmaticlabs.com";
};
license: {
name: "GNU General Public License v3.0";
url: "https://github.com/prysmaticlabs/prysm/blob/master/LICENSE.md";
};
description: "JSON RPC services provided by Prysm."
};
external_docs: {
url: "https://github.com/prysmaticlabs/prysm";
description : "Prysm Github";
};
host: "api.prylabs.net",
schemes: HTTPS;
consumes: "application/json";
consumes: "application/grpc-web-text";
consumes: "application/grpc-web-json";
produces: "application/json";
produces: "application/grpc-web-text";
consumes: "application/grpc-web-json";
};
service BeaconService {
rpc WaitForChainStart(google.protobuf.Empty) returns (stream ChainStartResponse);
rpc CanonicalHead(google.protobuf.Empty) returns (ethereum.eth.v1alpha1.BeaconBlock);
rpc BlockTree(google.protobuf.Empty) returns (BlockTreeResponse) {
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
summary: "Fetches block tree since last finalized block.";
};
option (google.api.http) = {
get: "/v1/beacon/blocktree";
};
}
rpc BlockTreeBySlots(TreeBlockSlotRequest) returns (BlockTreeResponse);
}
service AttesterService {
rpc RequestAttestation(AttestationRequest) returns (ethereum.eth.v1alpha1.AttestationData);
rpc SubmitAttestation(ethereum.eth.v1alpha1.Attestation) returns (AttestResponse);
}
service ProposerService {
rpc RequestBlock(BlockRequest) returns (ethereum.eth.v1alpha1.BeaconBlock);
rpc ProposeBlock(ethereum.eth.v1alpha1.BeaconBlock) returns (ProposeResponse);
}
service ValidatorService {
rpc DomainData(DomainRequest) returns (DomainResponse);
rpc WaitForActivation(ValidatorActivationRequest) returns (stream ValidatorActivationResponse);
rpc ValidatorIndex(ValidatorIndexRequest) returns (ValidatorIndexResponse);
rpc CommitteeAssignment(AssignmentRequest) returns (AssignmentResponse);
rpc ValidatorStatus(ValidatorIndexRequest) returns (ValidatorStatusResponse);
rpc ValidatorPerformance(ValidatorPerformanceRequest) returns (ValidatorPerformanceResponse);
rpc ExitedValidators(ExitedValidatorsRequest) returns (ExitedValidatorsResponse);
}
message BlockRequest {
uint64 slot = 1;
bytes randao_reveal = 2;
}
message ProposeResponse {
bytes block_root = 1;
}
message AttestationRequest {
bytes public_key = 1;
bytes poc_bit = 2;
uint64 slot = 3;
uint64 shard = 4;
}
message AttestResponse {
bytes root = 1;
}
message ValidatorPerformanceRequest {
uint64 slot = 1;
bytes public_key = 2;
}
message ValidatorPerformanceResponse {
uint64 balance = 1;
uint64 total_validators = 2;
uint64 total_active_validators = 3;
float average_active_validator_balance = 4;
}
message ValidatorActivationRequest {
repeated bytes public_keys = 1;
}
message ValidatorActivationResponse {
repeated bytes activated_public_keys = 1 [deprecated = true];
message Status {
bytes public_key = 1;
ValidatorStatusResponse status = 2;
}
repeated Status statuses = 2;
}
message ExitedValidatorsRequest {
repeated bytes public_keys = 1;
}
message ExitedValidatorsResponse {
repeated bytes public_keys = 1;
}
message ChainStartResponse {
bool started = 1;
uint64 genesis_time = 2;
}
enum ValidatorRole {
UNKNOWN = 0;
ATTESTER = 1;
PROPOSER = 2;
}
message ValidatorIndexRequest {
bytes public_key = 1;
}
message ValidatorIndexResponse {
uint64 index = 1;
}
message AssignmentRequest {
uint64 epoch_start = 1;
repeated bytes public_keys = 2;
}
message AssignmentResponse {
repeated ValidatorAssignment validator_assignment = 1;
message ValidatorAssignment {
repeated uint64 committee = 1;
uint64 shard = 2;
uint64 slot = 3;
bool is_proposer = 4;
bytes public_key = 5;
ValidatorStatus status = 6;
}
}
message ValidatorStatusResponse {
ValidatorStatus status = 1;
uint64 eth1_deposit_block_number = 2;
uint64 deposit_inclusion_slot = 3;
uint64 activation_epoch = 4;
uint64 position_in_activation_queue = 5;
}
message DomainRequest {
uint64 epoch = 1;
bytes domain = 2;
}
message DomainResponse {
uint64 signature_domain = 1;
}
message BlockTreeResponse {
repeated TreeNode tree = 1;
message TreeNode {
ethereum.eth.v1alpha1.BeaconBlock block = 1;
bytes block_root = 2;
uint64 participated_votes = 3;
uint64 total_votes = 4;
}
}
enum ValidatorStatus {
UNKNOWN_STATUS = 0;
PENDING_ACTIVE = 1;
ACTIVE = 2;
INITIATED_EXIT = 3;
WITHDRAWABLE = 4;
EXITED = 5;
EXITED_SLASHED = 6;
}
message TreeBlockSlotRequest {
uint64 slot_from = 1 ;
uint64 slot_to = 2 ;
}