Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.

Conversation

@kianenigma
Copy link
Contributor

A small follow up to #7384, this is not a bug per se but the general slashing attitude of the module was still a bit too aggressive. A members who is now downgraded to a runner-up should not yet be slashed. Instead, only those that are entirely ejected (no longer member + no longer runner-up) should be slashed.

This could also cause members who bounced back and forth between being a member and runner to lose their CandidacyBond.

@kianenigma kianenigma added A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C1-low PR touches the given topic and has a low impact on builders. labels Oct 26, 2020
@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

but that means there is currently a bug ?

because if a member get downgraded to runners-up and then back to member and then downgraded again it will be slashed 2 times, while having deposited only once.

If I'm correct then this issue should prioritised as high or medium

@kianenigma
Copy link
Contributor Author

Yes this is the behaviour, and indeed let's try and also merge this for the upcoming upgrade.

@kianenigma kianenigma added C3-medium PR touches the given topic and has a medium impact on builders. and removed C1-low PR touches the given topic and has a low impact on builders. labels Oct 26, 2020
gui1117
gui1117 previously approved these changes Oct 26, 2020
@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

also it might deserve a runtime note as well, I mean if someone get slashed_reserved too much and then fail to unreserve to funds unrelated to phragmen they could legitimetly ask for refund as well.

EDIT: I see you state that this is not a bug per se, ok I felt like slashing reserved currency which haven't be deposited as a bug. But I get your point. Then fine.

@kianenigma
Copy link
Contributor Author

The reasoning for my wording is just that when I coded this initially, it was my intention to be a very strict module where losing any role would cause you to lose your bond. But now I see this is not really sensible.

Copy link
Member

@shawntabrizi shawntabrizi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@shawntabrizi
Copy link
Member

shawntabrizi commented Oct 26, 2020

I want to make sure I fully understand this. Users moving between runner-up and not in the list would not lose anything, right? Because they would not be part of the "outgoing" set.

@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

I want to make sure I fully understand this. Users moving between runner-up and not in the list would not lose anything, right? Because they would not be part of the "outgoing" set.

they will be slashed reserved CandidacyDeposit, as to_burn_bond is extended with outgoing runners up

EDIT: by not in the list I understood not in runners-up nor in members.

@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

ah sorry I misclicked I want to rerequest a review for myself :-/

@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

@kianenigma to_burn_bond is extended with outgoing runners-up, but a candidate moving from runners-up to member is an outgoing runners-up, will he get incorrectly slashed ?

@shawntabrizi
Copy link
Member

shawntabrizi commented Oct 26, 2020

they will be slashed reserved CandidacyDeposit, as to_burn_bond is extended with outgoing runners up

Then this seems just as bad then? Someone on the border is going to get slashed.

I think the only people who should be slashed are current members who actually completely leave the set.

In fact, I probably would not build in any slashing mechanism as part of this whole process, but rather build an explicit external mechanism to trigger a slash on a user. It is not clear that the behavior of dropping out of any set is actually the result of some malicious actions, and thus qualifies for a slash.

@shawntabrizi
Copy link
Member

shawntabrizi commented Oct 26, 2020

@kianenigma I think you should remove this line:

to_burn_bond.extend(outgoing);

Members that are runner-ups should not be slashed for leaving the list of runner-ups. (or as I suggested above, replace the slashing mechanism all together with some explicit extrinsic)

nvm i think this is fine, see below

@shawntabrizi
Copy link
Member

And in-fact you do not track the amount being slashed is only from the reserved balance allocated for this pallet. You can easily slash into other pallet's reserved balances.

I would strongly recommend that you remove the slashing mechanism for now until it is properly tracked and handled.

@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

And in-fact you do not track the amount being slashed is only from the reserved balance allocated for this pallet. You can easily slash into other pallet's reserved balances.

I would strongly recommend that you remove the slashing mechanism for now until it is properly tracked and handled.

Yes its planned in https://github.com/paritytech/substrate/pull/7040/files

EDIT: I mixed myself, only vote tracking is done in above PR

@kianenigma
Copy link
Contributor Author

