syntax = "proto3"; package proto3; message PartSetHeader { sint32 Total = 1; bytes Hash = 2; } message BlockID { bytes Hash = 1; PartSetHeader PartsHeader = 2; } message Header { // basic block info string ChainID = 1; sint64 Height = 2; Timestamp Time = 3; sint64 NumTxs = 4; sint64 TotalTxs = 5; // prev block info BlockID LastBlockID = 6; // hashes of block data bytes LastCommitHash = 7; // commit from validators from the last block bytes DataHash = 8; // transactions // hashes from the app output from the prev block bytes ValidatorsHash = 9; // validators for the current block bytes ConsensusHash = 10; // consensus params for current block bytes AppHash = 11; // state after txs from the previous block bytes LastResultsHash = 12; // root hash of all results from the txs from the previous block // consensus info bytes EvidenceHash = 13; // evidence included in the block bytes ProposerAddress = 14; // original proposer of the block } // Timestamp wraps how amino encodes time. Note that this is different from the protobuf well-known type // protobuf/timestamp.proto in the sense that there seconds and nanos are varint encoded. See: // https://github.com/google/protobuf/blob/d2980062c859649523d5fd51d6b55ab310e47482/src/google/protobuf/timestamp.proto#L123-L135 // Also nanos do not get skipped if they are zero in amino. message Timestamp { sfixed64 seconds = 1; sfixed32 nanos = 2; }