com.hedera.hapi.block.stream.protoc.BlockProofOrBuilder Maven / Gradle / Ivy
// 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 extends com.hedera.hapi.block.stream.protoc.MerkleSiblingHashOrBuilder>
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