com.hedera.hapi.block.stream.output.protoc.BlockHeaderOrBuilder Maven / Gradle / Ivy
The newest version!
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: stream/output/block_header.proto
package com.hedera.hapi.block.stream.output.protoc;
public interface BlockHeaderOrBuilder extends
// @@protoc_insertion_point(interface_extends:com.hedera.hapi.block.stream.output.BlockHeader)
com.google.protobuf.MessageOrBuilder {
/**
*
**
* A version of the HAPI specification.<br/>
* This is the API version that was used to serialize the block.
*
*
* .proto.SemanticVersion hapi_proto_version = 1;
* @return Whether the hapiProtoVersion field is set.
*/
boolean hasHapiProtoVersion();
/**
*
**
* A version of the HAPI specification.<br/>
* This is the API version that was used to serialize the block.
*
*
* .proto.SemanticVersion hapi_proto_version = 1;
* @return The hapiProtoVersion.
*/
com.hederahashgraph.api.proto.java.SemanticVersion getHapiProtoVersion();
/**
*
**
* A version of the HAPI specification.<br/>
* This is the API version that was used to serialize the block.
*
*
* .proto.SemanticVersion hapi_proto_version = 1;
*/
com.hederahashgraph.api.proto.java.SemanticVersionOrBuilder getHapiProtoVersionOrBuilder();
/**
*
**
* A version of the consensus node software.<br/>
* This is the software version that executed the transactions
* within this block.
*
*
* .proto.SemanticVersion software_version = 2;
* @return Whether the softwareVersion field is set.
*/
boolean hasSoftwareVersion();
/**
*
**
* A version of the consensus node software.<br/>
* This is the software version that executed the transactions
* within this block.
*
*
* .proto.SemanticVersion software_version = 2;
* @return The softwareVersion.
*/
com.hederahashgraph.api.proto.java.SemanticVersion getSoftwareVersion();
/**
*
**
* A version of the consensus node software.<br/>
* This is the software version that executed the transactions
* within this block.
*
*
* .proto.SemanticVersion software_version = 2;
*/
com.hederahashgraph.api.proto.java.SemanticVersionOrBuilder getSoftwareVersionOrBuilder();
/**
*
**
* A block number for this block.
* <p>
* This value MUST be exactly `1` more than the previous block.<br/>
* Client systems SHOULD optimistically reject any block with a gap or
* reverse in `number` sequence, and MAY assume the block stream has
* encountered data loss, data corruption, or unauthorized modification.
*
*
* uint64 number = 3;
* @return The number.
*/
long getNumber();
/**
*
**
* A block root hash for the previous block.
* <p>
* This value MUST match the block merkle tree root hash of the previous
* block in the block stream.<br/>
* This value SHALL be empty for the genesis block, and SHALL NOT be empty
* for any other block.<br/>
* Client systems SHOULD optimistically reject any block with a
* `previous_block_proof_hash` that does not match the block hash of the
* previous block and MAY assume the block stream has encountered data
* loss, data corruption, or unauthorized modification.
* <p>
* The process for computing a block hash is somewhat complex, and involves
* creating a "virtual" merkle tree to obtain the root merkle hash of
* that virtual tree.<br/>
* The merkle tree SHALL have a 4 part structure with 2 internal nodes,
* structured in a strictly binary tree.
* <ul>
* <li>The merkle tree root SHALL be the parent of both
* internal nodes.
* <ol>
* <li>The first "internal" node SHALL be the parent of the
* two "left-most" nodes.
* <ol>
* <li>The first leaf MUST be the previous block hash, and is a
* single 48-byte value.</li>
* <li>The second leaf MUST be the root of a, strictly binary,
* merkle tree composed of all "input" block items in
* the block.<br/>
* Input items SHALL be transactions, system transactions,
* and events.<br/>
* Leaf nodes in this subtree SHALL be ordered in the
* same order that the block items are encountered
* in the stream.</li>
* </ol>
* </li>
* <li>The second "internal" node SHALL be the parent of the
* two "right-most" nodes.
* <ol>
* <li>The third leaf MUST be the root of a, strictly binary,
* merkle tree composed of all "output" block items in
* the block.<br/>
* Output items SHALL be transaction result, transaction
* output, and state changes.<br/>
* Leaf nodes in this subtree SHALL be ordered in the
* same order that the block items are encountered
* in the stream.</li>
* <li>The fourth leaf MUST be the merkle tree root hash for
* network state at the end of the block, and is a single
* 48-byte value.</li>
* </ol>
* </li>
* </ol>
* </li>
* <li>The block hash SHALL be the SHA-384 hash calculated for the root
* of this merkle tree.</li>
* </ul>
*
*
* bytes previous_block_hash = 4;
* @return The previousBlockHash.
*/
com.google.protobuf.ByteString getPreviousBlockHash();
/**
*
**
* A consensus timestamp for the start of this block.
* <p>
* This SHALL be the timestamp assigned by the hashgraph consensus
* algorithm to the first transaction of this block.
*
*
* .proto.Timestamp first_transaction_consensus_time = 5;
* @return Whether the firstTransactionConsensusTime field is set.
*/
boolean hasFirstTransactionConsensusTime();
/**
*
**
* A consensus timestamp for the start of this block.
* <p>
* This SHALL be the timestamp assigned by the hashgraph consensus
* algorithm to the first transaction of this block.
*
*
* .proto.Timestamp first_transaction_consensus_time = 5;
* @return The firstTransactionConsensusTime.
*/
com.hederahashgraph.api.proto.java.Timestamp getFirstTransactionConsensusTime();
/**
*
**
* A consensus timestamp for the start of this block.
* <p>
* This SHALL be the timestamp assigned by the hashgraph consensus
* algorithm to the first transaction of this block.
*
*
* .proto.Timestamp first_transaction_consensus_time = 5;
*/
com.hederahashgraph.api.proto.java.TimestampOrBuilder getFirstTransactionConsensusTimeOrBuilder();
/**
*
**
* A hash algorithm used for this block, including the block proof.
* <p>
* This SHOULD always be `SHA2_384`, currently.
*
*
* .proto.BlockHashAlgorithm hash_algorithm = 6;
* @return The enum numeric value on the wire for hashAlgorithm.
*/
int getHashAlgorithmValue();
/**
*
**
* A hash algorithm used for this block, including the block proof.
* <p>
* This SHOULD always be `SHA2_384`, currently.
*
*
* .proto.BlockHashAlgorithm hash_algorithm = 6;
* @return The hashAlgorithm.
*/
com.hederahashgraph.api.proto.java.BlockHashAlgorithm getHashAlgorithm();
/**
*
**
* A version for the network address book.<br/>
* The address book version is needed to determine the correct public
* key(s) to use to validate block signatures and state proofs.
* <p>
* This MUST be the version of the address book that signed this
* block.
*
*
* .proto.SemanticVersion address_book_version = 7;
* @return Whether the addressBookVersion field is set.
*/
boolean hasAddressBookVersion();
/**
*
**
* A version for the network address book.<br/>
* The address book version is needed to determine the correct public
* key(s) to use to validate block signatures and state proofs.
* <p>
* This MUST be the version of the address book that signed this
* block.
*
*
* .proto.SemanticVersion address_book_version = 7;
* @return The addressBookVersion.
*/
com.hederahashgraph.api.proto.java.SemanticVersion getAddressBookVersion();
/**
*
**
* A version for the network address book.<br/>
* The address book version is needed to determine the correct public
* key(s) to use to validate block signatures and state proofs.
* <p>
* This MUST be the version of the address book that signed this
* block.
*
*
* .proto.SemanticVersion address_book_version = 7;
*/
com.hederahashgraph.api.proto.java.SemanticVersionOrBuilder getAddressBookVersionOrBuilder();
}