I agree, the slashing here is too aggressive. I agree that outgoing members and runners-up should not be slashed.

Should we keep the slash for loser candidates? that one is more sensible. It discourages any small account to give a shot at being a council member. The point is to only submit a candidacy when you think you are likely to win.

But I guess this can be removed as well.

@shawntabrizi
Copy link
Member

@kianenigma I think that one is fine. especially since the weight to submit candidacy grows with the number of candidates. You can have a reasonable attack to fill the beginning with a bunch of candidates, and force real candidates to pay larger fees to submit their candidacy.

@shawntabrizi
Copy link
Member

shawntabrizi commented Oct 26, 2020

@kianenigma sorry for so many follow ups here. I think i did not understand the pallet fully until I read more of the code.

I think actually the slash from runner up to nothing is fine because the user has the opportunity to renounce their candidacy at any time. They should leave the system voluntarily or get slashed for wasting our time.

Basically, as long as you are a candidate, we should have a reserved balance for you, and if you dont leave voluntarily, we will slash. This rule was broken when we moved a member to runner-up. They are still a candidate, but did not have a reserved balance.

so it is important that to_burn_bond actually represents all the users that the pallet is no longer tracking:

// Burn outgoing bonds
to_burn_bond.into_iter().for_each(|x| {
let (imbalance, _) = T::Currency::slash_reserved(&x, T::CandidacyBond::get());
	T::LoserCandidate::on_unbalanced(imbalance);
});

@kianenigma
Copy link
Contributor Author

kianenigma commented Oct 26, 2020

I think actually the slash from runner up to nothing is fine because the user has the opportunity to renounce their candidacy at any time. They should leave the system voluntarily or get slashed for wasting our time.

This was the exact reasoning at first. As a member and runner-up, you have to renounce in time to prevent slash. I honestly still think this is too aggressive and could be relaxed a bit. Nonetheless, because we want this PR in fast, I am okay with: Merge this as-is and re-think the slashing once everything is fixed.

Currently to_burn_bond is:

  1. Outgoing runners-up
  2. Outgoing members who are not even a runner-up anymore.

So I think your requirements are met.

Failed candidates are also slashed separately (see exposed_candidates).

@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

what about #7394 (comment)

from runners-up to member ppl get slashed_reserved too no ? should we fix here or in another follow up PR ?

@shawntabrizi
Copy link
Member

shawntabrizi commented Oct 26, 2020

what about #7394 (comment)

from runners-up to member ppl get slashed_reserved too no ? should we fix here or in another follow up PR ?

What i realized from reading the code more is that once they leave the runner-ups they are completely ejected from candidate pool. So there is no risk that someone might join runner-ups again without explicitly re-applying for candidacy. So there is no going back and forth in this scenario.

Then being slashed is fine because a user should hopefully realize they will not be close to winning and thus should have left the election voluntarily.

I mean it is really up to @kianenigma how strict he wants to be with these reserved deposits, but whereas I had an explicit problem before, i dont really see any choice now as better over the other.

@gui1117
Copy link
Contributor

gui1117 commented Oct 26, 2020

what about #7394 (comment)
from runners-up to member ppl get slashed_reserved too no ? should we fix here or in another follow up PR ?

What i realized from reading the code more is that once they leave the runner-ups they are completely ejected from candidate pool. So there is no risk that someone might join runner-ups again without explicitly re-applying for candidacy. So there is no going back and forth in this scenario.

runners-up are candidate:

		let mut candidates = Self::candidates();
		// candidates who explicitly called `submit_candidacy`. Only these folks are at risk of
		// losing their bond.
		let exposed_candidates = candidates.clone();
		// current members are always a candidate for the next round as well.
		// this is guaranteed to not create any duplicates.
		candidates.append(&mut Self::members_ids());
		// previous runners_up are also always candidates for the next round.
		candidates.append(&mut Self::runners_up_ids());

@kianenigma
Copy link
Contributor Author

@thiolliere is right this is also a case where we slash by mistake. You can be a runner and then be upgraded to a winner. This will cause you to be in the outgoing set of the runners-up and mistakingly slashed, while we shouldn't.

