Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use frame umbrella crate in pallet-babe & pallet-staking-reward-curve #6412

Open
wants to merge 29 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
f2bcae7
pallet-babe prelude imports, additional umbrella re-exports
snowmead Nov 8, 2024
7c81ee7
Merge branch 'paritytech:master' into snow-umbrella-crate-pallet-babe
snowmead Nov 8, 2024
aaf16a7
fix: revert Header exports in umbrella
snowmead Nov 8, 2024
b6bfd0a
use umbrella crate in staking reward curve
snowmead Nov 8, 2024
84ee9b1
fix: import Header trait, pallet_staking_reward_curve build! proc mac…
snowmead Nov 8, 2024
5cc0904
prdoc
snowmead Nov 8, 2024
3c6fcf7
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 8, 2024
0f25d98
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 12, 2024
b01a486
revert frame dependency reward-curve pallet, add re-exports to umbrel…
snowmead Nov 16, 2024
1f97458
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 16, 2024
ac30fd6
update doc
snowmead Nov 16, 2024
8f48053
add curve::PiecewiseLinear to frame umbrella prelude, update reward-c…
snowmead Nov 17, 2024
8293b24
remove test pallets from std feature
snowmead Nov 17, 2024
a476465
add back sp-staking
snowmead Nov 17, 2024
c7ba1fa
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 26, 2024
453ef58
fmt
snowmead Nov 27, 2024
aae2fda
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 27, 2024
cf7f840
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 28, 2024
4533e63
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 28, 2024
4282709
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Nov 30, 2024
07b4225
Remove ConsensusEngineId and DigestItem from frame prelude
snowmead Dec 16, 2024
f07cf2f
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Dec 16, 2024
d141f25
remove AccountKeyring
snowmead Dec 16, 2024
026d174
import DigestItem
snowmead Dec 16, 2024
8cf8eab
update semver in pr doc
snowmead Dec 16, 2024
2cb8fc0
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Dec 17, 2024
9136209
fix: ignore reward curve rust docs
snowmead Dec 18, 2024
fca2f01
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Dec 18, 2024
83b1f2e
Merge branch 'master' into snow-umbrella-crate-pallet-babe
snowmead Dec 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

19 changes: 19 additions & 0 deletions prdoc/pr_6412.prdoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Schema: Polkadot SDK PRDoc Schema (prdoc) v1.0.0
# See doc at https://raw.githubusercontent.com/paritytech/polkadot-sdk/master/prdoc/schema_user.json

title: Use frame umbrella crate in pallet-babe and pallet-staking-reward-curve

doc:
- audience: Runtime Dev
description: |
Extends the FRAME umbrella crate and uses it in pallet-babe and pallet-staking-reward-curve.
Reverse compatible addition to the pallet-staking-reward-curve proc macro to allow for the use of the FRAME umbrella crate.
Migrates benchmarking from v1 to v2 for pallet-babe.

crates:
- name: polkadot-sdk-frame
bump: patch
- name: pallet-babe
bump: minor
- name: pallet-staking-reward-curve
bump: patch
28 changes: 4 additions & 24 deletions substrate/frame/babe/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,12 @@ targets = ["x86_64-unknown-linux-gnu"]
codec = { features = ["derive"], workspace = true }
log = { workspace = true }
scale-info = { features = ["derive", "serde"], workspace = true }
frame-benchmarking = { optional = true, workspace = true }
frame-support = { workspace = true }
frame-system = { workspace = true }
frame = { workspace = true, features = ["experimental", "runtime"] }
pallet-authorship = { workspace = true }
pallet-session = { workspace = true }
pallet-timestamp = { workspace = true }
sp-application-crypto = { features = ["serde"], workspace = true }
sp-consensus-babe = { features = ["serde"], workspace = true }
sp-core = { features = ["serde"], workspace = true }
sp-io = { workspace = true }
sp-runtime = { features = ["serde"], workspace = true }
sp-session = { workspace = true }
sp-staking = { features = ["serde"], workspace = true }

Expand All @@ -39,53 +34,38 @@ pallet-balances = { workspace = true, default-features = true }
pallet-offences = { workspace = true, default-features = true }
pallet-staking = { workspace = true, default-features = true }
pallet-staking-reward-curve = { workspace = true, default-features = true }
sp-core = { workspace = true, default-features = true }

