// Copyright 2021 Prysmatic Labs. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package ethereum.eth.v2; import "proto/eth/ext/options.proto"; import "proto/eth/v1/attestation.proto"; import "proto/eth/v1/beacon_block.proto"; import "proto/eth/v1/beacon_state.proto"; import "proto/eth/v1/validator.proto"; import "proto/eth/v2/sync_committee.proto"; option csharp_namespace = "Ethereum.Eth.V2"; option go_package = "github.com/prysmaticlabs/prysm/proto/eth/v2;eth"; option java_multiple_files = true; option java_outer_classname = "SyncCommitteeProto"; option java_package = "org.ethereum.eth.v2"; option php_namespace = "Ethereum\\Eth\\v2"; message BeaconStateV2 { // Versioning [1001-2000] uint64 genesis_time = 1001; bytes genesis_validators_root = 1002 [(ethereum.eth.ext.ssz_size) = "32"]; uint64 slot = 1003 [(ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/eth2-types.Slot"]; v1.Fork fork = 1004; // History [2001-3000] v1.BeaconBlockHeader latest_block_header = 2001; repeated bytes block_roots = 2002 [(ethereum.eth.ext.ssz_size) = "block_roots.size"]; repeated bytes state_roots = 2003 [(ethereum.eth.ext.ssz_size) = "state_roots.size"]; repeated bytes historical_roots = 2004 [(ethereum.eth.ext.ssz_size) = "?,32", (ethereum.eth.ext.ssz_max) = "16777216"]; // Eth1 [3001-4000] v1.Eth1Data eth1_data = 3001; repeated v1.Eth1Data eth1_data_votes = 3002 [(ethereum.eth.ext.ssz_max) = "eth1_data_votes.size"]; uint64 eth1_deposit_index = 3003; // Registry [4001-5000] repeated v1.Validator validators = 4001 [(ethereum.eth.ext.ssz_max) = "1099511627776"]; repeated uint64 balances = 4002 [(ethereum.eth.ext.ssz_max) = "1099511627776"]; // Randomness [5001-6000] repeated bytes randao_mixes = 5001 [(ethereum.eth.ext.ssz_size) = "randao_mixes.size"]; // Slashings [6001-7000] repeated uint64 slashings = 6001 [(ethereum.eth.ext.ssz_size) = "slashings.size"]; // Participation [7001-8000] bytes previous_epoch_participation = 7001 [(ethereum.eth.ext.ssz_max) = "1099511627776"]; // [New in Altair, replaced previous_epoch_attestations] bytes current_epoch_participation = 7002 [(ethereum.eth.ext.ssz_max) = "1099511627776"]; // [New in Altair, replaced current_epoch_attestations] // Finality [8001-9000] // Spec type [4]Bitvector which means this would be a fixed size of 4 bits. bytes justification_bits = 8001 [(ethereum.eth.ext.ssz_size) = "1", (ethereum.eth.ext.cast_type) = "github.com/prysmaticlabs/go-bitfield.Bitvector4"]; v1.Checkpoint previous_justified_checkpoint = 8002; v1.Checkpoint current_justified_checkpoint = 8003; v1.Checkpoint finalized_checkpoint = 8004; // New Altair fields [9001-10000] repeated uint64 inactivity_scores = 9001 [(ethereum.eth.ext.ssz_max) = "1099511627776"]; // [New in Altair] SyncCommittee current_sync_committee = 9002; // [New in Altair] SyncCommittee next_sync_committee = 9003; // [New in Altair] } message StateRequestV2 { // The state id which can be any of: "head" (canonical head in node's view), // "genesis", "finalized", "justified", , . bytes state_id = 1; } message BeaconStateResponseV2 { BeaconStateV2 data = 1; } message BeaconStateSSZResponseV2 { bytes data = 1; }