@kianenigma
Copy link
Contributor Author

See the new test case that I added, it covers both cases and now I think we are finally good.

@kianenigma
Copy link
Contributor Author

Much thanks to both of you for the rapid reviews ❤️

@kianenigma
Copy link
Contributor Author

/benchmark runtime pallet pallet_elections_phragmen

@parity-benchapp
Copy link

parity-benchapp bot commented Oct 26, 2020

Finished benchmark for branch: kiz-fix-faulty-election-more

Benchmark: Runtime Benchmarks Pallet

cargo run --release --features runtime-benchmarks --manifest-path bin/node/cli/Cargo.toml -- benchmark --chain dev --steps 50 --repeat 20 --extrinsic "*" --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output ./bin/node/runtime/src/weights --header ./HEADER --pallet pallet_elections_phragmen

Results

Pallet: "pallet_elections_phragmen", Extrinsic: "vote", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 91.99
+ v 0.183
µs

Reads = 5 + (0 * v)
Writes = 2 + (0 * v)
Min Squares Analysis

-- Extrinsic Time --

Data points distribution:
v mean µs sigma µs %
1 92.5 0.176 0.1%
2 92.47 0.103 0.1%
3 92.59 0.2 0.2%
4 92.72 0.138 0.1%
5 92.45 0.128 0.1%
6 92.79 0.087 0.0%
7 93.26 0.098 0.1%
8 93.2 0.13 0.1%
9 93.93 0.147 0.1%
10 93.91 0.25 0.2%
11 94.07 0.146 0.1%
12 94.13 0.096 0.1%
13 94.16 0.06 0.0%
14 95.02 0.127 0.1%
15 95.03 0.252 0.2%
16 94.6 0.159 0.1%

Quality and confidence:
param error
v 0.005

Model:
Time ~= 91.99
+ v 0.184
µs

Reads = 5 + (0 * v)
Writes = 2 + (0 * v)
Pallet: "pallet_elections_phragmen", Extrinsic: "vote_update", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 56.63
+ v 0.23
µs

Reads = 5 + (0 * v)
Writes = 2 + (0 * v)
Min Squares Analysis

-- Extrinsic Time --

Data points distribution:
v mean µs sigma µs %
1 56.57 0.059 0.1%
2 56.99 0.094 0.1%
3 57.05 0.136 0.2%
4 57.31 0.077 0.1%
5 58.06 0.099 0.1%
6 58.33 0.184 0.3%
7 58.35 0.107 0.1%
8 58.7 0.125 0.2%
9 58.81 0.063 0.1%
10 59.1 0.099 0.1%
11 59.08 0.092 0.1%
12 59.29 0.123 0.2%
13 59.95 0.152 0.2%
14 59.9 0.091 0.1%
15 59.58 0.126 0.2%
16 60.01 0.107 0.1%

Quality and confidence:
param error
v 0.004

Model:
Time ~= 56.63
+ v 0.228
µs

Reads = 5 + (0 * v)
Writes = 2 + (0 * v)
Pallet: "pallet_elections_phragmen", Extrinsic: "remove_voter", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 76.89
µs

Reads = 2
Writes = 2
Min Squares Analysis

-- Extrinsic Time --

Model:
Time ~= 76.89
µs

Reads = 2
Writes = 2
Pallet: "pallet_elections_phragmen", Extrinsic: "report_defunct_voter_correct", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 0
+ c 1.768
+ v 32.45
µs

Reads = 7 + (0 * c) + (0 * v)
Writes = 3 + (0 * c) + (0 * v)
Min Squares Analysis

-- Extrinsic Time --

