From 2597457a7ea0e36e591b846e030eb8cb3635bbb7 Mon Sep 17 00:00:00 2001
From: Gavin Wood <gavin@parity.io>
Date: Mon, 13 Jan 2020 12:49:52 +0100
Subject: [PATCH] Disable equalize, avoiding consensus issue (#4608)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Disable equalize, avoiding consensus issue

* Update frame/staking/Cargo.toml

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
---
 substrate/frame/staking/Cargo.toml |  3 +--
 substrate/frame/staking/src/lib.rs | 34 ------------------------------
 2 files changed, 1 insertion(+), 36 deletions(-)

diff --git a/substrate/frame/staking/Cargo.toml b/substrate/frame/staking/Cargo.toml
index 8cf6d9f80e8..e3e6fcbe7ba 100644
--- a/substrate/frame/staking/Cargo.toml
+++ b/substrate/frame/staking/Cargo.toml
@@ -27,9 +27,8 @@ pallet-staking-reward-curve = { version = "2.0.0",  path = "../staking/reward-cu
 substrate-test-utils = { version = "2.0.0", path = "../../test-utils" }
 
 [features]
-equalize = []
 migrate = []
-default = ["std", "equalize"]
+default = ["std"]
 std = [
 	"serde",
 	"safe-mix/std",
diff --git a/substrate/frame/staking/src/lib.rs b/substrate/frame/staking/src/lib.rs
index eef00a7c245..f2f3fdfb70d 100644
--- a/substrate/frame/staking/src/lib.rs
+++ b/substrate/frame/staking/src/lib.rs
@@ -1519,40 +1519,6 @@ impl<T: Trait> Module<T> {
 				Self::slashable_balance_of,
 			);
 
-			if cfg!(feature = "equalize") {
-				let mut staked_assignments
-					: Vec<(T::AccountId, Vec<PhragmenStakedAssignment<T::AccountId>>)>
-					= Vec::with_capacity(assignments.len());
-				for (n, assignment) in assignments.iter() {
-					let mut staked_assignment
-						: Vec<PhragmenStakedAssignment<T::AccountId>>
-						= Vec::with_capacity(assignment.len());
-
-					// If this is a self vote, then we don't need to equalise it at all. While the
-					// staking system does not allow nomination and validation at the same time,
-					// this must always be 100% support.
-					if assignment.len() == 1 && assignment[0].0 == *n {
-						continue;
-					}
-					for (c, per_thing) in assignment.iter() {
-						let nominator_stake = to_votes(Self::slashable_balance_of(n));
-						let other_stake = *per_thing * nominator_stake;
-						staked_assignment.push((c.clone(), other_stake));
-					}
-					staked_assignments.push((n.clone(), staked_assignment));
-				}
-
-				let tolerance = 0_u128;
-				let iterations = 2_usize;
-				sp_phragmen::equalize::<_, _, T::CurrencyToVote, _>(
-					staked_assignments,
-					&mut supports,
-					tolerance,
-					iterations,
-					Self::slashable_balance_of,
-				);
-			}
-
 			// Clear Stakers.
 			for v in Self::current_elected().iter() {
 				<Stakers<T>>::remove(v);
-- 
GitLab