pub struct ConsensusProof;Expand description
Consensus Proof - wrapper struct for consensus validation functions
This struct provides a convenient API for accessing all consensus validation functions. All methods delegate to the corresponding module functions.
Implementations§
Source§impl ConsensusProof
impl ConsensusProof
Sourcepub fn validate_transaction(&self, tx: &Transaction) -> Result<ValidationResult>
pub fn validate_transaction(&self, tx: &Transaction) -> Result<ValidationResult>
Validate a transaction according to consensus rules
Sourcepub fn validate_tx_inputs(
&self,
tx: &Transaction,
utxo_set: &UtxoSet,
height: Natural,
) -> Result<(ValidationResult, Integer)>
pub fn validate_tx_inputs( &self, tx: &Transaction, utxo_set: &UtxoSet, height: Natural, ) -> Result<(ValidationResult, Integer)>
Validate transaction inputs against UTXO set
Sourcepub fn validate_block(
&self,
block: &Block,
utxo_set: UtxoSet,
height: Natural,
) -> Result<(ValidationResult, UtxoSet)>
pub fn validate_block( &self, block: &Block, utxo_set: UtxoSet, height: Natural, ) -> Result<(ValidationResult, UtxoSet)>
Validate a complete block
Sourcepub fn validate_block_with_time_context(
&self,
block: &Block,
witnesses: &[Vec<Witness>],
utxo_set: UtxoSet,
height: Natural,
time_context: Option<TimeContext>,
network: Network,
) -> Result<(ValidationResult, UtxoSet)>
pub fn validate_block_with_time_context( &self, block: &Block, witnesses: &[Vec<Witness>], utxo_set: UtxoSet, height: Natural, time_context: Option<TimeContext>, network: Network, ) -> Result<(ValidationResult, UtxoSet)>
Validate a complete block with witness data and time context
Sourcepub fn verify_script(
&self,
script_sig: &ByteString,
script_pubkey: &ByteString,
witness: Option<&ByteString>,
flags: u32,
) -> Result<bool>
pub fn verify_script( &self, script_sig: &ByteString, script_pubkey: &ByteString, witness: Option<&ByteString>, flags: u32, ) -> Result<bool>
Verify script execution
Sourcepub fn check_proof_of_work(&self, header: &BlockHeader) -> Result<bool>
pub fn check_proof_of_work(&self, header: &BlockHeader) -> Result<bool>
Check proof of work
Sourcepub fn get_block_subsidy(&self, height: Natural) -> Integer
pub fn get_block_subsidy(&self, height: Natural) -> Integer
Get block subsidy for height
Sourcepub fn total_supply(&self, height: Natural) -> Integer
pub fn total_supply(&self, height: Natural) -> Integer
Calculate total supply at height
Sourcepub fn get_next_work_required(
&self,
current_header: &BlockHeader,
prev_headers: &[BlockHeader],
) -> Result<Natural>
pub fn get_next_work_required( &self, current_header: &BlockHeader, prev_headers: &[BlockHeader], ) -> Result<Natural>
Get next work required for difficulty adjustment
Sourcepub fn accept_to_memory_pool(
&self,
tx: &Transaction,
utxo_set: &UtxoSet,
mempool: &Mempool,
height: Natural,
time_context: Option<TimeContext>,
) -> Result<MempoolResult>
pub fn accept_to_memory_pool( &self, tx: &Transaction, utxo_set: &UtxoSet, mempool: &Mempool, height: Natural, time_context: Option<TimeContext>, ) -> Result<MempoolResult>
Accept transaction to memory pool
Sourcepub fn is_standard_tx(&self, tx: &Transaction) -> Result<bool>
pub fn is_standard_tx(&self, tx: &Transaction) -> Result<bool>
Check if transaction is standard
Sourcepub fn replacement_checks(
&self,
new_tx: &Transaction,
existing_tx: &Transaction,
utxo_set: &UtxoSet,
mempool: &Mempool,
) -> Result<bool>
pub fn replacement_checks( &self, new_tx: &Transaction, existing_tx: &Transaction, utxo_set: &UtxoSet, mempool: &Mempool, ) -> Result<bool>
Check if transaction can replace existing one (RBF)
Sourcepub fn create_new_block(
&self,
utxo_set: &UtxoSet,
mempool_txs: &[Transaction],
height: Natural,
prev_header: &BlockHeader,
prev_headers: &[BlockHeader],
coinbase_script: &ByteString,
coinbase_address: &ByteString,
) -> Result<Block>
pub fn create_new_block( &self, utxo_set: &UtxoSet, mempool_txs: &[Transaction], height: Natural, prev_header: &BlockHeader, prev_headers: &[BlockHeader], coinbase_script: &ByteString, coinbase_address: &ByteString, ) -> Result<Block>
Create new block from mempool transactions
Sourcepub fn mine_block(
&self,
block: Block,
max_attempts: Natural,
) -> Result<(Block, MiningResult)>
pub fn mine_block( &self, block: Block, max_attempts: Natural, ) -> Result<(Block, MiningResult)>
Mine a block by finding valid nonce
Sourcepub fn create_block_template(
&self,
utxo_set: &UtxoSet,
mempool_txs: &[Transaction],
height: Natural,
prev_header: &BlockHeader,
prev_headers: &[BlockHeader],
coinbase_script: &ByteString,
coinbase_address: &ByteString,
) -> Result<BlockTemplate>
pub fn create_block_template( &self, utxo_set: &UtxoSet, mempool_txs: &[Transaction], height: Natural, prev_header: &BlockHeader, prev_headers: &[BlockHeader], coinbase_script: &ByteString, coinbase_address: &ByteString, ) -> Result<BlockTemplate>
Create block template for mining
Sourcepub fn reorganize_chain(
&self,
new_chain: &[Block],
current_chain: &[Block],
current_utxo_set: UtxoSet,
current_height: Natural,
network: Network,
) -> Result<ReorganizationResult>
pub fn reorganize_chain( &self, new_chain: &[Block], current_chain: &[Block], current_utxo_set: UtxoSet, current_height: Natural, network: Network, ) -> Result<ReorganizationResult>
Reorganize chain when longer chain is found
Sourcepub fn should_reorganize(
&self,
new_chain: &[Block],
current_chain: &[Block],
) -> Result<bool>
pub fn should_reorganize( &self, new_chain: &[Block], current_chain: &[Block], ) -> Result<bool>
Check if reorganization is beneficial
Sourcepub fn calculate_transaction_weight(
&self,
tx: &Transaction,
witness: Option<&Witness>,
) -> Result<Natural>
pub fn calculate_transaction_weight( &self, tx: &Transaction, witness: Option<&Witness>, ) -> Result<Natural>
Calculate transaction weight for SegWit
Sourcepub fn validate_segwit_block(
&self,
block: &Block,
witnesses: &[Witness],
max_block_weight: Natural,
) -> Result<bool>
pub fn validate_segwit_block( &self, block: &Block, witnesses: &[Witness], max_block_weight: Natural, ) -> Result<bool>
Validate SegWit block
Sourcepub fn validate_taproot_transaction(
&self,
tx: &Transaction,
witness: Option<&Witness>,
) -> Result<bool>
pub fn validate_taproot_transaction( &self, tx: &Transaction, witness: Option<&Witness>, ) -> Result<bool>
Validate Taproot transaction
Sourcepub fn is_taproot_output(&self, output: &TransactionOutput) -> bool
pub fn is_taproot_output(&self, output: &TransactionOutput) -> bool
Check if transaction output is Taproot
Trait Implementations§
Source§impl Clone for ConsensusProof
impl Clone for ConsensusProof
Source§fn clone(&self) -> ConsensusProof
fn clone(&self) -> ConsensusProof
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ConsensusProof
impl Debug for ConsensusProof
Source§impl Default for ConsensusProof
impl Default for ConsensusProof
Source§fn default() -> ConsensusProof
fn default() -> ConsensusProof
impl Copy for ConsensusProof
Auto Trait Implementations§
impl Freeze for ConsensusProof
impl RefUnwindSafe for ConsensusProof
impl Send for ConsensusProof
impl Sync for ConsensusProof
impl Unpin for ConsensusProof
impl UnsafeUnpin for ConsensusProof
impl UnwindSafe for ConsensusProof
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more