From 669dad9bdba13921c92ddf6abc0eb63d8cef6baa Mon Sep 17 00:00:00 2001 From: styppo Date: Wed, 23 Oct 2024 12:25:12 +0000 Subject: [PATCH] Blockchain: add `network_id` to `SkipBlockInfo` --- blockchain/src/block_production/mod.rs | 1 + blockchain/tests/signed.rs | 1 + primitives/block/src/micro_block.rs | 1 + primitives/block/src/skip_block.rs | 7 ++++++- test-utils/src/block_production.rs | 1 + test-utils/src/test_custom_block.rs | 2 ++ validator/src/micro.rs | 1 + validator/tests/mock.rs | 1 + 8 files changed, 14 insertions(+), 1 deletion(-) diff --git a/blockchain/src/block_production/mod.rs b/blockchain/src/block_production/mod.rs index bffa4e3808..4ba36bc1f0 100644 --- a/blockchain/src/block_production/mod.rs +++ b/blockchain/src/block_production/mod.rs @@ -135,6 +135,7 @@ impl BlockProducer { let skip_block_info = if skip_block_proof.is_some() { Some(SkipBlockInfo { + network_id: blockchain.network_id, block_number, vrf_entropy: prev_seed.entropy(), }) diff --git a/blockchain/tests/signed.rs b/blockchain/tests/signed.rs index 65493cce4f..c222613cdf 100644 --- a/blockchain/tests/signed.rs +++ b/blockchain/tests/signed.rs @@ -30,6 +30,7 @@ fn test_skip_block_single_signature() { // create skip block data let skip_block_info = SkipBlockInfo { + network_id: NetworkId::UnitAlbatross, block_number: 1234, vrf_entropy: VrfEntropy::default(), }; diff --git a/primitives/block/src/micro_block.rs b/primitives/block/src/micro_block.rs index beb3728379..28e3169937 100644 --- a/primitives/block/src/micro_block.rs +++ b/primitives/block/src/micro_block.rs @@ -101,6 +101,7 @@ impl MicroBlock { match justification { MicroJustification::Skip(proof) => { let skip_block = SkipBlockInfo { + network_id: self.header.network, block_number: self.header.block_number, vrf_entropy: self.header.seed.entropy(), }; diff --git a/primitives/block/src/skip_block.rs b/primitives/block/src/skip_block.rs index bed9c7eb33..3272a13522 100644 --- a/primitives/block/src/skip_block.rs +++ b/primitives/block/src/skip_block.rs @@ -3,7 +3,8 @@ use std::fmt::Debug; use nimiq_bls::AggregatePublicKey; use nimiq_hash_derive::SerializeContent; use nimiq_primitives::{ - policy::Policy, slots_allocation::Validators, Message, SignedMessage, PREFIX_SKIP_BLOCK_INFO, + networks::NetworkId, policy::Policy, slots_allocation::Validators, Message, SignedMessage, + PREFIX_SKIP_BLOCK_INFO, }; use nimiq_serde::{Deserialize, Serialize, SerializedMaxSize}; use nimiq_vrf::VrfEntropy; @@ -17,6 +18,9 @@ pub type SignedSkipBlockInfo = SignedMessage; Clone, Debug, Ord, PartialOrd, Eq, PartialEq, Deserialize, Serialize, SerializeContent, )] pub struct SkipBlockInfo { + /// The network of this skip block. + pub network_id: NetworkId, + /// The number of the block for which the skip block is constructed. pub block_number: u32, @@ -31,6 +35,7 @@ impl SkipBlockInfo { pub fn from_micro_block(block: &MicroBlock) -> Option { if block.is_skip_block() { Some(SkipBlockInfo { + network_id: block.header.network, block_number: block.header.block_number, vrf_entropy: block.header.seed.entropy(), }) diff --git a/test-utils/src/block_production.rs b/test-utils/src/block_production.rs index f60b4669ec..c3ba1b271b 100644 --- a/test-utils/src/block_production.rs +++ b/test-utils/src/block_production.rs @@ -286,6 +286,7 @@ impl TemporaryBlockProducer { let skip_block_info = { let blockchain = self.blockchain.read(); SkipBlockInfo { + network_id: blockchain.network_id, block_number: blockchain.block_number() + 1, vrf_entropy: blockchain.head().seed().entropy(), } diff --git a/test-utils/src/test_custom_block.rs b/test-utils/src/test_custom_block.rs index 6123cd3d33..0a80361b5b 100644 --- a/test-utils/src/test_custom_block.rs +++ b/test-utils/src/test_custom_block.rs @@ -209,6 +209,7 @@ pub fn next_skip_block( let prev_seed = blockchain.head().seed().clone(); let skip_block_info = SkipBlockInfo { + network_id: blockchain.network_id, block_number, vrf_entropy: prev_seed.entropy(), }; @@ -490,6 +491,7 @@ fn create_skip_block_proof( .unwrap_or_else(|| blockchain.head().seed().clone()); let skip_block_info = SkipBlockInfo { + network_id: blockchain.network_id, block_number: (blockchain.block_number() as i32 + 1 + config.block_number_offset) as u32, vrf_entropy: seed.entropy(), }; diff --git a/validator/src/micro.rs b/validator/src/micro.rs index 6b6617b9f3..c9bd5466d8 100644 --- a/validator/src/micro.rs +++ b/validator/src/micro.rs @@ -239,6 +239,7 @@ impl NextProduceMicroBlockEvent