All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hedera.hapi.block.stream.protoc.BlockProofOrBuilder Maven / Gradle / Ivy

There is a newer version: 0.57.1
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: stream/block_proof.proto

package com.hedera.hapi.block.stream.protoc;

public interface BlockProofOrBuilder extends
    // @@protoc_insertion_point(interface_extends:com.hedera.hapi.block.stream.BlockProof)
    com.google.protobuf.MessageOrBuilder {

  /**
   * 
   **
   * The block this proof secures.<br/>
   * We provide this because a proof for a future block can be used to prove
   * the state of the ledger at that block and the blocks before it.<br/>
   * <p>
   * This value SHOULD match the block number of the current block,
   * under normal operation.
   * 
* * uint64 block = 1; * @return The block. */ long getBlock(); /** *
   **
   * A merkle root hash of the previous block.
   * <p>
   * This MUST contain a hash of the "block" merkle tree root for the
   * previous block.<br/>
   * The hash algorithm used MUST match the algorithm declared in the
   * block header _for that block_.
   * 
* * bytes previous_block_root_hash = 2; * @return The previousBlockRootHash. */ com.google.protobuf.ByteString getPreviousBlockRootHash(); /** *
   **
   * A merkle root hash of the network state.<br/>
   * This is present to support validation of this block proof by clients
   * that do not maintain a full copy of the network state.
   * <p>
   * This MUST contain a hash of the "state" merkle tree root at the start
   * of the current block (which this block proof verifies).<br/>
   * State processing clients SHOULD calculate the state root hash
   * independently and SHOULD NOT rely on this value.<br/>
   * State processing clients MUST validate the application of state changes
   * for a block using the value present in the Block Proof of the
   * _following_ block.
   * Compliant consensus nodes MUST produce an "empty" block (containing
   * only `BlockHeader` and `BlockProof` as the last block prior to a
   * network "freeze" to ensure the final state hash is incorporated into
   * the Block Stream correctly.
   * Stateless (non-state-processing) clients MUST use this value to
   * construct the block merkle tree.
   * 
* * bytes start_of_block_state_root_hash = 3; * @return The startOfBlockStateRootHash. */ com.google.protobuf.ByteString getStartOfBlockStateRootHash(); /** *
   **
   * A TSS signature for one block.<br/>
   * This is a single signature representing the collection of partial
   * signatures from nodes holding strictly greater than 2/3 of the
   * current network "weight" in aggregate. The signature is produced by
   * cryptographic "aggregation" of the partial signatures to produce a
   * single signature that can be verified with the network public key,
   * but could not be produced by fewer nodes than required to meet the
   * threshold for network stake "weight".
   * <p>
   * This message MUST make use of a threshold signature scheme like `BLS`
   * which provides the necessary cryptographic guarantees.<br/>
   * This signature SHALL use a TSS signature to provide a single signature
   * that represents the consensus signature of consensus nodes.<br/>
   * The exact subset of nodes that signed SHALL neither be known nor
   * tracked, but it SHALL be cryptographically verifiable that the
   * threshold was met if the signature itself can be validated with
   * the network public key (a.k.a `LedgerID`).
   * 
* * bytes block_signature = 4; * @return The blockSignature. */ com.google.protobuf.ByteString getBlockSignature(); /** *
   **
   * A set of hash values along with ordering information.<br/>
   * This list of hash values form the set of sibling hash values needed to
   * correctly reconstruct the parent hash, and all hash values "above" that
   * hash in the merkle tree.
   * <p>
   * A Block proof can be constructed by combining the sibling hashes for
   * a previous block hash and sibling hashes for each entry "above" that
   * node in the merkle tree of a block proof that incorporates that previous
   * block hash. This form of block proof may be used to prove a chain of
   * blocks when one or more older blocks is missing the original block
   * proof that signed the block's merkle root directly.
   * <p>
   * This list MUST be ordered from the sibling of the node that contains
   * this block's root node hash, and continues up the merkle tree to the
   * root hash of the signed block proof.
   * <p>
   * If this block proof has a "direct" signature, then this list MUST be
   * empty.<br/>
   * If this list is not empty, then this block proof MUST be verified by
   * first constructing the "block" merkle tree and computing the root hash
   * of that tree, then combining that hash with the values in this list,
   * paying attention to the first/second sibling ordering, until the root
   * merkle hash is produced from the last pair of sibling hashes. That
   * "secondary" root hash MUST then be verified using
   * the value of `block_signature`.
   * 
* * repeated .com.hedera.hapi.block.stream.MerkleSiblingHash sibling_hashes = 5; */ java.util.List getSiblingHashesList(); /** *
   **
   * A set of hash values along with ordering information.<br/>
   * This list of hash values form the set of sibling hash values needed to
   * correctly reconstruct the parent hash, and all hash values "above" that
   * hash in the merkle tree.
   * <p>
   * A Block proof can be constructed by combining the sibling hashes for
   * a previous block hash and sibling hashes for each entry "above" that
   * node in the merkle tree of a block proof that incorporates that previous
   * block hash. This form of block proof may be used to prove a chain of
   * blocks when one or more older blocks is missing the original block
   * proof that signed the block's merkle root directly.
   * <p>
   * This list MUST be ordered from the sibling of the node that contains
   * this block's root node hash, and continues up the merkle tree to the
   * root hash of the signed block proof.
   * <p>
   * If this block proof has a "direct" signature, then this list MUST be
   * empty.<br/>
   * If this list is not empty, then this block proof MUST be verified by
   * first constructing the "block" merkle tree and computing the root hash
   * of that tree, then combining that hash with the values in this list,
   * paying attention to the first/second sibling ordering, until the root
   * merkle hash is produced from the last pair of sibling hashes. That
   * "secondary" root hash MUST then be verified using
   * the value of `block_signature`.
   * 
* * repeated .com.hedera.hapi.block.stream.MerkleSiblingHash sibling_hashes = 5; */ com.hedera.hapi.block.stream.protoc.MerkleSiblingHash getSiblingHashes(int index); /** *
   **
   * A set of hash values along with ordering information.<br/>
   * This list of hash values form the set of sibling hash values needed to
   * correctly reconstruct the parent hash, and all hash values "above" that
   * hash in the merkle tree.
   * <p>
   * A Block proof can be constructed by combining the sibling hashes for
   * a previous block hash and sibling hashes for each entry "above" that
   * node in the merkle tree of a block proof that incorporates that previous
   * block hash. This form of block proof may be used to prove a chain of
   * blocks when one or more older blocks is missing the original block
   * proof that signed the block's merkle root directly.
   * <p>
   * This list MUST be ordered from the sibling of the node that contains
   * this block's root node hash, and continues up the merkle tree to the
   * root hash of the signed block proof.
   * <p>
   * If this block proof has a "direct" signature, then this list MUST be
   * empty.<br/>
   * If this list is not empty, then this block proof MUST be verified by
   * first constructing the "block" merkle tree and computing the root hash
   * of that tree, then combining that hash with the values in this list,
   * paying attention to the first/second sibling ordering, until the root
   * merkle hash is produced from the last pair of sibling hashes. That
   * "secondary" root hash MUST then be verified using
   * the value of `block_signature`.
   * 
* * repeated .com.hedera.hapi.block.stream.MerkleSiblingHash sibling_hashes = 5; */ int getSiblingHashesCount(); /** *
   **
   * A set of hash values along with ordering information.<br/>
   * This list of hash values form the set of sibling hash values needed to
   * correctly reconstruct the parent hash, and all hash values "above" that
   * hash in the merkle tree.
   * <p>
   * A Block proof can be constructed by combining the sibling hashes for
   * a previous block hash and sibling hashes for each entry "above" that
   * node in the merkle tree of a block proof that incorporates that previous
   * block hash. This form of block proof may be used to prove a chain of
   * blocks when one or more older blocks is missing the original block
   * proof that signed the block's merkle root directly.
   * <p>
   * This list MUST be ordered from the sibling of the node that contains
   * this block's root node hash, and continues up the merkle tree to the
   * root hash of the signed block proof.
   * <p>
   * If this block proof has a "direct" signature, then this list MUST be
   * empty.<br/>
   * If this list is not empty, then this block proof MUST be verified by
   * first constructing the "block" merkle tree and computing the root hash
   * of that tree, then combining that hash with the values in this list,
   * paying attention to the first/second sibling ordering, until the root
   * merkle hash is produced from the last pair of sibling hashes. That
   * "secondary" root hash MUST then be verified using
   * the value of `block_signature`.
   * 
* * repeated .com.hedera.hapi.block.stream.MerkleSiblingHash sibling_hashes = 5; */ java.util.List getSiblingHashesOrBuilderList(); /** *
   **
   * A set of hash values along with ordering information.<br/>
   * This list of hash values form the set of sibling hash values needed to
   * correctly reconstruct the parent hash, and all hash values "above" that
   * hash in the merkle tree.
   * <p>
   * A Block proof can be constructed by combining the sibling hashes for
   * a previous block hash and sibling hashes for each entry "above" that
   * node in the merkle tree of a block proof that incorporates that previous
   * block hash. This form of block proof may be used to prove a chain of
   * blocks when one or more older blocks is missing the original block
   * proof that signed the block's merkle root directly.
   * <p>
   * This list MUST be ordered from the sibling of the node that contains
   * this block's root node hash, and continues up the merkle tree to the
   * root hash of the signed block proof.
   * <p>
   * If this block proof has a "direct" signature, then this list MUST be
   * empty.<br/>
   * If this list is not empty, then this block proof MUST be verified by
   * first constructing the "block" merkle tree and computing the root hash
   * of that tree, then combining that hash with the values in this list,
   * paying attention to the first/second sibling ordering, until the root
   * merkle hash is produced from the last pair of sibling hashes. That
   * "secondary" root hash MUST then be verified using
   * the value of `block_signature`.
   * 
* * repeated .com.hedera.hapi.block.stream.MerkleSiblingHash sibling_hashes = 5; */ com.hedera.hapi.block.stream.protoc.MerkleSiblingHashOrBuilder getSiblingHashesOrBuilder( int index); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy