syntax = "proto3"; package ethereum.beacon.rpc.v1; import "proto/sharding/p2p/v1/messages.proto"; import "proto/beacon/p2p/v1/messages.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/timestamp.proto"; service BeaconService { rpc LatestBeaconBlock(google.protobuf.Empty) returns (stream ethereum.beacon.p2p.v1.BeaconBlock); rpc LatestCrystallizedState(google.protobuf.Empty) returns (stream ethereum.beacon.p2p.v1.CrystallizedState); rpc FetchShuffledValidatorIndices(ShuffleRequest) returns (ShuffleResponse); } service AttesterService { rpc SignBlock(SignRequest) returns (SignResponse); } service ProposerService { rpc ProposeBlock(ProposeRequest) returns (ProposeResponse); } message ShuffleRequest { bytes crystallized_state_hash = 1; } message ShuffleResponse { repeated uint64 shuffled_validator_indices = 1; repeated uint64 cutoff_indices = 2; repeated uint64 assigned_attestation_slots = 3; } message ProposeRequest { bytes parent_hash = 1; uint64 slot_number = 2; bytes randao_reveal = 3; bytes attestation_bitmask = 4; repeated uint32 attestation_aggregate_sig = 5; google.protobuf.Timestamp timestamp = 6; } message ProposeResponse { bytes block_hash = 1; } message SignRequest { bytes block_hash = 1; ethereum.sharding.p2p.v1.Signature signature = 2; } message SignResponse { bool signed = 1; }