Skip to content

Commit

Permalink
chain
Browse files Browse the repository at this point in the history
  • Loading branch information
wacban committed Oct 2, 2024
1 parent 4fb7a13 commit 795746d
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 15 deletions.
2 changes: 1 addition & 1 deletion chain/chain-primitives/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ pub enum Error {
InvalidBlockMerkleRoot,
/// Invalid split shard ids.
#[error("Invalid Split Shard Ids when resharding. shard_id: {0}, parent_shard_id: {1}")]
InvalidSplitShardsIds(u64, u64),
InvalidSplitShardsIds(ShardId, ShardId),
/// Someone is not a validator. Usually happens in signature verification
#[error("Not A Validator: {0}")]
NotAValidator(String),
Expand Down
4 changes: 2 additions & 2 deletions chain/chain/src/store/latest_witnesses.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ impl ChainStore {
target: "client",
"save_latest_chunk_state_witness",
witness_height = witness.chunk_header.height_created(),
witness_shard = witness.chunk_header.shard_id(),
witness_shard = ?witness.chunk_header.shard_id(),
)
.entered();

Expand Down Expand Up @@ -173,7 +173,7 @@ impl ChainStore {
OsRng.fill_bytes(&mut random_uuid);
let key = LatestWitnessesKey {
height: witness.chunk_header.height_created(),
shard_id: witness.chunk_header.shard_id(),
shard_id: witness.chunk_header.shard_id().into(),
epoch_id: witness.epoch_id,
witness_size: serialized_witness_size,
random_uuid,
Expand Down
22 changes: 12 additions & 10 deletions chain/chain/src/store/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ pub trait ChainStoreAccess {
target: "chain",
version = shard_layout.version(),
prev_version = prev_shard_layout.version(),
shard_id,
parent_shard_id,
?shard_id,
?parent_shard_id,
"crossing epoch boundary with shard layout change, updating shard id"
);
shard_id = parent_shard_id;
Expand Down Expand Up @@ -352,10 +352,12 @@ pub trait ChainStoreAccess {
let mut shard_id = shard_id;
loop {
let block_header = self.get_block_header(&candidate_hash)?;
let shard_layout = epoch_manager.get_shard_layout(block_header.epoch_id())?;
let shard_index = shard_layout.get_shard_index(shard_id);
if *block_header
.chunk_mask()
.get(shard_id as usize)
.ok_or_else(|| Error::InvalidShardId(shard_id as ShardId))?
.get(shard_index)
.ok_or_else(|| Error::InvalidShardId(shard_id))?
{
break Ok(*block_header.epoch_id());
}
Expand All @@ -370,7 +372,7 @@ pub trait ChainStoreAccess {
/// incoming receipts and the shard layout changed.
fn filter_incoming_receipts_for_shard(
target_shard_layout: &ShardLayout,
target_shard_id: u64,
target_shard_id: ShardId,
receipt_proofs: Arc<Vec<ReceiptProof>>,
) -> Vec<ReceiptProof> {
let mut filtered_receipt_proofs = vec![];
Expand Down Expand Up @@ -586,10 +588,10 @@ impl ChainStore {
receipts: &mut Vec<Receipt>,
protocol_version: ProtocolVersion,
shard_layout: &ShardLayout,
shard_id: u64,
receipts_shard_id: u64,
shard_id: ShardId,
receipts_shard_id: ShardId,
) -> Result<(), Error> {
tracing::trace!(target: "resharding", ?protocol_version, shard_id, receipts_shard_id, "reassign_outgoing_receipts_for_resharding");
tracing::trace!(target: "resharding", ?protocol_version, ?shard_id, ?receipts_shard_id, "reassign_outgoing_receipts_for_resharding");
// If simple nightshade v2 is enabled and stable use that.
// Same reassignment of outgoing receipts works for simple nightshade v3
if checked_feature!("stable", SimpleNightshadeV2, protocol_version) {
Expand Down Expand Up @@ -2173,9 +2175,9 @@ impl<'a> ChainStoreUpdate<'a> {
source_store.get_chunk_extra(block_hash, &shard_uid)?.clone(),
);
}
for (shard_id, chunk_header) in block.chunks().iter().enumerate() {
for chunk_header in block.chunks().iter() {
let shard_id = chunk_header.shard_id();
let chunk_hash = chunk_header.chunk_hash();
let shard_id = shard_id as u64;
chain_store_update
.chain_store_cache_update
.chunks
Expand Down
3 changes: 2 additions & 1 deletion chain/chain/src/store_validator/validate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -578,8 +578,9 @@ pub(crate) fn trie_changes_chunk_extra_exists(

// 5. There should be ShardChunk with ShardId `shard_id`
let shard_id = shard_uid.shard_id();
let shard_index = shard_layout.get_shard_index(shard_id);
let chunks = block.chunks();
if let Some(chunk_header) = chunks.get(shard_id as usize) {
if let Some(chunk_header) = chunks.get(shard_index) {
// if the chunk is not a new chunk, skip the check
if chunk_header.height_included() != block.header().height() {
return Ok(());
Expand Down
2 changes: 1 addition & 1 deletion chain/chain/src/test_utils/kv_runtime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ impl MockEpochManager {
})
.collect();

let validators_per_shard = block_producers.len() as ShardId / vs.validator_groups;
let validators_per_shard = block_producers.len() / vs.validator_groups;
let coef = block_producers.len() as ShardId / vs.num_shards;

let chunk_producers: Vec<Vec<ValidatorStake>> = (0..vs.num_shards)
Expand Down

0 comments on commit 795746d

Please sign in to comment.