From f08bf1a1ff0a891c1a06ca6ff4d4be679e7346e0 Mon Sep 17 00:00:00 2001 From: dharjeezy Date: Fri, 7 Feb 2025 08:59:51 +0100 Subject: [PATCH 1/8] Update Pallet Referenda to support Block Number Provider (#6338) This PR introduces BlockNumberProvider config for the referenda pallet. closes part of https://github.com/paritytech/polkadot-sdk/issues/6297 Polkadot address: 12GyGD3QhT4i2JJpNzvMf96sxxBLWymz4RdGCxRH5Rj5agKW --------- Co-authored-by: muharem --- .../collectives-westend/src/ambassador/mod.rs | 1 + .../collectives-westend/src/fellowship/mod.rs | 1 + .../rococo/src/governance/fellowship.rs | 1 + polkadot/runtime/rococo/src/governance/mod.rs | 1 + .../runtime/westend/src/governance/mod.rs | 1 + prdoc/pr_6338.prdoc | 14 ++ substrate/bin/node/runtime/src/lib.rs | 2 + substrate/frame/referenda/src/benchmarking.rs | 16 +- substrate/frame/referenda/src/lib.rs | 108 +++++----- substrate/frame/referenda/src/migration.rs | 187 +++++++++++++++++- substrate/frame/referenda/src/mock.rs | 1 + substrate/frame/referenda/src/types.rs | 16 +- 12 files changed, 281 insertions(+), 68 deletions(-) create mode 100644 prdoc/pr_6338.prdoc diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs index a052a9d3800cc..8b0842697237f 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/mod.rs @@ -154,6 +154,7 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = tracks::TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } parameter_types! { diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs index 1e8212cf6ac28..e699f2eeaf438 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs @@ -106,6 +106,7 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = ConstU32<1>; type Tracks = tracks::TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = crate::System; } pub type FellowshipCollectiveInstance = pallet_ranked_collective::Instance1; diff --git a/polkadot/runtime/rococo/src/governance/fellowship.rs b/polkadot/runtime/rococo/src/governance/fellowship.rs index 27a58a0eebd18..231defab6aa52 100644 --- a/polkadot/runtime/rococo/src/governance/fellowship.rs +++ b/polkadot/runtime/rococo/src/governance/fellowship.rs @@ -308,6 +308,7 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } pub type FellowshipCollectiveInstance = pallet_ranked_collective::Instance1; diff --git a/polkadot/runtime/rococo/src/governance/mod.rs b/polkadot/runtime/rococo/src/governance/mod.rs index ef2adf60753d5..2be549be29ed1 100644 --- a/polkadot/runtime/rococo/src/governance/mod.rs +++ b/polkadot/runtime/rococo/src/governance/mod.rs @@ -90,4 +90,5 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } diff --git a/polkadot/runtime/westend/src/governance/mod.rs b/polkadot/runtime/westend/src/governance/mod.rs index d027f788d71f6..abc25ebaa4708 100644 --- a/polkadot/runtime/westend/src/governance/mod.rs +++ b/polkadot/runtime/westend/src/governance/mod.rs @@ -94,4 +94,5 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } diff --git a/prdoc/pr_6338.prdoc b/prdoc/pr_6338.prdoc new file mode 100644 index 0000000000000..68d01904d0719 --- /dev/null +++ b/prdoc/pr_6338.prdoc @@ -0,0 +1,14 @@ +# 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: Update Referenda to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the referenda pallet uses the relay chain as a block provider for a parachain on a regular schedule. + To migrate existing referenda implementations, simply add `type BlockNumberProvider = System` to have the same behavior as before. + +crates: +- name: pallet-referenda + bump: major \ No newline at end of file diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 905b8735c5df9..610ef4fb629a1 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -1073,6 +1073,7 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } impl pallet_referenda::Config for Runtime { @@ -1093,6 +1094,7 @@ impl pallet_referenda::Config for Runtime { type AlarmInterval = AlarmInterval; type Tracks = TracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } impl pallet_ranked_collective::Config for Runtime { diff --git a/substrate/frame/referenda/src/benchmarking.rs b/substrate/frame/referenda/src/benchmarking.rs index 67ac82787d31d..895f95dbec556 100644 --- a/substrate/frame/referenda/src/benchmarking.rs +++ b/substrate/frame/referenda/src/benchmarking.rs @@ -33,6 +33,10 @@ use sp_runtime::traits::Bounded as ArithBounded; const SEED: u32 = 0; +fn set_block_number, I: 'static>(n: BlockNumberFor) { + >::BlockNumberProvider::set_block_number(n); +} + fn assert_last_event, I: 'static>(generic_event: >::RuntimeEvent) { frame_system::Pallet::::assert_last_event(generic_event.into()); } @@ -151,30 +155,28 @@ fn make_failing, I: 'static>(index: ReferendumIndex) { fn skip_prepare_period, I: 'static>(index: ReferendumIndex) { let status = Referenda::::ensure_ongoing(index).unwrap(); let prepare_period_over = status.submitted + info::(index).prepare_period; - frame_system::Pallet::::set_block_number(prepare_period_over); + set_block_number::(prepare_period_over); } fn skip_decision_period, I: 'static>(index: ReferendumIndex) { let status = Referenda::::ensure_ongoing(index).unwrap(); let decision_period_over = status.deciding.unwrap().since + info::(index).decision_period; - frame_system::Pallet::::set_block_number(decision_period_over); + set_block_number::(decision_period_over); } fn skip_confirm_period, I: 'static>(index: ReferendumIndex) { let status = Referenda::::ensure_ongoing(index).unwrap(); let confirm_period_over = status.deciding.unwrap().confirming.unwrap(); - frame_system::Pallet::::set_block_number(confirm_period_over); + set_block_number::(confirm_period_over); } fn skip_timeout_period, I: 'static>(index: ReferendumIndex) { let status = Referenda::::ensure_ongoing(index).unwrap(); let timeout_period_over = status.submitted + T::UndecidingTimeout::get(); - frame_system::Pallet::::set_block_number(timeout_period_over); + set_block_number::(timeout_period_over); } -fn alarm_time, I: 'static>( - index: ReferendumIndex, -) -> frame_system::pallet_prelude::BlockNumberFor { +fn alarm_time, I: 'static>(index: ReferendumIndex) -> BlockNumberFor { let status = Referenda::::ensure_ongoing(index).unwrap(); status.alarm.unwrap().0 } diff --git a/substrate/frame/referenda/src/lib.rs b/substrate/frame/referenda/src/lib.rs index e72dd7f11cbb2..e6a895f9c5933 100644 --- a/substrate/frame/referenda/src/lib.rs +++ b/substrate/frame/referenda/src/lib.rs @@ -82,7 +82,6 @@ use frame_support::{ }, BoundedVec, }; -use frame_system::pallet_prelude::BlockNumberFor; use scale_info::TypeInfo; use sp_runtime::{ traits::{AtLeast32BitUnsigned, Bounded, Dispatchable, One, Saturating, Zero}, @@ -98,14 +97,15 @@ use self::branch::{BeginDecidingBranch, OneFewerDecidingBranch, ServiceBranch}; pub use self::{ pallet::*, types::{ - BalanceOf, BoundedCallOf, CallOf, Curve, DecidingStatus, DecidingStatusOf, Deposit, - InsertSorted, NegativeImbalanceOf, PalletsOriginOf, ReferendumIndex, ReferendumInfo, - ReferendumInfoOf, ReferendumStatus, ReferendumStatusOf, ScheduleAddressOf, TallyOf, - TrackIdOf, TrackInfo, TrackInfoOf, TracksInfo, VotesOf, + BalanceOf, BlockNumberFor, BoundedCallOf, CallOf, Curve, DecidingStatus, DecidingStatusOf, + Deposit, InsertSorted, NegativeImbalanceOf, PalletsOriginOf, ReferendumIndex, + ReferendumInfo, ReferendumInfoOf, ReferendumStatus, ReferendumStatusOf, ScheduleAddressOf, + TallyOf, TrackIdOf, TrackInfo, TrackInfoOf, TracksInfo, VotesOf, }, weights::WeightInfo, }; pub use alloc::vec::Vec; +use sp_runtime::traits::BlockNumberProvider; #[cfg(test)] mod mock; @@ -144,7 +144,10 @@ const ASSEMBLY_ID: LockIdentifier = *b"assembly"; pub mod pallet { use super::*; use frame_support::{pallet_prelude::*, traits::EnsureOriginWithArg}; - use frame_system::pallet_prelude::*; + use frame_system::pallet_prelude::{ + ensure_root, ensure_signed, ensure_signed_or_root, BlockNumberFor as SystemBlockNumberFor, + OriginFor, + }; /// The in-code storage version. const STORAGE_VERSION: StorageVersion = StorageVersion::new(1); @@ -167,12 +170,12 @@ pub mod pallet { type WeightInfo: WeightInfo; /// The Scheduler. type Scheduler: ScheduleAnon< - BlockNumberFor, + BlockNumberFor, CallOf, PalletsOriginOf, Hasher = Self::Hashing, > + ScheduleNamed< - BlockNumberFor, + BlockNumberFor, CallOf, PalletsOriginOf, Hasher = Self::Hashing, @@ -215,30 +218,35 @@ pub mod pallet { /// The number of blocks after submission that a referendum must begin being decided by. /// Once this passes, then anyone may cancel the referendum. #[pallet::constant] - type UndecidingTimeout: Get>; + type UndecidingTimeout: Get>; /// Quantization level for the referendum wakeup scheduler. A higher number will result in /// fewer storage reads/writes needed for smaller voters, but also result in delays to the /// automatic referendum status changes. Explicit servicing instructions are unaffected. #[pallet::constant] - type AlarmInterval: Get>; + type AlarmInterval: Get>; // The other stuff. /// Information concerning the different referendum tracks. #[pallet::constant] type Tracks: Get< Vec<( - , BlockNumberFor>>::Id, - TrackInfo, BlockNumberFor>, + , BlockNumberFor>>::Id, + TrackInfo, BlockNumberFor>, )>, > + TracksInfo< BalanceOf, - BlockNumberFor, + BlockNumberFor, RuntimeOrigin = ::PalletsOrigin, >; /// The preimage provider. type Preimages: QueryPreimage + StorePreimage; + + /// Provider for the block number. + /// + /// Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } /// The next free referendum index, aka the number of referenda started so far. @@ -432,9 +440,9 @@ pub mod pallet { } #[pallet::hooks] - impl, I: 'static> Hooks> for Pallet { + impl, I: 'static> Hooks> for Pallet { #[cfg(feature = "try-runtime")] - fn try_state(_n: BlockNumberFor) -> Result<(), sp_runtime::TryRuntimeError> { + fn try_state(_n: SystemBlockNumberFor) -> Result<(), sp_runtime::TryRuntimeError> { Self::do_try_state()?; Ok(()) } @@ -462,7 +470,7 @@ pub mod pallet { origin: OriginFor, proposal_origin: Box>, proposal: BoundedCallOf, - enactment_moment: DispatchTime>, + enactment_moment: DispatchTime>, ) -> DispatchResult { let proposal_origin = *proposal_origin; let who = T::SubmitOrigin::ensure_origin(origin, &proposal_origin)?; @@ -485,7 +493,7 @@ pub mod pallet { *x += 1; r }); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let nudge_call = T::Preimages::bound(CallOf::::from(Call::nudge_referendum { index }))?; let status = ReferendumStatus { @@ -527,7 +535,7 @@ pub mod pallet { let track = Self::track(status.track).ok_or(Error::::NoTrack)?; status.decision_deposit = Some(Self::take_deposit(who.clone(), track.decision_deposit)?); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let (info, _, branch) = Self::service_referendum(now, index, status); ReferendumInfoFor::::insert(index, info); let e = @@ -584,7 +592,7 @@ pub mod pallet { Self::note_one_fewer_deciding(status.track); Self::deposit_event(Event::::Cancelled { index, tally: status.tally }); let info = ReferendumInfo::Cancelled( - frame_system::Pallet::::block_number(), + T::BlockNumberProvider::current_block_number(), Some(status.submission_deposit), status.decision_deposit, ); @@ -611,7 +619,7 @@ pub mod pallet { Self::slash_deposit(Some(status.submission_deposit.clone())); Self::slash_deposit(status.decision_deposit.clone()); Self::do_clear_metadata(index); - let info = ReferendumInfo::Killed(frame_system::Pallet::::block_number()); + let info = ReferendumInfo::Killed(T::BlockNumberProvider::current_block_number()); ReferendumInfoFor::::insert(index, info); Ok(()) } @@ -627,7 +635,7 @@ pub mod pallet { index: ReferendumIndex, ) -> DispatchResultWithPostInfo { ensure_root(origin)?; - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let mut status = Self::ensure_ongoing(index)?; // This is our wake-up, so we can disregard the alarm. status.alarm = None; @@ -658,7 +666,7 @@ pub mod pallet { let mut track_queue = TrackQueue::::get(track); let branch = if let Some((index, mut status)) = Self::next_for_deciding(&mut track_queue) { - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let (maybe_alarm, branch) = Self::begin_deciding(&mut status, index, now, track_info); if let Some(set_alarm) = maybe_alarm { @@ -744,7 +752,7 @@ pub mod pallet { impl, I: 'static> Polling for Pallet { type Index = ReferendumIndex; type Votes = VotesOf; - type Moment = BlockNumberFor; + type Moment = BlockNumberFor; type Class = TrackIdOf; fn classes() -> Vec { @@ -753,12 +761,12 @@ impl, I: 'static> Polling for Pallet { fn access_poll( index: Self::Index, - f: impl FnOnce(PollStatus<&mut T::Tally, BlockNumberFor, TrackIdOf>) -> R, + f: impl FnOnce(PollStatus<&mut T::Tally, BlockNumberFor, TrackIdOf>) -> R, ) -> R { match ReferendumInfoFor::::get(index) { Some(ReferendumInfo::Ongoing(mut status)) => { let result = f(PollStatus::Ongoing(&mut status.tally, status.track)); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); Self::ensure_alarm_at(&mut status, index, now + One::one()); ReferendumInfoFor::::insert(index, ReferendumInfo::Ongoing(status)); result @@ -772,13 +780,13 @@ impl, I: 'static> Polling for Pallet { fn try_access_poll( index: Self::Index, f: impl FnOnce( - PollStatus<&mut T::Tally, BlockNumberFor, TrackIdOf>, + PollStatus<&mut T::Tally, BlockNumberFor, TrackIdOf>, ) -> Result, ) -> Result { match ReferendumInfoFor::::get(index) { Some(ReferendumInfo::Ongoing(mut status)) => { let result = f(PollStatus::Ongoing(&mut status.tally, status.track))?; - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); Self::ensure_alarm_at(&mut status, index, now + One::one()); ReferendumInfoFor::::insert(index, ReferendumInfo::Ongoing(status)); Ok(result) @@ -800,7 +808,7 @@ impl, I: 'static> Polling for Pallet { *x += 1; r }); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let dummy_account_id = codec::Decode::decode(&mut sp_runtime::traits::TrailingZeroInput::new(&b"dummy"[..])) .expect("infinite length input; no invalid inputs for type; qed"); @@ -828,7 +836,7 @@ impl, I: 'static> Polling for Pallet { let mut status = Self::ensure_ongoing(index).map_err(|_| ())?; Self::ensure_no_alarm(&mut status); Self::note_one_fewer_deciding(status.track); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let info = if approved { ReferendumInfo::Approved(now, Some(status.submission_deposit), status.decision_deposit) } else { @@ -868,7 +876,7 @@ impl, I: 'static> Pallet { ReferendumInfo::Ongoing(status) => { let track = Self::track(status.track).ok_or(Error::::NoTrack)?; let elapsed = if let Some(deciding) = status.deciding { - frame_system::Pallet::::block_number().saturating_sub(deciding.since) + T::BlockNumberProvider::current_block_number().saturating_sub(deciding.since) } else { Zero::zero() }; @@ -889,11 +897,11 @@ impl, I: 'static> Pallet { fn schedule_enactment( index: ReferendumIndex, track: &TrackInfoOf, - desired: DispatchTime>, + desired: DispatchTime>, origin: PalletsOriginOf, call: BoundedCallOf, ) { - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); // Earliest allowed block is always at minimum the next block. let earliest_allowed = now.saturating_add(track.min_enactment_period.max(One::one())); let desired = desired.evaluate(now); @@ -912,8 +920,8 @@ impl, I: 'static> Pallet { /// Set an alarm to dispatch `call` at block number `when`. fn set_alarm( call: BoundedCallOf, - when: BlockNumberFor, - ) -> Option<(BlockNumberFor, ScheduleAddressOf)> { + when: BlockNumberFor, + ) -> Option<(BlockNumberFor, ScheduleAddressOf)> { let alarm_interval = T::AlarmInterval::get().max(One::one()); // Alarm must go off no earlier than `when`. // This rounds `when` upwards to the next multiple of `alarm_interval`. @@ -931,7 +939,7 @@ impl, I: 'static> Pallet { result.is_ok(), "Unable to schedule a new alarm at #{:?} (now: #{:?}), scheduler error: `{:?}`", when, - frame_system::Pallet::::block_number(), + T::BlockNumberProvider::current_block_number(), result.unwrap_err(), ); result.ok().map(|x| (when, x)) @@ -946,9 +954,9 @@ impl, I: 'static> Pallet { fn begin_deciding( status: &mut ReferendumStatusOf, index: ReferendumIndex, - now: BlockNumberFor, + now: BlockNumberFor, track: &TrackInfoOf, - ) -> (Option>, BeginDecidingBranch) { + ) -> (Option>, BeginDecidingBranch) { let is_passing = Self::is_passing( &status.tally, Zero::zero(), @@ -984,11 +992,11 @@ impl, I: 'static> Pallet { /// /// If `None`, then it is queued and should be nudged automatically as the queue gets drained. fn ready_for_deciding( - now: BlockNumberFor, + now: BlockNumberFor, track: &TrackInfoOf, index: ReferendumIndex, status: &mut ReferendumStatusOf, - ) -> (Option>, ServiceBranch) { + ) -> (Option>, ServiceBranch) { let deciding_count = DecidingCount::::get(status.track); if deciding_count < track.max_deciding { // Begin deciding. @@ -1023,7 +1031,7 @@ impl, I: 'static> Pallet { /// overall more efficient), however the weights become rather less easy to measure. fn note_one_fewer_deciding(track: TrackIdOf) { // Set an alarm call for the next block to nudge the track along. - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let next_block = now + One::one(); let call = match T::Preimages::bound(CallOf::::from(Call::one_fewer_deciding { track, @@ -1045,7 +1053,7 @@ impl, I: 'static> Pallet { fn ensure_alarm_at( status: &mut ReferendumStatusOf, index: ReferendumIndex, - alarm: BlockNumberFor, + alarm: BlockNumberFor, ) -> bool { if status.alarm.as_ref().map_or(true, |&(when, _)| when != alarm) { // Either no alarm or one that was different @@ -1090,7 +1098,7 @@ impl, I: 'static> Pallet { /// `TrackQueue`. Basically this happens when a referendum is in the deciding queue and receives /// a vote, or when it moves into the deciding queue. fn service_referendum( - now: BlockNumberFor, + now: BlockNumberFor, index: ReferendumIndex, mut status: ReferendumStatusOf, ) -> (ReferendumInfoOf, bool, ServiceBranch) { @@ -1102,7 +1110,7 @@ impl, I: 'static> Pallet { }; // Default the alarm to the end of the world. let timeout = status.submitted + T::UndecidingTimeout::get(); - let mut alarm = BlockNumberFor::::max_value(); + let mut alarm = BlockNumberFor::::max_value(); let branch; match &mut status.deciding { None => { @@ -1233,7 +1241,7 @@ impl, I: 'static> Pallet { }, } - let dirty_alarm = if alarm < BlockNumberFor::::max_value() { + let dirty_alarm = if alarm < BlockNumberFor::::max_value() { Self::ensure_alarm_at(&mut status, index, alarm) } else { Self::ensure_no_alarm(&mut status) @@ -1244,11 +1252,11 @@ impl, I: 'static> Pallet { /// Determine the point at which a referendum will be accepted, move into confirmation with the /// given `tally` or end with rejection (whichever happens sooner). fn decision_time( - deciding: &DecidingStatusOf, + deciding: &DecidingStatusOf, tally: &T::Tally, track_id: TrackIdOf, track: &TrackInfoOf, - ) -> BlockNumberFor { + ) -> BlockNumberFor { deciding.confirming.unwrap_or_else(|| { // Set alarm to the point where the current voting would make it pass. let approval = tally.approval(track_id); @@ -1307,8 +1315,8 @@ impl, I: 'static> Pallet { /// `approval_needed`. fn is_passing( tally: &T::Tally, - elapsed: BlockNumberFor, - period: BlockNumberFor, + elapsed: BlockNumberFor, + period: BlockNumberFor, support_needed: &Curve, approval_needed: &Curve, id: TrackIdOf, @@ -1377,7 +1385,9 @@ impl, I: 'static> Pallet { if let Some(deciding) = status.deciding { ensure!( deciding.since < - deciding.confirming.unwrap_or(BlockNumberFor::::max_value()), + deciding + .confirming + .unwrap_or(BlockNumberFor::::max_value()), "Deciding status cannot begin before confirming stage." ) } diff --git a/substrate/frame/referenda/src/migration.rs b/substrate/frame/referenda/src/migration.rs index 631eb7340e567..c94896649beab 100644 --- a/substrate/frame/referenda/src/migration.rs +++ b/substrate/frame/referenda/src/migration.rs @@ -25,6 +25,8 @@ use log; #[cfg(feature = "try-runtime")] use sp_runtime::TryRuntimeError; +type SystemBlockNumberFor = frame_system::pallet_prelude::BlockNumberFor; + /// Initial version of storage types. pub mod v0 { use super::*; @@ -37,7 +39,7 @@ pub mod v0 { pub type ReferendumInfoOf = ReferendumInfo< TrackIdOf, PalletsOriginOf, - frame_system::pallet_prelude::BlockNumberFor, + SystemBlockNumberFor, BoundedCallOf, BalanceOf, TallyOf, @@ -93,6 +95,21 @@ pub mod v1 { /// The log target. const TARGET: &'static str = "runtime::referenda::migration::v1"; + pub(crate) type ReferendumInfoOf = ReferendumInfo< + TrackIdOf, + PalletsOriginOf, + SystemBlockNumberFor, + BoundedCallOf, + BalanceOf, + TallyOf, + ::AccountId, + ScheduleAddressOf, + >; + + #[storage_alias] + pub type ReferendumInfoFor, I: 'static> = + StorageMap, Blake2_128Concat, ReferendumIndex, ReferendumInfoOf>; + /// Transforms a submission deposit of ReferendumInfo(Approved|Rejected|Cancelled|TimedOut) to /// optional value, making it refundable. pub struct MigrateV0ToV1(PhantomData<(T, I)>); @@ -137,7 +154,7 @@ pub mod v1 { if let Some(new_value) = maybe_new_value { weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); log::info!(target: TARGET, "migrating referendum #{:?}", &key); - ReferendumInfoFor::::insert(key, new_value); + v1::ReferendumInfoFor::::insert(key, new_value); } else { weight.saturating_accrue(T::DbWeight::get().reads(1)); } @@ -161,10 +178,125 @@ pub mod v1 { } } +/// Migration for when changing the block number provider. +/// +/// This migration is not guarded +pub mod switch_block_number_provider { + use super::*; + + /// The log target. + const TARGET: &'static str = "runtime::referenda::migration::change_block_number_provider"; + /// Convert from one to another block number provider/type. + pub trait BlockNumberConversion { + /// Convert the `old` block number type to the new block number type. + /// + /// Any changes in the rate of blocks need to be taken into account. + fn convert_block_number(block_number: Old) -> New; + } + + /// Transforms `SystemBlockNumberFor` to `BlockNumberFor` + pub struct MigrateBlockNumberProvider( + PhantomData<(T, I)>, + PhantomData, + ); + impl, T: Config, I: 'static> OnRuntimeUpgrade + for MigrateBlockNumberProvider + where + BlockConverter: BlockNumberConversion, BlockNumberFor>, + T: Config, + { + #[cfg(feature = "try-runtime")] + fn pre_upgrade() -> Result, TryRuntimeError> { + let referendum_count = v1::ReferendumInfoFor::::iter().count(); + log::info!( + target: TARGET, + "pre-upgrade state contains '{}' referendums.", + referendum_count + ); + Ok((referendum_count as u32).encode()) + } + + fn on_runtime_upgrade() -> Weight { + let mut weight = Weight::zero(); + weight.saturating_accrue(migrate_block_number_provider::()); + weight + } + + #[cfg(feature = "try-runtime")] + fn post_upgrade(state: Vec) -> Result<(), TryRuntimeError> { + let on_chain_version = Pallet::::on_chain_storage_version(); + ensure!(on_chain_version == 1, "must upgrade from version 1 to 2."); + let pre_referendum_count: u32 = Decode::decode(&mut &state[..]) + .expect("failed to decode the state from pre-upgrade."); + let post_referendum_count = ReferendumInfoFor::::iter().count() as u32; + ensure!(post_referendum_count == pre_referendum_count, "must migrate all referendums."); + log::info!(target: TARGET, "migrated all referendums."); + Ok(()) + } + } + + pub fn migrate_block_number_provider() -> Weight + where + BlockConverter: BlockNumberConversion, BlockNumberFor>, + T: Config, + { + let in_code_version = Pallet::::in_code_storage_version(); + let on_chain_version = Pallet::::on_chain_storage_version(); + let mut weight = T::DbWeight::get().reads(1); + log::info!( + target: "runtime::referenda::migration::change_block_number_provider", + "running migration with in-code storage version {:?} / onchain {:?}.", + in_code_version, + on_chain_version + ); + if on_chain_version == 0 { + log::error!(target: TARGET, "skipping migration from v0 to switch_block_number_provider."); + return weight + } + + // Migration logic here + v1::ReferendumInfoFor::::iter().for_each(|(key, value)| { + let maybe_new_value = match value { + ReferendumInfo::Ongoing(_) | ReferendumInfo::Killed(_) => None, + ReferendumInfo::Approved(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::Approved(new_e, s, d)) + }, + ReferendumInfo::Rejected(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::Rejected(new_e, s, d)) + }, + ReferendumInfo::Cancelled(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::Cancelled(new_e, s, d)) + }, + ReferendumInfo::TimedOut(e, s, d) => { + let new_e = BlockConverter::convert_block_number(e); + Some(ReferendumInfo::TimedOut(new_e, s, d)) + }, + }; + if let Some(new_value) = maybe_new_value { + weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); + log::info!(target: TARGET, "migrating referendum #{:?}", &key); + ReferendumInfoFor::::insert(key, new_value); + } else { + weight.saturating_accrue(T::DbWeight::get().reads(1)); + } + }); + + weight + } +} + #[cfg(test)] pub mod test { use super::*; - use crate::mock::{Test as T, *}; + use crate::{ + migration::switch_block_number_provider::{ + migrate_block_number_provider, BlockNumberConversion, + }, + mock::{Test as T, *}, + }; use core::str::FromStr; // create referendum status v0. @@ -185,7 +317,6 @@ pub mod test { deciding: None, } } - #[test] pub fn referendum_status_v0() { // make sure the bytes of the encoded referendum v0 is decodable. @@ -214,11 +345,11 @@ pub mod test { // run migration from v0 to v1. v1::MigrateV0ToV1::::on_runtime_upgrade(); // fetch and assert migrated into v1 the ongoing referendum. - let ongoing_v1 = ReferendumInfoFor::::get(2).unwrap(); + let ongoing_v1 = v1::ReferendumInfoFor::::get(2).unwrap(); // referendum status schema is the same for v0 and v1. assert_eq!(ReferendumInfoOf::::Ongoing(status_v0), ongoing_v1); // fetch and assert migrated into v1 the approved referendum. - let approved_v1 = ReferendumInfoFor::::get(5).unwrap(); + let approved_v1 = v1::ReferendumInfoFor::::get(5).unwrap(); assert_eq!( approved_v1, ReferendumInfoOf::::Approved( @@ -229,4 +360,48 @@ pub mod test { ); }); } + + #[test] + fn migration_v1_to_switch_block_number_provider_works() { + ExtBuilder::default().build_and_execute(|| { + pub struct MockBlockConverter; + + impl BlockNumberConversion, BlockNumberFor> for MockBlockConverter { + fn convert_block_number(block_number: SystemBlockNumberFor) -> BlockNumberFor { + block_number as u64 + 10u64 + } + } + + let referendum_ongoing = v1::ReferendumInfoOf::::Ongoing(create_status_v0()); + let referendum_approved = v1::ReferendumInfoOf::::Approved( + 50, //old block number + Some(Deposit { who: 1, amount: 10 }), + Some(Deposit { who: 2, amount: 20 }), + ); + + ReferendumCount::::mutate(|x| x.saturating_inc()); + v1::ReferendumInfoFor::::insert(1, referendum_ongoing); + + ReferendumCount::::mutate(|x| x.saturating_inc()); + v1::ReferendumInfoFor::::insert(2, referendum_approved); + + migrate_block_number_provider::(); + + let ongoing_v2 = ReferendumInfoFor::::get(1).unwrap(); + assert_eq!( + ongoing_v2, + ReferendumInfoOf::::Ongoing(create_status_v0()) + ); + + let approved_v2 = ReferendumInfoFor::::get(2).unwrap(); + assert_eq!( + approved_v2, + ReferendumInfoOf::::Approved( + 50, + Some(Deposit { who: 1, amount: 10 }), + Some(Deposit { who: 2, amount: 20 }) + ) + ); + }); + } } diff --git a/substrate/frame/referenda/src/mock.rs b/substrate/frame/referenda/src/mock.rs index 5d36ce137d46d..c46236586f1f7 100644 --- a/substrate/frame/referenda/src/mock.rs +++ b/substrate/frame/referenda/src/mock.rs @@ -206,6 +206,7 @@ impl Config for Test { type AlarmInterval = AlarmInterval; type Tracks = TestTracksInfo; type Preimages = Preimage; + type BlockNumberProvider = System; } pub struct ExtBuilder {} diff --git a/substrate/frame/referenda/src/types.rs b/substrate/frame/referenda/src/types.rs index e83f28b472cda..e97e7cc8df6d8 100644 --- a/substrate/frame/referenda/src/types.rs +++ b/substrate/frame/referenda/src/types.rs @@ -30,6 +30,10 @@ use sp_runtime::{FixedI64, PerThing, RuntimeDebug}; pub type BalanceOf = <>::Currency as Currency<::AccountId>>::Balance; + +pub type BlockNumberFor = + <>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; + pub type NegativeImbalanceOf = <>::Currency as Currency< ::AccountId, >>::NegativeImbalance; @@ -43,7 +47,7 @@ pub type PalletsOriginOf = pub type ReferendumInfoOf = ReferendumInfo< TrackIdOf, PalletsOriginOf, - BlockNumberFor, + BlockNumberFor, BoundedCallOf, BalanceOf, TallyOf, @@ -53,19 +57,19 @@ pub type ReferendumInfoOf = ReferendumInfo< pub type ReferendumStatusOf = ReferendumStatus< TrackIdOf, PalletsOriginOf, - BlockNumberFor, + BlockNumberFor, BoundedCallOf, BalanceOf, TallyOf, ::AccountId, ScheduleAddressOf, >; -pub type DecidingStatusOf = DecidingStatus>; -pub type TrackInfoOf = TrackInfo, BlockNumberFor>; +pub type DecidingStatusOf = DecidingStatus>; +pub type TrackInfoOf = TrackInfo, BlockNumberFor>; pub type TrackIdOf = - <>::Tracks as TracksInfo, BlockNumberFor>>::Id; + <>::Tracks as TracksInfo, BlockNumberFor>>::Id; pub type ScheduleAddressOf = <>::Scheduler as Anon< - BlockNumberFor, + BlockNumberFor, CallOf, PalletsOriginOf, >>::Address; From 3726493d104eba0734055ab7a82d3250833ac948 Mon Sep 17 00:00:00 2001 From: Przemek Rzad Date: Fri, 7 Feb 2025 09:22:47 +0100 Subject: [PATCH 2/8] Ensure license headers match the Cargo manifest licenses (#5776) - Closes https://github.com/paritytech/license-scanner/issues/44 - Silent because only comments are changed in the crates. ## What's inside First, we change the file traversal mechanism from shell globbing to walking through files which happens inside the `license-scanner` - so it has knowledge about directory structure and can correlate files with corresponding Cargo manifest. Next, added `MIT-0` and `Unlicense` to the allowed list of licenses. `Unlicense` appears only once across {Substrate,Cumulus,Polkadot} - in `penpal-runtime`. Finally, updated headers in files that do not match the corresponding manifest license. --------- Co-authored-by: cornholio <0@mcornholio.ru> --- .github/workflows/check-licenses.yml | 22 ++++++---- cumulus/client/cli/src/lib.rs | 5 ++- cumulus/client/collator/src/lib.rs | 5 ++- cumulus/client/collator/src/service.rs | 5 ++- cumulus/client/consensus/aura/src/collator.rs | 5 ++- .../consensus/aura/src/collators/basic.rs | 5 ++- .../consensus/aura/src/collators/lookahead.rs | 5 ++- .../consensus/aura/src/collators/mod.rs | 5 ++- .../slot_based/block_builder_task.rs | 5 ++- .../src/collators/slot_based/block_import.rs | 5 ++- .../collators/slot_based/collation_task.rs | 5 ++- .../aura/src/collators/slot_based/mod.rs | 5 ++- .../slot_based/relay_chain_data_cache.rs | 5 ++- .../aura/src/equivocation_import_queue.rs | 5 ++- .../client/consensus/aura/src/import_queue.rs | 5 ++- cumulus/client/consensus/aura/src/lib.rs | 5 ++- .../consensus/common/src/import_queue.rs | 5 ++- .../consensus/common/src/level_monitor.rs | 5 ++- cumulus/client/consensus/common/src/lib.rs | 5 ++- .../common/src/parachain_consensus.rs | 5 ++- .../consensus/common/src/parent_search.rs | 5 ++- cumulus/client/consensus/common/src/tests.rs | 5 ++- cumulus/client/consensus/proposer/src/lib.rs | 5 ++- .../consensus/relay-chain/src/import_queue.rs | 5 ++- .../client/consensus/relay-chain/src/lib.rs | 5 ++- cumulus/client/network/src/lib.rs | 5 ++- cumulus/client/network/src/tests.rs | 5 ++- cumulus/client/parachain-inherent/src/lib.rs | 26 ++++++------ cumulus/client/parachain-inherent/src/mock.rs | 24 +++++------ .../src/active_candidate_recovery.rs | 5 ++- cumulus/client/pov-recovery/src/lib.rs | 5 ++- cumulus/client/pov-recovery/src/tests.rs | 5 ++- .../src/lib.rs | 5 ++- .../client/relay-chain-interface/src/lib.rs | 5 ++- .../src/blockchain_rpc_client.rs | 5 ++- .../src/collator_overseer.rs | 5 ++- .../relay-chain-minimal-node/src/lib.rs | 5 ++- .../relay-chain-minimal-node/src/network.rs | 5 ++- .../relay-chain-rpc-interface/src/lib.rs | 5 ++- .../src/light_client_worker.rs | 5 ++- .../relay-chain-rpc-interface/src/metrics.rs | 5 ++- .../src/reconnecting_ws_client.rs | 5 ++- .../src/rpc_client.rs | 5 ++- .../src/tokio_platform.rs | 5 ++- cumulus/client/service/src/lib.rs | 5 ++- cumulus/file_header.txt | 25 ++++++------ .../pallets/aura-ext/src/consensus_hook.rs | 26 ++++++------ cumulus/pallets/aura-ext/src/lib.rs | 26 ++++++------ cumulus/pallets/aura-ext/src/migration.rs | 24 +++++------ cumulus/pallets/aura-ext/src/test.rs | 28 ++++++------- .../collator-selection/src/migration.rs | 26 ++++++------ cumulus/pallets/dmp-queue/src/migration.rs | 26 ++++++------ cumulus/pallets/dmp-queue/src/tests.rs | 28 ++++++------- .../parachain-system/proc-macro/src/lib.rs | 26 ++++++------ .../parachain-system/src/consensus_hook.rs | 26 ++++++------ cumulus/pallets/parachain-system/src/lib.rs | 26 ++++++------ .../pallets/parachain-system/src/migration.rs | 26 ++++++------ cumulus/pallets/parachain-system/src/mock.rs | 28 ++++++------- .../src/relay_state_snapshot.rs | 26 ++++++------ cumulus/pallets/parachain-system/src/tests.rs | 26 ++++++------ .../src/unincluded_segment.rs | 26 ++++++------ .../src/validate_block/implementation.rs | 26 ++++++------ .../src/validate_block/mod.rs | 24 +++++------ .../src/validate_block/tests.rs | 26 ++++++------ .../src/validate_block/trie_recorder.rs | 26 ++++++------ .../pallets/parachain-system/src/weights.rs | 26 ++++++------ cumulus/pallets/solo-to-para/src/lib.rs | 26 ++++++------ .../pallets/weight-reclaim/src/benchmarks.rs | 26 ++++++------ cumulus/pallets/weight-reclaim/src/lib.rs | 26 ++++++------ cumulus/pallets/weight-reclaim/src/tests.rs | 26 ++++++------ cumulus/pallets/weight-reclaim/src/weights.rs | 24 +++++------ cumulus/pallets/xcm/src/lib.rs | 26 ++++++------ cumulus/pallets/xcmp-queue/src/lib.rs | 26 ++++++------ cumulus/pallets/xcmp-queue/src/migration.rs | 26 ++++++------ .../pallets/xcmp-queue/src/migration/v5.rs | 26 ++++++------ .../parachains/common/src/message_queue.rs | 28 ++++++------- .../pallets/parachain-info/src/lib.rs | 26 ++++++------ cumulus/parachains/pallets/ping/src/lib.rs | 26 ++++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 21 +++++----- .../asset-hub-rococo/src/weights/mod.rs | 24 +++++------ .../src/weights/pallet_asset_conversion.rs | 24 +++++------ .../weights/pallet_asset_conversion_ops.rs | 24 +++++------ .../pallet_asset_conversion_tx_payment.rs | 21 +++++----- .../src/weights/pallet_asset_rewards.rs | 24 +++++------ .../src/weights/pallet_assets_foreign.rs | 24 +++++------ .../src/weights/pallet_assets_local.rs | 24 +++++------ .../src/weights/pallet_assets_pool.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_collator_selection.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../weights/pallet_nft_fractionalization.rs | 24 +++++------ .../src/weights/pallet_nfts.rs | 24 +++++------ .../src/weights/pallet_proxy.rs | 24 +++++------ .../src/weights/pallet_session.rs | 24 +++++------ .../src/weights/pallet_timestamp.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../src/weights/pallet_uniques.rs | 24 +++++------ .../src/weights/pallet_utility.rs | 24 +++++------ .../src/weights/pallet_xcm.rs | 24 +++++------ .../weights/pallet_xcm_bridge_hub_router.rs | 24 +++++------ .../asset-hub-rococo/src/weights/xcm/mod.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../weights/pallet_asset_conversion_ops.rs | 24 +++++------ .../pallet_asset_conversion_tx_payment.rs | 24 +++++------ .../src/weights/pallet_asset_rewards.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_migrations.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 21 +++++----- .../src/weights/pallet_xcm.rs | 24 +++++------ .../weights/pallet_xcm_bridge_hub_router.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../runtimes/assets/test-utils/src/lib.rs | 24 +++++------ .../assets/test-utils/src/xcm_helpers.rs | 26 ++++++------ .../src/bridge_common_config.rs | 24 +++++------ .../src/bridge_to_bulletin_config.rs | 26 ++++++------ .../src/bridge_to_ethereum_config.rs | 26 ++++++------ .../src/bridge_to_westend_config.rs | 26 ++++++------ .../bridge-hubs/bridge-hub-rococo/src/lib.rs | 26 ++++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_bridge_grandpa.rs | 24 +++++------ ...idge_messages_rococo_to_rococo_bulletin.rs | 24 +++++------ ...allet_bridge_messages_rococo_to_westend.rs | 24 +++++------ .../src/weights/pallet_bridge_parachains.rs | 24 +++++------ .../src/weights/pallet_bridge_relayers.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../src/weights/pallet_xcm.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../bridge-hub-rococo/src/xcm_config.rs | 24 +++++------ .../bridge-hub-rococo/tests/snowbridge.rs | 26 ++++++------ .../bridge-hub-rococo/tests/tests.rs | 26 ++++++------ .../src/bridge_common_config.rs | 26 ++++++------ .../src/bridge_to_ethereum_config.rs | 24 +++++------ .../src/bridge_to_rococo_config.rs | 26 ++++++------ .../bridge-hubs/bridge-hub-westend/src/lib.rs | 26 ++++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_bridge_grandpa.rs | 24 +++++------ .../src/weights/pallet_bridge_messages.rs | 24 +++++------ .../src/weights/pallet_bridge_parachains.rs | 24 +++++------ .../src/weights/pallet_bridge_relayers.rs | 24 +++++------ .../src/weights/pallet_collator_selection.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../src/weights/pallet_session.rs | 24 +++++------ .../src/weights/pallet_timestamp.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../src/weights/pallet_utility.rs | 24 +++++------ .../src/weights/pallet_xcm.rs | 24 +++++------ .../bridge-hub-westend/src/weights/xcm/mod.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../bridge-hub-westend/src/xcm_config.rs | 24 +++++------ .../bridge-hub-westend/tests/snowbridge.rs | 26 ++++++------ .../bridge-hub-westend/tests/tests.rs | 26 ++++++------ .../bridge-hubs/common/tests/tests.rs | 24 +++++------ .../bridge-hubs/test-utils/src/lib.rs | 24 +++++------ .../src/test_cases/from_grandpa_chain.rs | 26 ++++++------ .../src/test_cases/from_parachain.rs | 26 ++++++------ .../test-utils/src/test_cases/helpers.rs | 26 ++++++------ .../test-utils/src/test_cases/mod.rs | 26 ++++++------ .../src/test_data/from_grandpa_chain.rs | 24 +++++------ .../src/test_data/from_parachain.rs | 24 +++++------ .../test-utils/src/test_data/mod.rs | 26 ++++++------ .../collectives-westend/src/fellowship/mod.rs | 24 +++++------ .../src/fellowship/origins.rs | 26 ++++++------ .../src/fellowship/tracks.rs | 24 +++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_asset_rate.rs | 26 ++++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_collective.rs | 24 +++++------ .../pallet_core_fellowship_ambassador_core.rs | 24 +++++------ .../pallet_core_fellowship_fellowship_core.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ ...ranked_collective_ambassador_collective.rs | 26 ++++++------ .../pallet_referenda_ambassador_referenda.rs | 26 ++++++------ .../pallet_salary_ambassador_salary.rs | 26 ++++++------ .../src/weights/pallet_scheduler.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 21 +++++----- .../src/weights/pallet_treasury.rs | 26 ++++++------ .../src/weights/pallet_xcm.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../collectives-westend/tests/tests.rs | 24 +++++------ .../contracts/contracts-rococo/src/lib.rs | 24 +++++------ .../contracts/contracts-rococo/tests/tests.rs | 24 +++++------ .../coretime/coretime-rococo/src/coretime.rs | 28 ++++++------- .../cumulus_pallet_parachain_system.rs | 24 +++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/cumulus_pallet_xcmp_queue.rs | 24 +++++------ .../src/weights/frame_system.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_broker.rs | 24 +++++------ .../src/weights/pallet_collator_selection.rs | 24 +++++------ .../src/weights/pallet_message_queue.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../src/weights/pallet_proxy.rs | 24 +++++------ .../src/weights/pallet_session.rs | 24 +++++------ .../src/weights/pallet_timestamp.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../src/weights/pallet_utility.rs | 24 +++++------ .../coretime-rococo/src/weights/pallet_xcm.rs | 24 +++++------ .../coretime-rococo/src/weights/xcm/mod.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../coretime-rococo/src/xcm_config.rs | 26 ++++++------ .../coretime/coretime-rococo/tests/tests.rs | 24 +++++------ .../coretime/coretime-westend/src/coretime.rs | 28 ++++++------- .../cumulus_pallet_parachain_system.rs | 24 +++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/cumulus_pallet_xcmp_queue.rs | 24 +++++------ .../src/weights/frame_system.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_broker.rs | 24 +++++------ .../src/weights/pallet_collator_selection.rs | 24 +++++------ .../src/weights/pallet_message_queue.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../src/weights/pallet_proxy.rs | 24 +++++------ .../src/weights/pallet_session.rs | 24 +++++------ .../src/weights/pallet_timestamp.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../src/weights/pallet_utility.rs | 24 +++++------ .../src/weights/pallet_xcm.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../coretime-westend/src/xcm_config.rs | 26 ++++++------ .../coretime/coretime-westend/tests/tests.rs | 24 +++++------ .../cumulus_pallet_parachain_system.rs | 24 +++++------ .../src/weights/frame_system.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_glutton.rs | 24 +++++------ .../src/weights/pallet_message_queue.rs | 24 +++++------ .../src/weights/pallet_timestamp.rs | 24 +++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_migrations.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../people-rococo/src/weights/pallet_proxy.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../people-rococo/src/weights/pallet_xcm.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../people/people-rococo/tests/tests.rs | 24 +++++------ .../weights/cumulus_pallet_weight_reclaim.rs | 24 +++++------ .../src/weights/frame_system_extensions.rs | 24 +++++------ .../src/weights/pallet_balances.rs | 24 +++++------ .../src/weights/pallet_migrations.rs | 24 +++++------ .../src/weights/pallet_multisig.rs | 24 +++++------ .../src/weights/pallet_proxy.rs | 24 +++++------ .../src/weights/pallet_transaction_payment.rs | 24 +++++------ .../people-westend/src/weights/pallet_xcm.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_fungible.rs | 24 +++++------ .../xcm/pallet_xcm_benchmarks_generic.rs | 24 +++++------ .../people/people-westend/tests/tests.rs | 24 +++++------ .../runtimes/test-utils/src/test_cases.rs | 26 ++++++------ .../runtimes/testing/penpal/build.rs | 34 +++++++++++----- .../runtimes/testing/penpal/src/lib.rs | 40 ++++++++++++------- .../penpal/src/weights/block_weights.rs | 39 +++++++++++------- .../penpal/src/weights/extrinsic_weights.rs | 39 +++++++++++------- .../testing/penpal/src/weights/mod.rs | 39 +++++++++++------- .../penpal/src/weights/paritydb_weights.rs | 39 +++++++++++------- .../penpal/src/weights/rocksdb_weights.rs | 39 +++++++++++------- .../runtimes/testing/penpal/src/xcm_config.rs | 40 ++++++++++++------- .../testing/rococo-parachain/src/lib.rs | 26 ++++++------ cumulus/polkadot-omni-node/build.rs | 24 +++++------ cumulus/polkadot-omni-node/lib/src/cli.rs | 26 ++++++------ cumulus/polkadot-omni-node/lib/src/command.rs | 24 +++++------ .../polkadot-omni-node/lib/src/common/aura.rs | 24 +++++------ .../lib/src/common/chain_spec.rs | 24 +++++------ .../lib/src/common/command.rs | 26 ++++++------ .../polkadot-omni-node/lib/src/common/mod.rs | 24 +++++------ .../polkadot-omni-node/lib/src/common/rpc.rs | 24 +++++------ .../lib/src/common/runtime.rs | 26 ++++++------ .../polkadot-omni-node/lib/src/common/spec.rs | 26 ++++++------ .../lib/src/common/types.rs | 26 ++++++------ .../lib/src/fake_runtime_api/mod.rs | 26 ++++++------ .../lib/src/fake_runtime_api/utils.rs | 26 ++++++------ cumulus/polkadot-omni-node/lib/src/lib.rs | 24 +++++------ .../polkadot-omni-node/lib/src/nodes/aura.rs | 26 ++++++------ .../lib/src/nodes/manual_seal.rs | 24 +++++------ .../polkadot-omni-node/lib/src/nodes/mod.rs | 26 ++++++------ .../lib/src/tests/benchmark_storage_works.rs | 26 ++++++------ .../lib/src/tests/common.rs | 26 ++++++------ .../src/tests/polkadot_argument_parsing.rs | 26 ++++++------ .../lib/src/tests/polkadot_mdns_issue.rs | 26 ++++++------ .../lib/src/tests/purge_chain_works.rs | 26 ++++++------ .../tests/running_the_node_and_interrupt.rs | 26 ++++++------ cumulus/polkadot-omni-node/src/main.rs | 26 ++++++------ cumulus/polkadot-parachain/build.rs | 24 +++++------ .../src/chain_spec/asset_hubs.rs | 24 +++++------ .../src/chain_spec/bridge_hubs.rs | 26 ++++++------ .../src/chain_spec/collectives.rs | 26 ++++++------ .../src/chain_spec/coretime.rs | 26 ++++++------ .../src/chain_spec/glutton.rs | 24 +++++------ .../polkadot-parachain/src/chain_spec/mod.rs | 26 ++++++------ .../src/chain_spec/penpal.rs | 24 +++++------ .../src/chain_spec/people.rs | 26 ++++++------ .../src/chain_spec/rococo_parachain.rs | 24 +++++------ cumulus/polkadot-parachain/src/main.rs | 26 ++++++------ cumulus/primitives/aura/src/lib.rs | 24 +++++------ cumulus/primitives/core/src/lib.rs | 26 ++++++------ .../primitives/parachain-inherent/src/lib.rs | 26 ++++++------ .../proof-size-hostfunction/src/lib.rs | 26 ++++++------ cumulus/primitives/timestamp/src/lib.rs | 24 +++++------ cumulus/primitives/utility/src/lib.rs | 26 ++++++------ cumulus/primitives/utility/src/tests/mod.rs | 24 +++++------ .../utility/src/tests/swap_first.rs | 26 ++++++------ cumulus/test/relay-sproof-builder/src/lib.rs | 26 ++++++------ cumulus/xcm/xcm-emulator/src/lib.rs | 26 ++++++------ polkadot/xcm/docs/src/cookbook/mod.rs | 3 +- .../cookbook/relay_token_transactor/mod.rs | 3 +- .../relay_token_transactor/network.rs | 3 +- .../relay_token_transactor/parachain/mod.rs | 3 +- .../parachain/xcm_config.rs | 3 +- .../relay_token_transactor/relay_chain/mod.rs | 3 +- .../relay_chain/xcm_config.rs | 3 +- .../cookbook/relay_token_transactor/tests.rs | 3 +- polkadot/xcm/docs/src/fundamentals.rs | 3 +- polkadot/xcm/docs/src/glossary.rs | 3 +- polkadot/xcm/docs/src/guides/mod.rs | 3 +- polkadot/xcm/docs/src/lib.rs | 3 +- polkadot/xcm/xcm-builder/src/fee_handling.rs | 2 +- .../src/traits/process_transaction.rs | 2 +- .../xcm/xcm-runtime-apis/src/conversions.rs | 26 ++++++------ polkadot/xcm/xcm-runtime-apis/src/dry_run.rs | 24 +++++------ polkadot/xcm/xcm-runtime-apis/src/fees.rs | 24 +++++------ polkadot/xcm/xcm-runtime-apis/src/lib.rs | 26 ++++++------ .../xcm/xcm-runtime-apis/src/trusted_query.rs | 25 ++++++------ .../xcm/xcm-runtime-apis/tests/conversions.rs | 24 +++++------ .../xcm-runtime-apis/tests/fee_estimation.rs | 24 +++++------ polkadot/xcm/xcm-runtime-apis/tests/mock.rs | 26 ++++++------ .../xcm-runtime-apis/tests/trusted_query.rs | 20 ++++++---- .../xcm-simulator/src/mock_message_queue.rs | 2 +- substrate/bin/node/cli/benches/executor.rs | 27 +++++++------ substrate/bin/node/cli/tests/basic.rs | 27 +++++++------ substrate/bin/node/cli/tests/common.rs | 27 +++++++------ substrate/bin/node/cli/tests/fees.rs | 27 +++++++------ .../bin/node/cli/tests/submit_transaction.rs | 27 +++++++------ substrate/bin/node/runtime/src/assets_api.rs | 27 ++++++------- substrate/bin/node/runtime/src/lib.rs | 27 ++++++------- substrate/client/cli/src/commands/generate.rs | 25 ++++++------ .../cli/src/commands/generate_node_key.rs | 25 ++++++------ .../client/cli/src/commands/insert_key.rs | 27 +++++++------ .../client/cli/src/commands/inspect_key.rs | 27 +++++++------ .../cli/src/commands/inspect_node_key.rs | 27 +++++++------ substrate/client/cli/src/commands/key.rs | 27 +++++++------ .../incoming_requests_handler.rs | 5 ++- .../consensus/grandpa/src/warp_proof.rs | 5 ++- substrate/client/executor/benches/bench.rs | 27 +++++++------ substrate/client/keystore/src/local.rs | 25 ++++++------ substrate/client/network/src/bitswap/mod.rs | 5 ++- .../network/sync/src/block_relay_protocol.rs | 7 ++-- .../network/sync/src/block_request_handler.rs | 5 ++- .../network/sync/src/state_request_handler.rs | 5 ++- .../network/sync/src/warp_request_handler.rs | 5 ++- .../client/rpc-spec-v2/src/common/mod.rs | 5 +++ substrate/client/sync-state-rpc/src/lib.rs | 27 ++++++------- substrate/client/tracing/benches/bench.rs | 27 +++++++------ .../client/tracing/proc-macro/src/lib.rs | 25 ++++++------ substrate/client/tracing/src/block/mod.rs | 5 ++- .../client/tracing/src/logging/directives.rs | 5 ++- substrate/client/utils/src/id_sequence.rs | 27 ++++++------- substrate/client/utils/src/lib.rs | 25 ++++++------ substrate/client/utils/src/metrics.rs | 25 ++++++------ substrate/client/utils/src/mpsc.rs | 27 ++++++------- substrate/client/utils/src/notification.rs | 27 ++++++------- .../client/utils/src/notification/registry.rs | 27 ++++++------- .../client/utils/src/notification/tests.rs | 27 ++++++------- substrate/client/utils/src/pubsub.rs | 27 ++++++------- substrate/client/utils/src/pubsub/tests.rs | 27 ++++++------- .../src/pubsub/tests/normal_operation.rs | 27 ++++++------- .../src/pubsub/tests/panicking_registry.rs | 27 ++++++------- substrate/client/utils/src/status_sinks.rs | 27 ++++++------- substrate/frame/assets-freezer/src/impls.rs | 32 +++++++++------ substrate/frame/assets-freezer/src/lib.rs | 32 +++++++++------ substrate/frame/assets-freezer/src/mock.rs | 32 +++++++++------ substrate/frame/assets-freezer/src/tests.rs | 30 ++++++++------ .../bags-list/remote-tests/src/migration.rs | 24 +++++------ .../bags-list/remote-tests/src/snapshot.rs | 24 +++++------ .../bags-list/remote-tests/src/try_state.rs | 26 ++++++------ substrate/frame/balances/src/migration.rs | 26 ++++++------ .../frame/contracts/mock-network/src/lib.rs | 2 +- .../frame/contracts/mock-network/src/mocks.rs | 2 +- .../mock-network/src/mocks/msg_queue.rs | 2 +- .../src/mocks/relay_message_queue.rs | 2 +- .../contracts/mock-network/src/parachain.rs | 2 +- .../src/parachain/contracts_config.rs | 2 +- .../contracts/mock-network/src/relay_chain.rs | 2 +- .../frame/delegated-staking/src/impls.rs | 27 ++++++------- .../frame/delegated-staking/src/types.rs | 27 ++++++------- .../src/extensions.rs | 32 +++++++++------ .../authorization-tx-extension/src/lib.rs | 32 +++++++++------ .../authorization-tx-extension/src/mock.rs | 32 +++++++++------ .../authorization-tx-extension/src/tests.rs | 30 ++++++++------ .../frame/examples/basic/src/benchmarking.rs | 32 +++++++++------ substrate/frame/examples/basic/src/lib.rs | 32 +++++++++------ substrate/frame/examples/basic/src/tests.rs | 32 +++++++++------ substrate/frame/examples/basic/src/weights.rs | 31 ++++++++------ .../frame/examples/default-config/src/lib.rs | 32 +++++++++------ substrate/frame/examples/dev-mode/src/lib.rs | 32 +++++++++------ .../frame/examples/dev-mode/src/tests.rs | 32 +++++++++------ .../frame/examples/frame-crate/src/lib.rs | 30 ++++++++------ .../examples/kitchensink/src/benchmarking.rs | 30 ++++++++------ .../frame/examples/kitchensink/src/lib.rs | 32 +++++++++------ .../frame/examples/kitchensink/src/tests.rs | 32 +++++++++------ .../frame/examples/kitchensink/src/weights.rs | 30 ++++++++------ .../frame/examples/offchain-worker/src/lib.rs | 32 +++++++++------ .../examples/offchain-worker/src/tests.rs | 32 +++++++++------ .../single-block-migrations/src/lib.rs | 32 +++++++++------ .../src/migrations/mod.rs | 30 ++++++++------ .../src/migrations/v1.rs | 32 +++++++++------ .../single-block-migrations/src/mock.rs | 32 +++++++++------ .../frame/examples/split/src/benchmarking.rs | 32 +++++++++------ substrate/frame/examples/split/src/events.rs | 30 ++++++++------ substrate/frame/examples/split/src/lib.rs | 32 +++++++++------ substrate/frame/examples/split/src/mock.rs | 32 +++++++++------ substrate/frame/examples/split/src/tests.rs | 30 ++++++++------ substrate/frame/examples/split/src/weights.rs | 30 ++++++++------ .../frame/revive/mock-network/src/lib.rs | 2 +- .../frame/revive/mock-network/src/mocks.rs | 2 +- .../mock-network/src/mocks/msg_queue.rs | 2 +- .../src/mocks/relay_message_queue.rs | 2 +- .../revive/mock-network/src/parachain.rs | 2 +- .../src/parachain/contracts_config.rs | 2 +- .../revive/mock-network/src/relay_chain.rs | 2 +- .../support/test/compile_pass/src/lib.rs | 25 ++++++------ .../primitives/consensus/aura/src/digests.rs | 27 ++++++------- substrate/primitives/io/build.rs | 25 ++++++------ .../ci/node-template-release/Cargo.toml | 2 +- substrate/test-utils/cli/build.rs | 25 ++++++------ substrate/test-utils/cli/src/lib.rs | 27 ++++++------- 446 files changed, 5031 insertions(+), 4668 deletions(-) diff --git a/.github/workflows/check-licenses.yml b/.github/workflows/check-licenses.yml index 21e2756e8b766..9492d06c7fcf9 100644 --- a/.github/workflows/check-licenses.yml +++ b/.github/workflows/check-licenses.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 env: - LICENSES: "'Apache-2.0' 'GPL-3.0-only' 'GPL-3.0-or-later WITH Classpath-exception-2.0'" + LICENSES: "'Apache-2.0' 'GPL-3.0-only' 'GPL-3.0-or-later WITH Classpath-exception-2.0' 'MIT-0' 'Unlicense'" NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - name: Checkout sources @@ -32,21 +32,24 @@ jobs: shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-licenses ${{ env.LICENSES }} \ - -- ./polkadot/**/*.rs + --file-extensions '.rs' \ + -- ./polkadot - name: Check the licenses in Cumulus run: | shopt -s globstar npx @paritytech/license-scanner scan \ - --ensure-licenses ${{ env.LICENSES }} \ - -- ./cumulus/**/*.rs + --ensure-licenses ${{ env.LICENSES }} 'Unlicense' \ + --file-extensions '.rs' \ + -- ./cumulus - name: Check the licenses in Substrate run: | shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-licenses ${{ env.LICENSES }} \ - -- ./substrate/**/*.rs + --file-extensions '.rs' \ + -- ./substrate check-product-references: runs-on: ubuntu-latest @@ -67,18 +70,21 @@ jobs: shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-product 'Polkadot' \ - -- ./polkadot/**/*.rs + --file-extensions '.rs' \ + -- ./polkadot - name: Check the product references in Cumulus run: | shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-product 'Cumulus' \ - -- ./cumulus/**/*.rs + --file-extensions '.rs' \ + -- ./cumulus - name: Check the product references in Substrate run: | shopt -s globstar npx @paritytech/license-scanner scan \ --ensure-product 'Substrate' \ - -- ./substrate/**/*.rs + --file-extensions '.rs' \ + -- ./substrate diff --git a/cumulus/client/cli/src/lib.rs b/cumulus/client/cli/src/lib.rs index b08ad75c430d7..94ec48a75e430 100644 --- a/cumulus/client/cli/src/lib.rs +++ b/cumulus/client/cli/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Cumulus CLI library. diff --git a/cumulus/client/collator/src/lib.rs b/cumulus/client/collator/src/lib.rs index 91ff913f263d5..04b4682bd20b3 100644 --- a/cumulus/client/collator/src/lib.rs +++ b/cumulus/client/collator/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Cumulus Collator implementation for Substrate. diff --git a/cumulus/client/collator/src/service.rs b/cumulus/client/collator/src/service.rs index c06be006fc17f..2bbd0a833cb9f 100644 --- a/cumulus/client/collator/src/service.rs +++ b/cumulus/client/collator/src/service.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! The Cumulus [`CollatorService`] is a utility struct for performing common //! operations used in parachain consensus/authoring. diff --git a/cumulus/client/consensus/aura/src/collator.rs b/cumulus/client/consensus/aura/src/collator.rs index dc830e463a4f5..e71379b8591b2 100644 --- a/cumulus/client/consensus/aura/src/collator.rs +++ b/cumulus/client/consensus/aura/src/collator.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! The core collator logic for Aura - slot claiming, block proposing, and collation //! packaging. diff --git a/cumulus/client/consensus/aura/src/collators/basic.rs b/cumulus/client/consensus/aura/src/collators/basic.rs index d843483b79fa0..10ad3a8ff9421 100644 --- a/cumulus/client/consensus/aura/src/collators/basic.rs +++ b/cumulus/client/consensus/aura/src/collators/basic.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! This provides the option to run a basic relay-chain driven Aura implementation. //! diff --git a/cumulus/client/consensus/aura/src/collators/lookahead.rs b/cumulus/client/consensus/aura/src/collators/lookahead.rs index 7723de5a576a2..8427a40419986 100644 --- a/cumulus/client/consensus/aura/src/collators/lookahead.rs +++ b/cumulus/client/consensus/aura/src/collators/lookahead.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! A collator for Aura that looks ahead of the most recently included parachain block //! when determining what to build upon. diff --git a/cumulus/client/consensus/aura/src/collators/mod.rs b/cumulus/client/consensus/aura/src/collators/mod.rs index 4c191c7d8a1a0..e4f243351be47 100644 --- a/cumulus/client/consensus/aura/src/collators/mod.rs +++ b/cumulus/client/consensus/aura/src/collators/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Stock, pure Aura collators. //! diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs index 48287555dea65..9754f98da4cbb 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/block_builder_task.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use codec::{Codec, Encode}; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs b/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs index 9c53da6a6b7d7..27588c661d533 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/block_import.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use futures::{stream::FusedStream, StreamExt}; use sc_consensus::{BlockImport, StateAction}; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs b/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs index abaeb8319a402..eb48494cf6dcd 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/collation_task.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use codec::Encode; diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs b/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs index ab78b31fbd802..f72960fe4c2e1 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! A collator for Aura that looks ahead of the most recently included parachain block //! when determining what to build upon. diff --git a/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs b/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs index be30ec2f747da..b3251cd886efe 100644 --- a/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs +++ b/cumulus/client/consensus/aura/src/collators/slot_based/relay_chain_data_cache.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Utility for caching [`RelayChainData`] for different relay blocks. diff --git a/cumulus/client/consensus/aura/src/equivocation_import_queue.rs b/cumulus/client/consensus/aura/src/equivocation_import_queue.rs index a3bc90f53c25d..ab0e62ac591d1 100644 --- a/cumulus/client/consensus/aura/src/equivocation_import_queue.rs +++ b/cumulus/client/consensus/aura/src/equivocation_import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . /// An import queue which provides some equivocation resistance with lenient trait bounds. /// diff --git a/cumulus/client/consensus/aura/src/import_queue.rs b/cumulus/client/consensus/aura/src/import_queue.rs index cbbfbe8d22230..bf2bf32e2de61 100644 --- a/cumulus/client/consensus/aura/src/import_queue.rs +++ b/cumulus/client/consensus/aura/src/import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Parachain specific wrapper for the AuRa import queue. diff --git a/cumulus/client/consensus/aura/src/lib.rs b/cumulus/client/consensus/aura/src/lib.rs index ed6f5bdd4d698..0e404541ab9a6 100644 --- a/cumulus/client/consensus/aura/src/lib.rs +++ b/cumulus/client/consensus/aura/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! The AuRa consensus algorithm for parachains. //! diff --git a/cumulus/client/consensus/common/src/import_queue.rs b/cumulus/client/consensus/common/src/import_queue.rs index 488693604fefc..f3e60c7318058 100644 --- a/cumulus/client/consensus/common/src/import_queue.rs +++ b/cumulus/client/consensus/common/src/import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! (unstable) Composable utilities for constructing import queues for parachains. //! diff --git a/cumulus/client/consensus/common/src/level_monitor.rs b/cumulus/client/consensus/common/src/level_monitor.rs index fb4b0498f6887..c00390b0b844c 100644 --- a/cumulus/client/consensus/common/src/level_monitor.rs +++ b/cumulus/client/consensus/common/src/level_monitor.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use sc_client_api::{blockchain::Backend as _, Backend, HeaderBackend as _}; use sp_blockchain::{HashAndNumber, HeaderMetadata, TreeRoute}; diff --git a/cumulus/client/consensus/common/src/lib.rs b/cumulus/client/consensus/common/src/lib.rs index 6766c2409c385..86d5803ad5416 100644 --- a/cumulus/client/consensus/common/src/lib.rs +++ b/cumulus/client/consensus/common/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use codec::Decode; use polkadot_primitives::{ diff --git a/cumulus/client/consensus/common/src/parachain_consensus.rs b/cumulus/client/consensus/common/src/parachain_consensus.rs index 861354ed63c30..8af8e1ef2bc7a 100644 --- a/cumulus/client/consensus/common/src/parachain_consensus.rs +++ b/cumulus/client/consensus/common/src/parachain_consensus.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use sc_client_api::{ Backend, BlockBackend, BlockImportNotification, BlockchainEvents, Finalizer, UsageProvider, diff --git a/cumulus/client/consensus/common/src/parent_search.rs b/cumulus/client/consensus/common/src/parent_search.rs index c371ec62f8455..b037fe0dc9583 100644 --- a/cumulus/client/consensus/common/src/parent_search.rs +++ b/cumulus/client/consensus/common/src/parent_search.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use codec::Decode; use polkadot_primitives::Hash as RelayHash; diff --git a/cumulus/client/consensus/common/src/tests.rs b/cumulus/client/consensus/common/src/tests.rs index 2eff183fc4737..56e7e927d535e 100644 --- a/cumulus/client/consensus/common/src/tests.rs +++ b/cumulus/client/consensus/common/src/tests.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use crate::*; diff --git a/cumulus/client/consensus/proposer/src/lib.rs b/cumulus/client/consensus/proposer/src/lib.rs index 7eb90a5ac02bb..4a5a071991e3a 100644 --- a/cumulus/client/consensus/proposer/src/lib.rs +++ b/cumulus/client/consensus/proposer/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! The Cumulus [`Proposer`] is a wrapper around a Substrate [`sp_consensus::Environment`] //! for creating new parachain blocks. diff --git a/cumulus/client/consensus/relay-chain/src/import_queue.rs b/cumulus/client/consensus/relay-chain/src/import_queue.rs index 1d6f039da4c12..ab2a7de67a731 100644 --- a/cumulus/client/consensus/relay-chain/src/import_queue.rs +++ b/cumulus/client/consensus/relay-chain/src/import_queue.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use std::{marker::PhantomData, sync::Arc}; diff --git a/cumulus/client/consensus/relay-chain/src/lib.rs b/cumulus/client/consensus/relay-chain/src/lib.rs index fc395a9d9573f..8a23edfb9449e 100644 --- a/cumulus/client/consensus/relay-chain/src/lib.rs +++ b/cumulus/client/consensus/relay-chain/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! The relay-chain provided consensus algorithm for parachains. //! diff --git a/cumulus/client/network/src/lib.rs b/cumulus/client/network/src/lib.rs index 3b9c0fc81ecec..d6cb4401aaa68 100644 --- a/cumulus/client/network/src/lib.rs +++ b/cumulus/client/network/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Parachain specific networking //! diff --git a/cumulus/client/network/src/tests.rs b/cumulus/client/network/src/tests.rs index 3bdcdaae4ef67..d3407d46a5cd0 100644 --- a/cumulus/client/network/src/tests.rs +++ b/cumulus/client/network/src/tests.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use super::*; use async_trait::async_trait; diff --git a/cumulus/client/parachain-inherent/src/lib.rs b/cumulus/client/parachain-inherent/src/lib.rs index 0bb436a876b4f..9861daba347f0 100644 --- a/cumulus/client/parachain-inherent/src/lib.rs +++ b/cumulus/client/parachain-inherent/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Client side code for generating the parachain inherent. diff --git a/cumulus/client/parachain-inherent/src/mock.rs b/cumulus/client/parachain-inherent/src/mock.rs index 8dbc6ace0f06c..f6aa4a17e5cd9 100644 --- a/cumulus/client/parachain-inherent/src/mock.rs +++ b/cumulus/client/parachain-inherent/src/mock.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{ParachainInherentData, INHERENT_IDENTIFIER}; use codec::Decode; diff --git a/cumulus/client/pov-recovery/src/active_candidate_recovery.rs b/cumulus/client/pov-recovery/src/active_candidate_recovery.rs index 9badc69fe816b..435a7405c7c71 100644 --- a/cumulus/client/pov-recovery/src/active_candidate_recovery.rs +++ b/cumulus/client/pov-recovery/src/active_candidate_recovery.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use sp_runtime::traits::Block as BlockT; diff --git a/cumulus/client/pov-recovery/src/lib.rs b/cumulus/client/pov-recovery/src/lib.rs index 87349aef0c93e..240c97a1c1af3 100644 --- a/cumulus/client/pov-recovery/src/lib.rs +++ b/cumulus/client/pov-recovery/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Parachain PoV recovery //! diff --git a/cumulus/client/pov-recovery/src/tests.rs b/cumulus/client/pov-recovery/src/tests.rs index be890d01dd967..a4093c697e928 100644 --- a/cumulus/client/pov-recovery/src/tests.rs +++ b/cumulus/client/pov-recovery/src/tests.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use super::*; use assert_matches::assert_matches; diff --git a/cumulus/client/relay-chain-inprocess-interface/src/lib.rs b/cumulus/client/relay-chain-inprocess-interface/src/lib.rs index e5daf8ee7b587..4f885525fca02 100644 --- a/cumulus/client/relay-chain-inprocess-interface/src/lib.rs +++ b/cumulus/client/relay-chain-inprocess-interface/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use std::{ collections::{BTreeMap, VecDeque}, diff --git a/cumulus/client/relay-chain-interface/src/lib.rs b/cumulus/client/relay-chain-interface/src/lib.rs index f1d5e013ba6a2..3623672c6ee61 100644 --- a/cumulus/client/relay-chain-interface/src/lib.rs +++ b/cumulus/client/relay-chain-interface/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use std::{ collections::{BTreeMap, VecDeque}, diff --git a/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs b/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs index cfd5bd951333d..a30608224ab9e 100644 --- a/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs +++ b/cumulus/client/relay-chain-minimal-node/src/blockchain_rpc_client.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use std::{ collections::{BTreeMap, VecDeque}, diff --git a/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs b/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs index 5acc30537080c..e87cd343f1b52 100644 --- a/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs +++ b/cumulus/client/relay-chain-minimal-node/src/collator_overseer.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use futures::{select, StreamExt}; use std::sync::Arc; diff --git a/cumulus/client/relay-chain-minimal-node/src/lib.rs b/cumulus/client/relay-chain-minimal-node/src/lib.rs index f70a73a5d5ced..7d5d1df6a0758 100644 --- a/cumulus/client/relay-chain-minimal-node/src/lib.rs +++ b/cumulus/client/relay-chain-minimal-node/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use collator_overseer::NewMinimalNode; diff --git a/cumulus/client/relay-chain-minimal-node/src/network.rs b/cumulus/client/relay-chain-minimal-node/src/network.rs index 6cb0f4590b46b..bf21bde9b39a1 100644 --- a/cumulus/client/relay-chain-minimal-node/src/network.rs +++ b/cumulus/client/relay-chain-minimal-node/src/network.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use polkadot_core_primitives::{Block, Hash, Header}; use sp_runtime::traits::NumberFor; diff --git a/cumulus/client/relay-chain-rpc-interface/src/lib.rs b/cumulus/client/relay-chain-rpc-interface/src/lib.rs index a895d8f3e5f26..15fc8024e0b52 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/lib.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use async_trait::async_trait; use core::time::Duration; diff --git a/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs b/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs index 2347dbb85f78e..560342f110bed 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/light_client_worker.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! This module contains a backend that sends RPC requests to an //! embedded light client. Even though no networking is involved, diff --git a/cumulus/client/relay-chain-rpc-interface/src/metrics.rs b/cumulus/client/relay-chain-rpc-interface/src/metrics.rs index 4d09464d237c6..3e43df4e8fa33 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/metrics.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/metrics.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use prometheus::{Error as PrometheusError, HistogramTimer, Registry}; use prometheus_endpoint::{HistogramOpts, HistogramVec, Opts}; diff --git a/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs b/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs index dc0e9d697b466..ae5f1f5c1abb4 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/reconnecting_ws_client.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use cumulus_primitives_core::relay_chain::{ Block as RelayBlock, BlockNumber as RelayNumber, Hash as RelayHash, Header as RelayHeader, diff --git a/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs b/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs index 1cd9d0c11eedd..b2fd5a4e6089c 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/rpc_client.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use futures::channel::{ mpsc::{Receiver, Sender}, diff --git a/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs b/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs index 75a5604d741b4..adbfd03d226ce 100644 --- a/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs +++ b/cumulus/client/relay-chain-rpc-interface/src/tokio_platform.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . use core::time::Duration; use futures::prelude::*; diff --git a/cumulus/client/service/src/lib.rs b/cumulus/client/service/src/lib.rs index 912109c2ad325..b3a85e6ef3fd5 100644 --- a/cumulus/client/service/src/lib.rs +++ b/cumulus/client/service/src/lib.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Cumulus is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Cumulus is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// along with Cumulus. If not, see . //! Cumulus service //! diff --git a/cumulus/file_header.txt b/cumulus/file_header.txt index 712045bf2ca15..9bd0414043eb3 100644 --- a/cumulus/file_header.txt +++ b/cumulus/file_header.txt @@ -1,15 +1,14 @@ // Copyright (C) Parity Technologies (UK) Ltd. -// This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. diff --git a/cumulus/pallets/aura-ext/src/consensus_hook.rs b/cumulus/pallets/aura-ext/src/consensus_hook.rs index 56966aa0c8f82..52a7a500a1f4b 100644 --- a/cumulus/pallets/aura-ext/src/consensus_hook.rs +++ b/cumulus/pallets/aura-ext/src/consensus_hook.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The definition of a [`FixedVelocityConsensusHook`] for consensus logic to manage //! block velocity. diff --git a/cumulus/pallets/aura-ext/src/lib.rs b/cumulus/pallets/aura-ext/src/lib.rs index 19c2634ca708a..496cbb694a87f 100644 --- a/cumulus/pallets/aura-ext/src/lib.rs +++ b/cumulus/pallets/aura-ext/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus extension pallet for AuRa //! diff --git a/cumulus/pallets/aura-ext/src/migration.rs b/cumulus/pallets/aura-ext/src/migration.rs index b580c19fc733c..c8c9a5fa31d2e 100644 --- a/cumulus/pallets/aura-ext/src/migration.rs +++ b/cumulus/pallets/aura-ext/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. extern crate alloc; use crate::{Config, Pallet}; diff --git a/cumulus/pallets/aura-ext/src/test.rs b/cumulus/pallets/aura-ext/src/test.rs index b0099381e682d..8ac3c74bddd0d 100644 --- a/cumulus/pallets/aura-ext/src/test.rs +++ b/cumulus/pallets/aura-ext/src/test.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] extern crate alloc; diff --git a/cumulus/pallets/collator-selection/src/migration.rs b/cumulus/pallets/collator-selection/src/migration.rs index 34f9142970820..c905ccbbef1aa 100644 --- a/cumulus/pallets/collator-selection/src/migration.rs +++ b/cumulus/pallets/collator-selection/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A module that is responsible for migration of storage for Collator Selection. diff --git a/cumulus/pallets/dmp-queue/src/migration.rs b/cumulus/pallets/dmp-queue/src/migration.rs index 1b83fea710a3f..dd2f2e386d208 100644 --- a/cumulus/pallets/dmp-queue/src/migration.rs +++ b/cumulus/pallets/dmp-queue/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Migrates the storage from the previously deleted DMP pallet. diff --git a/cumulus/pallets/dmp-queue/src/tests.rs b/cumulus/pallets/dmp-queue/src/tests.rs index 368a1c0b43643..ba332be58acfd 100644 --- a/cumulus/pallets/dmp-queue/src/tests.rs +++ b/cumulus/pallets/dmp-queue/src/tests.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test the lazy migration. diff --git a/cumulus/pallets/parachain-system/proc-macro/src/lib.rs b/cumulus/pallets/parachain-system/proc-macro/src/lib.rs index f284fbdc64c60..d3693c970b904 100644 --- a/cumulus/pallets/parachain-system/proc-macro/src/lib.rs +++ b/cumulus/pallets/parachain-system/proc-macro/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use proc_macro2::Span; use proc_macro_crate::{crate_name, FoundCrate}; diff --git a/cumulus/pallets/parachain-system/src/consensus_hook.rs b/cumulus/pallets/parachain-system/src/consensus_hook.rs index 6d65bdc77186f..e4d90fcfd3d03 100644 --- a/cumulus/pallets/parachain-system/src/consensus_hook.rs +++ b/cumulus/pallets/parachain-system/src/consensus_hook.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The definition of a [`ConsensusHook`] trait for consensus logic to manage the backlog //! of parachain blocks ready to submit to the relay chain, as well as some basic implementations. diff --git a/cumulus/pallets/parachain-system/src/lib.rs b/cumulus/pallets/parachain-system/src/lib.rs index 624f91e7fdfb3..0a4a29539b2cc 100644 --- a/cumulus/pallets/parachain-system/src/lib.rs +++ b/cumulus/pallets/parachain-system/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg_attr(not(feature = "std"), no_std)] diff --git a/cumulus/pallets/parachain-system/src/migration.rs b/cumulus/pallets/parachain-system/src/migration.rs index 30106aceab5a4..e985029851da9 100644 --- a/cumulus/pallets/parachain-system/src/migration.rs +++ b/cumulus/pallets/parachain-system/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{Config, Pallet, ReservedDmpWeightOverride, ReservedXcmpWeightOverride}; use frame_support::{ diff --git a/cumulus/pallets/parachain-system/src/mock.rs b/cumulus/pallets/parachain-system/src/mock.rs index 5b59be0482e73..ea0f227d72579 100644 --- a/cumulus/pallets/parachain-system/src/mock.rs +++ b/cumulus/pallets/parachain-system/src/mock.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test setup and helpers. diff --git a/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs b/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs index 323aaf6503808..e82b5c230a045 100644 --- a/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs +++ b/cumulus/pallets/parachain-system/src/relay_state_snapshot.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Relay chain state proof provides means for accessing part of relay chain storage for reads. diff --git a/cumulus/pallets/parachain-system/src/tests.rs b/cumulus/pallets/parachain-system/src/tests.rs index 2b65dd6a92160..d3b65dcdc6390 100755 --- a/cumulus/pallets/parachain-system/src/tests.rs +++ b/cumulus/pallets/parachain-system/src/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/pallets/parachain-system/src/unincluded_segment.rs b/cumulus/pallets/parachain-system/src/unincluded_segment.rs index 814bb83aa1acb..572ef045c4dc2 100644 --- a/cumulus/pallets/parachain-system/src/unincluded_segment.rs +++ b/cumulus/pallets/parachain-system/src/unincluded_segment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Primitives used for tracking message queues constraints in an unincluded block segment //! of the parachain. diff --git a/cumulus/pallets/parachain-system/src/validate_block/implementation.rs b/cumulus/pallets/parachain-system/src/validate_block/implementation.rs index 2c531c39accd6..3f762fcdbe40c 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/implementation.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/implementation.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The actual implementation of the validate block functionality. diff --git a/cumulus/pallets/parachain-system/src/validate_block/mod.rs b/cumulus/pallets/parachain-system/src/validate_block/mod.rs index 2d210f4bac2ba..8b10d7ca4e50c 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/mod.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A module that enables a runtime to work as parachain. diff --git a/cumulus/pallets/parachain-system/src/validate_block/tests.rs b/cumulus/pallets/parachain-system/src/validate_block/tests.rs index 871ce5c1710e8..831eebe95883e 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/tests.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use codec::{Decode, DecodeAll, Encode}; use cumulus_primitives_core::{ParachainBlockData, PersistedValidationData}; diff --git a/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs b/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs index 8dc2f20dd3902..09acedf1d983f 100644 --- a/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs +++ b/cumulus/pallets/parachain-system/src/validate_block/trie_recorder.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Provide a specialized trie-recorder and provider for use in validate-block. //! diff --git a/cumulus/pallets/parachain-system/src/weights.rs b/cumulus/pallets/parachain-system/src/weights.rs index 5c61879b4d36b..ba7d8b1e87f6b 100644 --- a/cumulus/pallets/parachain-system/src/weights.rs +++ b/cumulus/pallets/parachain-system/src/weights.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for cumulus_pallet_parachain_system //! diff --git a/cumulus/pallets/solo-to-para/src/lib.rs b/cumulus/pallets/solo-to-para/src/lib.rs index b42cc74f1cf32..f8761e13a0544 100644 --- a/cumulus/pallets/solo-to-para/src/lib.rs +++ b/cumulus/pallets/solo-to-para/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg_attr(not(feature = "std"), no_std)] diff --git a/cumulus/pallets/weight-reclaim/src/benchmarks.rs b/cumulus/pallets/weight-reclaim/src/benchmarks.rs index 78bebc967d96b..1f7a1e8adfc5f 100644 --- a/cumulus/pallets/weight-reclaim/src/benchmarks.rs +++ b/cumulus/pallets/weight-reclaim/src/benchmarks.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(feature = "runtime-benchmarks")] diff --git a/cumulus/pallets/weight-reclaim/src/lib.rs b/cumulus/pallets/weight-reclaim/src/lib.rs index 7bbd2cf29d831..8e593816637d8 100644 --- a/cumulus/pallets/weight-reclaim/src/lib.rs +++ b/cumulus/pallets/weight-reclaim/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Pallet and transaction extensions to reclaim PoV proof size weight after an extrinsic has been //! applied. diff --git a/cumulus/pallets/weight-reclaim/src/tests.rs b/cumulus/pallets/weight-reclaim/src/tests.rs index ce647445b3327..711faa7eb5081 100644 --- a/cumulus/pallets/weight-reclaim/src/tests.rs +++ b/cumulus/pallets/weight-reclaim/src/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/pallets/weight-reclaim/src/weights.rs b/cumulus/pallets/weight-reclaim/src/weights.rs index e651c8a783185..9ae7033200fb2 100644 --- a/cumulus/pallets/weight-reclaim/src/weights.rs +++ b/cumulus/pallets/weight-reclaim/src/weights.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/pallets/xcm/src/lib.rs b/cumulus/pallets/xcm/src/lib.rs index e31df8471c266..e60ff78a80328 100644 --- a/cumulus/pallets/xcm/src/lib.rs +++ b/cumulus/pallets/xcm/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Pallet for stuff specific to parachains' usage of XCM. Right now that's just the origin //! used by parachains when receiving `Transact` messages from other parachains or the Relay chain diff --git a/cumulus/pallets/xcmp-queue/src/lib.rs b/cumulus/pallets/xcmp-queue/src/lib.rs index 91f71558b54a2..08629e6376328 100644 --- a/cumulus/pallets/xcmp-queue/src/lib.rs +++ b/cumulus/pallets/xcmp-queue/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A pallet which uses the XCMP transport layer to handle both incoming and outgoing XCM message //! sending and dispatch, queuing, signalling and backpressure. To do so, it implements: diff --git a/cumulus/pallets/xcmp-queue/src/migration.rs b/cumulus/pallets/xcmp-queue/src/migration.rs index 6e41c9d9a8789..d3bd15c8aad0c 100644 --- a/cumulus/pallets/xcmp-queue/src/migration.rs +++ b/cumulus/pallets/xcmp-queue/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A module that is responsible for migration of storage. diff --git a/cumulus/pallets/xcmp-queue/src/migration/v5.rs b/cumulus/pallets/xcmp-queue/src/migration/v5.rs index 0bf3303bd7d00..4dd2f20fcc6eb 100644 --- a/cumulus/pallets/xcmp-queue/src/migration/v5.rs +++ b/cumulus/pallets/xcmp-queue/src/migration/v5.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Migrates the storage to version 5. diff --git a/cumulus/parachains/common/src/message_queue.rs b/cumulus/parachains/common/src/message_queue.rs index d6f2118e454fa..cd415d6cc2293 100644 --- a/cumulus/parachains/common/src/message_queue.rs +++ b/cumulus/parachains/common/src/message_queue.rs @@ -1,18 +1,18 @@ -// Copyright 2020 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Helpers to deal with configuring the message queue in the runtime. diff --git a/cumulus/parachains/pallets/parachain-info/src/lib.rs b/cumulus/parachains/pallets/parachain-info/src/lib.rs index 0aaa7adaa51c0..b7931e352a728 100644 --- a/cumulus/parachains/pallets/parachain-info/src/lib.rs +++ b/cumulus/parachains/pallets/parachain-info/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Minimal Pallet that injects a ParachainId into Runtime storage from diff --git a/cumulus/parachains/pallets/ping/src/lib.rs b/cumulus/parachains/pallets/ping/src/lib.rs index b6423a81db3c9..6895b34296cfe 100644 --- a/cumulus/parachains/pallets/ping/src/lib.rs +++ b/cumulus/parachains/pallets/ping/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Pallet to spam the XCM/UMP. diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index c8f9bb7cd56c3..c115dbce7340c 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs index b257c3825a7e7..634e2eae217e7 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs index a5c9fea3cdf53..3c73137301240 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/frame_system_extensions.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs index 6893766ac72d2..0f02c503a6fc6 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. pub mod block_weights; pub mod cumulus_pallet_parachain_system; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs index ec5a4084361f3..96639d2da46f3 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs index e85420d32d9c2..fbaa4e594f05d 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_ops.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion_ops` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs index 0a639b368af22..2b5763e3c6e44 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_conversion_tx_payment.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs index 218c93c510350..9914bf50335a3 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_asset_rewards.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_rewards` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs index c76c1137335a1..13f8ddc436ff8 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_foreign.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_assets` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs index cf4f60042bc68..adf6d3532bdab 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_local.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_assets` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs index 2cd85de009895..2525af7e77314 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_assets_pool.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_assets` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs index 35d7e1985c515..53f3ea5cea93c 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs index aeda7bbbb6a7e..f723032f1f872 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs index 1192478c90ac4..1d9b3dd4575b4 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs index 97cec5d82ecd0..6eb46fc276a38 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nft_fractionalization.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_nft_fractionalization` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs index 277cfd1747bf6..f9692fd859551 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_nfts.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_nfts` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs index 0e680011e79b5..8b8d3f0461b84 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs index 6cfa66a4bea61..f179b3be3dd67 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs index 38e1fbd822b23..46319bc5b0a9d 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs index 035f9a6dbe516..aa8e41300877c 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs index c4e220b7facb1..ba61417af4817 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_uniques.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_uniques` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs index a82115b9d0937..6b107b8d9e581 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs index 8506125d41331..9a72b334b2146 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs index 9a75428ada8b1..dfa3d2f6087a7 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/pallet_xcm_bridge_hub_router.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_bridge_hub_router` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs index ccf473484cad0..3ba2d494b2cc8 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod pallet_xcm_benchmarks_fungible; mod pallet_xcm_benchmarks_generic; diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index a2169e2ea04b1..cb22aa228a2c1 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index d48debef94c88..6b73516601237 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs index 1573a278e2467..ef12fd637ccaa 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs index a1bb92cf7008b..9fb5b700384da 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs index dfe4092c3f023..971c22bd70598 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_ops.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion_ops` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs index 8fe302630fb95..e431704cb5cee 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_conversion_tx_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_conversion_tx_payment` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs index 3bbc289fec7b6..e60f70cf53855 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_asset_rewards.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_rewards` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs index bb8ae8e5f97e2..b0a8e784d1fb8 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs index e771059cec859..2ba3630a73fc3 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_migrations.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_migrations` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs index 737ee0f54df0c..ef8f17ff12988 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs index b4c78a78b4890..b6deef1cee442 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_transaction_payment.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs index 93409463d4e50..927b17dcc0f97 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs index 78aa839deacd2..79dbd388f29a2 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/pallet_xcm_bridge_hub_router.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_bridge_hub_router` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 97e59c24dd89f..d1bdcc0c56c9d 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 0ec2741c0490a..c2f7730ffab1e 100644 --- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs b/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs index 877d61780ce71..a84850c652be7 100644 --- a/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs +++ b/cumulus/parachains/runtimes/assets/test-utils/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with various assets. diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs b/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs index ca0e81fae42ed..36c99449500ad 100644 --- a/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs +++ b/cumulus/parachains/runtimes/assets/test-utils/src/xcm_helpers.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Helpers for calculating XCM delivery fees. diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs index 5dca45d326b83..3995f520caf04 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_common_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions that can be used by multiple BridgeHub flavors. //! All configurations here should be dedicated to a single chain; in other words, we don't need two diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs index 1f58e9c2f2bad..78e83451835f7 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_bulletin_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions used on BridgeHubRococo for bridging to Rococo Bulletin. //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs index be7005b5379a1..a6ee891704b72 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_ethereum_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #[cfg(not(feature = "runtime-benchmarks"))] use crate::XcmRouter; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs index d394af73e7478..b70f8e076057c 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/bridge_to_westend_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions used on BridgeHubRococo for bridging to BridgeHubWestend. diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs index 67bc06a9321ec..fdba23a2915f4 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! # Bridge Hub Rococo Runtime //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index ca1d8dcbe5678..9ad5bac66b75a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs index 93fb6f3bbbe30..c2d079dd8dde9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs index d67ae4dee92a8..7cbba55defd15 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs index a9cc2411a9c66..55a6ab4d7d98d 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_grandpa.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_grandpa` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs index cde511fc749d4..fadae80335a10 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_rococo_bulletin.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_messages` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs index b27bbf4ff6c63..6884f77f4766b 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_messages_rococo_to_westend.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_messages` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs index 3629d8797bf7f..0c1ddbf304e80 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_parachains.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_parachains` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs index b7318361c7d9e..c30abd093d14b 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_bridge_relayers.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_relayers` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs index 4ee6f6725409b..6bb15bd06970b 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs index 71d17e7259f72..add46ce22fea6 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs index 0a085b858251d..478984d9d9f78 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 4a5623fc8b93e..9418d532a3cab 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index daf22190a42b6..ccc21c39acbf6 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs index b37945317f6cf..12dc7e5dd7332 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/src/xcm_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs index c40aae5a82a90..e49f949fdf35a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/snowbridge.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs index b0f4366e29cf0..23b85388b0cba 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs index 0872d0498f857..a5ab4e5137853 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_common_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions that can be used by multiple BridgeHub flavors. //! All configurations here should be dedicated to a single chain; in other words, we don't need two diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs index 94921fd8af9a3..e4b0c4f99b84e 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_ethereum_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #[cfg(not(feature = "runtime-benchmarks"))] use crate::XcmRouter; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs index a5fb33cf504d5..cdad13212676a 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/bridge_to_rococo_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Bridge definitions used on BridgeHub with the Westend flavor. diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs index 36b565bdca1c9..45d08ba8546cd 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! # Bridge Hub Westend Runtime //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs index 955b273254562..4a13db871f437 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs index 7db371d6af930..3d416dd60a913 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs index 21cadac25e161..d9c5d89fc0b5d 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs index 34ce487216f24..b789583736d44 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs index 74bf144ac712f..16eadb342f3fd 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_grandpa.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_grandpa` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs index 492226d3ec2b5..9f6f2ef5938e9 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_messages.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_messages` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs index 87c5057cf9b86..b87023e12f36f 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_parachains.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_parachains` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs index 74be73df14030..4127624f1b87c 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_bridge_relayers.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_bridge_relayers` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs index 9dcee77082b99..a9bb80d22eb5d 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs index 599bed182de47..ba0b15fbafd97 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs index c9d04f9c6df65..425aa9ea01f52 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs index 0a5bf9b9f9c1f..17b13a66a7cb5 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs index 92c53b9187922..213e3473386cd 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs index 44cd0cf91e799..96ad9f70dcafd 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs index fdae0c9a15229..20f9432c19475 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs index 15a1dae09d9bb..a59038be6a5c1 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod pallet_xcm_benchmarks_fungible; mod pallet_xcm_benchmarks_generic; diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 555303d30b613..d4660ff7e3d94 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 03cbaa866ad80..ead5ec795941f 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs index befb63ef97098..1585ef692fd52 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/src/xcm_config.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs index bc570ef7f74bc..8e255831c8ce7 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/snowbridge.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs index d7e7fbe0c72e5..c9a97af634615 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs index 84c135728d5dc..439a267d6ec43 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/common/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] use bridge_hub_common::DenyExportMessageFrom; diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs index 240aac6c40635..f74b1f60191c0 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for "BridgeHub" `Runtime`s. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs index 4a7975b2d9f28..036223759e655 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_grandpa_chain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with bridging capabilities //! with remote GRANDPA chain. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs index 7e87d703888a3..4fbfe18b9953f 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/from_parachain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with bridging capabilities //! with remote parachain. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs index 505babdb64155..1d6935b843b74 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/helpers.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains tests code, that is shared by all types of bridges diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs index fa0229ce06881..a964cb26da0f2 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with bridging capabilities. //! diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs index 37605350b8e64..6811d4a27a6f5 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_grandpa_chain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Generating test data for bridges with remote GRANDPA chains. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs index 4d91c82158800..6039a6b78ce70 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/from_parachain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Generating test data for bridges with remote parachains. diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs index cef3c84b81785..2a43f2d7e28a2 100644 --- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs +++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_data/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Generating test data, used by all tests. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs index e699f2eeaf438..3fcaeb1dfc4fc 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The Westend Technical Fellowship. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs index 5ed2c19f79e64..20476a968e405 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/origins.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Fellowship custom origins. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs index 099bdf4cf7539..d7959f7724488 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/fellowship/tracks.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Track configurations for Fellowship. diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs index c286ba1320227..b2b0f1598212f 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs index 8c2abcd4e8c88..721ea54e94a3e 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs index 51b0580f8575f..10b460825df38 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_asset_rate.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_asset_rate` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs index b100b0f2b1a83..59355c8570314 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs index d456f5b8c4606..4ddebad9acac0 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_collective.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collective` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs index 4d092ec80313b..a124b028a7ee2 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_ambassador_core.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_core_fellowship` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs index acb1f82985db7..a707dd34be812 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_core_fellowship_fellowship_core.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_core_fellowship` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs index 5c428bb5e5eac..0fe7a9faa19b6 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs index 8f6aa583a41c1..df1865ba7426b 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_ranked_collective_ambassador_collective.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_ranked_collective` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs index fdc451c5d31cc..7f9a5fc66e347 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_referenda_ambassador_referenda.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_referenda` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs index 0522420f2f517..ced5b512400dc 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_salary_ambassador_salary.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_salary` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs index 42e37b967e4c8..94015445530cd 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_scheduler.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_scheduler` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs index 5d077b89d5642..50ee9e25995be 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_transaction_payment.rs @@ -1,15 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Cumulus. If not, see . diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs index 5c513c3754ce8..cbfaea46b32db 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_treasury.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_treasury` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs index c0389cbcdb42c..834a008cd3b4b 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index f6a140f3157fc..991364efbe072 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 8e732546437a9..c4d6e8b289843 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs b/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs index c9191eba49f6a..f99bc39fc8344 100644 --- a/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/collectives/collectives-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs index eaaaf0a9a9a7b..5ad4026e0b2b4 100644 --- a/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs +++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at // -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// http://www.apache.org/licenses/LICENSE-2.0 // -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! # Contracts Parachain //! diff --git a/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs b/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs index 02c4b7b3963b5..152c12a7697d3 100644 --- a/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/contracts/contracts-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs index 35c3dd8836a80..a837b8d25dcf7 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/coretime.rs @@ -1,18 +1,18 @@ -// Copyright 2022 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{xcm_config::LocationToAccountId, *}; use codec::{Decode, Encode}; diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs index 139e37c544898..60e8a1414e950 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_parachain_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_parachain_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index 6298fd6e7f698..f09ca7079ac35 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs index efbe7980de281..1fa908e877b90 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/cumulus_pallet_xcmp_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs index 428976e3e036e..d494f457709b6 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs index 04b695b576930..2b4bbb426032a 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs index a021d11478480..f767cf85a5131 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs index 3e4bbf379c3ff..f83cd5fd0e6f8 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_broker.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_broker` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs index b62a6c2fce5b8..b2ec58ed156bd 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs index 934ab627bc883..2b04ff3da8f7b 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_message_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_message_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs index f3ab1b1cac8a5..81ebf5cb905e8 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs index 5f95906f473ec..24f593fc976c5 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs index 409d92be4fcb2..576e539d4f6b0 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs index c171353404e0d..cc636ac915b39 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs index 29d48abab8956..3832b2726b389 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs index 84eb97838680c..332aacf48599e 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs index b2b8cd6e5349d..b14f2fc477893 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs index dc21e2ea117fb..5f3abf1ab01db 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod pallet_xcm_benchmarks_fungible; mod pallet_xcm_benchmarks_generic; diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 0a2d74de0cb8e..90e0a5c543cfc 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index cdcba6134bf82..2e26653cd75e2 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs index 33ad172962a15..7c3f8a365856c 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/src/xcm_config.rs @@ -1,18 +1,18 @@ -// Copyright 2023 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, Broker, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs b/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs index 89a593ab0f576..dea41c093fb36 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs index 985e64fb76f9a..805861b1f8bdb 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/coretime.rs @@ -1,18 +1,18 @@ -// Copyright 2022 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{xcm_config::LocationToAccountId, *}; use codec::{Decode, Encode}; diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs index 1c9119361985c..3dff3998bc24c 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_parachain_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_parachain_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs index 55d52f4b04c87..b6766c21bd5a3 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs index 0b0524339aa76..4eb165b7491c8 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/cumulus_pallet_xcmp_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_xcmp_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs index b4b7cbf05a5ec..ad8fc21ad4e7e 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs index 9527e0c5549a7..610d505a8cdfb 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs index 7024c58d97f96..95d1d25fff486 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs index a0eee2d99efa3..e431ccbbc29fd 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_broker.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_broker` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs index 2341890c314ec..39526b27c499e 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_collator_selection.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_collator_selection` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs index e9cdc2478766d..ec7db3d260bb7 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_message_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_message_queue` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs index 044356f1e1467..ddb33e4ed8f44 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs index d3edc1a8b2008..3b7e7968c2449 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs index b0d993d68a6a4..b0b77f957502f 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_session.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_session` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs index ad8924d9ce737..b8038c348f928 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs index f159f877afe77..771fa20953e07 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs index 0f5340843bd64..6d30c26dfbe7e 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_utility.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_utility` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs index 7659b8a1ac7e1..fbb60034d58ce 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index 227f3617da00e..9a1a8632c0a26 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 2d10ac16ea26b..0a57ff349ff98 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs index 8a4879a1506ee..a124c1978309e 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/src/xcm_config.rs @@ -1,18 +1,18 @@ -// Copyright 2023 Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::{ AccountId, AllPalletsWithSystem, Balances, BaseDeliveryFee, Broker, FeeAssetId, ParachainInfo, diff --git a/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs b/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs index 976ce23d6e874..f92486f369614 100644 --- a/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/coretime/coretime-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs index bc8299ab1bd67..063ec0521d56d 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/cumulus_pallet_parachain_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_parachain_system` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs index b68f16c986589..311287860898a 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs index db9a14e2cf242..dae0b9befd506 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs index 9345458a704af..43d04a5e17654 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_glutton.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_glutton` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs index eab6c15a40d28..3e3d521227969 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_message_queue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_message_queue` //! diff --git a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs index 4218dcc73f4e6..d4da87ab4d6bf 100644 --- a/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs +++ b/cumulus/parachains/runtimes/glutton/glutton-westend/src/weights/pallet_timestamp.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_timestamp` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs index 439855f857192..0317a1f4bb3e9 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs index 3f12b25540ea6..854af60e5679b 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs index 4990e8c12d5aa..3a3ee951d3ce2 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs index 57048b6e7095c..881a830338f40 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_migrations.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_migrations` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs index 82fcacf64aca6..22d85024a39b4 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs index 264213c94d449..3f3a9176d6b6a 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs index 555fd5a32fa87..4920885aab413 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs index d50afdbee4752..77156e35c8dbc 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index f594c45e1cf63..f9e1bf29cf18e 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index caa9165073482..afff62a196692 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs b/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs index 00fe7781822ae..ba331216db526 100644 --- a/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs +++ b/cumulus/parachains/runtimes/people/people-rococo/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs index fd3018ec97401..76498e8cd17ad 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/cumulus_pallet_weight_reclaim.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `cumulus_pallet_weight_reclaim` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs index 422b8566ad08a..ef1a045343b33 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/frame_system_extensions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `frame_system_extensions` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs index 2649c1557a2f8..96cfe2e51664e 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_balances.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_balances` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs index ecc52360a3ce1..7f84fad5156fb 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_migrations.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_migrations` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs index 5857a140e05e0..2bcee64c4868b 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_multisig.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_multisig` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs index e962123f216c2..064786e8e1526 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_proxy.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_proxy` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs index 30e4524e586e2..62b8af8ea1c32 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_transaction_payment.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_transaction_payment` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs index f06669209a187..8b00b4ec2b046 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/pallet_xcm.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs index c12da204f35b4..4572c0685d819 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_fungible.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::fungible` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs index 3fa51a816b69a..3434d46c1bded 100644 --- a/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs +++ b/cumulus/parachains/runtimes/people/people-westend/src/weights/xcm/pallet_xcm_benchmarks_generic.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Autogenerated weights for `pallet_xcm_benchmarks::generic` //! diff --git a/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs b/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs index 5cefec44b1cdd..3df1558b6f9d8 100644 --- a/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs +++ b/cumulus/parachains/runtimes/people/people-westend/tests/tests.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(test)] diff --git a/cumulus/parachains/runtimes/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/test-utils/src/test_cases.rs index 6bdf3ef09d1b8..8a7f8d6303c86 100644 --- a/cumulus/parachains/runtimes/test-utils/src/test_cases.rs +++ b/cumulus/parachains/runtimes/test-utils/src/test_cases.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Module contains predefined test-case scenarios for `Runtime` with common functionality. diff --git a/cumulus/parachains/runtimes/testing/penpal/build.rs b/cumulus/parachains/runtimes/testing/penpal/build.rs index e47e483bf9c11..16dfb26729e56 100644 --- a/cumulus/parachains/runtimes/testing/penpal/build.rs +++ b/cumulus/parachains/runtimes/testing/penpal/build.rs @@ -1,18 +1,30 @@ -// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// This is free and unencumbered software released into the public domain. -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to #[cfg(feature = "std")] fn main() { diff --git a/cumulus/parachains/runtimes/testing/penpal/src/lib.rs b/cumulus/parachains/runtimes/testing/penpal/src/lib.rs index 38ddf3bc1991b..095ae2ed9e962 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/lib.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/lib.rs @@ -1,18 +1,30 @@ -// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Unlicense + +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to //! The PenPal runtime is designed as a test runtime that can be created with an arbitrary `ParaId`, //! such that multiple instances of the parachain can be on the same parent relay. Ensure that you diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs index 41e30725e753f..d06e885dbadf2 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/block_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs index 3bd48f061bba0..9e2296fbacb98 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/extrinsic_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs index 850dae6fbd06e..b7fb5673b5d9c 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/mod.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to //! Expose the auto generated weight files. diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs index e0b1985c659c7..899817f4b7a4b 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/paritydb_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs b/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs index c6e91b2fcffbf..ca677ff0ce854 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/weights/rocksdb_weights.rs @@ -1,19 +1,30 @@ // This file is part of Cumulus. +// SPDX-License-Identifier: Unlicense -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to pub mod constants { use frame_support::{ diff --git a/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs b/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs index 10481d5d2ebc4..82db8829e516a 100644 --- a/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs +++ b/cumulus/parachains/runtimes/testing/penpal/src/xcm_config.rs @@ -1,18 +1,30 @@ -// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Unlicense + +// This is free and unencumbered software released into the public domain. + +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. + +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. + +// For more information, please refer to //! Holds the XCM specific configuration that would otherwise be in lib.rs //! diff --git a/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs b/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs index 89cd17d5450ac..f6b96b28a8dd6 100644 --- a/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs +++ b/cumulus/parachains/runtimes/testing/rococo-parachain/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg_attr(not(feature = "std"), no_std)] // `construct_runtime!` does a lot of recursion and requires us to increase the limit to 256. diff --git a/cumulus/polkadot-omni-node/build.rs b/cumulus/polkadot-omni-node/build.rs index 8c498735eae96..5b99610e14c7e 100644 --- a/cumulus/polkadot-omni-node/build.rs +++ b/cumulus/polkadot-omni-node/build.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; diff --git a/cumulus/polkadot-omni-node/lib/src/cli.rs b/cumulus/polkadot-omni-node/lib/src/cli.rs index 9c4e2561592db..1c47eae57738f 100644 --- a/cumulus/polkadot-omni-node/lib/src/cli.rs +++ b/cumulus/polkadot-omni-node/lib/src/cli.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! CLI options of the omni-node. See [`Command`]. diff --git a/cumulus/polkadot-omni-node/lib/src/command.rs b/cumulus/polkadot-omni-node/lib/src/command.rs index fe7f7cac09719..bf0d264e8c9ca 100644 --- a/cumulus/polkadot-omni-node/lib/src/command.rs +++ b/cumulus/polkadot-omni-node/lib/src/command.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{ cli::{Cli, RelayChainCli, Subcommand}, diff --git a/cumulus/polkadot-omni-node/lib/src/common/aura.rs b/cumulus/polkadot-omni-node/lib/src/common/aura.rs index 9e8837de7f878..9ca725ff3279a 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/aura.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/aura.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Aura-related primitives for cumulus parachain collators. diff --git a/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs b/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs index 974d6ef2b6112..4759ee8586cb0 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/chain_spec.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Chain spec primitives. diff --git a/cumulus/polkadot-omni-node/lib/src/common/command.rs b/cumulus/polkadot-omni-node/lib/src/common/command.rs index a60fc9232d911..4db0632e037ac 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/command.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/command.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::common::spec::BaseNodeSpec; use cumulus_client_cli::ExportGenesisHeadCommand; diff --git a/cumulus/polkadot-omni-node/lib/src/common/mod.rs b/cumulus/polkadot-omni-node/lib/src/common/mod.rs index 843183425dabf..af003b87e3d24 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus parachain collator primitives. diff --git a/cumulus/polkadot-omni-node/lib/src/common/rpc.rs b/cumulus/polkadot-omni-node/lib/src/common/rpc.rs index 4879bd1eb7f47..d91d9fd1e9b39 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/rpc.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/rpc.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Parachain-specific RPCs implementation. diff --git a/cumulus/polkadot-omni-node/lib/src/common/runtime.rs b/cumulus/polkadot-omni-node/lib/src/common/runtime.rs index fcc1d7f0643e7..420d30bf0ebf8 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/runtime.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/runtime.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime parameters. diff --git a/cumulus/polkadot-omni-node/lib/src/common/spec.rs b/cumulus/polkadot-omni-node/lib/src/common/spec.rs index d497337904b97..b00823eb00c19 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/spec.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/spec.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::common::{ command::NodeCommandRunner, diff --git a/cumulus/polkadot-omni-node/lib/src/common/types.rs b/cumulus/polkadot-omni-node/lib/src/common/types.rs index 978368be25847..6915835137f72 100644 --- a/cumulus/polkadot-omni-node/lib/src/common/types.rs +++ b/cumulus/polkadot-omni-node/lib/src/common/types.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_client_consensus_common::ParachainBlockImport as TParachainBlockImport; use cumulus_primitives_core::relay_chain::UncheckedExtrinsic; diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs index bd4ff167d8f11..f5167e1baa45c 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! In an ideal world this would be one runtime which would simplify the code massively. //! This is not an ideal world - Polkadot Asset Hub has a different key type. diff --git a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs index 915f156f8cb53..636c845271d54 100644 --- a/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs +++ b/cumulus/polkadot-omni-node/lib/src/fake_runtime_api/utils.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. pub(crate) mod imports { pub use cumulus_primitives_core::{ClaimQueueOffset, CoreSelector}; diff --git a/cumulus/polkadot-omni-node/lib/src/lib.rs b/cumulus/polkadot-omni-node/lib/src/lib.rs index 92ea3d7d8791f..eb1371d0dedec 100644 --- a/cumulus/polkadot-omni-node/lib/src/lib.rs +++ b/cumulus/polkadot-omni-node/lib/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![doc = include_str!("../README.md")] #![deny(missing_docs)] diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs index cd0e35d0d0699..0d526b09834e9 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/aura.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::{ common::{ diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs b/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs index 96802177ec104..7c5221632d898 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/manual_seal.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::common::{ rpc::BuildRpcExtensions as BuildRpcExtensionsT, diff --git a/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs b/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs index 5570170f90b2d..de27ce3704fc3 100644 --- a/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs +++ b/cumulus/polkadot-omni-node/lib/src/nodes/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. pub mod aura; mod manual_seal; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs b/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs index 8502188af5112..d0a350697b5c3 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/benchmark_storage_works.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(feature = "runtime-benchmarks")] diff --git a/cumulus/polkadot-omni-node/lib/src/tests/common.rs b/cumulus/polkadot-omni-node/lib/src/tests/common.rs index d3f41fb50bc6f..2e4aeb3b2cf5c 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/common.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/common.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(unix)] diff --git a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs index d1f497c1187a7..536fe62cea2d8 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_argument_parsing.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use tempfile::tempdir; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs index 3b0b08e57f839..2619a996e47d2 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/polkadot_mdns_issue.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use tempfile::tempdir; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs b/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs index 65a946e890bd8..2dc7421a3483f 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/purge_chain_works.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use assert_cmd::cargo::cargo_bin; use nix::sys::signal::SIGINT; diff --git a/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs b/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs index a45fd7f4575a0..2475613b09088 100644 --- a/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs +++ b/cumulus/polkadot-omni-node/lib/src/tests/running_the_node_and_interrupt.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use tempfile::tempdir; diff --git a/cumulus/polkadot-omni-node/src/main.rs b/cumulus/polkadot-omni-node/src/main.rs index 1183f488df8b1..a20073c54c45e 100644 --- a/cumulus/polkadot-omni-node/src/main.rs +++ b/cumulus/polkadot-omni-node/src/main.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! White labeled polkadot omni-node. //! diff --git a/cumulus/polkadot-parachain/build.rs b/cumulus/polkadot-parachain/build.rs index 8c498735eae96..5b99610e14c7e 100644 --- a/cumulus/polkadot-parachain/build.rs +++ b/cumulus/polkadot-parachain/build.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; diff --git a/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs b/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs index ec2afc743de8a..b3a5bcafcfba8 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/asset_hubs.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use polkadot_omni_node_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; diff --git a/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs b/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs index 839e93d0a67b3..e0c3c58802b6c 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/bridge_hubs.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use polkadot_omni_node_lib::chain_spec::GenericChainSpec; diff --git a/cumulus/polkadot-parachain/src/chain_spec/collectives.rs b/cumulus/polkadot-parachain/src/chain_spec/collectives.rs index 0d2f66b5acc00..464bc810f9bc1 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/collectives.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/collectives.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use polkadot_omni_node_lib::chain_spec::{Extensions, GenericChainSpec}; use sc_service::ChainType; diff --git a/cumulus/polkadot-parachain/src/chain_spec/coretime.rs b/cumulus/polkadot-parachain/src/chain_spec/coretime.rs index fa865d7458cbe..0b61944444701 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/coretime.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/coretime.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use polkadot_omni_node_lib::chain_spec::GenericChainSpec; diff --git a/cumulus/polkadot-parachain/src/chain_spec/glutton.rs b/cumulus/polkadot-parachain/src/chain_spec/glutton.rs index ddfb961370ac7..5b99ac3ff92b1 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/glutton.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/glutton.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use parachains_common::AuraId; diff --git a/cumulus/polkadot-parachain/src/chain_spec/mod.rs b/cumulus/polkadot-parachain/src/chain_spec/mod.rs index 00dceabb00694..3ca4b169494cb 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/mod.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/mod.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use polkadot_omni_node_lib::{ diff --git a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs index b60b9982c49e9..94e90efb877cd 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/penpal.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/penpal.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::chain_spec::SAFE_XCM_VERSION; use cumulus_primitives_core::ParaId; diff --git a/cumulus/polkadot-parachain/src/chain_spec/people.rs b/cumulus/polkadot-parachain/src/chain_spec/people.rs index 1735a904b8eac..4a1fae516dc94 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/people.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/people.rs @@ -1,18 +1,18 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use cumulus_primitives_core::ParaId; use parachains_common::Balance as PeopleBalance; diff --git a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs index 68383ac5c233d..e7b533cceb8a6 100644 --- a/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs +++ b/cumulus/polkadot-parachain/src/chain_spec/rococo_parachain.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! ChainSpecs dedicated to Rococo parachain setups (for testing and example purposes) diff --git a/cumulus/polkadot-parachain/src/main.rs b/cumulus/polkadot-parachain/src/main.rs index a84fb0dfb18f8..f00a7430fabf8 100644 --- a/cumulus/polkadot-parachain/src/main.rs +++ b/cumulus/polkadot-parachain/src/main.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Polkadot parachain node. diff --git a/cumulus/primitives/aura/src/lib.rs b/cumulus/primitives/aura/src/lib.rs index 4e7d7dc3e79d6..c20aac6869ddd 100644 --- a/cumulus/primitives/aura/src/lib.rs +++ b/cumulus/primitives/aura/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Core primitives for Aura in Cumulus. //! diff --git a/cumulus/primitives/core/src/lib.rs b/cumulus/primitives/core/src/lib.rs index f88e663db19ee..9169c12d8eb13 100644 --- a/cumulus/primitives/core/src/lib.rs +++ b/cumulus/primitives/core/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus related core primitive types and traits. diff --git a/cumulus/primitives/parachain-inherent/src/lib.rs b/cumulus/primitives/parachain-inherent/src/lib.rs index 127a03b652591..4e6e739bb8501 100644 --- a/cumulus/primitives/parachain-inherent/src/lib.rs +++ b/cumulus/primitives/parachain-inherent/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus parachain inherent //! diff --git a/cumulus/primitives/proof-size-hostfunction/src/lib.rs b/cumulus/primitives/proof-size-hostfunction/src/lib.rs index f17b3d3f33b47..0638e5fe53899 100644 --- a/cumulus/primitives/proof-size-hostfunction/src/lib.rs +++ b/cumulus/primitives/proof-size-hostfunction/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Tools for reclaiming PoV weight in parachain runtimes. diff --git a/cumulus/primitives/timestamp/src/lib.rs b/cumulus/primitives/timestamp/src/lib.rs index 5365f83efdf11..44c12043cf05a 100644 --- a/cumulus/primitives/timestamp/src/lib.rs +++ b/cumulus/primitives/timestamp/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Cumulus timestamp related primitives. //! diff --git a/cumulus/primitives/utility/src/lib.rs b/cumulus/primitives/utility/src/lib.rs index 8530f5b87487e..83c774312818b 100644 --- a/cumulus/primitives/utility/src/lib.rs +++ b/cumulus/primitives/utility/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Helper datatypes for cumulus. This includes the [`ParentAsUmp`] routing type which will route //! messages into an [`UpwardMessageSender`] if the destination is `Parent`. diff --git a/cumulus/primitives/utility/src/tests/mod.rs b/cumulus/primitives/utility/src/tests/mod.rs index 80e72ef282636..a597742793b6f 100644 --- a/cumulus/primitives/utility/src/tests/mod.rs +++ b/cumulus/primitives/utility/src/tests/mod.rs @@ -1,17 +1,17 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. +// SPDX-License-Identifier: Apache-2.0 -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod swap_first; diff --git a/cumulus/primitives/utility/src/tests/swap_first.rs b/cumulus/primitives/utility/src/tests/swap_first.rs index 69239c552b8ca..c3fbbd45856ae 100644 --- a/cumulus/primitives/utility/src/tests/swap_first.rs +++ b/cumulus/primitives/utility/src/tests/swap_first.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::*; use frame_support::{parameter_types, traits::fungibles::Inspect}; diff --git a/cumulus/test/relay-sproof-builder/src/lib.rs b/cumulus/test/relay-sproof-builder/src/lib.rs index d1016085c8073..472ea9ec9e029 100644 --- a/cumulus/test/relay-sproof-builder/src/lib.rs +++ b/cumulus/test/relay-sproof-builder/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. extern crate alloc; diff --git a/cumulus/xcm/xcm-emulator/src/lib.rs b/cumulus/xcm/xcm-emulator/src/lib.rs index d9b1e7fd9d04c..8fe6181ab237f 100644 --- a/cumulus/xcm/xcm-emulator/src/lib.rs +++ b/cumulus/xcm/xcm-emulator/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Cumulus. - -// Cumulus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Cumulus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Cumulus. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. extern crate alloc; diff --git a/polkadot/xcm/docs/src/cookbook/mod.rs b/polkadot/xcm/docs/src/cookbook/mod.rs index 1c69bf0ead6f8..ac09e85d1a7d1 100644 --- a/polkadot/xcm/docs/src/cookbook/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs index 279dd71a35f74..8e63b0fb3c7a3 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs index 71c14f6b241b6..7356d8ebcb593 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/network.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs index 23d6664bdafcb..a333d781c08c9 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs index 0180354458ce4..59dcc7af0e83b 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs index cd8701dbbede1..5060961bf8758 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs index 06b00c39e8a04..cf044cd21be63 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs index b7fdaa34ec8ca..46c73b37545f4 100644 --- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs +++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/tests.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/fundamentals.rs b/polkadot/xcm/docs/src/fundamentals.rs index 28899df801aa4..ad365a8a775e2 100644 --- a/polkadot/xcm/docs/src/fundamentals.rs +++ b/polkadot/xcm/docs/src/fundamentals.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/glossary.rs b/polkadot/xcm/docs/src/glossary.rs index 6035888ab733b..61bc3afb93dda 100644 --- a/polkadot/xcm/docs/src/glossary.rs +++ b/polkadot/xcm/docs/src/glossary.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/guides/mod.rs b/polkadot/xcm/docs/src/guides/mod.rs index 5af89428d9a4c..06d9fe69144bc 100644 --- a/polkadot/xcm/docs/src/guides/mod.rs +++ b/polkadot/xcm/docs/src/guides/mod.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/docs/src/lib.rs b/polkadot/xcm/docs/src/lib.rs index 287c97140c91b..8d78b9b19452d 100644 --- a/polkadot/xcm/docs/src/lib.rs +++ b/polkadot/xcm/docs/src/lib.rs @@ -1,4 +1,5 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/xcm-builder/src/fee_handling.rs b/polkadot/xcm/xcm-builder/src/fee_handling.rs index 17e9e64e00c9d..f02e6b393c85b 100644 --- a/polkadot/xcm/xcm-builder/src/fee_handling.rs +++ b/polkadot/xcm/xcm-builder/src/fee_handling.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs b/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs index 22ad8755b9c90..fc388fbca7fa3 100644 --- a/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs +++ b/polkadot/xcm/xcm-executor/src/traits/process_transaction.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/polkadot/xcm/xcm-runtime-apis/src/conversions.rs b/polkadot/xcm/xcm-runtime-apis/src/conversions.rs index 22f0809ea5f92..710181e5b5ca4 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/conversions.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/conversions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Contains runtime APIs for useful conversions, such as between XCM `Location` and `AccountId`. diff --git a/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs b/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs index f0a70b0dacfe1..7bcc190c98795 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for dry-running XCM-related extrinsics. //! This API can be used to simulate XCMs and, for example, find the fees diff --git a/polkadot/xcm/xcm-runtime-apis/src/fees.rs b/polkadot/xcm/xcm-runtime-apis/src/fees.rs index 9500a7f7281f4..a0e2dc912934e 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/fees.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/fees.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for getting XCM fees. diff --git a/polkadot/xcm/xcm-runtime-apis/src/lib.rs b/polkadot/xcm/xcm-runtime-apis/src/lib.rs index f9a857c7c4cec..c6754ffb2d0cf 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/lib.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/lib.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Various runtime APIs to support XCM processing and manipulation. diff --git a/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs b/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs index a2e3e1625486d..be3e0492f8d5f 100644 --- a/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs +++ b/polkadot/xcm/xcm-runtime-apis/src/trusted_query.rs @@ -1,18 +1,19 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for checking if given is trusted reserve or teleporter. diff --git a/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs b/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs index c7a1dda0169c8..f918c5c766250 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/conversions.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. mod mock; diff --git a/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs b/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs index c3046b134d1fe..e1ab1ed1cecfb 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Tests for using both the XCM fee payment API and the dry-run API. diff --git a/polkadot/xcm/xcm-runtime-apis/tests/mock.rs b/polkadot/xcm/xcm-runtime-apis/tests/mock.rs index 18d9dce9245a3..24e0e3fd4ed27 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/mock.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/mock.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. - -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Polkadot. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Mock runtime for tests. //! Implements both runtime APIs for fee estimation and getting the messages for transfers. diff --git a/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs b/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs index 5e3a68b9225ba..64f26e6b942b1 100644 --- a/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs +++ b/polkadot/xcm/xcm-runtime-apis/tests/trusted_query.rs @@ -1,15 +1,19 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. -// Polkadot is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// SPDX-License-Identifier: Apache-2.0 -// Polkadot is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. // You should have received a copy of the GNU General Public License // along with Polkadot. If not, see . diff --git a/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs b/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs index bf7b0e15967c0..726af0468acb5 100644 --- a/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs +++ b/polkadot/xcm/xcm-simulator/src/mock_message_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Polkadot. // Polkadot is free software: you can redistribute it and/or modify diff --git a/substrate/bin/node/cli/benches/executor.rs b/substrate/bin/node/cli/benches/executor.rs index 412b7f0ba0fca..dcbb1580e1b00 100644 --- a/substrate/bin/node/cli/benches/executor.rs +++ b/substrate/bin/node/cli/benches/executor.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use polkadot_sdk::*; diff --git a/substrate/bin/node/cli/tests/basic.rs b/substrate/bin/node/cli/tests/basic.rs index 8f1475fce4f89..01ce9ed52fc2d 100644 --- a/substrate/bin/node/cli/tests/basic.rs +++ b/substrate/bin/node/cli/tests/basic.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use codec::{Decode, Encode, Joiner}; use frame_support::{ diff --git a/substrate/bin/node/cli/tests/common.rs b/substrate/bin/node/cli/tests/common.rs index 95583395f7340..389c872e4fce1 100644 --- a/substrate/bin/node/cli/tests/common.rs +++ b/substrate/bin/node/cli/tests/common.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use codec::{Decode, Encode}; use frame_support::Hashable; diff --git a/substrate/bin/node/cli/tests/fees.rs b/substrate/bin/node/cli/tests/fees.rs index da9d2662408eb..673528128ae1b 100644 --- a/substrate/bin/node/cli/tests/fees.rs +++ b/substrate/bin/node/cli/tests/fees.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use codec::{Encode, Joiner}; use frame_support::{ diff --git a/substrate/bin/node/cli/tests/submit_transaction.rs b/substrate/bin/node/cli/tests/submit_transaction.rs index 3672432ae3426..224569f11c84b 100644 --- a/substrate/bin/node/cli/tests/submit_transaction.rs +++ b/substrate/bin/node/cli/tests/submit_transaction.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use codec::Decode; use frame_system::offchain::{SendSignedTransaction, Signer, SubmitTransaction}; diff --git a/substrate/bin/node/runtime/src/assets_api.rs b/substrate/bin/node/runtime/src/assets_api.rs index 98187e7391f3e..852d8abbaec37 100644 --- a/substrate/bin/node/runtime/src/assets_api.rs +++ b/substrate/bin/node/runtime/src/assets_api.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Runtime API definition for assets. diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 610ef4fb629a1..437420c794350 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! The Substrate runtime. This can be compiled with `#[no_std]`, ready for Wasm. diff --git a/substrate/client/cli/src/commands/generate.rs b/substrate/client/cli/src/commands/generate.rs index 94769279e2194..29ea37372b146 100644 --- a/substrate/client/cli/src/commands/generate.rs +++ b/substrate/client/cli/src/commands/generate.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . //! Implementation of the `generate` subcommand use crate::{ diff --git a/substrate/client/cli/src/commands/generate_node_key.rs b/substrate/client/cli/src/commands/generate_node_key.rs index bdb94eec93b4a..38435cda4b182 100644 --- a/substrate/client/cli/src/commands/generate_node_key.rs +++ b/substrate/client/cli/src/commands/generate_node_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . //! Implementation of the `generate-node-key` subcommand diff --git a/substrate/client/cli/src/commands/insert_key.rs b/substrate/client/cli/src/commands/insert_key.rs index 66dbec794865c..08a7b95b95b4f 100644 --- a/substrate/client/cli/src/commands/insert_key.rs +++ b/substrate/client/cli/src/commands/insert_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . //! Implementation of the `insert` subcommand diff --git a/substrate/client/cli/src/commands/inspect_key.rs b/substrate/client/cli/src/commands/inspect_key.rs index 5aa8b0bdcaa60..b984ccf02afb9 100644 --- a/substrate/client/cli/src/commands/inspect_key.rs +++ b/substrate/client/cli/src/commands/inspect_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . //! Implementation of the `inspect` subcommand diff --git a/substrate/client/cli/src/commands/inspect_node_key.rs b/substrate/client/cli/src/commands/inspect_node_key.rs index 25a0a685650e3..f66ac89d73315 100644 --- a/substrate/client/cli/src/commands/inspect_node_key.rs +++ b/substrate/client/cli/src/commands/inspect_node_key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . //! Implementation of the `inspect-node-key` subcommand diff --git a/substrate/client/cli/src/commands/key.rs b/substrate/client/cli/src/commands/key.rs index 52747b4046226..563d45b13477e 100644 --- a/substrate/client/cli/src/commands/key.rs +++ b/substrate/client/cli/src/commands/key.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . //! Key related CLI utilities diff --git a/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs b/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs index c473c14bccc3d..af66246c7c779 100644 --- a/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs +++ b/substrate/client/consensus/beefy/src/communication/request_response/incoming_requests_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Helper for handling (i.e. answering) BEEFY justifications requests from a remote peer. diff --git a/substrate/client/consensus/grandpa/src/warp_proof.rs b/substrate/client/consensus/grandpa/src/warp_proof.rs index ada3a45e186e0..899686355b1ba 100644 --- a/substrate/client/consensus/grandpa/src/warp_proof.rs +++ b/substrate/client/consensus/grandpa/src/warp_proof.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Utilities for generating and verifying GRANDPA warp sync proofs. diff --git a/substrate/client/executor/benches/bench.rs b/substrate/client/executor/benches/bench.rs index 4cde8c2a4a646..8e460955396c4 100644 --- a/substrate/client/executor/benches/bench.rs +++ b/substrate/client/executor/benches/bench.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use criterion::{criterion_group, criterion_main, Criterion}; diff --git a/substrate/client/keystore/src/local.rs b/substrate/client/keystore/src/local.rs index 91c52bfcd50a0..180b167202439 100644 --- a/substrate/client/keystore/src/local.rs +++ b/substrate/client/keystore/src/local.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . // //! Local keystore implementation diff --git a/substrate/client/network/src/bitswap/mod.rs b/substrate/client/network/src/bitswap/mod.rs index e45c95c7d3c84..36c32b4b059eb 100644 --- a/substrate/client/network/src/bitswap/mod.rs +++ b/substrate/client/network/src/bitswap/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Bitswap server for Substrate. //! diff --git a/substrate/client/network/sync/src/block_relay_protocol.rs b/substrate/client/network/sync/src/block_relay_protocol.rs index 13639d851b272..9b8b93612497e 100644 --- a/substrate/client/network/sync/src/block_relay_protocol.rs +++ b/substrate/client/network/sync/src/block_relay_protocol.rs @@ -1,5 +1,6 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Block relay protocol related definitions. diff --git a/substrate/client/network/sync/src/block_request_handler.rs b/substrate/client/network/sync/src/block_request_handler.rs index 80234170bc203..b83aa0b864c88 100644 --- a/substrate/client/network/sync/src/block_request_handler.rs +++ b/substrate/client/network/sync/src/block_request_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Helper for handling (i.e. answering) block requests from a remote peer via the //! `crate::request_responses::RequestResponsesBehaviour`. diff --git a/substrate/client/network/sync/src/state_request_handler.rs b/substrate/client/network/sync/src/state_request_handler.rs index 36a15f1f42400..6ca2f06a71af8 100644 --- a/substrate/client/network/sync/src/state_request_handler.rs +++ b/substrate/client/network/sync/src/state_request_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Helper for handling (i.e. answering) state requests from a remote peer via the //! `crate::request_responses::RequestResponsesBehaviour`. diff --git a/substrate/client/network/sync/src/warp_request_handler.rs b/substrate/client/network/sync/src/warp_request_handler.rs index 8d0b757ff821c..a2627afadecff 100644 --- a/substrate/client/network/sync/src/warp_request_handler.rs +++ b/substrate/client/network/sync/src/warp_request_handler.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Helper for handling (i.e. answering) grandpa warp sync requests from a remote peer. diff --git a/substrate/client/rpc-spec-v2/src/common/mod.rs b/substrate/client/rpc-spec-v2/src/common/mod.rs index 3167561d649a2..cee43c9cac3de 100644 --- a/substrate/client/rpc-spec-v2/src/common/mod.rs +++ b/substrate/client/rpc-spec-v2/src/common/mod.rs @@ -1,3 +1,8 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or diff --git a/substrate/client/sync-state-rpc/src/lib.rs b/substrate/client/sync-state-rpc/src/lib.rs index cb737cc6c52b3..da98fde68af44 100644 --- a/substrate/client/sync-state-rpc/src/lib.rs +++ b/substrate/client/sync-state-rpc/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! A RPC handler to create sync states for light clients. //! diff --git a/substrate/client/tracing/benches/bench.rs b/substrate/client/tracing/benches/bench.rs index 0f581f6471de7..df8fc8d9fbff3 100644 --- a/substrate/client/tracing/benches/bench.rs +++ b/substrate/client/tracing/benches/bench.rs @@ -1,19 +1,20 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . use criterion::{criterion_group, criterion_main, Criterion}; use tracing_subscriber::fmt::{ diff --git a/substrate/client/tracing/proc-macro/src/lib.rs b/substrate/client/tracing/proc-macro/src/lib.rs index 8fb01de403686..f9ed7d67d829a 100644 --- a/substrate/client/tracing/proc-macro/src/lib.rs +++ b/substrate/client/tracing/proc-macro/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use proc_macro::TokenStream; use proc_macro2::Span; diff --git a/substrate/client/tracing/src/block/mod.rs b/substrate/client/tracing/src/block/mod.rs index 01744cd5563bd..3ebbc3d97e171 100644 --- a/substrate/client/tracing/src/block/mod.rs +++ b/substrate/client/tracing/src/block/mod.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . //! Utilities for tracing block execution diff --git a/substrate/client/tracing/src/logging/directives.rs b/substrate/client/tracing/src/logging/directives.rs index 811511bb20f5c..ef6fe9c504a16 100644 --- a/substrate/client/tracing/src/logging/directives.rs +++ b/substrate/client/tracing/src/logging/directives.rs @@ -1,5 +1,6 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 // Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -8,11 +9,11 @@ // Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// along with Substrate. If not, see . use parking_lot::Mutex; use std::sync::OnceLock; diff --git a/substrate/client/utils/src/id_sequence.rs b/substrate/client/utils/src/id_sequence.rs index abb1271c72a00..a1799d4e684f8 100644 --- a/substrate/client/utils/src/id_sequence.rs +++ b/substrate/client/utils/src/id_sequence.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Produce opaque sequential IDs. diff --git a/substrate/client/utils/src/lib.rs b/substrate/client/utils/src/lib.rs index 017fc76207d27..c09fb60d7c8a9 100644 --- a/substrate/client/utils/src/lib.rs +++ b/substrate/client/utils/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Utilities Primitives for Substrate //! diff --git a/substrate/client/utils/src/metrics.rs b/substrate/client/utils/src/metrics.rs index 9b6e1e47039e7..336e772cf2d6b 100644 --- a/substrate/client/utils/src/metrics.rs +++ b/substrate/client/utils/src/metrics.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Metering primitives and globals diff --git a/substrate/client/utils/src/mpsc.rs b/substrate/client/utils/src/mpsc.rs index 051cb5b387ca8..369c395ed9c11 100644 --- a/substrate/client/utils/src/mpsc.rs +++ b/substrate/client/utils/src/mpsc.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Code to meter unbounded channels. diff --git a/substrate/client/utils/src/notification.rs b/substrate/client/utils/src/notification.rs index 3f606aabe3a15..8ddc598c954ac 100644 --- a/substrate/client/utils/src/notification.rs +++ b/substrate/client/utils/src/notification.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Provides mpsc notification channel that can be instantiated //! _after_ it's been shared to the consumer and producers entities. diff --git a/substrate/client/utils/src/notification/registry.rs b/substrate/client/utils/src/notification/registry.rs index 6f0960ea918be..26658c8829e80 100644 --- a/substrate/client/utils/src/notification/registry.rs +++ b/substrate/client/utils/src/notification/registry.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use std::collections::HashSet; diff --git a/substrate/client/utils/src/notification/tests.rs b/substrate/client/utils/src/notification/tests.rs index 1afc2307e7b30..d57a0ca806cc1 100644 --- a/substrate/client/utils/src/notification/tests.rs +++ b/substrate/client/utils/src/notification/tests.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; use futures::StreamExt; diff --git a/substrate/client/utils/src/pubsub.rs b/substrate/client/utils/src/pubsub.rs index 5293fa42ed94c..e768028c995fc 100644 --- a/substrate/client/utils/src/pubsub.rs +++ b/substrate/client/utils/src/pubsub.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Provides means to implement a typical Pub/Sub mechanism. //! diff --git a/substrate/client/utils/src/pubsub/tests.rs b/substrate/client/utils/src/pubsub/tests.rs index 0d832c7dbd872..ddc9523ec4599 100644 --- a/substrate/client/utils/src/pubsub/tests.rs +++ b/substrate/client/utils/src/pubsub/tests.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use futures::StreamExt; use tokio_test::block_on; diff --git a/substrate/client/utils/src/pubsub/tests/normal_operation.rs b/substrate/client/utils/src/pubsub/tests/normal_operation.rs index a3ea4f7ddee69..ec31c338ab078 100644 --- a/substrate/client/utils/src/pubsub/tests/normal_operation.rs +++ b/substrate/client/utils/src/pubsub/tests/normal_operation.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; diff --git a/substrate/client/utils/src/pubsub/tests/panicking_registry.rs b/substrate/client/utils/src/pubsub/tests/panicking_registry.rs index 9f7579e79f479..3ce52625d9610 100644 --- a/substrate/client/utils/src/pubsub/tests/panicking_registry.rs +++ b/substrate/client/utils/src/pubsub/tests/panicking_registry.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; diff --git a/substrate/client/utils/src/status_sinks.rs b/substrate/client/utils/src/status_sinks.rs index 51d78aa497752..72fa83da11c99 100644 --- a/substrate/client/utils/src/status_sinks.rs +++ b/substrate/client/utils/src/status_sinks.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use crate::mpsc::{tracing_unbounded, TracingUnboundedReceiver, TracingUnboundedSender}; use futures::{lock::Mutex, prelude::*}; diff --git a/substrate/frame/assets-freezer/src/impls.rs b/substrate/frame/assets-freezer/src/impls.rs index 8c9f148e1e9a4..49c0748295d72 100644 --- a/substrate/frame/assets-freezer/src/impls.rs +++ b/substrate/frame/assets-freezer/src/impls.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use super::*; use pallet_assets::FrozenBalance; diff --git a/substrate/frame/assets-freezer/src/lib.rs b/substrate/frame/assets-freezer/src/lib.rs index 5f718ed84820f..61a695a6f5b81 100644 --- a/substrate/frame/assets-freezer/src/lib.rs +++ b/substrate/frame/assets-freezer/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Assets Freezer Pallet //! diff --git a/substrate/frame/assets-freezer/src/mock.rs b/substrate/frame/assets-freezer/src/mock.rs index ad08787aba27d..70c77e6bf8beb 100644 --- a/substrate/frame/assets-freezer/src/mock.rs +++ b/substrate/frame/assets-freezer/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests mock for `pallet-assets-freezer`. diff --git a/substrate/frame/assets-freezer/src/tests.rs b/substrate/frame/assets-freezer/src/tests.rs index b890dc98b5741..41a18e01f8ebb 100644 --- a/substrate/frame/assets-freezer/src/tests.rs +++ b/substrate/frame/assets-freezer/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-assets-freezer. diff --git a/substrate/frame/bags-list/remote-tests/src/migration.rs b/substrate/frame/bags-list/remote-tests/src/migration.rs index 03475b2358504..397ff1000eaa1 100644 --- a/substrate/frame/bags-list/remote-tests/src/migration.rs +++ b/substrate/frame/bags-list/remote-tests/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: Apache-2.0 -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test to check the migration of the voter bag. diff --git a/substrate/frame/bags-list/remote-tests/src/snapshot.rs b/substrate/frame/bags-list/remote-tests/src/snapshot.rs index cb23fc6f5817d..5f999aa0b8b75 100644 --- a/substrate/frame/bags-list/remote-tests/src/snapshot.rs +++ b/substrate/frame/bags-list/remote-tests/src/snapshot.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. +// SPDX-License-Identifier: Apache-2.0 -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test to execute the snapshot using the voter bag. diff --git a/substrate/frame/bags-list/remote-tests/src/try_state.rs b/substrate/frame/bags-list/remote-tests/src/try_state.rs index d4ce0d4f736ca..57dd1305c0030 100644 --- a/substrate/frame/bags-list/remote-tests/src/try_state.rs +++ b/substrate/frame/bags-list/remote-tests/src/try_state.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test to execute the sanity-check of the voter bag. diff --git a/substrate/frame/balances/src/migration.rs b/substrate/frame/balances/src/migration.rs index 920c6eea56241..836deb325e623 100644 --- a/substrate/frame/balances/src/migration.rs +++ b/substrate/frame/balances/src/migration.rs @@ -1,18 +1,18 @@ // Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. - -// Substrate is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// Substrate is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with Substrate. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use super::*; use frame_support::{ diff --git a/substrate/frame/contracts/mock-network/src/lib.rs b/substrate/frame/contracts/mock-network/src/lib.rs index c918cd39ed915..f69efa92ea4e2 100644 --- a/substrate/frame/contracts/mock-network/src/lib.rs +++ b/substrate/frame/contracts/mock-network/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/mocks.rs b/substrate/frame/contracts/mock-network/src/mocks.rs index 6903f01e91a2b..b02e3bacc495b 100644 --- a/substrate/frame/contracts/mock-network/src/mocks.rs +++ b/substrate/frame/contracts/mock-network/src/mocks.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs b/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs index 88ab8135ea129..45715d973b545 100644 --- a/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs +++ b/substrate/frame/contracts/mock-network/src/mocks/msg_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs b/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs index 50f0febd2c440..8f493c4b46429 100644 --- a/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs +++ b/substrate/frame/contracts/mock-network/src/mocks/relay_message_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/parachain.rs b/substrate/frame/contracts/mock-network/src/parachain.rs index 6edbfb0e7e86a..3d192bf7b2422 100644 --- a/substrate/frame/contracts/mock-network/src/parachain.rs +++ b/substrate/frame/contracts/mock-network/src/parachain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs b/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs index 9ad978bbc0317..2dbcc18b730a4 100644 --- a/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs +++ b/substrate/frame/contracts/mock-network/src/parachain/contracts_config.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/contracts/mock-network/src/relay_chain.rs b/substrate/frame/contracts/mock-network/src/relay_chain.rs index 5fed061f80b45..221943654c6c9 100644 --- a/substrate/frame/contracts/mock-network/src/relay_chain.rs +++ b/substrate/frame/contracts/mock-network/src/relay_chain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/delegated-staking/src/impls.rs b/substrate/frame/delegated-staking/src/impls.rs index a443df7b20f56..8981842b69c61 100644 --- a/substrate/frame/delegated-staking/src/impls.rs +++ b/substrate/frame/delegated-staking/src/impls.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Implementations of public traits, namely [`DelegationInterface`] and [`OnStakingUpdate`]. diff --git a/substrate/frame/delegated-staking/src/types.rs b/substrate/frame/delegated-staking/src/types.rs index 14f49466f0e28..781df77e71682 100644 --- a/substrate/frame/delegated-staking/src/types.rs +++ b/substrate/frame/delegated-staking/src/types.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Basic types used in delegated staking. diff --git a/substrate/frame/examples/authorization-tx-extension/src/extensions.rs b/substrate/frame/examples/authorization-tx-extension/src/extensions.rs index dcbe171c183a7..f4e4719bad7e3 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/extensions.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/extensions.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use core::{fmt, marker::PhantomData}; diff --git a/substrate/frame/examples/authorization-tx-extension/src/lib.rs b/substrate/frame/examples/authorization-tx-extension/src/lib.rs index 9105155a94d0d..4eaf94a5c734f 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/lib.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Authorization Transaction Extension Example Pallet //! diff --git a/substrate/frame/examples/authorization-tx-extension/src/mock.rs b/substrate/frame/examples/authorization-tx-extension/src/mock.rs index aa70d12d7d84c..a4a76fe207aa0 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/mock.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate::*; pub(crate) use example_runtime::*; diff --git a/substrate/frame/examples/authorization-tx-extension/src/tests.rs b/substrate/frame/examples/authorization-tx-extension/src/tests.rs index 5579e7a98416a..4770f20dfc327 100644 --- a/substrate/frame/examples/authorization-tx-extension/src/tests.rs +++ b/substrate/frame/examples/authorization-tx-extension/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-example-authorization-tx-extension. diff --git a/substrate/frame/examples/basic/src/benchmarking.rs b/substrate/frame/examples/basic/src/benchmarking.rs index 65ca3089aba42..fc862ba5703a8 100644 --- a/substrate/frame/examples/basic/src/benchmarking.rs +++ b/substrate/frame/examples/basic/src/benchmarking.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Benchmarking for `pallet-example-basic`. diff --git a/substrate/frame/examples/basic/src/lib.rs b/substrate/frame/examples/basic/src/lib.rs index efdf4332e3296..7d7f1d838c9f3 100644 --- a/substrate/frame/examples/basic/src/lib.rs +++ b/substrate/frame/examples/basic/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Basic Example Pallet //! diff --git a/substrate/frame/examples/basic/src/tests.rs b/substrate/frame/examples/basic/src/tests.rs index 5ec253ebecf42..bb50c0f75f835 100644 --- a/substrate/frame/examples/basic/src/tests.rs +++ b/substrate/frame/examples/basic/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-example-basic. diff --git a/substrate/frame/examples/basic/src/weights.rs b/substrate/frame/examples/basic/src/weights.rs index dbb9170aa67e0..06b180e9c1c1f 100644 --- a/substrate/frame/examples/basic/src/weights.rs +++ b/substrate/frame/examples/basic/src/weights.rs @@ -1,19 +1,24 @@ // This file is part of Substrate. -// Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Autogenerated weights for pallet_example_basic //! diff --git a/substrate/frame/examples/default-config/src/lib.rs b/substrate/frame/examples/default-config/src/lib.rs index f690bffe0998b..cc6e75d5418aa 100644 --- a/substrate/frame/examples/default-config/src/lib.rs +++ b/substrate/frame/examples/default-config/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Default Config Pallet Example //! diff --git a/substrate/frame/examples/dev-mode/src/lib.rs b/substrate/frame/examples/dev-mode/src/lib.rs index eb94c024280c7..6c255665891b3 100644 --- a/substrate/frame/examples/dev-mode/src/lib.rs +++ b/substrate/frame/examples/dev-mode/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! //! # Dev Mode Example Pallet diff --git a/substrate/frame/examples/dev-mode/src/tests.rs b/substrate/frame/examples/dev-mode/src/tests.rs index 637864b87bc43..4c93c631d6930 100644 --- a/substrate/frame/examples/dev-mode/src/tests.rs +++ b/substrate/frame/examples/dev-mode/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-dev-mode. diff --git a/substrate/frame/examples/frame-crate/src/lib.rs b/substrate/frame/examples/frame-crate/src/lib.rs index 781cba5658d77..454c8d8d2ad03 100644 --- a/substrate/frame/examples/frame-crate/src/lib.rs +++ b/substrate/frame/examples/frame-crate/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use frame::prelude::*; diff --git a/substrate/frame/examples/kitchensink/src/benchmarking.rs b/substrate/frame/examples/kitchensink/src/benchmarking.rs index 5f1d378e06fe6..4347c8d7cd7e0 100644 --- a/substrate/frame/examples/kitchensink/src/benchmarking.rs +++ b/substrate/frame/examples/kitchensink/src/benchmarking.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Benchmarking for `pallet-example-kitchensink`. diff --git a/substrate/frame/examples/kitchensink/src/lib.rs b/substrate/frame/examples/kitchensink/src/lib.rs index 442318565426e..1fe6db8f183c2 100644 --- a/substrate/frame/examples/kitchensink/src/lib.rs +++ b/substrate/frame/examples/kitchensink/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Kitchensink Example Pallet //! diff --git a/substrate/frame/examples/kitchensink/src/tests.rs b/substrate/frame/examples/kitchensink/src/tests.rs index 7cf95497bf064..fb0766b8293e7 100644 --- a/substrate/frame/examples/kitchensink/src/tests.rs +++ b/substrate/frame/examples/kitchensink/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Tests for pallet-example-kitchensink. diff --git a/substrate/frame/examples/kitchensink/src/weights.rs b/substrate/frame/examples/kitchensink/src/weights.rs index 43f48332ae946..59f510e78e5b5 100644 --- a/substrate/frame/examples/kitchensink/src/weights.rs +++ b/substrate/frame/examples/kitchensink/src/weights.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Autogenerated weights for `pallet_example_kitchensink` //! diff --git a/substrate/frame/examples/offchain-worker/src/lib.rs b/substrate/frame/examples/offchain-worker/src/lib.rs index b3fdb6ea1897a..60322b569dfa5 100644 --- a/substrate/frame/examples/offchain-worker/src/lib.rs +++ b/substrate/frame/examples/offchain-worker/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! //! # Offchain Worker Example Pallet diff --git a/substrate/frame/examples/offchain-worker/src/tests.rs b/substrate/frame/examples/offchain-worker/src/tests.rs index df5cf02594f6f..cc226714e6e9e 100644 --- a/substrate/frame/examples/offchain-worker/src/tests.rs +++ b/substrate/frame/examples/offchain-worker/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate as example_offchain_worker; use crate::*; diff --git a/substrate/frame/examples/single-block-migrations/src/lib.rs b/substrate/frame/examples/single-block-migrations/src/lib.rs index 07c7199b93223..e6983ee4d9af7 100644 --- a/substrate/frame/examples/single-block-migrations/src/lib.rs +++ b/substrate/frame/examples/single-block-migrations/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Single Block Migration Example Pallet //! diff --git a/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs b/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs index 80a33f69941aa..8d8f8a1ec12a1 100644 --- a/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs +++ b/substrate/frame/examples/single-block-migrations/src/migrations/mod.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. /// Module containing all logic associated with the example migration from /// [`StorageVersion`](frame_support::traits::StorageVersion) V0 to V1. diff --git a/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs b/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs index 922c03afdd1e7..b3e013d09cc35 100644 --- a/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs +++ b/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use frame_support::{ storage_alias, diff --git a/substrate/frame/examples/single-block-migrations/src/mock.rs b/substrate/frame/examples/single-block-migrations/src/mock.rs index f4cf81ea6474f..8c61881429bf2 100644 --- a/substrate/frame/examples/single-block-migrations/src/mock.rs +++ b/substrate/frame/examples/single-block-migrations/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. #![cfg(any(all(feature = "try-runtime", test), doc))] diff --git a/substrate/frame/examples/split/src/benchmarking.rs b/substrate/frame/examples/split/src/benchmarking.rs index 5a50300937203..445f0c18522c2 100644 --- a/substrate/frame/examples/split/src/benchmarking.rs +++ b/substrate/frame/examples/split/src/benchmarking.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Benchmarking setup for pallet-example-split diff --git a/substrate/frame/examples/split/src/events.rs b/substrate/frame/examples/split/src/events.rs index 7560766bacb33..92eb0e709d79a 100644 --- a/substrate/frame/examples/split/src/events.rs +++ b/substrate/frame/examples/split/src/events.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use frame_support::pallet_macros::*; diff --git a/substrate/frame/examples/split/src/lib.rs b/substrate/frame/examples/split/src/lib.rs index 5245d90e390cf..b1f09226e0072 100644 --- a/substrate/frame/examples/split/src/lib.rs +++ b/substrate/frame/examples/split/src/lib.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! # Split Example Pallet //! diff --git a/substrate/frame/examples/split/src/mock.rs b/substrate/frame/examples/split/src/mock.rs index 5bf414ee24133..4b0c75b9d15ec 100644 --- a/substrate/frame/examples/split/src/mock.rs +++ b/substrate/frame/examples/split/src/mock.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 - -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// SPDX-License-Identifier: MIT-0 + +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate as pallet_template; use frame_support::{derive_impl, sp_runtime::BuildStorage}; diff --git a/substrate/frame/examples/split/src/tests.rs b/substrate/frame/examples/split/src/tests.rs index 1d4b6dfcff9d5..5820e0699f79b 100644 --- a/substrate/frame/examples/split/src/tests.rs +++ b/substrate/frame/examples/split/src/tests.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. use crate::{mock::*, Error, Event, Something}; use frame_support::{assert_noop, assert_ok}; diff --git a/substrate/frame/examples/split/src/weights.rs b/substrate/frame/examples/split/src/weights.rs index 58b9e2af43a1c..db191eb2aebcc 100644 --- a/substrate/frame/examples/split/src/weights.rs +++ b/substrate/frame/examples/split/src/weights.rs @@ -1,19 +1,25 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: Apache-2.0 +// SPDX-License-Identifier: MIT-0 -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +// of the Software, and to permit persons to whom the Software is furnished to do +// so, subject to the following conditions: + +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. + +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. //! Autogenerated weights for pallet_template //! diff --git a/substrate/frame/revive/mock-network/src/lib.rs b/substrate/frame/revive/mock-network/src/lib.rs index b8c9bc13aa796..3e9d1fe33914e 100644 --- a/substrate/frame/revive/mock-network/src/lib.rs +++ b/substrate/frame/revive/mock-network/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/mocks.rs b/substrate/frame/revive/mock-network/src/mocks.rs index 6903f01e91a2b..b02e3bacc495b 100644 --- a/substrate/frame/revive/mock-network/src/mocks.rs +++ b/substrate/frame/revive/mock-network/src/mocks.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs b/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs index 88ab8135ea129..45715d973b545 100644 --- a/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs +++ b/substrate/frame/revive/mock-network/src/mocks/msg_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs b/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs index 50f0febd2c440..8f493c4b46429 100644 --- a/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs +++ b/substrate/frame/revive/mock-network/src/mocks/relay_message_queue.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/parachain.rs b/substrate/frame/revive/mock-network/src/parachain.rs index 26a8fdcada27e..ea9a26e65b097 100644 --- a/substrate/frame/revive/mock-network/src/parachain.rs +++ b/substrate/frame/revive/mock-network/src/parachain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs b/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs index a2fa7cbf70681..c2ddb8fb750fe 100644 --- a/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs +++ b/substrate/frame/revive/mock-network/src/parachain/contracts_config.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/revive/mock-network/src/relay_chain.rs b/substrate/frame/revive/mock-network/src/relay_chain.rs index 5fed061f80b45..221943654c6c9 100644 --- a/substrate/frame/revive/mock-network/src/relay_chain.rs +++ b/substrate/frame/revive/mock-network/src/relay_chain.rs @@ -1,4 +1,4 @@ -// Copyright Parity Technologies (UK) Ltd. +// Copyright (C) Parity Technologies (UK) Ltd. // This file is part of Substrate. // Substrate is free software: you can redistribute it and/or modify diff --git a/substrate/frame/support/test/compile_pass/src/lib.rs b/substrate/frame/support/test/compile_pass/src/lib.rs index 31f3126b8dd59..5bb79a95ca776 100644 --- a/substrate/frame/support/test/compile_pass/src/lib.rs +++ b/substrate/frame/support/test/compile_pass/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Test that `construct_runtime!` also works when `frame-support` or `frame-system` are renamed in //! the `Cargo.toml`. diff --git a/substrate/primitives/consensus/aura/src/digests.rs b/substrate/primitives/consensus/aura/src/digests.rs index 13484da2a2955..a12988dfd1a46 100644 --- a/substrate/primitives/consensus/aura/src/digests.rs +++ b/substrate/primitives/consensus/aura/src/digests.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. //! Aura (Authority-Round) digests //! diff --git a/substrate/primitives/io/build.rs b/substrate/primitives/io/build.rs index 8a9c0b6420b29..d82115522d4aa 100644 --- a/substrate/primitives/io/build.rs +++ b/substrate/primitives/io/build.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #[rustversion::before(1.68)] fn main() { diff --git a/substrate/scripts/ci/node-template-release/Cargo.toml b/substrate/scripts/ci/node-template-release/Cargo.toml index 5b90044d44dd1..2de00e40b8f1b 100644 --- a/substrate/scripts/ci/node-template-release/Cargo.toml +++ b/substrate/scripts/ci/node-template-release/Cargo.toml @@ -3,7 +3,7 @@ name = "node-template-release" version = "3.0.0" authors.workspace = true edition.workspace = true -license = "GPL-3.0 WITH Classpath-exception-2.0" +license = "GPL-3.0-or-later WITH Classpath-exception-2.0" homepage.workspace = true publish = false diff --git a/substrate/test-utils/cli/build.rs b/substrate/test-utils/cli/build.rs index c63f0b8b66744..3cc0d1cab79c8 100644 --- a/substrate/test-utils/cli/build.rs +++ b/substrate/test-utils/cli/build.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +// SPDX-License-Identifier: Apache-2.0 -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. use std::env; diff --git a/substrate/test-utils/cli/src/lib.rs b/substrate/test-utils/cli/src/lib.rs index 70d68f6f18359..a77b01da6ba12 100644 --- a/substrate/test-utils/cli/src/lib.rs +++ b/substrate/test-utils/cli/src/lib.rs @@ -1,20 +1,19 @@ // This file is part of Substrate. // Copyright (C) Parity Technologies (UK) Ltd. -// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 - -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. - -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #![cfg(unix)] From fddb6a2c36042cf896d3006492bb15d2e2b56bae Mon Sep 17 00:00:00 2001 From: dharjeezy Date: Fri, 7 Feb 2025 09:41:18 +0100 Subject: [PATCH 3/8] Update pallet society to support Block Number Provider (#6623) This PR introduces BlockNumberProvider config for pallet society. closes part of https://github.com/paritytech/polkadot-sdk/issues/6297 --- polkadot/runtime/rococo/src/lib.rs | 1 + prdoc/pr_6623.prdoc | 15 +++++++ substrate/bin/node/runtime/src/lib.rs | 1 + substrate/frame/society/src/benchmarking.rs | 8 ++-- substrate/frame/society/src/lib.rs | 44 ++++++++++++--------- substrate/frame/society/src/migrations.rs | 2 +- substrate/frame/society/src/mock.rs | 1 + 7 files changed, 50 insertions(+), 22 deletions(-) create mode 100644 prdoc/pr_6623.prdoc diff --git a/polkadot/runtime/rococo/src/lib.rs b/polkadot/runtime/rococo/src/lib.rs index f7716e8b7d9cf..f6729dd976257 100644 --- a/polkadot/runtime/rococo/src/lib.rs +++ b/polkadot/runtime/rococo/src/lib.rs @@ -821,6 +821,7 @@ impl pallet_society::Config for Runtime { type MaxPayouts = ConstU32<8>; type MaxBids = ConstU32<512>; type PalletId = SocietyPalletId; + type BlockNumberProvider = System; type WeightInfo = (); } diff --git a/prdoc/pr_6623.prdoc b/prdoc/pr_6623.prdoc new file mode 100644 index 0000000000000..8e2fd8ddaca8d --- /dev/null +++ b/prdoc/pr_6623.prdoc @@ -0,0 +1,15 @@ +# 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: Update Society Pallet to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the block number provider in the Society pallet configurable so that runtimes can choose between using the system block number or an alternative source like the relay chain’s block number. + If you want to keep the existing behavior, simply set the provider to System. For scenarios that require a different notion of block number—such as using a relay chain number you can select another provider, + ensuring flexibility in how the Society pallet references the current block. + +crates: +- name: pallet-society + bump: major \ No newline at end of file diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index 437420c794350..db5392d943c00 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -1719,6 +1719,7 @@ impl pallet_society::Config for Runtime { type ChallengePeriod = ChallengePeriod; type MaxPayouts = MaxPayouts; type MaxBids = MaxBids; + type BlockNumberProvider = System; type WeightInfo = pallet_society::weights::SubstrateWeight; } diff --git a/substrate/frame/society/src/benchmarking.rs b/substrate/frame/society/src/benchmarking.rs index dc8e3cab775f5..cf23e608fc7fb 100644 --- a/substrate/frame/society/src/benchmarking.rs +++ b/substrate/frame/society/src/benchmarking.rs @@ -29,6 +29,10 @@ use sp_runtime::traits::Bounded; use crate::Pallet as Society; +fn set_block_number, I: 'static>(n: BlockNumberFor) { + >::BlockNumberProvider::set_block_number(n); +} + fn mock_balance_deposit, I: 'static>() -> BalanceOf { T::Currency::minimum_balance().saturating_mul(1_000u32.into()) } @@ -352,9 +356,7 @@ mod benchmarks { let _ = Society::::insert_member(&skeptic, 0u32.into()); Skeptic::::put(&skeptic); if let Period::Voting { more, .. } = Society::::period() { - frame_system::Pallet::::set_block_number( - frame_system::Pallet::::block_number() + more, - ); + set_block_number::(T::BlockNumberProvider::current_block_number() + more) } #[extrinsic_call] diff --git a/substrate/frame/society/src/lib.rs b/substrate/frame/society/src/lib.rs index b893bb6fba7d3..39aa6bf3566b2 100644 --- a/substrate/frame/society/src/lib.rs +++ b/substrate/frame/society/src/lib.rs @@ -271,7 +271,9 @@ use frame_support::{ }, PalletId, }; -use frame_system::pallet_prelude::*; +use frame_system::pallet_prelude::{ + ensure_signed, BlockNumberFor as SystemBlockNumberFor, OriginFor, +}; use rand_chacha::{ rand_core::{RngCore, SeedableRng}, ChaChaRng, @@ -289,6 +291,10 @@ use sp_runtime::{ pub use weights::WeightInfo; pub use pallet::*; +use sp_runtime::traits::BlockNumberProvider; + +pub type BlockNumberFor = + <>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; type BalanceOf = <>::Currency as Currency<::AccountId>>::Balance; @@ -423,7 +429,7 @@ impl BidKind { } pub type PayoutsFor = - BoundedVec<(BlockNumberFor, BalanceOf), >::MaxPayouts>; + BoundedVec<(BlockNumberFor, BalanceOf), >::MaxPayouts>; /// Information concerning a member. #[derive(Encode, Decode, Copy, Clone, PartialEq, Eq, RuntimeDebug, TypeInfo, MaxEncodedLen)] @@ -443,7 +449,7 @@ pub struct PayoutRecord { pub type PayoutRecordFor = PayoutRecord< BalanceOf, - BoundedVec<(BlockNumberFor, BalanceOf), >::MaxPayouts>, + BoundedVec<(BlockNumberFor, BalanceOf), >::MaxPayouts>, >; /// Record for an individual new member who was elevated from a candidate recently. @@ -491,7 +497,7 @@ pub mod pallet { type Currency: ReservableCurrency; /// Something that provides randomness in the runtime. - type Randomness: Randomness>; + type Randomness: Randomness>; /// The maximum number of strikes before a member gets funds slashed. #[pallet::constant] @@ -504,23 +510,23 @@ pub mod pallet { /// The number of blocks on which new candidates should be voted on. Together with /// `ClaimPeriod`, this sums to the number of blocks between candidate intake periods. #[pallet::constant] - type VotingPeriod: Get>; + type VotingPeriod: Get>; /// The number of blocks on which new candidates can claim their membership and be the /// named head. #[pallet::constant] - type ClaimPeriod: Get>; + type ClaimPeriod: Get>; /// The maximum duration of the payout lock. #[pallet::constant] - type MaxLockDuration: Get>; + type MaxLockDuration: Get>; /// The origin that is allowed to call `found`. type FounderSetOrigin: EnsureOrigin; /// The number of blocks between membership challenges. #[pallet::constant] - type ChallengePeriod: Get>; + type ChallengePeriod: Get>; /// The maximum number of payouts a member may have waiting unclaimed. #[pallet::constant] @@ -532,6 +538,8 @@ pub mod pallet { /// Weight information for extrinsics in this pallet. type WeightInfo: WeightInfo; + /// Provider for the block number. Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } #[pallet::error] @@ -757,8 +765,8 @@ pub mod pallet { StorageDoubleMap<_, Twox64Concat, RoundIndex, Twox64Concat, T::AccountId, Vote>; #[pallet::hooks] - impl, I: 'static> Hooks> for Pallet { - fn on_initialize(n: BlockNumberFor) -> Weight { + impl, I: 'static> Hooks> for Pallet { + fn on_initialize(n: SystemBlockNumberFor) -> Weight { let mut weight = Weight::zero(); let weights = T::BlockWeights::get(); @@ -1018,9 +1026,9 @@ pub mod pallet { Error::::NoPayout ); let mut record = Payouts::::get(&who); - + let block_number = T::BlockNumberProvider::current_block_number(); if let Some((when, amount)) = record.payouts.first() { - if when <= &>::block_number() { + if when <= &block_number { record.paid = record.paid.checked_add(amount).ok_or(Overflow)?; T::Currency::transfer(&Self::payouts(), &who, *amount, AllowDeath)?; record.payouts.remove(0); @@ -1397,11 +1405,11 @@ pub enum Period { impl, I: 'static> Pallet { /// Get the period we are currently in. - fn period() -> Period> { + fn period() -> Period> { let claim_period = T::ClaimPeriod::get(); let voting_period = T::VotingPeriod::get(); let rotation_period = voting_period + claim_period; - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let phase = now % rotation_period; if phase < voting_period { Period::Voting { elapsed: phase, more: voting_period - phase } @@ -1728,7 +1736,7 @@ impl, I: 'static> Pallet { }); NextHead::::put(next_head); - let now = >::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let maturity = now + Self::lock_duration(MemberCount::::get()); Self::reward_bidder(&candidate, candidacy.bid, candidacy.kind, maturity); @@ -1890,7 +1898,7 @@ impl, I: 'static> Pallet { candidate: &T::AccountId, value: BalanceOf, kind: BidKind>, - maturity: BlockNumberFor, + maturity: BlockNumberFor, ) { let value = match kind { BidKind::Deposit(deposit) => { @@ -1927,7 +1935,7 @@ impl, I: 'static> Pallet { /// /// It is the caller's duty to ensure that `who` is already a member. This does nothing if `who` /// is not a member or if `value` is zero. - fn bump_payout(who: &T::AccountId, when: BlockNumberFor, value: BalanceOf) { + fn bump_payout(who: &T::AccountId, when: BlockNumberFor, value: BalanceOf) { if value.is_zero() { return } @@ -2010,7 +2018,7 @@ impl, I: 'static> Pallet { /// /// This is a rather opaque calculation based on the formula here: /// https://www.desmos.com/calculator/9itkal1tce - fn lock_duration(x: u32) -> BlockNumberFor { + fn lock_duration(x: u32) -> BlockNumberFor { let lock_pc = 100 - 50_000 / (x + 500); Percent::from_percent(lock_pc as u8) * T::MaxLockDuration::get() } diff --git a/substrate/frame/society/src/migrations.rs b/substrate/frame/society/src/migrations.rs index 396ed787c784c..45bd977535d5f 100644 --- a/substrate/frame/society/src/migrations.rs +++ b/substrate/frame/society/src/migrations.rs @@ -170,7 +170,7 @@ pub(crate) mod v0 { Pallet, Twox64Concat, ::AccountId, - Vec<(frame_system::pallet_prelude::BlockNumberFor, BalanceOf)>, + Vec<(BlockNumberFor, BalanceOf)>, ValueQuery, >; #[storage_alias] diff --git a/substrate/frame/society/src/mock.rs b/substrate/frame/society/src/mock.rs index 63fc5059279b1..d19bac27a7d4f 100644 --- a/substrate/frame/society/src/mock.rs +++ b/substrate/frame/society/src/mock.rs @@ -83,6 +83,7 @@ impl Config for Test { type MaxPayouts = MaxPayouts; type MaxBids = MaxBids; type WeightInfo = (); + type BlockNumberProvider = System; } pub struct EnvBuilder { From bb5e05cece1dc308017054d80844a6e98780cbfc Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe <49718502+alexggh@users.noreply.github.com> Date: Fri, 7 Feb 2025 11:12:23 +0200 Subject: [PATCH 4/8] Populate topology after restart if finality is lagging behind current session (#6913) There is a small issue on restart, where if finality is lagging across session boundary and the validator restarts, then the validator won't be able to contribute anymore with assginments/approvals and gossiping for the blocks from the previous session, because after restart it builds the Topology only for the new session, so without a topology it won't be able to distribute assignments and approvals because everything in `approval-distribution` is gated on having a topology for the block. The fix is to also keep track of the last finalized block and its session and if it is different from the list of encountered sessions, build its topology and send it to the rest of subsystems. --------- Signed-off-by: Alexandru Gheorghe Co-authored-by: ordian --- polkadot/node/network/bridge/src/rx/mod.rs | 74 ++++--- polkadot/node/network/bridge/src/rx/tests.rs | 116 +++++++++++ .../node/network/gossip-support/src/lib.rs | 120 ++++++++++- .../node/network/gossip-support/src/tests.rs | 191 +++++++++++++++++- polkadot/node/overseer/src/lib.rs | 1 + prdoc/pr_6913.prdoc | 13 ++ 6 files changed, 487 insertions(+), 28 deletions(-) create mode 100644 prdoc/pr_6913.prdoc diff --git a/polkadot/node/network/bridge/src/rx/mod.rs b/polkadot/node/network/bridge/src/rx/mod.rs index bb99536f78334..ba550df8f1a45 100644 --- a/polkadot/node/network/bridge/src/rx/mod.rs +++ b/polkadot/node/network/bridge/src/rx/mod.rs @@ -57,6 +57,7 @@ use polkadot_primitives::{AuthorityDiscoveryId, BlockNumber, Hash, ValidatorInde use std::{ collections::{hash_map, HashMap}, iter::ExactSizeIterator, + u32, }; use super::validator_discovery; @@ -750,7 +751,7 @@ where // This is kept sorted, descending, by block number. let mut live_heads: Vec = Vec::with_capacity(MAX_VIEW_HEADS); let mut finalized_number = 0; - + let mut newest_session = u32::MIN; let mut mode = Mode::Syncing(sync_oracle); loop { match ctx.recv().fuse().await? { @@ -775,15 +776,29 @@ where flesh_out_topology_peers(&mut authority_discovery_service, canonical_shuffling) .await; - dispatch_validation_event_to_all_unbounded( - NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { - session, - topology: SessionGridTopology::new(shuffled_indices, topology_peers), - local_index, - }), - ctx.sender(), - approval_voting_parallel_enabled, - ); + if session >= newest_session { + dispatch_validation_event_to_all_unbounded( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session, + topology: SessionGridTopology::new(shuffled_indices, topology_peers), + local_index, + }), + ctx.sender(), + approval_voting_parallel_enabled, + ); + } else { + dispatch_validation_event_to_approval_unbounded( + &NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session, + topology: SessionGridTopology::new(shuffled_indices, topology_peers), + local_index, + }), + ctx.sender(), + approval_voting_parallel_enabled, + ); + } + + newest_session = newest_session.max(session); }, FromOrchestra::Communication { msg: NetworkBridgeRxMessage::UpdatedAuthorityIds { peer_id, authority_ids }, @@ -1123,22 +1138,11 @@ async fn dispatch_collation_event_to_all( dispatch_collation_events_to_all(std::iter::once(event), ctx).await } -fn dispatch_validation_event_to_all_unbounded( - event: NetworkBridgeEvent, +fn dispatch_validation_event_to_approval_unbounded( + event: &NetworkBridgeEvent, sender: &mut impl overseer::NetworkBridgeRxSenderTrait, approval_voting_parallel_enabled: bool, ) { - event - .focus() - .ok() - .map(StatementDistributionMessage::from) - .and_then(|msg| Some(sender.send_unbounded_message(msg))); - event - .focus() - .ok() - .map(BitfieldDistributionMessage::from) - .and_then(|msg| Some(sender.send_unbounded_message(msg))); - if approval_voting_parallel_enabled { event .focus() @@ -1152,6 +1156,30 @@ fn dispatch_validation_event_to_all_unbounded( .map(ApprovalDistributionMessage::from) .and_then(|msg| Some(sender.send_unbounded_message(msg))); } +} + +fn dispatch_validation_event_to_all_unbounded( + event: NetworkBridgeEvent, + sender: &mut impl overseer::NetworkBridgeRxSenderTrait, + approval_voting_parallel_enabled: bool, +) { + event + .focus() + .ok() + .map(StatementDistributionMessage::from) + .and_then(|msg| Some(sender.send_unbounded_message(msg))); + event + .focus() + .ok() + .map(BitfieldDistributionMessage::from) + .and_then(|msg| Some(sender.send_unbounded_message(msg))); + + dispatch_validation_event_to_approval_unbounded( + &event, + sender, + approval_voting_parallel_enabled, + ); + event .focus() .ok() diff --git a/polkadot/node/network/bridge/src/rx/tests.rs b/polkadot/node/network/bridge/src/rx/tests.rs index e3f2715ef2b07..4cd903a8b31a0 100644 --- a/polkadot/node/network/bridge/src/rx/tests.rs +++ b/polkadot/node/network/bridge/src/rx/tests.rs @@ -22,9 +22,11 @@ use polkadot_node_subsystem::messages::NetworkBridgeEvent; use assert_matches::assert_matches; use async_trait::async_trait; use parking_lot::Mutex; +use polkadot_overseer::TimeoutExt; use std::{ collections::HashSet, sync::atomic::{AtomicBool, Ordering}, + time::Duration, }; use sc_network::{ @@ -1465,6 +1467,120 @@ fn network_protocol_versioning_view_update() { }); } +// Test rx bridge sends the newest gossip topology to all subsystems and old ones only to approval +// distribution. +#[test] +fn network_new_topology_update() { + let (oracle, handle) = make_sync_oracle(false); + test_harness(Box::new(oracle), |test_harness| async move { + let TestHarness { mut network_handle, mut virtual_overseer, shared } = test_harness; + + let peer_ids: Vec<_> = (0..4).map(|_| PeerId::random()).collect(); + let peers = [ + (peer_ids[0], PeerSet::Validation, ValidationVersion::V2), + (peer_ids[1], PeerSet::Validation, ValidationVersion::V1), + (peer_ids[2], PeerSet::Validation, ValidationVersion::V1), + (peer_ids[3], PeerSet::Collation, ValidationVersion::V2), + ]; + + let head = Hash::repeat_byte(1); + virtual_overseer + .send(FromOrchestra::Signal(OverseerSignal::ActiveLeaves( + ActiveLeavesUpdate::start_work(new_leaf(head, 1)), + ))) + .await; + + handle.await_mode_switch().await; + + let mut total_validation_peers = 0; + let mut total_collation_peers = 0; + + for &(peer_id, peer_set, version) in &peers { + network_handle + .connect_peer(peer_id, version, peer_set, ObservedRole::Full) + .await; + + match peer_set { + PeerSet::Validation => total_validation_peers += 1, + PeerSet::Collation => total_collation_peers += 1, + } + } + + await_peer_connections(&shared, total_validation_peers, total_collation_peers).await; + + // Drain setup messages. + while let Some(_) = virtual_overseer.recv().timeout(Duration::from_secs(1)).await {} + + // 1. Send new gossip topology and check is sent to all subsystems. + virtual_overseer + .send(polkadot_overseer::FromOrchestra::Communication { + msg: NetworkBridgeRxMessage::NewGossipTopology { + session: 2, + local_index: Some(ValidatorIndex(0)), + canonical_shuffling: Vec::new(), + shuffled_indices: Vec::new(), + }, + }) + .await; + + assert_sends_validation_event_to_all( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session: 2, + topology: SessionGridTopology::new(Vec::new(), Vec::new()), + local_index: Some(ValidatorIndex(0)), + }), + &mut virtual_overseer, + ) + .await; + + // 2. Send old gossip topology and check is sent only to approval distribution. + virtual_overseer + .send(polkadot_overseer::FromOrchestra::Communication { + msg: NetworkBridgeRxMessage::NewGossipTopology { + session: 1, + local_index: Some(ValidatorIndex(0)), + canonical_shuffling: Vec::new(), + shuffled_indices: Vec::new(), + }, + }) + .await; + + assert_matches!( + virtual_overseer.recv().await, + AllMessages::ApprovalDistribution(ApprovalDistributionMessage::NetworkBridgeUpdate( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session: 1, + topology: _, + local_index: _, + }) + )) + ); + + // 3. Send new gossip topology and check is sent to all subsystems. + virtual_overseer + .send(polkadot_overseer::FromOrchestra::Communication { + msg: NetworkBridgeRxMessage::NewGossipTopology { + session: 3, + local_index: Some(ValidatorIndex(0)), + canonical_shuffling: Vec::new(), + shuffled_indices: Vec::new(), + }, + }) + .await; + + assert_sends_validation_event_to_all( + NetworkBridgeEvent::NewGossipTopology(NewGossipTopology { + session: 3, + topology: SessionGridTopology::new(Vec::new(), Vec::new()), + local_index: Some(ValidatorIndex(0)), + }), + &mut virtual_overseer, + ) + .await; + virtual_overseer + }); +} + #[test] fn network_protocol_versioning_subsystem_msg() { use polkadot_primitives::CandidateHash; diff --git a/polkadot/node/network/gossip-support/src/lib.rs b/polkadot/node/network/gossip-support/src/lib.rs index cd327c11e408c..dece8fae50939 100644 --- a/polkadot/node/network/gossip-support/src/lib.rs +++ b/polkadot/node/network/gossip-support/src/lib.rs @@ -28,6 +28,7 @@ use std::{ collections::{HashMap, HashSet}, fmt, time::{Duration, Instant}, + u32, }; use futures::{channel::oneshot, select, FutureExt as _}; @@ -45,8 +46,8 @@ use polkadot_node_network_protocol::{ }; use polkadot_node_subsystem::{ messages::{ - GossipSupportMessage, NetworkBridgeEvent, NetworkBridgeRxMessage, NetworkBridgeTxMessage, - RuntimeApiMessage, RuntimeApiRequest, + ChainApiMessage, GossipSupportMessage, NetworkBridgeEvent, NetworkBridgeRxMessage, + NetworkBridgeTxMessage, RuntimeApiMessage, RuntimeApiRequest, }, overseer, ActiveLeavesUpdate, FromOrchestra, OverseerSignal, SpawnedSubsystem, SubsystemError, }; @@ -96,6 +97,8 @@ pub struct GossipSupport { keystore: KeystorePtr, last_session_index: Option, + /// The minimum known session we build the topology for. + min_known_session: SessionIndex, // Some(timestamp) if we failed to resolve // at least a third of authorities the last time. // `None` otherwise. @@ -130,6 +133,9 @@ pub struct GossipSupport { /// Authority discovery service. authority_discovery: AD, + /// The oldest session we need to build a topology for because + /// the finalized blocks are from a session we haven't built a topology for. + finalized_needed_session: Option, /// Subsystem metrics. metrics: Metrics, } @@ -154,7 +160,9 @@ where resolved_authorities: HashMap::new(), connected_authorities: HashMap::new(), connected_peers: HashMap::new(), + min_known_session: u32::MAX, authority_discovery, + finalized_needed_session: None, metrics, } } @@ -199,7 +207,22 @@ where gum::debug!(target: LOG_TARGET, error = ?e); } }, - FromOrchestra::Signal(OverseerSignal::BlockFinalized(_hash, _number)) => {}, + FromOrchestra::Signal(OverseerSignal::BlockFinalized(_hash, _number)) => + if let Some(session_index) = self.last_session_index { + if let Err(e) = self + .build_topology_for_last_finalized_if_needed( + ctx.sender(), + session_index, + ) + .await + { + gum::warn!( + target: LOG_TARGET, + "Failed to build topology for last finalized session: {:?}", + e + ); + } + }, FromOrchestra::Signal(OverseerSignal::Conclude) => return self, } } @@ -294,9 +317,19 @@ where } if is_new_session { + if let Err(err) = self + .build_topology_for_last_finalized_if_needed(sender, session_index) + .await + { + gum::warn!( + target: LOG_TARGET, + "Failed to build topology for last finalized session: {:?}", + err + ); + } + // Gossip topology is only relevant for authorities in the current session. let our_index = self.get_key_index_and_update_metrics(&session_info)?; - update_gossip_topology( sender, our_index, @@ -314,6 +347,85 @@ where Ok(()) } + /// Build the gossip topology for the session of the last finalized block if we haven't built + /// one. + /// + /// This is needed to ensure that if finality is lagging accross session boundary and a restart + /// happens after the new session started, we built a topology from the session we haven't + /// finalized the blocks yet. + /// Once finalized blocks start to be from a session we've built a topology for, we can stop. + async fn build_topology_for_last_finalized_if_needed( + &mut self, + sender: &mut impl overseer::GossipSupportSenderTrait, + current_session_index: u32, + ) -> Result<(), util::Error> { + self.min_known_session = self.min_known_session.min(current_session_index); + + if self + .finalized_needed_session + .map(|oldest_needed_session| oldest_needed_session < self.min_known_session) + .unwrap_or(true) + { + let (tx, rx) = oneshot::channel(); + sender.send_message(ChainApiMessage::FinalizedBlockNumber(tx)).await; + let finalized_block_number = match rx.await? { + Ok(block_number) => block_number, + _ => return Ok(()), + }; + + let (tx, rx) = oneshot::channel(); + sender + .send_message(ChainApiMessage::FinalizedBlockHash(finalized_block_number, tx)) + .await; + + let finalized_block_hash = match rx.await? { + Ok(Some(block_hash)) => block_hash, + _ => return Ok(()), + }; + + let finalized_session_index = + util::request_session_index_for_child(finalized_block_hash, sender) + .await + .await??; + + if finalized_session_index < self.min_known_session && + Some(finalized_session_index) != self.finalized_needed_session + { + gum::debug!( + target: LOG_TARGET, + ?finalized_block_hash, + ?finalized_block_number, + ?finalized_session_index, + "Building topology for finalized block session", + ); + + let finalized_session_info = match util::request_session_info( + finalized_block_hash, + finalized_session_index, + sender, + ) + .await + .await?? + { + Some(session_info) => session_info, + _ => return Ok(()), + }; + + let our_index = self.get_key_index_and_update_metrics(&finalized_session_info)?; + update_gossip_topology( + sender, + our_index, + finalized_session_info.discovery_keys.clone(), + finalized_block_hash, + finalized_session_index, + ) + .await?; + } + self.finalized_needed_session = Some(finalized_session_index); + } + Ok(()) + } + // Checks if the node is an authority and also updates `polkadot_node_is_authority` and // `polkadot_node_is_parachain_validator` metrics accordingly. // On success, returns the index of our keys in `session_info.discovery_keys`. diff --git a/polkadot/node/network/gossip-support/src/tests.rs b/polkadot/node/network/gossip-support/src/tests.rs index 399f29db67da8..873a1122f2c5e 100644 --- a/polkadot/node/network/gossip-support/src/tests.rs +++ b/polkadot/node/network/gossip-support/src/tests.rs @@ -262,6 +262,38 @@ async fn overseer_recv(overseer: &mut VirtualOverseer) -> AllMessages { msg } +async fn provide_info_for_finalized(overseer: &mut VirtualOverseer, test_session: SessionIndex) { + assert_matches!( + overseer_recv(overseer).await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockNumber( + channel, + )) => { + channel.send(Ok(1)).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::ChainApi(ChainApiMessage::FinalizedBlockHash( + _, + channel, + )) => { + channel.send(Ok(Some(Hash::repeat_byte(0xAA)))).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + _, + RuntimeApiRequest::SessionIndexForChild(tx), + )) => { + // assert_eq!(relay_parent, hash); + tx.send(Ok(test_session)).unwrap(); + } + ); +} + async fn test_neighbors(overseer: &mut VirtualOverseer, expected_session: SessionIndex) { assert_matches!( overseer_recv(overseer).await, @@ -375,6 +407,7 @@ fn issues_a_connection_request_on_new_session() { assert_eq!(peer_set, PeerSet::Validation); } ); + provide_info_for_finalized(overseer, 1).await; test_neighbors(overseer, 1).await; @@ -527,6 +560,7 @@ fn issues_connection_request_to_past_present_future() { assert_eq!(peer_set, PeerSet::Validation); } ); + provide_info_for_finalized(overseer, 1).await; // Ensure neighbors are unaffected test_neighbors(overseer, 1).await; @@ -607,6 +641,7 @@ fn issues_update_authorities_after_session() { } ); + provide_info_for_finalized(overseer, 1).await; // Ensure neighbors are unaffected assert_matches!( overseer_recv(overseer).await, @@ -878,6 +913,7 @@ fn test_quickly_connect_to_authorities_that_changed_address() { } ); + provide_info_for_finalized(overseer, 1).await; // Ensure neighbors are unaffected assert_matches!( overseer_recv(overseer).await, @@ -1171,6 +1207,7 @@ fn disconnect_when_not_in_past_present_future() { } ); + provide_info_for_finalized(overseer, 1).await; virtual_overseer }, ); @@ -1268,13 +1305,13 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { assert_eq!(peer_set, PeerSet::Validation); } ); + provide_info_for_finalized(overseer, 1).await; test_neighbors(overseer, 1).await; virtual_overseer }) }; - assert_eq!(state.last_session_index, Some(1)); assert!(state.last_failure.is_some()); state.last_failure = state.last_failure.and_then(|i| i.checked_sub(BACKOFF_DURATION)); @@ -1340,6 +1377,158 @@ fn issues_a_connection_request_when_last_request_was_mostly_unresolved() { assert!(state.last_failure.is_none()); } +// Test that topology is updated for all sessions we still have unfinalized blocks for. +#[test] +fn updates_topology_for_all_finalized_blocks() { + let hash = Hash::repeat_byte(0xAA); + let mock_authority_discovery = + MockAuthorityDiscovery::new(PAST_PRESENT_FUTURE_AUTHORITIES.clone()); + test_harness( + make_subsystem_with_authority_discovery(mock_authority_discovery.clone()), + |mut virtual_overseer| async move { + let overseer = &mut virtual_overseer; + overseer_signal_active_leaves(overseer, hash).await; + let active_session = 5; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionIndexForChild(tx), + )) => { + assert_eq!(relay_parent, hash); + tx.send(Ok(active_session)).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionInfo(s, tx), + )) => { + assert_eq!(relay_parent, hash); + assert_eq!(s, active_session); + tx.send(Ok(Some(make_session_info()))).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::Authorities(tx), + )) => { + assert_eq!(relay_parent, hash); + tx.send(Ok(PAST_PRESENT_FUTURE_AUTHORITIES.clone())).unwrap(); + } + ); + + assert_matches!( + overseer_recv(overseer).await, + AllMessages::NetworkBridgeTx(NetworkBridgeTxMessage::ConnectToResolvedValidators { + validator_addrs, + peer_set, + }) => { + let all_without_ferdie: Vec<_> = PAST_PRESENT_FUTURE_AUTHORITIES + .iter() + .cloned() + .filter(|p| p != &Sr25519Keyring::Ferdie.public().into()) + .collect(); + + let addrs = get_multiaddrs(all_without_ferdie, mock_authority_discovery.clone()).await; + + assert_eq!(validator_addrs, addrs); + assert_eq!(peer_set, PeerSet::Validation); + } + ); + + // Ensure first time we update the topology we also update topology for the session last + // finalized is in. + provide_info_for_finalized(overseer, 1).await; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionInfo(s, tx), + )) => { + assert_eq!(relay_parent, hash); + assert_eq!(s, 1); + tx.send(Ok(Some(make_session_info()))).unwrap(); + } + ); + // Ensure we received topology for the session last finalized is in and the current + // active session + test_neighbors(overseer, 1).await; + test_neighbors(overseer, active_session).await; + + let mut block_number = 3; + // As finalized progresses, we should update topology for all sessions until we caught + // up with the known sessions. + for finalized in 2..active_session { + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + provide_info_for_finalized(overseer, finalized).await; + assert_matches!( + overseer_recv(overseer).await, + AllMessages::RuntimeApi(RuntimeApiMessage::Request( + relay_parent, + RuntimeApiRequest::SessionInfo(s, tx), + )) => { + assert_eq!(relay_parent, hash); + assert_eq!(s, finalized); + tx.send(Ok(Some(make_session_info()))).unwrap(); + } + ); + test_neighbors(overseer, finalized).await; + + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + provide_info_for_finalized(overseer, finalized).await; + } + + // No topology update is sent once finalized block is in the active session. + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + provide_info_for_finalized(overseer, active_session).await; + + // Code becomes no-op after we caught up with the last finalized block being in the + // active session. + block_number += 1; + overseer + .send(FromOrchestra::Signal(OverseerSignal::BlockFinalized( + Hash::repeat_byte(block_number as u8), + block_number, + ))) + .timeout(TIMEOUT) + .await + .expect("signal send timeout"); + + virtual_overseer + }, + ); +} + // note: this test was added at a time where the default `rand::SliceRandom::shuffle` // function was used to shuffle authorities for the topology and ensures backwards compatibility. // diff --git a/polkadot/node/overseer/src/lib.rs b/polkadot/node/overseer/src/lib.rs index 17470d74577d2..a8d0ab90f6b91 100644 --- a/polkadot/node/overseer/src/lib.rs +++ b/polkadot/node/overseer/src/lib.rs @@ -615,6 +615,7 @@ pub struct Overseer { NetworkBridgeRxMessage, // TODO RuntimeApiMessage, ChainSelectionMessage, + ChainApiMessage, ], can_receive_priority_messages)] gossip_support: GossipSupport, diff --git a/prdoc/pr_6913.prdoc b/prdoc/pr_6913.prdoc new file mode 100644 index 0000000000000..16d2564a6eed8 --- /dev/null +++ b/prdoc/pr_6913.prdoc @@ -0,0 +1,13 @@ +title: Enable approval-voting-parallel by default on polkadot + +doc: + - audience: Node Dev + description: | + Enable approval-voting-parallel by default on polkadot +crates: + - name: polkadot-network-bridge + bump: minor + - name: polkadot-gossip-support + bump: minor + - name: polkadot-overseer + bump: minor From a484cccad9caa389647332941c4b1c3a148c558c Mon Sep 17 00:00:00 2001 From: Egor_P Date: Fri, 7 Feb 2025 10:17:02 +0100 Subject: [PATCH 5/8] [CI/CD] Add a pipeline to build binaries in different profiles (#7496) Recently there were some requests to build and deploy a binary, for example `polkadot`, in the `release` or `production` profile to do some testing. So far we had only a [release](https://github.com/paritytech/polkadot-sdk/blob/master/.github/workflows/release-20_build-rc.yml) pipeline that could do it in the GitHub but to use it, there was a lot of extra overhead needed. This pipeline should simplify this case and give a possibility to build a binary in desired profile from any branch for the testing purposes. Something similar to what we have for runtimes in the [srtool repo](https://github.com/paritytech/srtool/actions/workflows/manual.yml) It won't be used in any release activities though. CC: @BulatSaif --- .../scripts/release/build-linux-release.sh | 9 +-- .github/workflows/release-build-binary.yml | 76 +++++++++++++++++++ 2 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/release-build-binary.yml diff --git a/.github/scripts/release/build-linux-release.sh b/.github/scripts/release/build-linux-release.sh index 874c9b44788b3..413a3274edf30 100755 --- a/.github/scripts/release/build-linux-release.sh +++ b/.github/scripts/release/build-linux-release.sh @@ -3,7 +3,7 @@ # This is used to build our binaries: # - polkadot # - polkadot-parachain -# - polkadot-omni-node +# - polkadot-omni-node # # set -e @@ -12,7 +12,6 @@ PACKAGE=${2:-$BIN} PROFILE=${PROFILE:-production} ARTIFACTS=/artifacts/$BIN -VERSION=$(git tag -l --contains HEAD | grep -E "^v.*") echo "Artifacts will be copied into $ARTIFACTS" mkdir -p "$ARTIFACTS" @@ -25,10 +24,10 @@ echo "Artifact target: $ARTIFACTS" cp ./target/$PROFILE/$BIN "$ARTIFACTS" pushd "$ARTIFACTS" > /dev/null sha256sum "$BIN" | tee "$BIN.sha256" - -EXTRATAG="$($ARTIFACTS/$BIN --version | +chmod a+x "$BIN" +VERSION="$($ARTIFACTS/$BIN --version)" +EXTRATAG="$(echo "${VERSION}" | sed -n -r 's/^'$BIN' ([0-9.]+.*-[0-9a-f]{7,13})-.*$/\1/p')" - EXTRATAG="${VERSION}-${EXTRATAG}-$(cut -c 1-8 $ARTIFACTS/$BIN.sha256)" echo "$BIN version = ${VERSION} (EXTRATAG = ${EXTRATAG})" diff --git a/.github/workflows/release-build-binary.yml b/.github/workflows/release-build-binary.yml new file mode 100644 index 0000000000000..59a8f9da7cc92 --- /dev/null +++ b/.github/workflows/release-build-binary.yml @@ -0,0 +1,76 @@ +name: Binary Build +# This workflow can be used to build a binary like polkadot + workers, omninode or polkadot-parachain +# from any branch with release or profuction profile to be later used for testing. +# ⚠️ IT should not be used for release purposes! + +on: + workflow_dispatch: + inputs: + binary: + required: true + default: "polkadot" + description: "The binary to build" + package: + description: Package to be built, can be polkadot, polkadot-parachain-bin, polkadot-omni-node etc. + required: true + type: string + profile: + required: true + default: "release" + description: "The profile to use for the binary build" + +jobs: + + setup: + # GitHub Actions allows using 'env' in a container context. + # However, env variables don't work for forks: https://github.com/orgs/community/discussions/44322 + # This workaround sets the container image for each job using 'set-image' job output. + runs-on: ubuntu-latest + outputs: + IMAGE: ${{ steps.set_image.outputs.IMAGE }} + RUNNER: ${{ steps.set_runner.outputs.RUNNER }} + steps: + - name: Checkout + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + + - name: Set image + id: set_image + run: cat .github/env >> $GITHUB_OUTPUT + + - name: Set runner + id: set_runner + shell: bash + run: | + if [[ "${{ inputs.binary }}" == "polkadot-parachain" ]]; then + echo "RUNNER=parity-large" >> $GITHUB_OUTPUT + else + echo "RUNNER=ubuntu-latest" >> $GITHUB_OUTPUT + fi + + build: + needs: [setup] + runs-on: ${{ needs.setup.outputs.RUNNER }} + container: + image: ${{ needs.setup.outputs.IMAGE }} + steps: + - name: Checkout + uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0 + + - name: Build binary + run: | + git config --global --add safe.directory "${GITHUB_WORKSPACE}" #avoid "detected dubious ownership" error + PROFILE=${{ inputs.profile }} + if [ "${{ inputs.binary }}" = "polkadot" ]; then + for binary in polkadot polkadot-prepare-worker polkadot-execute-worker; do + echo "Building $binary..." + ./.github/scripts/release/build-linux-release.sh $binary ${{ inputs.package }} "${PROFILE}" + done + else + ./.github/scripts/release/build-linux-release.sh ${{ inputs.binary }} ${{ inputs.package }} "${PROFILE}" + fi + + - name: Upload ${{ inputs.binary }} artifacts + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: ${{ inputs.binary }} + path: /artifacts/** From 1833515983c0670052051d2f1421f50fbbef9dd8 Mon Sep 17 00:00:00 2001 From: dharjeezy Date: Fri, 7 Feb 2025 10:22:34 +0100 Subject: [PATCH 6/8] Update pallet conviction voting to support Block Number Provider (#6621) This PR introduces BlockNumberProvider config for the conviction voting pallet. closes part of https://github.com/paritytech/polkadot-sdk/issues/6297 --------- Co-authored-by: muharem Co-authored-by: command-bot <> --- polkadot/runtime/rococo/src/governance/mod.rs | 1 + .../runtime/westend/src/governance/mod.rs | 1 + prdoc/pr_6621.prdoc | 14 +++++++++++ substrate/bin/node/runtime/src/lib.rs | 1 + substrate/frame/conviction-voting/src/lib.rs | 25 +++++++++++-------- .../frame/conviction-voting/src/tests.rs | 1 + .../primitives/runtime/src/traits/mod.rs | 3 ++- 7 files changed, 35 insertions(+), 11 deletions(-) create mode 100644 prdoc/pr_6621.prdoc diff --git a/polkadot/runtime/rococo/src/governance/mod.rs b/polkadot/runtime/rococo/src/governance/mod.rs index 2be549be29ed1..4052dfcdd0bec 100644 --- a/polkadot/runtime/rococo/src/governance/mod.rs +++ b/polkadot/runtime/rococo/src/governance/mod.rs @@ -47,6 +47,7 @@ impl pallet_conviction_voting::Config for Runtime { type MaxTurnout = frame_support::traits::tokens::currency::ActiveIssuanceOf; type Polls = Referenda; + type BlockNumberProvider = System; } parameter_types! { diff --git a/polkadot/runtime/westend/src/governance/mod.rs b/polkadot/runtime/westend/src/governance/mod.rs index abc25ebaa4708..aa4294f033b04 100644 --- a/polkadot/runtime/westend/src/governance/mod.rs +++ b/polkadot/runtime/westend/src/governance/mod.rs @@ -44,6 +44,7 @@ impl pallet_conviction_voting::Config for Runtime { type MaxTurnout = frame_support::traits::tokens::currency::ActiveIssuanceOf; type Polls = Referenda; + type BlockNumberProvider = System; } parameter_types! { diff --git a/prdoc/pr_6621.prdoc b/prdoc/pr_6621.prdoc new file mode 100644 index 0000000000000..c7d9792957eef --- /dev/null +++ b/prdoc/pr_6621.prdoc @@ -0,0 +1,14 @@ +# 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: Update Conviction Voting Pallet to Support Block Number Provider + +doc: + - audience: Runtime Dev + description: | + This PR makes the block number provider used in the society pallet configurable. Before this PR, society pallet always used the system block number, + with this PR some runtime can opt to use the relay chain block number instead. + +crates: +- name: pallet-conviction-voting + bump: major \ No newline at end of file diff --git a/substrate/bin/node/runtime/src/lib.rs b/substrate/bin/node/runtime/src/lib.rs index db5392d943c00..4e04dc2246876 100644 --- a/substrate/bin/node/runtime/src/lib.rs +++ b/substrate/bin/node/runtime/src/lib.rs @@ -1004,6 +1004,7 @@ impl pallet_conviction_voting::Config for Runtime { type MaxVotes = ConstU32<512>; type MaxTurnout = frame_support::traits::TotalIssuanceOf; type Polls = Referenda; + type BlockNumberProvider = System; } parameter_types! { diff --git a/substrate/frame/conviction-voting/src/lib.rs b/substrate/frame/conviction-voting/src/lib.rs index 31bd6b85ec866..3dd2ad24298d3 100644 --- a/substrate/frame/conviction-voting/src/lib.rs +++ b/substrate/frame/conviction-voting/src/lib.rs @@ -37,7 +37,6 @@ use frame_support::{ ReservableCurrency, WithdrawReasons, }, }; -use frame_system::pallet_prelude::BlockNumberFor; use sp_runtime::{ traits::{AtLeast32BitUnsigned, Saturating, StaticLookup, Zero}, ArithmeticError, DispatchError, Perbill, @@ -55,6 +54,7 @@ pub use self::{ vote::{AccountVote, Casting, Delegating, Vote, Voting}, weights::WeightInfo, }; +use sp_runtime::traits::BlockNumberProvider; #[cfg(test)] mod tests; @@ -64,19 +64,22 @@ pub mod benchmarking; const CONVICTION_VOTING_ID: LockIdentifier = *b"pyconvot"; +pub type BlockNumberFor = + <>::BlockNumberProvider as BlockNumberProvider>::BlockNumber; + type AccountIdLookupOf = <::Lookup as StaticLookup>::Source; type BalanceOf = <>::Currency as Currency<::AccountId>>::Balance; type VotingOf = Voting< BalanceOf, ::AccountId, - BlockNumberFor, + BlockNumberFor, PollIndexOf, >::MaxVotes, >; #[allow(dead_code)] type DelegatingOf = - Delegating, ::AccountId, BlockNumberFor>; + Delegating, ::AccountId, BlockNumberFor>; pub type TallyOf = Tally, >::MaxTurnout>; pub type VotesOf = BalanceOf; type PollIndexOf = <>::Polls as Polling>>::Index; @@ -94,7 +97,7 @@ pub mod pallet { traits::ClassCountOf, Twox64Concat, }; - use frame_system::pallet_prelude::*; + use frame_system::pallet_prelude::{ensure_signed, OriginFor}; use sp_runtime::BoundedVec; #[pallet::pallet] @@ -109,14 +112,14 @@ pub mod pallet { type WeightInfo: WeightInfo; /// Currency type with which voting happens. type Currency: ReservableCurrency - + LockableCurrency> + + LockableCurrency> + fungible::Inspect; /// The implementation of the logic which conducts polls. type Polls: Polling< TallyOf, Votes = BalanceOf, - Moment = BlockNumberFor, + Moment = BlockNumberFor, >; /// The maximum amount of tokens which may be used for voting. May just be @@ -136,7 +139,9 @@ pub mod pallet { /// It should be no shorter than enactment period to ensure that in the case of an approval, /// those successful voters are locked into the consequences that their votes entail. #[pallet::constant] - type VoteLockingPeriod: Get>; + type VoteLockingPeriod: Get>; + /// Provider for the block number. Normally this is the `frame_system` pallet. + type BlockNumberProvider: BlockNumberProvider; } /// All voting for a particular voter in a particular voting class. We store the balance for the @@ -479,7 +484,7 @@ impl, I: 'static> Pallet { let unlock_at = end.saturating_add( T::VoteLockingPeriod::get().saturating_mul(lock_periods.into()), ); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); if now < unlock_at { ensure!( matches!(scope, UnvoteScope::Any), @@ -620,7 +625,7 @@ impl, I: 'static> Pallet { &class, conviction.votes(balance), ); - let now = frame_system::Pallet::::block_number(); + let now = T::BlockNumberProvider::current_block_number(); let lock_periods = conviction.lock_periods().into(); prior.accumulate( now.saturating_add( @@ -666,7 +671,7 @@ impl, I: 'static> Pallet { /// a security hole) but may be reduced from what they are currently. fn update_lock(class: &ClassOf, who: &T::AccountId) { let class_lock_needed = VotingFor::::mutate(who, class, |voting| { - voting.rejig(frame_system::Pallet::::block_number()); + voting.rejig(T::BlockNumberProvider::current_block_number()); voting.locked_balance() }); let lock_needed = ClassLocksFor::::mutate(who, |locks| { diff --git a/substrate/frame/conviction-voting/src/tests.rs b/substrate/frame/conviction-voting/src/tests.rs index b1b1fab5ae50e..8e8b41ba63eb4 100644 --- a/substrate/frame/conviction-voting/src/tests.rs +++ b/substrate/frame/conviction-voting/src/tests.rs @@ -154,6 +154,7 @@ impl Config for Test { type WeightInfo = (); type MaxTurnout = frame_support::traits::TotalIssuanceOf; type Polls = TestPolls; + type BlockNumberProvider = System; } pub fn new_test_ext() -> sp_io::TestExternalities { diff --git a/substrate/primitives/runtime/src/traits/mod.rs b/substrate/primitives/runtime/src/traits/mod.rs index 8f5b484e4e3f5..46f17a0fcc633 100644 --- a/substrate/primitives/runtime/src/traits/mod.rs +++ b/substrate/primitives/runtime/src/traits/mod.rs @@ -2351,7 +2351,8 @@ pub trait BlockNumberProvider { + Debug + MaxEncodedLen + Copy - + EncodeLike; + + EncodeLike + + Default; /// Returns the current block number. /// From e5e0a6d36ae61f410f2d61a04e23cc643714145b Mon Sep 17 00:00:00 2001 From: Alexandru Gheorghe <49718502+alexggh@users.noreply.github.com> Date: Fri, 7 Feb 2025 12:30:13 +0200 Subject: [PATCH 7/8] enable approval-voting-parallel on polkadot (#7504) approval-voting-parallel has been running on all network types except polkadot since release `1.17.0`, so it has around 2 months of baking and running without any reported issues, so let's enable it on polkadot as well. After running in polkadot for awhile the flag will be entirely removed. --------- Signed-off-by: Alexandru Gheorghe --- polkadot/cli/src/cli.rs | 8 ++++---- polkadot/node/service/src/lib.rs | 7 ------- prdoc/pr_7504.prdoc | 11 +++++++++++ 3 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 prdoc/pr_7504.prdoc diff --git a/polkadot/cli/src/cli.rs b/polkadot/cli/src/cli.rs index 777bb9c606712..6187eb79a362c 100644 --- a/polkadot/cli/src/cli.rs +++ b/polkadot/cli/src/cli.rs @@ -18,7 +18,7 @@ pub use polkadot_node_primitives::NODE_VERSION; -use clap::Parser; +use clap::{ArgAction, Parser}; use std::path::PathBuf; #[allow(missing_docs)] @@ -148,9 +148,9 @@ pub struct RunCmd { /// Enable approval-voting message processing in parallel. /// - ///**Dangerous!** This is an experimental feature and should not be used in production, unless - /// explicitly advised to. - #[arg(long)] + /// This is a flag used for gradually enabling approval-voting-parallel in production, + /// should not be used unless explicitly advised to. It will be removed in the future. + #[arg(long, default_value = "true", action=ArgAction::Set)] pub enable_approval_voting_parallel: bool, } diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs index 820cce8d083a6..ce17ae5f51b90 100644 --- a/polkadot/node/service/src/lib.rs +++ b/polkadot/node/service/src/lib.rs @@ -759,13 +759,6 @@ pub fn new_full< Some(backoff) }; - // Running approval voting in parallel is enabled by default on all networks except Polkadot - // unless explicitly enabled by the commandline option. - // This is meant to be temporary until we have enough confidence in the new system to enable it - // by default on all networks. - let enable_approval_voting_parallel = - !config.chain_spec.is_polkadot() || enable_approval_voting_parallel; - let disable_grandpa = config.disable_grandpa; let name = config.network.node_name.clone(); diff --git a/prdoc/pr_7504.prdoc b/prdoc/pr_7504.prdoc new file mode 100644 index 0000000000000..3b3a64ffcdc18 --- /dev/null +++ b/prdoc/pr_7504.prdoc @@ -0,0 +1,11 @@ +title: Enable approval-voting-parallel by default on polkadot + +doc: + - audience: Node Dev + description: | + Enable approval-voting-parallel by default on polkadot +crates: + - name: polkadot-service + bump: patch + - name: polkadot-cli + bump: patch From 6875d36b2dba537f3254aad3db76ac7aa656b7ab Mon Sep 17 00:00:00 2001 From: PG Herveou Date: Fri, 7 Feb 2025 14:35:12 +0100 Subject: [PATCH 8/8] [pallet-revive] rpc - gas used fixes (#7482) #7463 follow up with RPC fixes --------- Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- prdoc/pr_7482.prdoc | 7 + .../frame/revive/rpc/examples/rust/deploy.rs | 40 ++-- .../rpc/examples/rust/rpc-playground.rs | 3 +- .../revive/rpc/examples/rust/transfer.rs | 17 +- .../frame/revive/rpc/revive_chain.metadata | Bin 671153 -> 359062 bytes substrate/frame/revive/rpc/src/cli.rs | 18 +- substrate/frame/revive/rpc/src/client.rs | 29 ++- substrate/frame/revive/rpc/src/eth-indexer.rs | 20 +- .../frame/revive/rpc/src/eth-rpc-tester.rs | 24 ++- substrate/frame/revive/rpc/src/example.rs | 113 +++++------ substrate/frame/revive/rpc/src/lib.rs | 9 +- .../frame/revive/rpc/src/receipt_extractor.rs | 178 ++++++++++++++++++ .../frame/revive/rpc/src/receipt_provider.rs | 148 +-------------- .../revive/rpc/src/receipt_provider/cache.rs | 12 +- .../revive/rpc/src/receipt_provider/db.rs | 34 ++-- substrate/frame/revive/rpc/src/tests.rs | 92 ++++----- 16 files changed, 422 insertions(+), 322 deletions(-) create mode 100644 prdoc/pr_7482.prdoc create mode 100644 substrate/frame/revive/rpc/src/receipt_extractor.rs diff --git a/prdoc/pr_7482.prdoc b/prdoc/pr_7482.prdoc new file mode 100644 index 0000000000000..0f548582a21a8 --- /dev/null +++ b/prdoc/pr_7482.prdoc @@ -0,0 +1,7 @@ +title: '[pallet-revive] rpc - gas used fixes ' +doc: +- audience: Runtime Dev + description: '#7463 follow up with RPC fixes' +crates: +- name: pallet-revive-eth-rpc + bump: minor diff --git a/substrate/frame/revive/rpc/examples/rust/deploy.rs b/substrate/frame/revive/rpc/examples/rust/deploy.rs index b74d7ea18d41f..12f539bba42ff 100644 --- a/substrate/frame/revive/rpc/examples/rust/deploy.rs +++ b/substrate/frame/revive/rpc/examples/rust/deploy.rs @@ -19,10 +19,8 @@ use pallet_revive::{ create1, evm::{Account, BlockTag, ReceiptInfo, U256}, }; -use pallet_revive_eth_rpc::{ - example::{wait_for_receipt, TransactionBuilder}, - EthRpcClient, -}; +use pallet_revive_eth_rpc::{example::TransactionBuilder, EthRpcClient}; +use std::sync::Arc; #[tokio::main] async fn main() -> anyhow::Result<()> { @@ -36,43 +34,49 @@ async fn main() -> anyhow::Result<()> { println!("Account:"); println!("- address: {:?}", account.address()); println!("- substrate: {}", account.substrate_account()); - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); println!("\n\n=== Deploying contract ===\n\n"); let nonce = client.get_transaction_count(account.address(), BlockTag::Latest.into()).await?; - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(5_000_000_000_000u128.into()) .input(input) - .send(&client) + .send() .await?; - println!("Deploy Tx hash: {hash:?}"); + println!("Deploy Tx hash: {:?}", tx.hash()); let ReceiptInfo { block_number, gas_used, contract_address, .. } = - wait_for_receipt(&client, hash).await?; + tx.wait_for_receipt().await?; let contract_address = contract_address.unwrap(); assert_eq!(contract_address, create1(&account.address(), nonce.try_into().unwrap())); println!("Receipt:"); - println!("- Block number: {block_number}"); - println!("- Gas used: {gas_used}"); + println!("- Block number: {block_number}"); + println!("- Gas estimated: {}", tx.gas()); + println!("- Gas used: {gas_used}"); println!("- Contract address: {contract_address:?}"); let balance = client.get_balance(contract_address, BlockTag::Latest.into()).await?; println!("- Contract balance: {balance:?}"); + if std::env::var("SKIP_CALL").is_ok() { + return Ok(()); + } + println!("\n\n=== Calling contract ===\n\n"); - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(U256::from(1_000_000u32)) .to(contract_address) - .send(&client) + .send() .await?; - println!("Contract call tx hash: {hash:?}"); - let ReceiptInfo { block_number, gas_used, to, .. } = wait_for_receipt(&client, hash).await?; + println!("Contract call tx hash: {:?}", tx.hash()); + let ReceiptInfo { block_number, gas_used, to, .. } = tx.wait_for_receipt().await?; println!("Receipt:"); - println!("- Block number: {block_number}"); - println!("- Gas used: {gas_used}"); - println!("- To: {to:?}"); + println!("- Block number: {block_number}"); + println!("- Gas used: {gas_used}"); + println!("- Gas estimated: {}", tx.gas()); + println!("- To: {to:?}"); Ok(()) } diff --git a/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs b/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs index 64175ca60b5f4..ea8916b3b993d 100644 --- a/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs +++ b/substrate/frame/revive/rpc/examples/rust/rpc-playground.rs @@ -17,13 +17,14 @@ use jsonrpsee::http_client::HttpClientBuilder; use pallet_revive::evm::{Account, BlockTag}; use pallet_revive_eth_rpc::EthRpcClient; +use std::sync::Arc; #[tokio::main] async fn main() -> anyhow::Result<()> { let account = Account::default(); println!("Account address: {:?}", account.address()); - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); let block = client.get_block_by_number(BlockTag::Latest.into(), false).await?; println!("Latest block: {block:#?}"); diff --git a/substrate/frame/revive/rpc/examples/rust/transfer.rs b/substrate/frame/revive/rpc/examples/rust/transfer.rs index 1d67a2dba28f9..5f16716760f9a 100644 --- a/substrate/frame/revive/rpc/examples/rust/transfer.rs +++ b/substrate/frame/revive/rpc/examples/rust/transfer.rs @@ -16,14 +16,12 @@ // limitations under the License. use jsonrpsee::http_client::HttpClientBuilder; use pallet_revive::evm::{Account, BlockTag, ReceiptInfo}; -use pallet_revive_eth_rpc::{ - example::{wait_for_receipt, TransactionBuilder}, - EthRpcClient, -}; +use pallet_revive_eth_rpc::{example::TransactionBuilder, EthRpcClient}; +use std::sync::Arc; #[tokio::main] async fn main() -> anyhow::Result<()> { - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); let alith = Account::default(); let alith_address = alith.address(); @@ -41,16 +39,15 @@ async fn main() -> anyhow::Result<()> { print_balance().await?; println!("\n\n=== Transferring ===\n\n"); - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .signer(alith) .value(value) .to(ethan.address()) - .send(&client) + .send() .await?; - println!("Transaction hash: {hash:?}"); + println!("Transaction hash: {:?}", tx.hash()); - let ReceiptInfo { block_number, gas_used, status, .. } = - wait_for_receipt(&client, hash).await?; + let ReceiptInfo { block_number, gas_used, status, .. } = tx.wait_for_receipt().await?; println!("Receipt: "); println!("- Block number: {block_number}"); println!("- Gas used: {gas_used}"); diff --git a/substrate/frame/revive/rpc/revive_chain.metadata b/substrate/frame/revive/rpc/revive_chain.metadata index 29d91486afe004960ba4a1eee5d22c5ef3297876..89476924cf0079c20e9f4542ba4a21eba517f0d4 100644 GIT binary patch delta 105133 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 =5P7e3kPo@ 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 literal 671153 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

_*E#RqW%)1Rv)2?jpd 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�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

*`KS8W$sJb1rF3iy171#;zA$lI?^r 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 z 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 diff --git a/substrate/frame/revive/rpc/src/cli.rs b/substrate/frame/revive/rpc/src/cli.rs index b6c57d2c3b0bf..7ebf53e7fbfe0 100644 --- a/substrate/frame/revive/rpc/src/cli.rs +++ b/substrate/frame/revive/rpc/src/cli.rs @@ -16,9 +16,9 @@ // limitations under the License. //! The Ethereum JSON-RPC server. use crate::{ - client::{connect, Client}, + client::{connect, native_to_eth_ratio, Client}, BlockInfoProvider, BlockInfoProviderImpl, CacheReceiptProvider, DBReceiptProvider, - EthRpcServer, EthRpcServerImpl, ReceiptProvider, SystemHealthRpcServer, + EthRpcServer, EthRpcServerImpl, ReceiptExtractor, ReceiptProvider, SystemHealthRpcServer, SystemHealthRpcServerImpl, LOG_TARGET, }; use clap::Parser; @@ -146,6 +146,8 @@ pub fn run(cmd: CliCommand) -> anyhow::Result<()> { let (api, rpc_client, rpc) = connect(&node_rpc_url).await?; let block_provider: Arc = Arc::new(BlockInfoProviderImpl::new(cache_size, api.clone(), rpc.clone())); + + let receipt_extractor = ReceiptExtractor::new(native_to_eth_ratio(&api).await?); let receipt_provider: Arc = if let Some(database_url) = database_url.as_ref() { log::info!(target: LOG_TARGET, "🔗 Connecting to provided database"); @@ -155,6 +157,7 @@ pub fn run(cmd: CliCommand) -> anyhow::Result<()> { database_url, database_read_only, block_provider.clone(), + receipt_extractor.clone(), ) .await?, )) @@ -163,8 +166,15 @@ pub fn run(cmd: CliCommand) -> anyhow::Result<()> { Arc::new(CacheReceiptProvider::default()) }; - let client = - Client::new(api, rpc_client, rpc, block_provider, receipt_provider).await?; + let client = Client::new( + api, + rpc_client, + rpc, + block_provider, + receipt_provider, + receipt_extractor, + ) + .await?; client.subscribe_and_cache_blocks(&essential_spawn_handle); Ok::<_, crate::ClientError>(client) } diff --git a/substrate/frame/revive/rpc/src/client.rs b/substrate/frame/revive/rpc/src/client.rs index 7f45a27a05a35..e312114e90e30 100644 --- a/substrate/frame/revive/rpc/src/client.rs +++ b/substrate/frame/revive/rpc/src/client.rs @@ -17,11 +17,10 @@ //! The client connects to the source substrate chain //! and is used by the rpc server to query and send transactions to the substrate chain. use crate::{ - extract_receipts_from_block, subxt_client::{ revive::calls::types::EthTransact, runtime_types::pallet_revive::storage::ContractInfo, }, - BlockInfoProvider, ReceiptProvider, TransactionInfo, LOG_TARGET, + BlockInfoProvider, ReceiptExtractor, ReceiptProvider, TransactionInfo, LOG_TARGET, }; use jsonrpsee::types::{error::CALL_EXECUTION_FAILED_CODE, ErrorObjectOwned}; use pallet_revive::{ @@ -170,6 +169,7 @@ pub struct Client { rpc: LegacyRpcMethods, receipt_provider: Arc, block_provider: Arc, + receipt_extractor: ReceiptExtractor, chain_id: u64, max_block_weight: Weight, } @@ -180,6 +180,12 @@ async fn chain_id(api: &OnlineClient) -> Result) -> Result { + let query = subxt_client::constants().revive().native_to_eth_ratio(); + api.constants().at(&query).map_err(|err| err.into()) +} + /// Fetch the max block weight from the substrate chain. async fn max_block_weight(api: &OnlineClient) -> Result { let query = subxt_client::constants().system().block_weights(); @@ -226,6 +232,7 @@ impl Client { rpc: LegacyRpcMethods, block_provider: Arc, receipt_provider: Arc, + receipt_extractor: ReceiptExtractor, ) -> Result { let (chain_id, max_block_weight) = tokio::try_join!(chain_id(&api), max_block_weight(&api))?; @@ -236,6 +243,7 @@ impl Client { rpc, receipt_provider, block_provider, + receipt_extractor, chain_id, max_block_weight, }) @@ -320,7 +328,7 @@ impl Client { }, }; - log::debug!(target: LOG_TARGET, "Pushing block: {}", block.number()); + log::trace!(target: LOG_TARGET, "Pushing block: {}", block.number()); if let Err(err) = callback(block).await { log::error!(target: LOG_TARGET, "Failed to process block: {err:?}"); } @@ -336,7 +344,7 @@ impl Client { spawn_handle.spawn("subscribe-blocks", None, async move { let res = client .subscribe_new_blocks(SubscriptionType::BestBlocks, |block| async { - let receipts = extract_receipts_from_block(&block).await?; + let receipts = client.receipt_extractor.extract_from_block(&block).await?; client.receipt_provider.insert(&block.hash(), &receipts).await; if let Some(pruned) = client.block_provider.cache_block(block).await { @@ -360,9 +368,10 @@ impl Client { ) -> Result<(), ClientError> { let new_blocks_fut = self.subscribe_new_blocks(SubscriptionType::FinalizedBlocks, |block| async move { - let receipts = extract_receipts_from_block(&block).await.inspect_err(|err| { - log::error!(target: LOG_TARGET, "Failed to extract receipts from block: {err:?}"); - })?; + let receipts = + self.receipt_extractor.extract_from_block(&block).await.inspect_err(|err| { + log::error!(target: LOG_TARGET, "Failed to extract receipts from block: {err:?}"); + })?; self.receipt_provider.insert(&block.hash(), &receipts).await; Ok(()) }); @@ -370,7 +379,7 @@ impl Client { let Some(oldest_block) = oldest_block else { return new_blocks_fut.await }; let old_blocks_fut = self.subscribe_past_blocks(|block| async move { - let receipts = extract_receipts_from_block(&block).await?; + let receipts = self.receipt_extractor.extract_from_block(&block).await?; self.receipt_provider.insert(&block.hash(), &receipts).await; if block.number() == oldest_block { Ok(ControlFlow::Break(())) @@ -481,7 +490,7 @@ impl Client { pub async fn receipt_by_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option { self.receipt_provider .receipt_by_block_hash_and_index(block_hash, transaction_index) @@ -665,7 +674,7 @@ impl Client { let state_root = header.state_root.0.into(); let extrinsics_root = header.extrinsics_root.0.into(); - let receipts = extract_receipts_from_block(&block).await.unwrap_or_default(); + let receipts = self.receipt_extractor.extract_from_block(&block).await.unwrap_or_default(); let gas_used = receipts.iter().fold(U256::zero(), |acc, (_, receipt)| acc + receipt.gas_used); let transactions = if hydrated_transactions { diff --git a/substrate/frame/revive/rpc/src/eth-indexer.rs b/substrate/frame/revive/rpc/src/eth-indexer.rs index 894143be0a525..6e3dc0b4bc5cf 100644 --- a/substrate/frame/revive/rpc/src/eth-indexer.rs +++ b/substrate/frame/revive/rpc/src/eth-indexer.rs @@ -17,8 +17,8 @@ //! The Ethereum JSON-RPC server. use clap::Parser; use pallet_revive_eth_rpc::{ - client::{connect, Client, SubstrateBlockNumber}, - BlockInfoProvider, BlockInfoProviderImpl, DBReceiptProvider, ReceiptProvider, + client::{connect, native_to_eth_ratio, Client, SubstrateBlockNumber}, + BlockInfoProvider, BlockInfoProviderImpl, DBReceiptProvider, ReceiptExtractor, ReceiptProvider, }; use sc_cli::SharedParams; use std::sync::Arc; @@ -78,10 +78,20 @@ pub async fn main() -> anyhow::Result<()> { let (api, rpc_client, rpc) = connect(&node_rpc_url).await?; let block_provider: Arc = Arc::new(BlockInfoProviderImpl::new(0, api.clone(), rpc.clone())); - let receipt_provider: Arc = - Arc::new(DBReceiptProvider::new(&database_url, false, block_provider.clone()).await?); + let receipt_extractor = ReceiptExtractor::new(native_to_eth_ratio(&api).await?); + let receipt_provider: Arc = Arc::new( + DBReceiptProvider::new( + &database_url, + false, + block_provider.clone(), + receipt_extractor.clone(), + ) + .await?, + ); - let client = Client::new(api, rpc_client, rpc, block_provider, receipt_provider).await?; + let client = + Client::new(api, rpc_client, rpc, block_provider, receipt_provider, receipt_extractor) + .await?; client.subscribe_and_cache_receipts(oldest_block).await?; Ok(()) diff --git a/substrate/frame/revive/rpc/src/eth-rpc-tester.rs b/substrate/frame/revive/rpc/src/eth-rpc-tester.rs index 0ddad6874dfd5..7cea1a303e383 100644 --- a/substrate/frame/revive/rpc/src/eth-rpc-tester.rs +++ b/substrate/frame/revive/rpc/src/eth-rpc-tester.rs @@ -17,10 +17,8 @@ use clap::Parser; use jsonrpsee::http_client::HttpClientBuilder; use pallet_revive::evm::{Account, BlockTag, ReceiptInfo}; -use pallet_revive_eth_rpc::{ - example::{wait_for_receipt, TransactionBuilder}, - EthRpcClient, -}; +use pallet_revive_eth_rpc::{example::TransactionBuilder, EthRpcClient}; +use std::sync::Arc; use tokio::{ io::{AsyncBufReadExt, BufReader}, process::{Child, ChildStderr, Command}, @@ -119,7 +117,7 @@ async fn test_eth_rpc(stderr: ChildStderr) -> anyhow::Result<()> { println!("Account:"); println!("- address: {:?}", account.address()); - let client = HttpClientBuilder::default().build("http://localhost:8545")?; + let client = Arc::new(HttpClientBuilder::default().build("http://localhost:8545")?); let nonce = client.get_transaction_count(account.address(), BlockTag::Latest.into()).await?; let balance = client.get_balance(account.address(), BlockTag::Latest.into()).await?; @@ -127,29 +125,29 @@ async fn test_eth_rpc(stderr: ChildStderr) -> anyhow::Result<()> { println!("- balance: {balance:?}"); println!("\n\n=== Deploying dummy contract ===\n\n"); - let hash = TransactionBuilder::default().input(input).send(&client).await?; + let tx = TransactionBuilder::new(&client).input(input).send().await?; - println!("Hash: {hash:?}"); + println!("Hash: {:?}", tx.hash()); println!("Waiting for receipt..."); let ReceiptInfo { block_number, gas_used, contract_address, .. } = - wait_for_receipt(&client, hash).await?; + tx.wait_for_receipt().await?; let contract_address = contract_address.unwrap(); println!("\nReceipt:"); - println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{hash:?}"); + println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{:?}", tx.hash()); println!("- Block number: {block_number}"); println!("- Gas used: {gas_used}"); println!("- Address: {contract_address:?}"); println!("\n\n=== Calling dummy contract ===\n\n"); - let hash = TransactionBuilder::default().to(contract_address).send(&client).await?; + let tx = TransactionBuilder::new(&client).to(contract_address).send().await?; - println!("Hash: {hash:?}"); + println!("Hash: {:?}", tx.hash()); println!("Waiting for receipt..."); - let ReceiptInfo { block_number, gas_used, to, .. } = wait_for_receipt(&client, hash).await?; + let ReceiptInfo { block_number, gas_used, to, .. } = tx.wait_for_receipt().await?; println!("\nReceipt:"); - println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{hash:?}"); + println!("Block explorer: https://westend-asset-hub-eth-explorer.parity.io/{:?}", tx.hash()); println!("- Block number: {block_number}"); println!("- Gas used: {gas_used}"); println!("- To: {to:?}"); diff --git a/substrate/frame/revive/rpc/src/example.rs b/substrate/frame/revive/rpc/src/example.rs index aad5b4fbc344d..c8c633a4e982c 100644 --- a/substrate/frame/revive/rpc/src/example.rs +++ b/substrate/frame/revive/rpc/src/example.rs @@ -20,38 +20,11 @@ use anyhow::Context; use pallet_revive::evm::{ Account, BlockTag, Bytes, GenericTransaction, TransactionLegacyUnsigned, H160, H256, U256, }; - -/// Wait for a transaction receipt. -pub async fn wait_for_receipt( - client: &(impl EthRpcClient + Send + Sync), - hash: H256, -) -> anyhow::Result { - for _ in 0..30 { - tokio::time::sleep(std::time::Duration::from_secs(2)).await; - let receipt = client.get_transaction_receipt(hash).await?; - if let Some(receipt) = receipt { - return Ok(receipt) - } - } - - anyhow::bail!("Failed to get receipt") -} - -/// Wait for a successful transaction receipt. -pub async fn wait_for_successful_receipt( - client: &(impl EthRpcClient + Send + Sync), - hash: H256, -) -> anyhow::Result { - let receipt = wait_for_receipt(client, hash).await?; - if receipt.is_success() { - Ok(receipt) - } else { - anyhow::bail!("Transaction failed") - } -} +use std::sync::Arc; /// Transaction builder. -pub struct TransactionBuilder { +pub struct TransactionBuilder { + client: Arc, signer: Account, value: U256, input: Bytes, @@ -59,9 +32,51 @@ pub struct TransactionBuilder { mutate: Box, } -impl Default for TransactionBuilder { - fn default() -> Self { +#[derive(Debug)] +pub struct SubmittedTransaction { + tx: GenericTransaction, + hash: H256, + client: Arc, +} + +impl SubmittedTransaction { + /// Get the hash of the transaction. + pub fn hash(&self) -> H256 { + self.hash + } + + /// The gas sent with the transaction. + pub fn gas(&self) -> U256 { + self.tx.gas.unwrap() + } + + /// Wait for the receipt of the transaction. + pub async fn wait_for_receipt(&self) -> anyhow::Result { + let hash = self.hash(); + for _ in 0..30 { + tokio::time::sleep(std::time::Duration::from_secs(2)).await; + let receipt = self.client.get_transaction_receipt(hash).await?; + if let Some(receipt) = receipt { + if receipt.is_success() { + assert!( + self.gas() > receipt.gas_used, + "Gas used should be less than gas estimated." + ); + return Ok(receipt) + } else { + anyhow::bail!("Transaction failed") + } + } + } + + anyhow::bail!("Timeout, failed to get receipt") + } +} + +impl TransactionBuilder { + pub fn new(client: &Arc) -> Self { Self { + client: Arc::clone(client), signer: Account::default(), value: U256::zero(), input: Bytes::default(), @@ -69,9 +84,6 @@ impl Default for TransactionBuilder { mutate: Box::new(|_| {}), } } -} - -impl TransactionBuilder { /// Set the signer. pub fn signer(mut self, signer: Account) -> Self { self.signer = signer; @@ -103,11 +115,8 @@ impl TransactionBuilder { } /// Call eth_call to get the result of a view function - pub async fn eth_call( - self, - client: &(impl EthRpcClient + Send + Sync), - ) -> anyhow::Result> { - let TransactionBuilder { signer, value, input, to, .. } = self; + pub async fn eth_call(self) -> anyhow::Result> { + let TransactionBuilder { client, signer, value, input, to, .. } = self; let from = signer.address(); let result = client @@ -127,8 +136,8 @@ impl TransactionBuilder { } /// Send the transaction. - pub async fn send(self, client: &(impl EthRpcClient + Send + Sync)) -> anyhow::Result { - let TransactionBuilder { signer, value, input, to, mutate } = self; + pub async fn send(self) -> anyhow::Result> { + let TransactionBuilder { client, signer, value, input, to, mutate } = self; let from = signer.address(); let chain_id = Some(client.chain_id().await?); @@ -153,6 +162,7 @@ impl TransactionBuilder { .await .with_context(|| "Failed to fetch gas estimate")?; + println!("Gas estimate: {gas:?}"); let mut unsigned_tx = TransactionLegacyUnsigned { gas, nonce, @@ -166,23 +176,18 @@ impl TransactionBuilder { mutate(&mut unsigned_tx); - let tx = signer.sign_transaction(unsigned_tx.into()); - let bytes = tx.signed_payload(); + let signed_tx = signer.sign_transaction(unsigned_tx.into()); + let bytes = signed_tx.signed_payload(); let hash = client .send_raw_transaction(bytes.into()) .await .with_context(|| "transaction failed")?; - Ok(hash) - } - - /// Send the transaction and wait for the receipt. - pub async fn send_and_wait_for_receipt( - self, - client: &(impl EthRpcClient + Send + Sync), - ) -> anyhow::Result { - let hash = self.send(client).await?; - wait_for_successful_receipt(client, hash).await + Ok(SubmittedTransaction { + tx: GenericTransaction::from_signed(signed_tx, Some(from)), + hash, + client, + }) } } diff --git a/substrate/frame/revive/rpc/src/lib.rs b/substrate/frame/revive/rpc/src/lib.rs index f2567db8a330d..3599083dcd431 100644 --- a/substrate/frame/revive/rpc/src/lib.rs +++ b/substrate/frame/revive/rpc/src/lib.rs @@ -41,6 +41,9 @@ pub use block_info_provider::*; mod receipt_provider; pub use receipt_provider::*; +mod receipt_extractor; +pub use receipt_extractor::*; + mod rpc_health; pub use rpc_health::*; @@ -299,8 +302,10 @@ impl EthRpcServer for EthRpcServerImpl { block_hash: H256, transaction_index: U256, ) -> RpcResult> { - let Some(receipt) = - self.client.receipt_by_hash_and_index(&block_hash, &transaction_index).await + let Some(receipt) = self + .client + .receipt_by_hash_and_index(&block_hash, transaction_index.as_usize()) + .await else { return Ok(None); }; diff --git a/substrate/frame/revive/rpc/src/receipt_extractor.rs b/substrate/frame/revive/rpc/src/receipt_extractor.rs new file mode 100644 index 0000000000000..e53f98639671c --- /dev/null +++ b/substrate/frame/revive/rpc/src/receipt_extractor.rs @@ -0,0 +1,178 @@ +// This file is part of Substrate. + +// Copyright (C) Parity Technologies (UK) Ltd. +// SPDX-License-Identifier: Apache-2.0 + +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use crate::{ + client::SubstrateBlock, + subxt_client::{ + revive::{calls::types::EthTransact, events::ContractEmitted}, + system::events::ExtrinsicSuccess, + transaction_payment::events::TransactionFeePaid, + SrcChainConfig, + }, + ClientError, LOG_TARGET, +}; +use futures::{stream, StreamExt}; +use pallet_revive::{ + create1, + evm::{GenericTransaction, Log, ReceiptInfo, TransactionSigned, H256, U256}, +}; +use sp_core::keccak_256; + +/// Utility to extract receipts from extrinsics. +#[derive(Clone, Debug)] +pub struct ReceiptExtractor { + /// The native to eth decimal ratio, used to calculated gas from native fees. + native_to_eth_ratio: u32, +} + +impl ReceiptExtractor { + /// Create a new `ReceiptExtractor` with the given native to eth ratio. + pub fn new(native_to_eth_ratio: u32) -> Self { + Self { native_to_eth_ratio } + } + + /// Extract a [`TransactionSigned`] and a [`ReceiptInfo`] and from an extrinsic. + pub async fn extract_from_extrinsic( + &self, + block: &SubstrateBlock, + ext: subxt::blocks::ExtrinsicDetails>, + call: EthTransact, + ) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { + let transaction_index = ext.index(); + let block_number = U256::from(block.number()); + let block_hash = block.hash(); + let events = ext.events().await?; + + let success = events.has::().inspect_err(|err| { + log::debug!(target: LOG_TARGET, "Failed to lookup for ExtrinsicSuccess event in block {block_number}: {err:?}") + })?; + let tx_fees = events + .find_first::()? + .ok_or(ClientError::TxFeeNotFound) + .inspect_err( + |err| log::debug!(target: LOG_TARGET, "TransactionFeePaid not found in events for block {block_number}\n{err:?}") + )?; + let transaction_hash = H256(keccak_256(&call.payload)); + + let signed_tx = + TransactionSigned::decode(&call.payload).map_err(|_| ClientError::TxDecodingFailed)?; + let from = signed_tx.recover_eth_address().map_err(|_| { + log::error!(target: LOG_TARGET, "Failed to recover eth address from signed tx"); + ClientError::RecoverEthAddressFailed + })?; + + let tx_info = GenericTransaction::from_signed(signed_tx.clone(), Some(from)); + let gas_price = tx_info.gas_price.unwrap_or_default(); + let gas_used = U256::from(tx_fees.tip.saturating_add(tx_fees.actual_fee)) + .saturating_mul(self.native_to_eth_ratio.into()) + .checked_div(gas_price) + .unwrap_or_default(); + + // get logs from ContractEmitted event + let logs = events + .iter() + .filter_map(|event_details| { + let event_details = event_details.ok()?; + let event = event_details.as_event::().ok()??; + + Some(Log { + address: event.contract, + topics: event.topics, + data: Some(event.data.into()), + block_number: Some(block_number), + transaction_hash, + transaction_index: Some(transaction_index.into()), + block_hash: Some(block_hash), + log_index: Some(event_details.index().into()), + ..Default::default() + }) + }) + .collect(); + + let contract_address = if tx_info.to.is_none() { + Some(create1( + &from, + tx_info + .nonce + .unwrap_or_default() + .try_into() + .map_err(|_| ClientError::ConversionFailed)?, + )) + } else { + None + }; + + log::debug!(target: LOG_TARGET, "Adding receipt for tx hash: {transaction_hash:?} - block: {block_number:?}"); + let receipt = ReceiptInfo::new( + block_hash, + block_number, + contract_address, + from, + logs, + tx_info.to, + gas_price, + gas_used, + success, + transaction_hash, + transaction_index.into(), + tx_info.r#type.unwrap_or_default(), + ); + Ok((signed_tx, receipt)) + } + + /// Extract receipts from block. + pub async fn extract_from_block( + &self, + block: &SubstrateBlock, + ) -> Result, ClientError> { + // Filter extrinsics from pallet_revive + let extrinsics = block.extrinsics().await.inspect_err(|err| { + log::debug!(target: LOG_TARGET, "Error fetching for #{:?} extrinsics: {err:?}", block.number()); + })?; + + let extrinsics = extrinsics.iter().flat_map(|ext| { + let call = ext.as_extrinsic::().ok()??; + Some((ext, call)) + }); + + stream::iter(extrinsics) + .map(|(ext, call)| async move { self.extract_from_extrinsic(block, ext, call).await }) + .buffer_unordered(10) + .collect::>>() + .await + .into_iter() + .collect::, _>>() + } + + /// Extract receipt from transaction + pub async fn extract_from_transaction( + &self, + block: &SubstrateBlock, + transaction_index: usize, + ) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { + let extrinsics = block.extrinsics().await?; + let ext = extrinsics + .iter() + .nth(transaction_index) + .ok_or(ClientError::EthExtrinsicNotFound)?; + + let call = ext + .as_extrinsic::()? + .ok_or_else(|| ClientError::EthExtrinsicNotFound)?; + self.extract_from_extrinsic(block, ext, call).await + } +} diff --git a/substrate/frame/revive/rpc/src/receipt_provider.rs b/substrate/frame/revive/rpc/src/receipt_provider.rs index 5c102b3d3d41a..7c5e33cf01e39 100644 --- a/substrate/frame/revive/rpc/src/receipt_provider.rs +++ b/substrate/frame/revive/rpc/src/receipt_provider.rs @@ -15,23 +15,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use crate::{ - client::SubstrateBlock, - subxt_client::{ - revive::{calls::types::EthTransact, events::ContractEmitted}, - system::events::ExtrinsicSuccess, - transaction_payment::events::TransactionFeePaid, - SrcChainConfig, - }, - ClientError, LOG_TARGET, -}; -use futures::{stream, StreamExt}; use jsonrpsee::core::async_trait; -use pallet_revive::{ - create1, - evm::{GenericTransaction, Log, ReceiptInfo, TransactionSigned, H256, U256}, -}; -use sp_core::keccak_256; +use pallet_revive::evm::{ReceiptInfo, TransactionSigned, H256}; use tokio::join; mod cache; @@ -53,7 +38,7 @@ pub trait ReceiptProvider: Send + Sync { async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option; /// Get the number of receipts per block. @@ -79,7 +64,7 @@ impl ReceiptProvider for (Main async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option { if let Some(receipt) = self.0.receipt_by_block_hash_and_index(block_hash, transaction_index).await @@ -111,130 +96,3 @@ impl ReceiptProvider for (Main self.1.signed_tx_by_hash(hash).await } } - -/// Extract a [`TransactionSigned`] and a [`ReceiptInfo`] and from an extrinsic. -pub async fn extract_receipt_from_extrinsic( - block: &SubstrateBlock, - ext: subxt::blocks::ExtrinsicDetails>, - call: EthTransact, -) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { - let transaction_index = ext.index(); - let block_number = U256::from(block.number()); - let block_hash = block.hash(); - let events = ext.events().await?; - - let success = events.has::().inspect_err(|err| { - log::debug!(target: LOG_TARGET, "Failed to lookup for ExtrinsicSuccess event in block {block_number}: {err:?}") - })?; - let tx_fees = events - .find_first::()? - .ok_or(ClientError::TxFeeNotFound) - .inspect_err( - |err| log::debug!(target: LOG_TARGET, "TransactionFeePaid not found in events for block {block_number}\n{err:?}") - )?; - let transaction_hash = H256(keccak_256(&call.payload)); - - let signed_tx = - TransactionSigned::decode(&call.payload).map_err(|_| ClientError::TxDecodingFailed)?; - let from = signed_tx.recover_eth_address().map_err(|_| { - log::error!(target: LOG_TARGET, "Failed to recover eth address from signed tx"); - ClientError::RecoverEthAddressFailed - })?; - - let tx_info = GenericTransaction::from_signed(signed_tx.clone(), Some(from)); - let gas_price = tx_info.gas_price.unwrap_or_default(); - let gas_used = (tx_fees.tip.saturating_add(tx_fees.actual_fee)) - .checked_div(gas_price.as_u128()) - .unwrap_or_default(); - - // get logs from ContractEmitted event - let logs = events - .iter() - .filter_map(|event_details| { - let event_details = event_details.ok()?; - let event = event_details.as_event::().ok()??; - - Some(Log { - address: event.contract, - topics: event.topics, - data: Some(event.data.into()), - block_number: Some(block_number), - transaction_hash, - transaction_index: Some(transaction_index.into()), - block_hash: Some(block_hash), - log_index: Some(event_details.index().into()), - ..Default::default() - }) - }) - .collect(); - - let contract_address = if tx_info.to.is_none() { - Some(create1( - &from, - tx_info - .nonce - .unwrap_or_default() - .try_into() - .map_err(|_| ClientError::ConversionFailed)?, - )) - } else { - None - }; - - log::debug!(target: LOG_TARGET, "Adding receipt for tx hash: {transaction_hash:?} - block: {block_number:?}"); - let receipt = ReceiptInfo::new( - block_hash, - block_number, - contract_address, - from, - logs, - tx_info.to, - gas_price, - gas_used.into(), - success, - transaction_hash, - transaction_index.into(), - tx_info.r#type.unwrap_or_default(), - ); - Ok((signed_tx, receipt)) -} - -/// Extract receipts from block. -pub async fn extract_receipts_from_block( - block: &SubstrateBlock, -) -> Result, ClientError> { - // Filter extrinsics from pallet_revive - let extrinsics = block.extrinsics().await.inspect_err(|err| { - log::debug!(target: LOG_TARGET, "Error fetching for #{:?} extrinsics: {err:?}", block.number()); - })?; - - let extrinsics = extrinsics.iter().flat_map(|ext| { - let call = ext.as_extrinsic::().ok()??; - Some((ext, call)) - }); - - stream::iter(extrinsics) - .map(|(ext, call)| async move { extract_receipt_from_extrinsic(block, ext, call).await }) - .buffer_unordered(10) - .collect::>>() - .await - .into_iter() - .collect::, _>>() -} - -/// Extract receipt from transaction -pub async fn extract_receipts_from_transaction( - block: &SubstrateBlock, - transaction_index: usize, -) -> Result<(TransactionSigned, ReceiptInfo), ClientError> { - let extrinsics = block.extrinsics().await?; - let ext = extrinsics - .iter() - .nth(transaction_index) - .ok_or(ClientError::EthExtrinsicNotFound)?; - - let call = ext - .as_extrinsic::()? - .ok_or_else(|| ClientError::EthExtrinsicNotFound)?; - extract_receipt_from_extrinsic(block, ext, call).await -} diff --git a/substrate/frame/revive/rpc/src/receipt_provider/cache.rs b/substrate/frame/revive/rpc/src/receipt_provider/cache.rs index 39124929ec07d..a4741d18a3b34 100644 --- a/substrate/frame/revive/rpc/src/receipt_provider/cache.rs +++ b/substrate/frame/revive/rpc/src/receipt_provider/cache.rs @@ -16,7 +16,7 @@ // limitations under the License. use super::ReceiptProvider; use jsonrpsee::core::async_trait; -use pallet_revive::evm::{ReceiptInfo, TransactionSigned, H256, U256}; +use pallet_revive::evm::{ReceiptInfo, TransactionSigned, H256}; use std::{collections::HashMap, sync::Arc}; use tokio::sync::RwLock; @@ -48,13 +48,13 @@ impl ReceiptProvider for CacheReceiptProvider { async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option { let cache = self.cache().await; let receipt_hash = cache .transaction_hashes_by_block_and_index .get(block_hash)? - .get(transaction_index)?; + .get(&transaction_index)?; let receipt = cache.receipts_by_hash.get(receipt_hash)?; Some(receipt.clone()) } @@ -84,7 +84,7 @@ struct ReceiptCache { signed_tx_by_hash: HashMap, /// A map of receipt hashes by block hash. - transaction_hashes_by_block_and_index: HashMap>, + transaction_hashes_by_block_and_index: HashMap>, } impl ReceiptCache { @@ -93,7 +93,9 @@ impl ReceiptCache { if !receipts.is_empty() { let values = receipts .iter() - .map(|(_, receipt)| (receipt.transaction_index, receipt.transaction_hash)) + .map(|(_, receipt)| { + (receipt.transaction_index.as_usize(), receipt.transaction_hash) + }) .collect::>(); self.transaction_hashes_by_block_and_index.insert(*block_hash, values); diff --git a/substrate/frame/revive/rpc/src/receipt_provider/db.rs b/substrate/frame/revive/rpc/src/receipt_provider/db.rs index 63917d6193ea7..15f4119b4aefd 100644 --- a/substrate/frame/revive/rpc/src/receipt_provider/db.rs +++ b/substrate/frame/revive/rpc/src/receipt_provider/db.rs @@ -16,10 +16,10 @@ // limitations under the License. use super::*; -use crate::BlockInfoProvider; +use crate::{BlockInfoProvider, ReceiptExtractor}; use jsonrpsee::core::async_trait; use pallet_revive::evm::{ReceiptInfo, TransactionSigned}; -use sp_core::{H256, U256}; +use sp_core::H256; use sqlx::{query, SqlitePool}; use std::sync::Arc; @@ -30,6 +30,8 @@ pub struct DBReceiptProvider { pool: SqlitePool, /// The block provider used to fetch blocks, and reconstruct receipts. block_provider: Arc, + /// A means to extract receipts from extrinsics. + receipt_extractor: ReceiptExtractor, /// weather or not we should write to the DB. read_only: bool, } @@ -40,9 +42,10 @@ impl DBReceiptProvider { database_url: &str, read_only: bool, block_provider: Arc, + receipt_extractor: ReceiptExtractor, ) -> Result { let pool = SqlitePool::connect(database_url).await?; - Ok(Self { pool, block_provider, read_only }) + Ok(Self { pool, block_provider, read_only, receipt_extractor }) } async fn fetch_row(&self, transaction_hash: &H256) -> Option<(H256, usize)> { @@ -125,12 +128,14 @@ impl ReceiptProvider for DBReceiptProvider { async fn receipt_by_block_hash_and_index( &self, block_hash: &H256, - transaction_index: &U256, + transaction_index: usize, ) -> Option { let block = self.block_provider.block_by_hash(block_hash).await.ok()??; - let transaction_index: usize = transaction_index.as_usize(); // TODO: check for overflow - let (_, receipt) = - extract_receipts_from_transaction(&block, transaction_index).await.ok()?; + let (_, receipt) = self + .receipt_extractor + .extract_from_transaction(&block, transaction_index) + .await + .ok()?; Some(receipt) } @@ -138,8 +143,11 @@ impl ReceiptProvider for DBReceiptProvider { let (block_hash, transaction_index) = self.fetch_row(transaction_hash).await?; let block = self.block_provider.block_by_hash(&block_hash).await.ok()??; - let (_, receipt) = - extract_receipts_from_transaction(&block, transaction_index).await.ok()?; + let (_, receipt) = self + .receipt_extractor + .extract_from_transaction(&block, transaction_index) + .await + .ok()?; Some(receipt) } @@ -161,8 +169,11 @@ impl ReceiptProvider for DBReceiptProvider { let transaction_index = result.transaction_index.try_into().ok()?; let block = self.block_provider.block_by_hash(&block_hash).await.ok()??; - let (signed_tx, _) = - extract_receipts_from_transaction(&block, transaction_index).await.ok()?; + let (signed_tx, _) = self + .receipt_extractor + .extract_from_transaction(&block, transaction_index) + .await + .ok()?; Some(signed_tx) } } @@ -179,6 +190,7 @@ mod tests { DBReceiptProvider { pool, block_provider: Arc::new(MockBlockInfoProvider {}), + receipt_extractor: ReceiptExtractor::new(1_000_000), read_only: false, } } diff --git a/substrate/frame/revive/rpc/src/tests.rs b/substrate/frame/revive/rpc/src/tests.rs index e64e16d45b2ae..e1ac274d32ea8 100644 --- a/substrate/frame/revive/rpc/src/tests.rs +++ b/substrate/frame/revive/rpc/src/tests.rs @@ -18,7 +18,7 @@ use crate::{ cli::{self, CliCommand}, - example::{wait_for_successful_receipt, TransactionBuilder}, + example::TransactionBuilder, EthRpcClient, }; use clap::Parser; @@ -29,7 +29,7 @@ use pallet_revive::{ evm::{Account, BlockTag, U256}, }; use static_init::dynamic; -use std::thread; +use std::{sync::Arc, thread}; use substrate_cli_test_utils::*; /// Create a websocket client with a 120s timeout. @@ -117,19 +117,15 @@ macro_rules! unwrap_call_err( #[tokio::test] async fn transfer() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let ethan = Account::from(subxt_signer::eth::dev::ethan()); let initial_balance = client.get_balance(ethan.address(), BlockTag::Latest.into()).await?; let value = 1_000_000_000_000_000_000_000u128.into(); - let hash = TransactionBuilder::default() - .value(value) - .to(ethan.address()) - .send(&client) - .await?; + let tx = TransactionBuilder::new(&client).value(value).to(ethan.address()).send().await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let receipt = tx.wait_for_receipt().await?; assert_eq!( Some(ethan.address()), receipt.to, @@ -145,7 +141,7 @@ async fn transfer() -> anyhow::Result<()> { #[tokio::test] async fn deploy_and_call() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = std::sync::Arc::new(SharedResources::client().await); let account = Account::default(); // Balance transfer @@ -153,13 +149,9 @@ async fn deploy_and_call() -> anyhow::Result<()> { let initial_balance = client.get_balance(ethan.address(), BlockTag::Latest.into()).await?; let value = 1_000_000_000_000_000_000_000u128.into(); - let hash = TransactionBuilder::default() - .value(value) - .to(ethan.address()) - .send(&client) - .await?; + let tx = TransactionBuilder::new(&client).value(value).to(ethan.address()).send().await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let receipt = tx.wait_for_receipt().await?; assert_eq!( Some(ethan.address()), receipt.to, @@ -175,8 +167,8 @@ async fn deploy_and_call() -> anyhow::Result<()> { let (bytes, _) = pallet_revive_fixtures::compile_module("dummy")?; let input = bytes.into_iter().chain(data.clone()).collect::>(); let nonce = client.get_transaction_count(account.address(), BlockTag::Latest.into()).await?; - let hash = TransactionBuilder::default().value(value).input(input).send(&client).await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let tx = TransactionBuilder::new(&client).value(value).input(input).send().await?; + let receipt = tx.wait_for_receipt().await?; let contract_address = create1(&account.address(), nonce.try_into().unwrap()); assert_eq!( Some(contract_address), @@ -188,12 +180,12 @@ async fn deploy_and_call() -> anyhow::Result<()> { assert_eq!(value, balance, "Contract balance should be the same as the value sent."); // Call contract - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(value) .to(contract_address) - .send(&client) + .send() .await?; - let receipt = wait_for_successful_receipt(&client, hash).await?; + let receipt = tx.wait_for_receipt().await?; assert_eq!( Some(contract_address), @@ -206,13 +198,13 @@ async fn deploy_and_call() -> anyhow::Result<()> { // Balance transfer to contract let balance = client.get_balance(contract_address, BlockTag::Latest.into()).await?; - let hash = TransactionBuilder::default() + let tx = TransactionBuilder::new(&client) .value(value) .to(contract_address) - .send(&client) + .send() .await?; - wait_for_successful_receipt(&client, hash).await?; + tx.wait_for_receipt().await?; let increase = client.get_balance(contract_address, BlockTag::Latest.into()).await? - balance; assert_eq!(value, increase, "contract's balance should have increased by the value sent."); Ok(()) @@ -221,17 +213,19 @@ async fn deploy_and_call() -> anyhow::Result<()> { #[tokio::test] async fn revert_call() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let (bytecode, contract) = get_contract("Errors")?; - let receipt = TransactionBuilder::default() + let receipt = TransactionBuilder::new(&client) .input(bytecode) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; - let err = TransactionBuilder::default() + let err = TransactionBuilder::new(&client) .to(receipt.contract_address.unwrap()) .input(contract.function("triggerRequireError")?.encode_input(&[])?.to_vec()) - .send(&client) + .send() .await .unwrap_err(); @@ -244,17 +238,21 @@ async fn revert_call() -> anyhow::Result<()> { #[tokio::test] async fn event_logs() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let (bytecode, contract) = get_contract("EventExample")?; - let receipt = TransactionBuilder::default() + let receipt = TransactionBuilder::new(&client) .input(bytecode) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; - let receipt = TransactionBuilder::default() + let receipt = TransactionBuilder::new(&client) .to(receipt.contract_address.unwrap()) .input(contract.function("triggerEvent")?.encode_input(&[])?.to_vec()) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; assert_eq!(receipt.logs.len(), 1, "There should be one log."); Ok(()) @@ -263,14 +261,14 @@ async fn event_logs() -> anyhow::Result<()> { #[tokio::test] async fn invalid_transaction() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let ethan = Account::from(subxt_signer::eth::dev::ethan()); - let err = TransactionBuilder::default() + let err = TransactionBuilder::new(&client) .value(U256::from(1_000_000_000_000u128)) .to(ethan.address()) .mutate(|tx| tx.chain_id = Some(42u32.into())) - .send(&client) + .send() .await .unwrap_err(); @@ -283,28 +281,32 @@ async fn invalid_transaction() -> anyhow::Result<()> { #[tokio::test] async fn native_evm_ratio_works() -> anyhow::Result<()> { let _lock = SHARED_RESOURCES.write(); - let client = SharedResources::client().await; + let client = Arc::new(SharedResources::client().await); let (bytecode, contract) = get_contract("PiggyBank")?; - let contract_address = TransactionBuilder::default() + let contract_address = TransactionBuilder::new(&client) .input(bytecode) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await? .contract_address .unwrap(); let value = 10_000_000_000_000_000_000u128; // 10 eth - TransactionBuilder::default() + TransactionBuilder::new(&client) .to(contract_address) .input(contract.function("deposit")?.encode_input(&[])?.to_vec()) .value(value.into()) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; let contract_value = client.get_balance(contract_address, BlockTag::Latest.into()).await?; assert_eq!(contract_value, value.into()); let withdraw_value = 1_000_000_000_000_000_000u128; // 1 eth - TransactionBuilder::default() + TransactionBuilder::new(&client) .to(contract_address) .input( contract @@ -312,7 +314,9 @@ async fn native_evm_ratio_works() -> anyhow::Result<()> { .encode_input(&[Token::Uint(withdraw_value.into())])? .to_vec(), ) - .send_and_wait_for_receipt(&client) + .send() + .await? + .wait_for_receipt() .await?; let contract_value = client.get_balance(contract_address, BlockTag::Latest.into()).await?;