Skip to content

Commit f06bb4b

Browse files
committed
little error in initialiser deserialisation
1 parent 73fc0e0 commit f06bb4b

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

mithril-core/src/stm.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,13 +365,13 @@ where
365365

366366
let mut u64_bytes = [0u8; 8];
367367
u64_bytes.copy_from_slice(&bytes[hash_size..hash_size + 8]);
368-
let nr_leaves = usize::from_be_bytes(u64_bytes);
368+
let nr_leaves = u64::from_be_bytes(u64_bytes);
369369
u64_bytes.copy_from_slice(&bytes[hash_size + 8..hash_size + 16]);
370370
let total_stake = u64::from_be_bytes(u64_bytes);
371371

372372
let mt_commitment = MerkleTreeCommitment::<D> {
373373
root,
374-
nr_leaves,
374+
nr_leaves: nr_leaves as usize,
375375
hasher: Default::default(),
376376
};
377377

@@ -385,7 +385,7 @@ where
385385
pub fn to_bytes(&self) -> Vec<u8> {
386386
let mut output = Vec::new();
387387
output.extend_from_slice(&self.mt_commitment.root);
388-
output.extend_from_slice(&self.mt_commitment.nr_leaves.to_be_bytes());
388+
output.extend_from_slice(&(self.mt_commitment.nr_leaves as u64).to_be_bytes());
389389
output.extend_from_slice(&self.total_stake.to_be_bytes());
390390
output
391391
}
@@ -659,7 +659,7 @@ impl StmInitializer {
659659
let party_id = u64::from_be_bytes(u64_bytes);
660660
u64_bytes.copy_from_slice(&bytes[8..16]);
661661
let stake = u64::from_be_bytes(u64_bytes);
662-
let params = StmParameters::from_bytes(&bytes[16..])?;
662+
let params = StmParameters::from_bytes(&bytes[16..40])?;
663663
let sk = SigningKey::from_bytes(&bytes[40..])?;
664664
let pk = StmVerificationKeyPoP::from_bytes(&bytes[72..])?;
665665

@@ -1149,6 +1149,15 @@ mod tests {
11491149
proptest! {
11501150
#![proptest_config(ProptestConfig::with_cases(10))]
11511151

1152+
#[test]
1153+
fn test_parameters_serialize_deserialize(m in any::<u64>(), k in any::<u64>(), phi_f in any::<f64>()) {
1154+
let params = StmParameters { m, k, phi_f };
1155+
1156+
let bytes = params.to_bytes();
1157+
let deserialised = StmParameters::from_bytes(&bytes);
1158+
assert!(deserialised.is_ok())
1159+
}
1160+
11521161
#[test]
11531162
fn test_initializer_serialize_deserialize(seed in any::<[u8;32]>()) {
11541163
let mut rng = ChaCha20Rng::from_seed(seed);
@@ -1157,6 +1166,9 @@ mod tests {
11571166
let stake = rng.next_u64();
11581167
let initializer = StmInitializer::setup(params, pid, stake, &mut rng);
11591168

1169+
let bytes = initializer.to_bytes();
1170+
assert!(StmInitializer::from_bytes(&bytes).is_ok());
1171+
11601172
let bytes = bincode::serialize(&initializer).unwrap();
11611173
assert!(bincode::deserialize::<StmInitializer>(&bytes).is_ok())
11621174
}

0 commit comments

Comments
 (0)