@@ -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