|
@@ -81,6 +81,9 @@ pub trait Trait:
|
|
|
/// Defines max wasm code length of the runtime upgrade proposal.
|
|
|
type RuntimeUpgradeWasmProposalMaxLength: Get<u32>;
|
|
|
|
|
|
+ /// Defines allowed proposers (by member id list) for the runtime upgrade proposal.
|
|
|
+ type RuntimeUpgradeProposalAllowedProposers: Get<Vec<MemberId<Self>>>;
|
|
|
+
|
|
|
/// Validates member id and origin combination
|
|
|
type MembershipOriginValidator: ActorOriginValidator<
|
|
|
Self::Origin,
|
|
@@ -124,6 +127,9 @@ decl_error! {
|
|
|
/// Provided WASM code for the runtime upgrade proposal is empty
|
|
|
RuntimeProposalIsEmpty,
|
|
|
|
|
|
+ /// Runtime upgrade proposal can be created only by hardcoded members
|
|
|
+ RuntimeProposalProposerNotInTheAllowedProposersList,
|
|
|
+
|
|
|
/// Invalid balance value for the spending proposal
|
|
|
SpendingProposalZeroBalance,
|
|
|
|
|
@@ -229,6 +235,11 @@ decl_module! {
|
|
|
ensure!(wasm.len() as u32 <= T::RuntimeUpgradeWasmProposalMaxLength::get(),
|
|
|
Error::RuntimeProposalSizeExceeded);
|
|
|
|
|
|
+ ensure!(
|
|
|
+ T::RuntimeUpgradeProposalAllowedProposers::get().contains(&member_id),
|
|
|
+ Error::RuntimeProposalProposerNotInTheAllowedProposersList
|
|
|
+ );
|
|
|
+
|
|
|
let wasm_hash = blake2_256(&wasm);
|
|
|
|
|
|
let proposal_code =
|