mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 01:11:04 +00:00
Bring back the on_finalize weight of staking. (#8463)
* Bring back the on_finalize weighg of stakin. * Better logs * Also make a few things pub * Fix build * Add assertions * Add test. * remove dbg * Update frame/election-provider-multi-phase/src/unsigned.rs * Update frame/staking/src/tests.rs * Fix * Fix * Update frame/election-provider-multi-phase/src/unsigned.rs
This commit is contained in:
@@ -381,11 +381,11 @@ impl Default for ElectionCompute {
|
||||
#[derive(PartialEq, Eq, Clone, Encode, Decode, RuntimeDebug)]
|
||||
pub struct RawSolution<C> {
|
||||
/// Compact election edges.
|
||||
compact: C,
|
||||
pub compact: C,
|
||||
/// The _claimed_ score of the solution.
|
||||
score: ElectionScore,
|
||||
pub score: ElectionScore,
|
||||
/// The round at which this solution should be submitted.
|
||||
round: u32,
|
||||
pub round: u32,
|
||||
}
|
||||
|
||||
impl<C: Default> Default for RawSolution<C> {
|
||||
@@ -402,13 +402,13 @@ pub struct ReadySolution<A> {
|
||||
///
|
||||
/// This is target-major vector, storing each winners, total backing, and each individual
|
||||
/// backer.
|
||||
supports: Supports<A>,
|
||||
pub supports: Supports<A>,
|
||||
/// The score of the solution.
|
||||
///
|
||||
/// This is needed to potentially challenge the solution.
|
||||
score: ElectionScore,
|
||||
pub score: ElectionScore,
|
||||
/// How this election was computed.
|
||||
compute: ElectionCompute,
|
||||
pub compute: ElectionCompute,
|
||||
}
|
||||
|
||||
/// A snapshot of all the data that is needed for en entire round. They are provided by
|
||||
@@ -432,10 +432,10 @@ pub struct RoundSnapshot<A> {
|
||||
pub struct SolutionOrSnapshotSize {
|
||||
/// The length of voters.
|
||||
#[codec(compact)]
|
||||
voters: u32,
|
||||
pub voters: u32,
|
||||
/// The length of targets.
|
||||
#[codec(compact)]
|
||||
targets: u32,
|
||||
pub targets: u32,
|
||||
}
|
||||
|
||||
/// Internal errors of the pallet.
|
||||
|
||||
@@ -168,12 +168,16 @@ impl<T: Config> Pallet<T> {
|
||||
size,
|
||||
T::MinerMaxWeight::get(),
|
||||
);
|
||||
|
||||
log!(
|
||||
debug,
|
||||
"miner: current compact solution voters = {}, maximum_allowed = {}",
|
||||
"initial solution voters = {}, snapshot = {:?}, maximum_allowed(capped) = {}",
|
||||
compact.voter_count(),
|
||||
size,
|
||||
maximum_allowed_voters,
|
||||
);
|
||||
|
||||
// trim weight.
|
||||
let compact = Self::trim_compact(maximum_allowed_voters, compact, &voter_index)?;
|
||||
|
||||
// re-calc score.
|
||||
@@ -252,10 +256,12 @@ impl<T: Config> Pallet<T> {
|
||||
}
|
||||
}
|
||||
|
||||
log!(debug, "removed {} voter to meet the max weight limit.", to_remove);
|
||||
Ok(compact)
|
||||
}
|
||||
_ => {
|
||||
// nada, return as-is
|
||||
log!(debug, "didn't remove any voter for weight limits.");
|
||||
Ok(compact)
|
||||
}
|
||||
}
|
||||
@@ -298,6 +304,7 @@ impl<T: Config> Pallet<T> {
|
||||
// First binary-search the right amount of voters
|
||||
let mut step = voters / 2;
|
||||
let mut current_weight = weight_with(voters);
|
||||
|
||||
while step > 0 {
|
||||
match next_voters(current_weight, voters, step) {
|
||||
// proceed with the binary search
|
||||
@@ -324,13 +331,14 @@ impl<T: Config> Pallet<T> {
|
||||
voters -= 1;
|
||||
}
|
||||
|
||||
let final_decision = voters.min(size.voters);
|
||||
debug_assert!(
|
||||
weight_with(voters.min(size.voters)) <= max_weight,
|
||||
weight_with(final_decision) <= max_weight,
|
||||
"weight_with({}) <= {}",
|
||||
voters.min(size.voters),
|
||||
final_decision,
|
||||
max_weight,
|
||||
);
|
||||
voters.min(size.voters)
|
||||
final_decision
|
||||
}
|
||||
|
||||
/// Checks if an execution of the offchain worker is permitted at the given block number, or
|
||||
|
||||
Reference in New Issue
Block a user