prysm-pulse/proto/beacon/rpc/v1/services.proto
Preston Van Loon 4add403335
Validator Proposer Rewrite (#1462)
* WIP - with TODOs

* interface w/ test

* basic test for broadcast

* Add computeStateRoot funciton

* remove custody challenge

* resolve TODO lint issues

* more TODOs

* revert new line in types.proto

* broadcaster comment

* one of several failure condition tests

* Add test cases

* handle compute state error test case

* fix config in validator helpers

* fix tests too

* fix conflict

* partial PR feedback

* remove p2p

* gazelle

* package comment

* Better godoc
2019-02-05 08:47:25 -05:00

110 lines
2.8 KiB
Protocol Buffer

syntax = "proto3";
package ethereum.beacon.rpc.v1;
import "proto/beacon/p2p/v1/types.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/timestamp.proto";
service BeaconService {
rpc WaitForChainStart(google.protobuf.Empty) returns (stream ChainStartResponse);
// CanonicalHead can be called on demand to fetch the current, head block of a beacon node.
rpc CanonicalHead(google.protobuf.Empty) returns (ethereum.beacon.p2p.v1.BeaconBlock);
// LatestAttestation streams the latest aggregated attestation to connected validator clients.
rpc LatestAttestation(google.protobuf.Empty) returns (stream ethereum.beacon.p2p.v1.Attestation);
rpc PendingDeposits(google.protobuf.Empty) returns (PendingDepositsResponse);
rpc Eth1Data(google.protobuf.Empty) returns (Eth1DataResponse);
}
service AttesterService {
rpc AttestHead(AttestRequest) returns (AttestResponse);
}
service ProposerService {
rpc ProposerIndex(ProposerIndexRequest) returns (ProposerIndexResponse);
rpc ProposeBlock(ethereum.beacon.p2p.v1.BeaconBlock) returns (ProposeResponse);
rpc ComputeStateRoot(ethereum.beacon.p2p.v1.BeaconBlock) returns (StateRootResponse);
}
service ValidatorService {
rpc ValidatorIndex(ValidatorIndexRequest) returns (ValidatorIndexResponse);
rpc ValidatorEpochAssignments(ValidatorEpochAssignmentsRequest) returns (ValidatorEpochAssignmentsResponse);
}
message ChainStartResponse {
bool started = 1;
uint64 genesis_time = 2;
}
message ProposeRequest {
bytes parent_hash = 1;
uint64 slot_number = 2;
bytes randao_reveal_hash32 = 3;
bytes attestation_bitmask = 4;
repeated uint64 attestation_aggregate_sig = 5;
google.protobuf.Timestamp timestamp = 6;
}
message ProposeResponse {
bytes block_hash = 1;
}
message ProposerIndexRequest {
uint64 slot_number = 1;
}
message ProposerIndexResponse {
uint64 index = 1;
}
message StateRootResponse {
bytes state_root = 1;
}
message AttestRequest {
ethereum.beacon.p2p.v1.Attestation attestation = 1;
}
message AttestResponse {
bytes attestation_hash = 1;
}
enum ValidatorRole {
UNKNOWN = 0;
ATTESTER = 1;
PROPOSER = 2;
}
// Assignment defines a validator's assignment responsibilities.
message Assignment {
bytes public_key = 1;
uint64 shard = 2;
uint64 attester_slot = 3;
uint64 proposer_slot = 4;
}
message ValidatorIndexRequest {
bytes public_key = 1;
}
message ValidatorIndexResponse {
uint64 index = 1;
}
message ValidatorEpochAssignmentsRequest {
uint64 epoch_start = 1;
bytes public_key = 2;
}
message ValidatorEpochAssignmentsResponse {
Assignment assignment = 2;
}
message PendingDepositsResponse {
repeated ethereum.beacon.p2p.v1.Deposit pending_deposits = 1;
}
message Eth1DataResponse {
ethereum.beacon.p2p.v1.Eth1Data eth1_data = 1;
}