Add storage size component to weights (#12277)

* Add storage size component to weights

* Rename storage_size to proof_size

* Update primitives/weights/src/weight_v2.rs

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Fixes

* cargo fmt

* Implement custom Decode and CompactAs

* Add missing import

* Fixes

* Remove CompactAs implementation

* Properly migrate from 1D weight

* Remove #[pallet::compact] from Weight parameters

* More #[pallet::compact] removals

* Add unit tests

* Set appropriate default block proof size

* cargo fmt

* Remove nonsensical weight constant

* Test only for the reference time weight in frame_system::limits

* Only check for reference time weight on idle

* Use destructuring syntax

* Update test expectations

* Fixes

* Fixes

* Fixes

* Correctly migrate from 1D weights

* cargo fmt

* Migrate using extra extrinsics instead of custom Decode

* Fixes

* Silence dispatch call warnings that were previously allowed

* Fix gas_left test

* Use OldWeight instead of u64

* Fixes

* Only check for reference time weight in election provider

* Fix test expectations

* Fix test expectations

* Use only reference time weight in grandpa test

* Use only reference time weight in examples test

* Use only reference time weight in examples test

* Fix test expectations

Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
This commit is contained in:
Keith Yeung
2022-09-28 18:21:53 +08:00
committed by GitHub
parent 9d41de645f
commit 0327258566
20 changed files with 531 additions and 128 deletions
+51 -11
View File
@@ -120,7 +120,7 @@ use frame_support::{
ChangeMembers, Currency, Get, InitializeMembers, IsSubType, OnUnbalanced,
ReservableCurrency,
},
weights::Weight,
weights::{OldWeight, Weight},
};
use pallet_identity::IdentityField;
@@ -620,25 +620,22 @@ pub mod pallet {
.max(T::WeightInfo::close_early_disapproved(x, y, p2))
.max(T::WeightInfo::close_approved(b, x, y, p2))
.max(T::WeightInfo::close_disapproved(x, y, p2))
.saturating_add(p1)
.saturating_add(p1.into())
})]
pub fn close(
#[allow(deprecated)]
#[deprecated(note = "1D weight is used in this extrinsic, please migrate to use `close`")]
pub fn close_old_weight(
origin: OriginFor<T>,
proposal_hash: T::Hash,
#[pallet::compact] index: ProposalIndex,
#[pallet::compact] proposal_weight_bound: Weight,
#[pallet::compact] proposal_weight_bound: OldWeight,
#[pallet::compact] length_bound: u32,
) -> DispatchResultWithPostInfo {
let proposal_weight_bound: Weight = proposal_weight_bound.into();
let who = ensure_signed(origin)?;
ensure!(Self::has_voting_rights(&who), Error::<T, I>::NoVotingRights);
let info = T::ProposalProvider::close_proposal(
proposal_hash,
index,
proposal_weight_bound,
length_bound,
)?;
Ok(info.into())
Self::do_close(proposal_hash, index, proposal_weight_bound, length_bound)
}
/// Initialize the Alliance, onboard founders, fellows, and allies.
@@ -985,6 +982,34 @@ pub mod pallet {
Self::deposit_event(Event::UnscrupulousItemRemoved { items });
Ok(())
}
/// Close a vote that is either approved, disapproved, or whose voting period has ended.
///
/// Requires the sender to be a founder or fellow.
#[pallet::weight({
let b = *length_bound;
let x = T::MaxFounders::get();
let y = T::MaxFellows::get();
let p1 = *proposal_weight_bound;
let p2 = T::MaxProposals::get();
T::WeightInfo::close_early_approved(b, x, y, p2)
.max(T::WeightInfo::close_early_disapproved(x, y, p2))
.max(T::WeightInfo::close_approved(b, x, y, p2))
.max(T::WeightInfo::close_disapproved(x, y, p2))
.saturating_add(p1)
})]
pub fn close(
origin: OriginFor<T>,
proposal_hash: T::Hash,
#[pallet::compact] index: ProposalIndex,
proposal_weight_bound: Weight,
#[pallet::compact] length_bound: u32,
) -> DispatchResultWithPostInfo {
let who = ensure_signed(origin)?;
ensure!(Self::has_voting_rights(&who), Error::<T, I>::NoVotingRights);
Self::do_close(proposal_hash, index, proposal_weight_bound, length_bound)
}
}
}
@@ -1197,4 +1222,19 @@ impl<T: Config<I>, I: 'static> Pallet<T, I> {
}
res
}
fn do_close(
proposal_hash: T::Hash,
index: ProposalIndex,
proposal_weight_bound: Weight,
length_bound: u32,
) -> DispatchResultWithPostInfo {
let info = T::ProposalProvider::close_proposal(
proposal_hash,
index,
proposal_weight_bound,
length_bound,
)?;
Ok(info.into())
}
}