Struct ckb_chain_spec::consensus::Consensus
source · 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 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.