diff --git a/base_layer/core/src/consensus/consensus_constants.rs b/base_layer/core/src/consensus/consensus_constants.rs index c35ff0e28f..02b558dac8 100644 --- a/base_layer/core/src/consensus/consensus_constants.rs +++ b/base_layer/core/src/consensus/consensus_constants.rs @@ -210,15 +210,17 @@ impl ConsensusConstants { } /// Maximum transaction weight used for the construction of new blocks. It leaves place for 1 kernel and 1 output - /// with default features + /// with default features, as well as the maximum possible value of the `coinbase_extra` field pub fn get_max_block_weight_excluding_coinbase(&self) -> u64 { self.max_block_transaction_weight - self.calculate_1_output_kernel_weight() } fn calculate_1_output_kernel_weight(&self) -> u64 { let output_features = OutputFeatures { ..Default::default() }; + let max_extra_size = self.coinbase_output_features_extra_max_length() as usize; + let features_and_scripts_size = self.transaction_weight.round_up_features_and_scripts_size( - output_features.get_serialized_size() + script![Nop].get_serialized_size(), + output_features.get_serialized_size() + max_extra_size + script![Nop].get_serialized_size(), ); self.transaction_weight.calculate(1, 0, 1, features_and_scripts_size) }