pub struct Consensus {Show 31 fields
pub id: String,
pub genesis_block: BlockView,
pub genesis_hash: Byte32,
pub dao_type_hash: Byte32,
pub secp256k1_blake160_sighash_all_type_hash: Option<Byte32>,
pub secp256k1_blake160_multisig_all_type_hash: Option<Byte32>,
pub initial_primary_epoch_reward: Capacity,
pub secondary_epoch_reward: Capacity,
pub max_uncles_num: usize,
pub orphan_rate_target: RationalU256,
pub epoch_duration_target: u64,
pub tx_proposal_window: ProposalWindow,
pub proposer_reward_ratio: Ratio,
pub pow: Pow,
pub cellbase_maturity: EpochNumberWithFraction,
pub median_time_block_count: usize,
pub max_block_cycles: Cycle,
pub max_block_bytes: u64,
pub block_version: Version,
pub tx_version: Version,
pub type_id_code_hash: H256,
pub max_block_proposals_limit: u64,
pub genesis_epoch_ext: EpochExt,
pub satoshi_pubkey_hash: H160,
pub satoshi_cell_occupied_ratio: Ratio,
pub primary_epoch_reward_halving_interval: EpochNumber,
pub permanent_difficulty_in_dummy: bool,
pub hardfork_switch: HardForks,
pub deployments: HashMap<DeploymentPos, Deployment>,
pub versionbits_caches: VersionbitsCache,
pub starting_block_limiting_dao_withdrawing_lock: u64,
}
Expand description
Struct Consensus defines various parameters that influence chain consensus
Fields§
§id: String
Names the network.
genesis_block: BlockView
The genesis block
genesis_hash: Byte32
The genesis block hash
dao_type_hash: Byte32
The dao type hash
secp256k1_blake160_sighash_all_type_hash: Option<Byte32>
The secp256k1_blake160_sighash_all_type_hash
secp256k1_blake160_multisig_all_type_hash: Option<Byte32>
The secp256k1_blake160_multisig_all_type_hash
initial_primary_epoch_reward: Capacity
The initial primary_epoch_reward
secondary_epoch_reward: Capacity
The secondary primary_epoch_reward
max_uncles_num: usize
The maximum amount of uncles allowed for a block
orphan_rate_target: RationalU256
The expected orphan_rate
epoch_duration_target: u64
The expected epoch_duration
tx_proposal_window: ProposalWindow
The two-step-transaction-confirmation proposal window
proposer_reward_ratio: Ratio
The two-step-transaction-confirmation proposer reward ratio
pow: Pow
The pow parameters
cellbase_maturity: EpochNumberWithFraction
The Cellbase maturity
For each input, if the referenced output transaction is cellbase,
it must have at least cellbase_maturity
confirmations;
else reject this transaction.
median_time_block_count: usize
This parameter indicates the count of past blocks used in the median time calculation
max_block_cycles: Cycle
Maximum cycles that all the scripts in all the commit transactions can take
max_block_bytes: u64
Maximum number of bytes to use for the entire block
block_version: Version
The block version number supported
tx_version: Version
The tx version number supported
type_id_code_hash: H256
The “TYPE_ID” in hex
max_block_proposals_limit: u64
The Limit to the number of proposals per block
genesis_epoch_ext: EpochExt
The genesis epoch information
satoshi_pubkey_hash: H160
Satoshi’s pubkey hash in Bitcoin genesis.
satoshi_cell_occupied_ratio: Ratio
Ratio of satoshi cell occupied of capacity, only affects genesis cellbase’s satoshi lock cells.
primary_epoch_reward_halving_interval: EpochNumber
Primary reward is cut in half every halving_interval epoch which will occur approximately every 4 years.
permanent_difficulty_in_dummy: bool
Keep difficulty be permanent if the pow is dummy
hardfork_switch: HardForks
A switch to select hard fork features base on the epoch number.
deployments: HashMap<DeploymentPos, Deployment>
Soft fork deployments
versionbits_caches: VersionbitsCache
Soft fork state cache
starting_block_limiting_dao_withdrawing_lock: u64
Starting block where DAO withdrawing lock is limited in size
Implementations§
Source§impl Consensus
impl Consensus
Sourcepub fn genesis_block(&self) -> &BlockView
pub fn genesis_block(&self) -> &BlockView
The genesis block
Sourcepub fn proposer_reward_ratio(&self) -> Ratio
pub fn proposer_reward_ratio(&self) -> Ratio
The two-step-transaction-confirmation proposer reward ratio
Sourcepub fn finalization_delay_length(&self) -> BlockNumber
pub fn finalization_delay_length(&self) -> BlockNumber
The two-step-transaction-confirmation block reward delay length
Sourcepub fn finalize_target(&self, block_number: BlockNumber) -> Option<BlockNumber>
pub fn finalize_target(&self, block_number: BlockNumber) -> Option<BlockNumber>
Get block reward finalize number from specified block number
Sourcepub fn genesis_hash(&self) -> Byte32
pub fn genesis_hash(&self) -> Byte32
The genesis block hash
Sourcepub fn dao_type_hash(&self) -> Byte32
pub fn dao_type_hash(&self) -> Byte32
The dao type hash
Sourcepub fn secp256k1_blake160_sighash_all_type_hash(&self) -> Option<Byte32>
pub fn secp256k1_blake160_sighash_all_type_hash(&self) -> Option<Byte32>
The secp256k1_blake160_sighash_all_type_hash
Sourcepub fn secp256k1_blake160_multisig_all_type_hash(&self) -> Option<Byte32>
pub fn secp256k1_blake160_multisig_all_type_hash(&self) -> Option<Byte32>
The secp256k1_blake160_multisig_all_type_hash
Sourcepub fn max_uncles_num(&self) -> usize
pub fn max_uncles_num(&self) -> usize
The maximum amount of uncles allowed for a block
Sourcepub fn min_difficulty(&self) -> U256
pub fn min_difficulty(&self) -> U256
The minimum difficulty (genesis_block difficulty)
Sourcepub fn initial_primary_epoch_reward(&self) -> Capacity
pub fn initial_primary_epoch_reward(&self) -> Capacity
The minimum difficulty (genesis_block difficulty)
Sourcepub fn primary_epoch_reward(&self, epoch_number: u64) -> Capacity
pub fn primary_epoch_reward(&self, epoch_number: u64) -> Capacity
The initial primary_epoch_reward
Sourcepub fn primary_epoch_reward_halving_interval(&self) -> EpochNumber
pub fn primary_epoch_reward_halving_interval(&self) -> EpochNumber
Primary reward is cut in half every halving_interval epoch which will occur approximately every 4 years.
Sourcepub fn epoch_duration_target(&self) -> u64
pub fn epoch_duration_target(&self) -> u64
The expected epoch_duration
Sourcepub fn genesis_epoch_ext(&self) -> &EpochExt
pub fn genesis_epoch_ext(&self) -> &EpochExt
The genesis epoch information
Sourcepub fn max_epoch_length(&self) -> BlockNumber
pub fn max_epoch_length(&self) -> BlockNumber
The maximum epoch length
Sourcepub fn min_epoch_length(&self) -> BlockNumber
pub fn min_epoch_length(&self) -> BlockNumber
The minimum epoch length
Sourcepub fn secondary_epoch_reward(&self) -> Capacity
pub fn secondary_epoch_reward(&self) -> Capacity
The secondary primary_epoch_reward
Sourcepub fn orphan_rate_target(&self) -> &RationalU256
pub fn orphan_rate_target(&self) -> &RationalU256
The expected orphan_rate
Sourcepub fn pow_engine(&self) -> Arc<dyn PowEngine>
pub fn pow_engine(&self) -> Arc<dyn PowEngine>
The pow_engine
Sourcepub fn permanent_difficulty(&self) -> bool
pub fn permanent_difficulty(&self) -> bool
The permanent_difficulty mode
Sourcepub fn cellbase_maturity(&self) -> EpochNumberWithFraction
pub fn cellbase_maturity(&self) -> EpochNumberWithFraction
The cellbase_maturity
Sourcepub fn median_time_block_count(&self) -> usize
pub fn median_time_block_count(&self) -> usize
This parameter indicates the count of past blocks used in the median time calculation
Sourcepub fn max_block_cycles(&self) -> Cycle
pub fn max_block_cycles(&self) -> Cycle
Maximum cycles that all the scripts in all the commit transactions can take
Sourcepub fn max_block_bytes(&self) -> u64
pub fn max_block_bytes(&self) -> u64
Maximum number of bytes to use for the entire block
Sourcepub fn max_block_proposals_limit(&self) -> u64
pub fn max_block_proposals_limit(&self) -> u64
The Limit to the number of proposals per block
Sourcepub fn block_version(&self) -> Version
pub fn block_version(&self) -> Version
The current block version
Sourcepub fn tx_version(&self) -> Version
pub fn tx_version(&self) -> Version
The current transaction version
Sourcepub fn type_id_code_hash(&self) -> &H256
pub fn type_id_code_hash(&self) -> &H256
The “TYPE_ID” in hex
Sourcepub fn tx_proposal_window(&self) -> ProposalWindow
pub fn tx_proposal_window(&self) -> ProposalWindow
The two-step-transaction-confirmation proposal window
Sourcepub fn starting_block_limiting_dao_withdrawing_lock(&self) -> u64
pub fn starting_block_limiting_dao_withdrawing_lock(&self) -> u64
The starting block number where Nervos DAO withdrawing cell’s lock is size limited.
Sourcepub fn next_epoch_ext<P: EpochProvider>(
&self,
header: &HeaderView,
provider: &P,
) -> Option<NextBlockEpoch>
pub fn next_epoch_ext<P: EpochProvider>( &self, header: &HeaderView, provider: &P, ) -> Option<NextBlockEpoch>
The dynamic-difficulty-adjustment-mechanism implementation
Sourcepub fn identify_name(&self) -> String
pub fn identify_name(&self) -> String
The network identify name, used for network identify protocol
Sourcepub fn get_secp_type_script_hash(&self) -> Byte32
pub fn get_secp_type_script_hash(&self) -> Byte32
The secp256k1_blake160_sighash_all code hash
Sourcepub fn hardfork_switch(&self) -> &HardForks
pub fn hardfork_switch(&self) -> &HardForks
Returns the hardfork switch.
Sourcepub fn rfc0044_active(&self, target: EpochNumber) -> bool
pub fn rfc0044_active(&self, target: EpochNumber) -> bool
Returns whether rfc0044 is active based on the epoch number
Sourcepub fn compute_versionbits<I: VersionbitsIndexer>(
&self,
parent: &HeaderView,
indexer: &I,
) -> Option<Version>
pub fn compute_versionbits<I: VersionbitsIndexer>( &self, parent: &HeaderView, indexer: &I, ) -> Option<Version>
Returns what version a new block should use.
Sourcepub fn versionbits_state<I: VersionbitsIndexer>(
&self,
pos: DeploymentPos,
parent: &HeaderView,
indexer: &I,
) -> Option<ThresholdState>
pub fn versionbits_state<I: VersionbitsIndexer>( &self, pos: DeploymentPos, parent: &HeaderView, indexer: &I, ) -> Option<ThresholdState>
Returns specified softfork deployment state
Sourcepub fn versionbits_state_since_epoch<I: VersionbitsIndexer>(
&self,
pos: DeploymentPos,
parent: &HeaderView,
indexer: &I,
) -> Option<EpochNumber>
pub fn versionbits_state_since_epoch<I: VersionbitsIndexer>( &self, pos: DeploymentPos, parent: &HeaderView, indexer: &I, ) -> Option<EpochNumber>
Returns the first epoch which the current state applies
Sourcepub fn is_public_chain(&self) -> bool
pub fn is_public_chain(&self) -> bool
If the CKB block chain specification is for an public chain.
Sourcepub fn is_in_delay_window(&self, epoch: &EpochNumberWithFraction) -> bool
pub fn is_in_delay_window(&self, epoch: &EpochNumberWithFraction) -> bool
Return true if specifies epoch is between delay window.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for Consensus
impl RefUnwindSafe for Consensus
impl Send for Consensus
impl Sync for Consensus
impl Unpin for Consensus
impl UnwindSafe for Consensus
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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