Skip to content

Commit 78d1349

Browse files
authored
change trust threshold (#59)
Signed-off-by: Naohiro Yoshida <naohiro.yoshida@datachain.jp>
1 parent ce4988f commit 78d1349

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

light-client/src/header/epoch.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,17 @@ impl<'a> UntrustedEpoch<'a> {
9191
trusted_validator_count += 1;
9292
}
9393
}
94-
let required = ceil_div(trusted_validators.len(), 3);
94+
let required = Self::threshold(trusted_validators.len());
9595
(
9696
trusted_validator_count >= required,
9797
trusted_validator_count,
9898
required,
9999
)
100100
}
101+
102+
fn threshold(validators_len: usize) -> usize {
103+
validators_len - ceil_div(validators_len * 2, 3) + 1
104+
}
101105
}
102106

103107
#[derive(Clone, Debug, PartialEq)]
@@ -295,4 +299,18 @@ mod test {
295299
);
296300
assert_untrusted(vec![vec![1], vec![2]], 2);
297301
}
302+
303+
#[test]
304+
pub fn test_trust_threshold() {
305+
assert_eq!(1, UntrustedEpoch::threshold(1));
306+
assert_eq!(1, UntrustedEpoch::threshold(2));
307+
assert_eq!(2, UntrustedEpoch::threshold(3));
308+
assert_eq!(2, UntrustedEpoch::threshold(4));
309+
assert_eq!(2, UntrustedEpoch::threshold(5));
310+
assert_eq!(3, UntrustedEpoch::threshold(6));
311+
assert_eq!(3, UntrustedEpoch::threshold(7));
312+
assert_eq!(3, UntrustedEpoch::threshold(8));
313+
assert_eq!(4, UntrustedEpoch::threshold(9));
314+
assert_eq!(8, UntrustedEpoch::threshold(21));
315+
}
298316
}

0 commit comments

Comments
 (0)