[features]
default = ["std"]
std = [
"codec/std",
"frame-benchmarking?/std",
"frame-election-provider-support/std",
"frame-support/std",
"frame-system/std",
"frame/std",
"log/std",
"pallet-authorship/std",
"pallet-balances/std",
"pallet-offences/std",
"pallet-session/std",
"pallet-staking/std",
"pallet-timestamp/std",
"scale-info/std",
"sp-application-crypto/std",
"sp-consensus-babe/std",
"sp-core/std",
"sp-io/std",
"sp-runtime/std",
"sp-session/std",
"sp-staking/std",
]
runtime-benchmarks = [
"frame-benchmarking/runtime-benchmarks",
"frame-election-provider-support/runtime-benchmarks",
"frame-support/runtime-benchmarks",
"frame-system/runtime-benchmarks",
"frame/runtime-benchmarks",
"pallet-balances/runtime-benchmarks",
"pallet-offences/runtime-benchmarks",
"pallet-staking/runtime-benchmarks",
"pallet-timestamp/runtime-benchmarks",
"sp-runtime/runtime-benchmarks",
"sp-staking/runtime-benchmarks",
]
try-runtime = [
"frame-election-provider-support/try-runtime",
"frame-support/try-runtime",
"frame-system/try-runtime",
"frame/try-runtime",
"pallet-authorship/try-runtime",
"pallet-balances/try-runtime",
"pallet-offences/try-runtime",
"pallet-session/try-runtime",
"pallet-staking/try-runtime",
"pallet-timestamp/try-runtime",
"sp-runtime/try-runtime",
]
8 changes: 4 additions & 4 deletions substrate/frame/babe/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
#![cfg(feature = "runtime-benchmarks")]

use super::*;
use frame_benchmarking::v2::*;
use frame::benchmarking::prelude::*;

type Header = sp_runtime::generic::Header<u64, sp_runtime::traits::BlakeTwo256>;
type Header = frame::deps::sp_runtime::generic::Header<u64, BlakeTwo256>;

#[benchmarks]
mod benchmarks {
Expand Down Expand Up @@ -69,7 +69,7 @@ mod benchmarks {
}

assert!(sp_consensus_babe::check_equivocation_proof::<Header>(equivocation_proof2));
}

impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(3), crate::mock::Test,);
impl_benchmark_test_suite!(Pallet, crate::mock::new_test_ext(3), crate::mock::Test,);
}
}
17 changes: 9 additions & 8 deletions substrate/frame/babe/src/default_weights.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,11 @@
//! Default weights for the Babe Pallet
//! This file was not auto-generated.

use frame_support::weights::{
constants::{RocksDbWeight as DbWeight, WEIGHT_REF_TIME_PER_MICROS, WEIGHT_REF_TIME_PER_NANOS},
Weight,
};
use frame::{prelude::*, weights_prelude::*};

impl crate::WeightInfo for () {
fn plan_config_change() -> Weight {
DbWeight::get().writes(1)
RocksDbWeight::get().writes(1)
}

fn report_equivocation(validator_count: u32, max_nominators_per_validator: u32) -> Weight {
Expand All @@ -39,7 +36,7 @@ impl crate::WeightInfo for () {
Weight::from_parts(175u64 * WEIGHT_REF_TIME_PER_NANOS, 0)
.saturating_mul(validator_count),
)
.saturating_add(DbWeight::get().reads(5))
.saturating_add(RocksDbWeight::get().reads(5))
// check equivocation proof
.saturating_add(Weight::from_parts(110u64 * WEIGHT_REF_TIME_PER_MICROS, 0))
// report offence
Expand All @@ -48,7 +45,11 @@ impl crate::WeightInfo for () {
25u64 * WEIGHT_REF_TIME_PER_MICROS * max_nominators_per_validator as u64,
0,
))
.saturating_add(DbWeight::get().reads(14 + 3 * max_nominators_per_validator as u64))
.saturating_add(DbWeight::get().writes(10 + 3 * max_nominators_per_validator as u64))
.saturating_add(
RocksDbWeight::get().reads(14 + 3 * max_nominators_per_validator as u64),
)
.saturating_add(
RocksDbWeight::get().writes(10 + 3 * max_nominators_per_validator as u64),
)
}
}
10 changes: 1 addition & 9 deletions substrate/frame/babe/src/equivocation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,10 @@
//! definition.

use alloc::{boxed::Box, vec, vec::Vec};
use frame_support::traits::{Get, KeyOwnerProofSystem};
use frame_system::pallet_prelude::HeaderFor;
use frame::{prelude::*, runtime::apis::KeyTypeId, traits::KeyOwnerProofSystem};
use log::{error, info};

