From e46835eb874dd5e8155c7f451d70d87aa80898b7 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 12 Jan 2021 12:19:30 +0800 Subject: [PATCH 1/3] fix: formula --- frame/bridge/relay-authorities/src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frame/bridge/relay-authorities/src/lib.rs b/frame/bridge/relay-authorities/src/lib.rs index 96dfe4323c..6259a74ba1 100644 --- a/frame/bridge/relay-authorities/src/lib.rs +++ b/frame/bridge/relay-authorities/src/lib.rs @@ -516,9 +516,10 @@ decl_module! { signatures.push((old_authority, signature)); - if Perbill::from_rational_approximation(signatures.len() as u32 + 1, old_authorities.len() as _) + if Perbill::from_rational_approximation(signatures.len() as u32, old_authorities.len() as _) >= T::SignThreshold::get() { + Self::wait_target_chain_authorities_change(); Self::deposit_event(RawEvent::AuthoritiesSetSigned( >::get(), >::get() @@ -527,7 +528,6 @@ decl_module! { .collect(), signatures )); - Self::wait_target_chain_authorities_change(); } else { >::put((message, signatures)); } From 99518d53e47c46366670726790fe20c68a92bd8f Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 12 Jan 2021 12:19:54 +0800 Subject: [PATCH 2/3] test: `authorities_set_signed_event_should_work` --- frame/bridge/relay-authorities/src/test.rs | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/frame/bridge/relay-authorities/src/test.rs b/frame/bridge/relay-authorities/src/test.rs index 4d3356e3f1..86dccd16fe 100644 --- a/frame/bridge/relay-authorities/src/test.rs +++ b/frame/bridge/relay-authorities/src/test.rs @@ -270,5 +270,31 @@ fn authorities_set_signed_event_should_work() { vec![(9, [0; 65])] ))] ); + + RelayAuthorities::finish_authorities_change(); + + assert_ok!(request_authority(2)); + assert_ok!(RelayAuthorities::add_authority(Origin::root(), 2)); + + events(); + + assert_ok!(RelayAuthorities::submit_signed_authorities( + Origin::signed(9), + [0; 65] + )); + assert!(relay_authorities_events().is_empty()); + assert_ok!(RelayAuthorities::submit_signed_authorities( + Origin::signed(1), + [0; 65] + )); + + assert_eq!( + relay_authorities_events(), + vec![Event::relay_authorities(RawEvent::AuthoritiesSetSigned( + 1, + vec![Default::default(), Default::default(), Default::default()], + vec![(9, [0; 65]), (1, [0; 65])] + ))] + ); }); } From 1428ad6ff48158d16a043210002b72322b74227f Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Tue, 12 Jan 2021 12:23:57 +0800 Subject: [PATCH 3/3] doc: `authorities_set_signed_event_should_work` --- frame/bridge/relay-authorities/src/test.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frame/bridge/relay-authorities/src/test.rs b/frame/bridge/relay-authorities/src/test.rs index 86dccd16fe..b9b7e73b8b 100644 --- a/frame/bridge/relay-authorities/src/test.rs +++ b/frame/bridge/relay-authorities/src/test.rs @@ -282,12 +282,14 @@ fn authorities_set_signed_event_should_work() { Origin::signed(9), [0; 65] )); + // Not enough signatures, `1 / 2 < 60%` assert!(relay_authorities_events().is_empty()); assert_ok!(RelayAuthorities::submit_signed_authorities( Origin::signed(1), [0; 65] )); + // Enough signatures, `2 / 2 > 60%` assert_eq!( relay_authorities_events(), vec![Event::relay_authorities(RawEvent::AuthoritiesSetSigned(