From 3f53deb10e9359b47cc84758d6f593e805060942 Mon Sep 17 00:00:00 2001 From: Shawn Tabrizi <shawntabrizi@gmail.com> Date: Tue, 23 Jun 2020 13:14:38 +0200 Subject: [PATCH] Make Proxy `NonTransfer` filter explicit (#1303) * Make kusama proxy explicit * Make polkadot explicit * Make westend explicit * bump spec --- polkadot/runtime/kusama/src/lib.rs | 47 ++++++++++++++++++++++++++-- polkadot/runtime/polkadot/src/lib.rs | 40 +++++++++++++++++++++-- polkadot/runtime/westend/src/lib.rs | 38 ++++++++++++++++++++-- 3 files changed, 117 insertions(+), 8 deletions(-) diff --git a/polkadot/runtime/kusama/src/lib.rs b/polkadot/runtime/kusama/src/lib.rs index 64909f2bb52..bfeb0af2b04 100644 --- a/polkadot/runtime/kusama/src/lib.rs +++ b/polkadot/runtime/kusama/src/lib.rs @@ -800,9 +800,50 @@ impl InstanceFilter<Call> for ProxyType { fn filter(&self, c: &Call) -> bool { match self { ProxyType::Any => true, - ProxyType::NonTransfer => !matches!(c, - Call::Balances(..) | Call::Vesting(vesting::Call::vested_transfer(..)) - | Call::Indices(indices::Call::transfer(..)) + ProxyType::NonTransfer => matches!(c, + Call::System(..) | + Call::Babe(..) | + Call::Timestamp(..) | + Call::Indices(indices::Call::claim(..)) | + Call::Indices(indices::Call::free(..)) | + Call::Indices(indices::Call::freeze(..)) | + // Specifically omitting Indices `transfer`, `force_transfer` + // Specifically omitting the entire Balances pallet + Call::Authorship(..) | + Call::Staking(..) | + Call::Offences(..) | + Call::Session(..) | + Call::FinalityTracker(..) | + Call::Grandpa(..) | + Call::ImOnline(..) | + Call::AuthorityDiscovery(..) | + Call::Democracy(..) | + Call::Council(..) | + Call::TechnicalCommittee(..) | + Call::ElectionsPhragmen(..) | + Call::TechnicalMembership(..) | + Call::Treasury(..) | + Call::Claims(..) | + Call::Parachains(..) | + Call::Attestations(..) | + Call::Slots(..) | + Call::Registrar(..) | + Call::Utility(..) | + Call::Identity(..) | + Call::Society(..) | + Call::Recovery(recovery::Call::as_recovered(..)) | + Call::Recovery(recovery::Call::vouch_recovery(..)) | + Call::Recovery(recovery::Call::claim_recovery(..)) | + Call::Recovery(recovery::Call::close_recovery(..)) | + Call::Recovery(recovery::Call::remove_recovery(..)) | + Call::Recovery(recovery::Call::cancel_recovered(..)) | + // Specifically omitting Recovery `create_recovery`, `initiate_recovery` + Call::Vesting(vesting::Call::vest(..)) | + Call::Vesting(vesting::Call::vest_other(..)) | + // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` + Call::Scheduler(..) | + Call::Proxy(..) | + Call::Multisig(..) ), ProxyType::Governance => matches!(c, Call::Democracy(..) | Call::Council(..) | Call::TechnicalCommittee(..) diff --git a/polkadot/runtime/polkadot/src/lib.rs b/polkadot/runtime/polkadot/src/lib.rs index 3d11c65f67c..0fa870d0e42 100644 --- a/polkadot/runtime/polkadot/src/lib.rs +++ b/polkadot/runtime/polkadot/src/lib.rs @@ -784,9 +784,43 @@ impl InstanceFilter<Call> for ProxyType { fn filter(&self, c: &Call) -> bool { match self { ProxyType::Any => true, - ProxyType::NonTransfer => !matches!(c, - Call::Balances(..) | Call::Vesting(vesting::Call::vested_transfer(..)) - | Call::Indices(indices::Call::transfer(..)) + ProxyType::NonTransfer => matches!(c, + Call::System(..) | + Call::Scheduler(..) | + Call::Babe(..) | + Call::Timestamp(..) | + Call::Indices(indices::Call::claim(..)) | + Call::Indices(indices::Call::free(..)) | + Call::Indices(indices::Call::freeze(..)) | + // Specifically omitting Indices `transfer`, `force_transfer` + // Specifically omitting the entire Balances pallet + Call::Authorship(..) | + Call::Staking(..) | + Call::Offences(..) | + Call::Session(..) | + Call::FinalityTracker(..) | + Call::Grandpa(..) | + Call::ImOnline(..) | + Call::AuthorityDiscovery(..) | + Call::Democracy(..) | + Call::Council(..) | + Call::TechnicalCommittee(..) | + Call::ElectionsPhragmen(..) | + Call::TechnicalMembership(..) | + Call::Treasury(..) | + Call::Parachains(..) | + Call::Attestations(..) | + Call::Slots(..) | + Call::Registrar(..) | + Call::Claims(..) | + Call::Vesting(vesting::Call::vest(..)) | + Call::Vesting(vesting::Call::vest_other(..)) | + // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` + Call::Utility(..) | + // Specifically omitting Sudo pallet + Call::Identity(..) | + Call::Proxy(..) | + Call::Multisig(..) ), ProxyType::Governance => matches!(c, Call::Democracy(..) | Call::Council(..) | Call::TechnicalCommittee(..) diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs index bc05f943aeb..8b02d369b67 100644 --- a/polkadot/runtime/westend/src/lib.rs +++ b/polkadot/runtime/westend/src/lib.rs @@ -587,8 +587,42 @@ impl InstanceFilter<Call> for ProxyType { fn filter(&self, c: &Call) -> bool { match self { ProxyType::Any => true, - ProxyType::NonTransfer => !matches!(c, - Call::Balances(..) | Call::Indices(indices::Call::transfer(..)) + ProxyType::NonTransfer => matches!(c, + Call::System(..) | + Call::Babe(..) | + Call::Timestamp(..) | + Call::Indices(indices::Call::claim(..)) | + Call::Indices(indices::Call::free(..)) | + Call::Indices(indices::Call::freeze(..)) | + // Specifically omitting Indices `transfer`, `force_transfer` + // Specifically omitting the entire Balances pallet + Call::Authorship(..) | + Call::Staking(..) | + Call::Offences(..) | + Call::Session(..) | + Call::FinalityTracker(..) | + Call::Grandpa(..) | + Call::ImOnline(..) | + Call::AuthorityDiscovery(..) | + Call::Parachains(..) | + Call::Attestations(..) | + Call::Registrar(..) | + Call::Utility(..) | + Call::Identity(..) | + Call::Recovery(recovery::Call::as_recovered(..)) | + Call::Recovery(recovery::Call::vouch_recovery(..)) | + Call::Recovery(recovery::Call::claim_recovery(..)) | + Call::Recovery(recovery::Call::close_recovery(..)) | + Call::Recovery(recovery::Call::remove_recovery(..)) | + Call::Recovery(recovery::Call::cancel_recovered(..)) | + // Specifically omitting Recovery `create_recovery`, `initiate_recovery` + Call::Vesting(vesting::Call::vest(..)) | + Call::Vesting(vesting::Call::vest_other(..)) | + // Specifically omitting Vesting `vested_transfer`, and `force_vested_transfer` + Call::Scheduler(..) | + // Specifically omitting Sudo pallet + Call::Proxy(..) | + Call::Multisig(..) ), ProxyType::Staking => matches!(c, Call::Staking(..) | Call::Utility(utility::Call::batch(..)) -- GitLab