use sp_consensus_babe::{AuthorityId, EquivocationProof, Slot, KEY_TYPE};
use sp_runtime::{
transaction_validity::{
InvalidTransaction, TransactionPriority, TransactionSource, TransactionValidity,
TransactionValidityError, ValidTransaction,
},
DispatchError, KeyTypeId, Perbill,
};
use sp_session::{GetSessionNumber, GetValidatorCount};
use sp_staking::{
offence::{Kind, Offence, OffenceReportSystem, ReportOffence},
Expand Down
40 changes: 14 additions & 26 deletions substrate/frame/babe/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,26 +25,20 @@ extern crate alloc;

use alloc::{boxed::Box, vec, vec::Vec};
use codec::{Decode, Encode};
use frame_support::{
dispatch::{DispatchResultWithPostInfo, Pays},
ensure,
traits::{ConstU32, DisabledValidators, FindAuthor, Get, OnTimestampSet, OneSessionHandler},
weights::Weight,
BoundedVec, WeakBoundedVec,
use frame::{
deps::sp_runtime::{generic::DigestItem, ConsensusEngineId},
prelude::*,
traits::{
DisabledValidators, EstimateNextSessionRotation, Lateness as LatenessT, OneSessionHandler,
StorageInstance,
},
};
use frame_system::pallet_prelude::{BlockNumberFor, HeaderFor};
use sp_consensus_babe::{
digests::{NextConfigDescriptor, NextEpochDescriptor, PreDigest},
AllowedSlots, BabeAuthorityWeight, BabeEpochConfiguration, ConsensusLog, Epoch,
EquivocationProof, Randomness as BabeRandomness, Slot, BABE_ENGINE_ID, RANDOMNESS_LENGTH,
RANDOMNESS_VRF_CONTEXT,
};
use sp_core::crypto::Wraps;
use sp_runtime::{
generic::DigestItem,
traits::{IsMember, One, SaturatedConversion, Saturating, Zero},
ConsensusEngineId, Permill,
};
use sp_session::{GetSessionNumber, GetValidatorCount};
use sp_staking::{offence::OffenceReportSystem, SessionIndex};

Expand Down Expand Up @@ -109,11 +103,9 @@ impl EpochChangeTrigger for SameAuthoritiesForever {

const UNDER_CONSTRUCTION_SEGMENT_LENGTH: u32 = 256;

#[frame_support::pallet]
#[frame::pallet]
pub mod pallet {
use super::*;
use frame_support::pallet_prelude::*;
use frame_system::pallet_prelude::*;

/// The BABE Pallet
#[pallet::pallet]
Expand Down Expand Up @@ -311,7 +303,7 @@ pub mod pallet {
pub type SkippedEpochs<T> =
StorageValue<_, BoundedVec<(u64, SessionIndex), ConstU32<100>>, ValueQuery>;

#[derive(frame_support::DefaultNoBound)]
#[derive(frame::prelude::DefaultNoBound)]
#[pallet::genesis_config]
pub struct GenesisConfig<T: Config> {
pub authorities: Vec<(AuthorityId, BabeAuthorityWeight)>,
Expand Down Expand Up @@ -369,7 +361,6 @@ pub mod pallet {
// execution. We don't run the verification again here to avoid slowing
// down the runtime.
debug_assert!({
use sp_core::crypto::VrfPublic;
public.vrf_verify(&transcript.clone().into_sign_data(), &signature)
});

Expand Down Expand Up @@ -943,9 +934,7 @@ impl<T: Config> OnTimestampSet<T::Moment> for Pallet<T> {
}
}

impl<T: Config> frame_support::traits::EstimateNextSessionRotation<BlockNumberFor<T>>
for Pallet<T>
{
impl<T: Config> EstimateNextSessionRotation<BlockNumberFor<T>> for Pallet<T> {
fn average_session_length() -> BlockNumberFor<T> {
T::EpochDuration::get().saturated_into()
}
Expand All @@ -971,13 +960,13 @@ impl<T: Config> frame_support::traits::EstimateNextSessionRotation<BlockNumberFo
}
}

impl<T: Config> frame_support::traits::Lateness<BlockNumberFor<T>> for Pallet<T> {
impl<T: Config> LatenessT<BlockNumberFor<T>> for Pallet<T> {
fn lateness(&self) -> BlockNumberFor<T> {
Lateness::<T>::get()
}
}

impl<T: Config> sp_runtime::BoundToRuntimeAppPublic for Pallet<T> {
impl<T: Config> BoundToRuntimeAppPublic for Pallet<T> {
type Public = AuthorityId;
}

Expand Down Expand Up @@ -1045,20 +1034,19 @@ fn compute_randomness(
s.extend_from_slice(&vrf_output[..]);
}

sp_io::hashing::blake2_256(&s)
blake2_256(&s)
}

pub mod migrations {
use super::*;
use frame_support::pallet_prelude::{StorageValue, ValueQuery};

/// Something that can return the storage prefix of the `Babe` pallet.
pub trait BabePalletPrefix: Config {
fn pallet_prefix() -> &'static str;
}

struct __OldNextEpochConfig<T>(core::marker::PhantomData<T>);
impl<T: BabePalletPrefix> frame_support::traits::StorageInstance for __OldNextEpochConfig<T> {
impl<T: BabePalletPrefix> StorageInstance for __OldNextEpochConfig<T> {
fn pallet_prefix() -> &'static str {
T::pallet_prefix()
}
Expand Down
Loading
Loading