syntax = "proto3"; package block; import "digest.proto"; import "merkle.proto"; message BlockHeader { // specifies the version of the protocol. uint32 version = 1; // the hash of the previous blocks header. digest.Digest prev_hash = 2; // a unique sequential number of the current block. fixed32 block_num = 3; // a commitment to an MMR of the entire chain where each block is a leaf. digest.Digest chain_root = 4; // a commitment to account database. digest.Digest account_root = 5; // a commitment to the nullifier database. digest.Digest nullifier_root = 6; // a commitment to all notes created in the current block. digest.Digest note_root = 7; // a commitment to a set of IDs of transactions which affected accounts in this block. digest.Digest tx_hash = 8; // a hash of a STARK proof attesting to the correct state transition. digest.Digest proof_hash = 9; // a commitment to all transaction kernels supported by this block. digest.Digest kernel_root = 10; // the time when the block was created. fixed32 timestamp = 11; } message BlockInclusionProof { BlockHeader block_header = 1; merkle.MerklePath mmr_path = 2; // The chain length associated with `mmr_path`. fixed32 chain_length = 3; }