contracts: Allow contracts to dispatch calls into the runtime (#9276)

* contracts: Allow contracts to dispatch calls into the runtime

* Fix RPC tests

* Fix typo

* Replace () by AllowAllFilter and DenyAllFilter

* Add rust doc

* Fixup for `()` removal

* Fix lowest gas calculation

* Rename AllowAllFilter and DenyAllFilter

* Updated changelog
This commit is contained in:
Alexander Theißen
2021-07-12 22:40:27 +02:00
committed by GitHub
parent 2f31602896
commit e01ac8cea0
80 changed files with 674 additions and 107 deletions
+1 -1
View File
@@ -2684,7 +2684,7 @@ mod tests {
type Origin = OuterOrigin;
type AccountId = u32;
type Call = ();
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type BlockNumber = u32;
type PalletInfo = Self;
type DbWeight = ();
+1
View File
@@ -45,6 +45,7 @@ pub use validation::{
mod filter;
pub use filter::{
Filter, FilterStack, FilterStackGuard, ClearFilterGuard, InstanceFilter, IntegrityTest,
AllowAll, DenyAll,
};
mod misc;
+11 -1
View File
@@ -25,10 +25,20 @@ pub trait Filter<T> {
fn filter(_: &T) -> bool;
}
impl<T> Filter<T> for () {
/// A [`Filter`] that allows any value.
pub enum AllowAll {}
/// A [`Filter`] that denies any value.
pub enum DenyAll {}
impl<T> Filter<T> for AllowAll {
fn filter(_: &T) -> bool { true }
}
impl<T> Filter<T> for DenyAll {
fn filter(_: &T) -> bool { false }
}
/// Trait to add a constraint onto the filter.
pub trait FilterStack<T>: Filter<T> {
/// The type used to archive the stack.