syntax = "proto3"; package ethereum.beacon.p2p.v1; import "proto/beacon/p2p/v1/types.proto"; enum Topic { UNKNOWN = 0; BEACON_BLOCK_ANNOUNCE = 1; BEACON_BLOCK_REQUEST = 2; BEACON_BLOCK_REQUEST_BY_SLOT_NUMBER = 3; BEACON_BLOCK_RESPONSE = 4; BATCHED_BEACON_BLOCK_REQUEST = 5; BATCHED_BEACON_BLOCK_RESPONSE = 6; CHAIN_HEAD_REQUEST = 7; CHAIN_HEAD_RESPONSE = 8; BEACON_STATE_HASH_ANNOUNCE = 9; BEACON_STATE_REQUEST = 10; BEACON_STATE_RESPONSE = 11; ATTESTATION_ANNOUNCE = 12; ATTESTATION_REQUEST = 13; ATTESTATION_RESPONSE = 14; } message Envelope { bytes span_context = 1; bytes payload = 2; } message BeaconBlockAnnounce { bytes hash = 1; uint64 slot_number = 2; } message BeaconBlockRequest { bytes hash = 1; } message BeaconBlockRequestBySlotNumber{ uint64 slot_number = 1; } message BeaconBlockResponse { BeaconBlock block = 1; Attestation attestation = 2; } message BatchedBeaconBlockRequest { uint64 start_slot = 1; uint64 end_slot =2; } message BatchedBeaconBlockResponse { repeated BeaconBlock batched_blocks = 1; } message ChainHeadRequest {} message ChainHeadResponse { bytes hash = 1; uint64 slot = 2; bytes finalized_state_root_hash32s = 3; } message BeaconStateHashAnnounce { bytes hash = 1; } message BeaconStateRequest { bytes finalized_state_root_hash32s = 1; } message BeaconStateResponse { BeaconState finalized_state = 1; BeaconState justified_state = 2; BeaconState canonical_state = 3; } message AttestationAnnounce { bytes hash = 1; } message AttestationRequest { bytes hash = 1; } message AttestationResponse { bytes hash = 1; Attestation attestation = 2; } message ProposerSlashingAnnounce { bytes hash = 1; } message ProposerSlashingRequest { bytes hash = 1; } message ProposerSlashingResponse { bytes hash = 1; ProposerSlashing proposer_slashing = 2; } message AttesterSlashingAnnounce { bytes hash = 1; } message AttesterSlashingRequest { bytes hash = 1; } message AttesterSlashingResponse { bytes hash = 1; AttesterSlashing Attester_slashing = 2; } message DepositAnnounce { bytes hash = 1; } message DepositRequest { bytes hash = 1; } message DepositResponse { bytes hash = 1; Deposit deposit = 2; } message ExitAnnounce { bytes hash = 1; } message ExitRequest { bytes hash = 1; } message ExitResponse { bytes hash = 1; VoluntaryExit voluntary_exit = 2; }