Data points distribution:
c v mean µs sigma µs %
1 16 296.3 0.393 0.1%
4 16 302.1 0.415 0.1%
7 16 306.5 0.246 0.0%
10 16 315.6 0.397 0.1%
13 16 328.2 5.543 1.6%
16 16 334.6 2.6 0.7%
19 16 344.5 3.234 0.9%
22 16 350.5 4.48 1.2%
25 16 363.6 4.009 1.1%
28 16 343.8 2.072 0.6%
31 16 350.7 1.705 0.4%
34 16 360.5 1.479 0.4%
37 16 366.3 1.813 0.4%
40 16 375.1 0.986 0.2%
43 16 375.8 1.06 0.2%
46 16 382 1.849 0.4%
49 16 387.8 1.965 0.5%
52 16 395 1.951 0.4%
55 16 397.4 1.222 0.3%
58 16 403.8 2.022 0.5%
61 16 408.3 1.546 0.3%
64 16 416.6 1.985 0.4%
67 16 419.5 1.8 0.4%
70 16 422.9 1.038 0.2%
73 16 428.6 0.903 0.2%
76 16 434.1 2.013 0.4%
79 16 442.3 2.31 0.5%
82 16 445.7 1.793 0.4%
85 16 447.6 0.682 0.1%
88 16 455.1 1.708 0.3%
91 16 461 2.481 0.5%
94 16 462.8 0.304 0.0%
97 16 471.8 2.57 0.5%
100 16 474 0.65 0.1%
103 16 483.8 2.61 0.5%
106 16 490.1 2.052 0.4%
109 16 495.1 2.659 0.5%
112 16 497.2 2.988 0.6%
115 16 506.5 2.023 0.3%
118 16 511.9 1.461 0.2%
121 16 517.1 3.307 0.6%
124 16 521.8 2.733 0.5%
127 16 528.1 0.866 0.1%
130 16 524.5 2.51 0.4%
133 16 533.2 4.094 0.7%
136 16 538.6 4.994 0.9%
139 16 542.1 4.668 0.8%
142 16 549.8 5.612 1.0%
145 16 553.8 4.454 0.8%
148 16 557.5 5.341 0.9%
151 16 571.8 3.706 0.6%
154 16 577.3 3.803 0.6%
157 16 581.3 0.953 0.1%
160 16 585.7 0.836 0.1%
163 16 593.3 0.84 0.1%
166 16 598.1 0.824 0.1%
169 16 602.7 1.272 0.2%
172 16 607.1 1.217 0.2%
175 16 612.7 0.781 0.1%
178 16 618.6 0.585 0.0%
181 16 620.5 3.698 0.5%
184 16 619.4 4.394 0.7%
187 16 634 0.7 0.1%
190 16 637.4 1.437 0.2%
193 16 639.1 3.782 0.5%
196 16 648.2 4.698 0.7%
199 16 652.4 2.848 0.4%
200 1 169 0.257 0.1%
200 2 202.6 0.364 0.1%
200 3 235.8 0.366 0.1%
200 4 267.8 0.396 0.1%
200 5 300 0.648 0.2%
200 6 335.5 4.163 1.2%
200 7 364.8 0.454 0.1%
200 8 398.1 0.55 0.1%
200 9 430.4 0.259 0.0%
200 10 460.6 3.596 0.7%
200 11 494.2 0.734 0.1%
200 12 526.8 0.947 0.1%
200 13 557.9 3.137 0.5%
200 14 591.5 0.914 0.1%
200 15 624.6 0.82 0.1%
200 16 656.9 0.346 0.0%

Quality and confidence:
param error
c 0.002
v 0.051

Model:
Time ~= 0
+ c 1.769
+ v 32.24
µs

Reads = 7 + (0 * c) + (0 * v)
Writes = 3 + (0 * c) + (0 * v)
Pallet: "pallet_elections_phragmen", Extrinsic: "report_defunct_voter_incorrect", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 0
+ c 1.776
+ v 32.44
µs

Reads = 6 + (0 * c) + (0 * v)
Writes = 2 + (0 * c) + (0 * v)
Min Squares Analysis

-- Extrinsic Time --

