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.
@@ -225,7 +225,7 @@ pub type BlockNumber = u64;
pub type Index = u64;
impl system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Hash = H256;
type Origin = Origin;
type BlockNumber = BlockNumber;
@@ -255,7 +255,7 @@ pub type BlockNumber = u64;
pub type Index = u64;
impl system::Config for Runtime {
type BaseCallFilter= ();
type BaseCallFilter= frame_support::traits::AllowAll;
type Hash = H256;
type Origin = Origin;
type BlockNumber = BlockNumber;
@@ -158,7 +158,7 @@ pub type Block = generic::Block<Header, UncheckedExtrinsic>;
pub type UncheckedExtrinsic = generic::UncheckedExtrinsic<u32, Call, Signature, ()>;
impl system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Hash = H256;
type Origin = Origin;
type BlockNumber = BlockNumber;
+1 -1
View File
@@ -448,7 +448,7 @@ frame_support::parameter_types!(
);
impl frame_system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Origin = Origin;
type Index = u64;
type BlockNumber = u32;
@@ -203,7 +203,7 @@ frame_support::parameter_types!(
);
impl frame_system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Origin = Origin;
type Index = u64;
type BlockNumber = u32;
@@ -198,7 +198,7 @@ impl frame_system::Config for Runtime {
type BlockWeights = ();
type BlockLength = ();
type DbWeight = ();
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Origin = Origin;
type Index = u64;
type BlockNumber = u32;
@@ -250,7 +250,7 @@ frame_support::parameter_types!(
);
impl frame_system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Origin = Origin;
type Index = u64;
type BlockNumber = u32;
@@ -144,7 +144,7 @@ frame_support::parameter_types!(
);
impl frame_system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Origin = Origin;
type Index = u64;
type BlockNumber = BlockNumber;
@@ -126,7 +126,7 @@ mod tests {
}
impl frame_system::Config for Runtime {
type BaseCallFilter = ();
type BaseCallFilter = frame_support::traits::AllowAll;
type Origin = Origin;
type Index = u64;
type BlockNumber = u64;