github.com/prysmaticlabs/prysm@v1.4.4/proto/beacon/db/powchain.proto (about) 1 syntax = "proto3"; 2 3 package prysm.beacon.db; 4 5 import "proto/eth/v1alpha1/beacon_block.proto"; 6 import "proto/beacon/p2p/v1/types.proto"; 7 8 option go_package = "github.com/prysmaticlabs/prysm/proto/beacon/db"; 9 10 // ETH1ChainData is a container which holds all the relevant eth1 11 // information 12 message ETH1ChainData { 13 LatestETH1Data current_eth1_data = 1 ; 14 ChainStartData chainstart_data = 2; 15 ethereum.beacon.p2p.v1.BeaconState beacon_state = 3; 16 SparseMerkleTrie trie = 4; 17 repeated DepositContainer deposit_containers = 5; 18 } 19 20 // LatestETH1Data contains the current state of the eth1 chain. 21 message LatestETH1Data { 22 uint64 block_height = 2; 23 uint64 block_time = 3; 24 bytes block_hash = 4; 25 uint64 last_requested_block = 5; 26 } 27 28 // ChainStartData contains all the information related to chainstart. 29 message ChainStartData { 30 bool chainstarted = 1; 31 uint64 genesis_time = 2; 32 uint64 genesis_block = 3; 33 ethereum.eth.v1alpha1.Eth1Data eth1_data = 4; 34 repeated ethereum.eth.v1alpha1.Deposit chainstart_deposits = 5; 35 } 36 37 // SparseMerkleTrie is used to describe the model of our deposit trie. 38 message SparseMerkleTrie { 39 uint64 depth = 1; 40 repeated TrieLayer layers = 2; 41 repeated bytes original_items = 3; 42 } 43 44 // TrieLayer is used to represent each layer in the deposit tree due to 45 // the lack of protobuf support for multi-dimensional arrays.(Ex: 3d,4d,...) 46 message TrieLayer { 47 repeated bytes layer = 1; 48 } 49 50 // DepositContainer defines a container that can be used to store 51 // deposit related information for a particular deposit. 52 message DepositContainer { 53 int64 index = 1; 54 uint64 eth1_block_height = 2; 55 ethereum.eth.v1alpha1.Deposit deposit = 3; 56 bytes deposit_root = 4; 57 }