Data points distribution:
c v mean µs sigma µs %
1 16 281.6 0.332 0.1%
4 16 287.7 0.339 0.1%
7 16 293 0.346 0.1%
10 16 298 0.244 0.0%
13 16 303.5 0.263 0.0%
16 16 308.3 0.374 0.1%
19 16 314 0.378 0.1%
22 16 319.3 0.311 0.0%
25 16 324.5 0.398 0.1%
28 16 329.3 0.317 0.0%
31 16 335.8 0.522 0.1%
34 16 345.8 0.427 0.1%
37 16 351 0.396 0.1%
40 16 357.2 0.477 0.1%
43 16 361.7 0.321 0.0%
46 16 367.3 0.38 0.1%
49 16 372.8 0.313 0.0%
52 16 378.7 0.33 0.0%
55 16 384.2 0.363 0.0%
58 16 389.7 1.925 0.4%
61 16 392.5 2.047 0.5%
64 16 396.5 2.864 0.7%
67 16 401.2 2.046 0.5%
70 16 408 2.568 0.6%
73 16 427.3 1.556 0.3%
76 16 427.9 2.757 0.6%
79 16 430.1 3.035 0.7%
82 16 427.9 2.436 0.5%
85 16 431.2 1.291 0.2%
88 16 440.2 1.603 0.3%
91 16 446.9 0.412 0.0%
94 16 452.4 0.605 0.1%
97 16 457.9 0.677 0.1%
100 16 462.5 0.578 0.1%
103 16 468 0.607 0.1%
106 16 473.3 0.268 0.0%
109 16 478.9 0.825 0.1%
112 16 484.1 0.299 0.0%
115 16 489.2 0.355 0.0%
118 16 494.4 0.569 0.1%
121 16 500.1 0.629 0.1%
124 16 505.7 0.814 0.1%
127 16 510.1 0.58 0.1%
130 16 516.3 0.666 0.1%
133 16 520.9 0.732 0.1%
136 16 525.8 0.38 0.0%
139 16 531.5 0.643 0.1%
142 16 536 1.012 0.1%
145 16 541.5 1.883 0.3%
148 16 546.8 0.587 0.1%
151 16 551.7 0.647 0.1%
154 16 556.9 0.671 0.1%
157 16 563.2 0.654 0.1%
160 16 567.6 0.856 0.1%
163 16 573 0.618 0.1%
166 16 578.3 0.645 0.1%
169 16 583.2 1.158 0.1%
172 16 588.3 0.796 0.1%
175 16 592.9 1.273 0.2%
178 16 598.6 1.063 0.1%
181 16 603.6 0.959 0.1%
184 16 609.3 1.14 0.1%
187 16 615.5 0.57 0.0%
190 16 619.9 0.911 0.1%
193 16 625.1 1.085 0.1%
196 16 629 1.201 0.1%
199 16 635.5 0.855 0.1%
200 1 151.3 0.342 0.2%
200 2 184.2 0.275 0.1%
200 3 214.9 3.585 1.6%
200 4 249.7 0.635 0.2%
200 5 280.8 3.996 1.4%
200 6 314.4 0.624 0.1%
200 7 347.5 0.677 0.1%
200 8 379.3 0.261 0.0%
200 9 411.2 0.597 0.1%
200 10 443.8 0.627 0.1%
200 11 476.4 0.464 0.0%
200 12 508 0.757 0.1%
200 13 540.4 1.041 0.1%
200 14 574.5 0.874 0.1%
200 15 605.5 1.29 0.2%
200 16 637.6 0.754 0.1%

Quality and confidence:
param error
c 0.001
v 0.032

Model:
Time ~= 0
+ c 1.777
+ v 32.52
µs

Reads = 6 + (0 * c) + (0 * v)
Writes = 2 + (0 * c) + (0 * v)
Pallet: "pallet_elections_phragmen", Extrinsic: "submit_candidacy", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 75.61
+ c 0.321
µs

Reads = 3 + (0 * c)
Writes = 1 + (0 * c)
Min Squares Analysis

-- Extrinsic Time --

Data points distribution:
c mean µs sigma µs %
1 73.6 0.119 0.1%
4 75.16 0.213 0.2%
7 75.92 0.128 0.1%
10 77.13 0.206 0.2%
13 78.18 0.095 0.1%
16 78.62 0.28 0.3%
19 81.79 1.236 1.5%
22 82.58 0.98 1.1%
25 83.98 0.769 0.9%
28 84.62 0.755 0.8%
31 84.64 0.353 0.4%
34 86.1 0.192 0.2%
37 87.79 0.096 0.1%
40 88.8 0.181 0.2%
43 89.84 0.149 0.1%
46 90.73 0.212 0.2%
49 91.92 0.172 0.1%
52 92.56 0.169 0.1%
55 94.22 0.236 0.2%
58 94.71 0.221 0.2%
61 96.33 0.229 0.2%
64 96.82 0.172 0.1%
67 97.86 0.148 0.1%
70 98.03 0.189 0.1%
73 99.23 0.264 0.2%
76 100.3 0.225 0.2%
79 101.2 0.252 0.2%
82 102.6 0.18 0.1%
85 103 0.195 0.1%
88 103.5 0.237 0.2%
91 105 0.292 0.2%
94 106.1 0.214 0.2%
97 106.7 0.261 0.2%
100 106.9 1.83 1.7%
103 107.9 1.719 1.5%
106 103.1 0.163 0.1%
109 104.2 0.384 0.3%
112 104.9 0.694 0.6%
115 106.7 1.741 1.6%
118 109.8 2.775 2.5%
121 109.4 2.731 2.4%
124 114.4 2.416 2.1%
127 111.4 2.564 2.2%
130 113.7 3.311 2.9%
133 115.3 3.478 3.0%
136 119.4 0.504 0.4%
139 115.6 3.2 2.7%
142 117.3 3.49 2.9%
145 111.1 0.957 0.8%
148 114.5 5.14 4.4%
151 116.3 4.341 3.7%
154 118.8 5.243 4.4%
157 119.2 5.155 4.3%
160 125.6 3.247 2.5%
163 122.4 5.02 4.0%
166 128.2 2.802 2.1%
169 130.4 0.278 0.2%
172 130.9 0.353 0.2%
175 132 0.259 0.1%
178 133.3 0.477 0.3%
181 134.1 0.111 0.0%
184 135.3 0.393 0.2%
187 136 0.152 0.1%
190 136.6 0.211 0.1%
193 138.4 0.475 0.3%
196 138.8 0.683 0.4%
199 140.3 0.336 0.2%

Quality and confidence:
param error
c 0.002

Model:
Time ~= 75.13
+ c 0.31
µs

Reads = 3 + (0 * c)
Writes = 1 + (0 * c)
Pallet: "pallet_elections_phragmen", Extrinsic: "renounce_candidacy_candidate", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 50.12
+ c 0.186
µs

Reads = 1 + (0 * c)
Writes = 1 + (0 * c)
Min Squares Analysis

-- Extrinsic Time --

Data points distribution:
c mean µs sigma µs %
1 48.53 0.113 0.2%
4 49.3 0.174 0.3%
7 49.66 0.097 0.1%
10 50.83 0.128 0.2%
13 51.36 0.128 0.2%
16 51.32 0.1 0.1%
19 52.34 0.117 0.2%
22 52.97 0.113 0.2%
25 53.78 0.156 0.2%
28 54.56 0.144 0.2%
31 55.59 0.153 0.2%
34 56.1 0.172 0.3%
37 57.56 0.151 0.2%
40 58.08 0.124 0.2%
43 58.26 0.145 0.2%
46 58.75 0.109 0.1%
49 59.71 0.135 0.2%
52 60.3 0.106 0.1%
55 60.59 0.118 0.1%
58 61.51 0.147 0.2%
61 61.92 0.15 0.2%
64 62.77 0.134 0.2%
67 63.12 0.094 0.1%
70 63.96 0.108 0.1%
73 64.06 0.095 0.1%
76 64.9 0.162 0.2%
79 65.36 0.117 0.1%
82 65.68 0.139 0.2%
85 66.22 0.147 0.2%
88 66.89 0.09 0.1%
91 67.98 0.163 0.2%
94 67.83 0.219 0.3%
97 68.38 0.233 0.3%
100 69.59 0.259 0.3%
103 69.83 0.2 0.2%
106 70.43 0.197 0.2%
109 71.13 0.214 0.3%
112 71.53 0.127 0.1%
115 71.41 0.284 0.3%
118 72.94 0.152 0.2%
121 73.09 0.302 0.4%
124 74.07 0.225 0.3%
127 74.02 0.263 0.3%
130 74.49 0.186 0.2%
133 75.83 0.148 0.1%
136 76.09 0.127 0.1%
139 76.33 0.197 0.2%
142 76.92 0.118 0.1%
145 76.89 0.136 0.1%
148 77.25 0.253 0.3%
151 78.56 0.143 0.1%
154 78.43 0.175 0.2%
157 78.95 0.329 0.4%
160 77.85 3.304 4.2%
163 77.58 3.344 4.3%
166 76.43 3.876 5.0%
169 75.93 2.873 3.7%
172 81.05 0.204 0.2%
175 82.36 0.31 0.3%
178 82.49 0.174 0.2%
181 82.81 0.483 0.5%
184 83.68 0.333 0.3%
187 84.11 0.223 0.2%
190 83.94 0.465 0.5%
193 85.78 0.714 0.8%
196 86.4 0.241 0.2%
199 87.06 0.109 0.1%

Quality and confidence:
param error
c 0

Model:
Time ~= 50.07
+ c 0.184
µs

Reads = 1 + (0 * c)
Writes = 1 + (0 * c)
Pallet: "pallet_elections_phragmen", Extrinsic: "renounce_candidacy_members", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 79.47
µs

Reads = 3
Writes = 4
Min Squares Analysis

-- Extrinsic Time --

Model:
Time ~= 79.47
µs

Reads = 3
Writes = 4
Pallet: "pallet_elections_phragmen", Extrinsic: "renounce_candidacy_runners_up", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 49.74
µs

Reads = 1
Writes = 1
Min Squares Analysis

-- Extrinsic Time --

Model:
Time ~= 49.74
µs

Reads = 1
Writes = 1
Pallet: "pallet_elections_phragmen", Extrinsic: "remove_member_with_replacement", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 76.97
µs

Reads = 4
Writes = 5
Min Squares Analysis

-- Extrinsic Time --

Model:
Time ~= 76.97
µs

Reads = 4
Writes = 5
Pallet: "pallet_elections_phragmen", Extrinsic: "remove_member_wrong_refund", Lowest values: [], Highest values: [], Steps: [50], Repeat: 20
Median Slopes Analysis

-- Extrinsic Time --

Model:
Time ~= 8.871
µs

Reads = 1
Writes = 0
Min Squares Analysis

-- Extrinsic Time --

Model:
Time ~= 8.871
µs

Reads = 1
Writes = 0

Parity Benchmarking Bot added 2 commits October 26, 2020 14:35
…/node/cli/Cargo.toml -- benchmark --chain dev --steps 50 --repeat 20 --extrinsic * --execution=wasm --wasm-execution=compiled --heap-pages=4096 --output ./bin/node/runtime/src/weights --header ./HEADER --pallet pallet_elections_phragmen
@kianenigma
Copy link
Contributor Author

Insubstantial weight changes.

@kianenigma
Copy link
Contributor Author

bot merge

@ghost
Copy link

ghost commented Oct 26, 2020

Waiting for commit status.

@ghost
Copy link

ghost commented Oct 26, 2020

Merge failed: "Required status check \"cla\" is expected."

@shawntabrizi
Copy link
Member

bot merge

@ghost
Copy link

ghost commented Oct 26, 2020

Trying merge.

@ghost
Copy link

ghost commented Oct 26, 2020

Merge failed: "Required status check \"cla\" is expected."

@kirushik
Copy link

bot merge

@ghost
Copy link

ghost commented Oct 26, 2020

Trying merge.

@ghost ghost merged commit a3d783c into master Oct 26, 2020
@ghost ghost deleted the kiz-fix-faulty-election-more branch October 26, 2020 18:02
This pull request was closed.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

A0-please_review Pull request needs code review. B0-silent Changes should not be mentioned in any release notes C3-medium PR touches the given topic and has a medium impact on builders.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants