pub trait Config: Config {
Show 21 associated items type Time: Time; type Randomness: Randomness<Self::Hash, BlockNumberFor<Self>>; type Currency: ReservableCurrency<Self::AccountId> + Inspect<Self::AccountId, Balance = <<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>; type RuntimeEvent: From<Event<Self>> + IsType<<Self as Config>::RuntimeEvent>; type RuntimeCall: Dispatchable<RuntimeOrigin = Self::RuntimeOrigin, PostInfo = PostDispatchInfo> + GetDispatchInfo + Decode + IsType<<Self as Config>::RuntimeCall>; type CallFilter: Contains<<Self as Config>::RuntimeCall>; type WeightPrice: Convert<Weight, <<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>; type WeightInfo: WeightInfo; type ChainExtension: ChainExtension<Self> + Default; type Schedule: Get<Schedule<Self>>; type CallStack: Array<Item = Frame<Self>>; type DepositPerByte: Get<<<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>; type DefaultDepositLimit: Get<<<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>; type DepositPerItem: Get<<<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>; type AddressGenerator: AddressGenerator<Self>; type MaxCodeLen: Get<u32>; type MaxStorageKeyLen: Get<u32>; type UnsafeUnstableInterface: Get<bool>; type MaxDebugBufferLen: Get<u32>; type Migrations: MigrateSequence; type ThreeVm: ThreeVm<Self, <<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>;
}
Expand description

Configuration trait of this pallet.

The main purpose of this trait is to act as an interface between this pallet and the runtime in which it is embedded in. A type, function, or constant in this trait is essentially left to be configured by the runtime that includes this pallet.

Consequently, a runtime that wants to include this pallet must implement this trait.

Required Associated Types§

source

type Time: Time

The time implementation used to supply timestamps to contracts through seal_now.

source

type Randomness: Randomness<Self::Hash, BlockNumberFor<Self>>

The generator used to supply randomness to contracts through seal_random.

Deprecated

Codes using the randomness functionality cannot be uploaded. Neither can contracts be instantiated from existing codes that use this deprecated functionality. It will be removed eventually. Hence for new pallet-contracts deployments it is okay to supply a dummy implementation for this type (because it is never used).

source

type Currency: ReservableCurrency<Self::AccountId> + Inspect<Self::AccountId, Balance = <<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>

The currency in which fees are paid and contract balances are held.

source

type RuntimeEvent: From<Event<Self>> + IsType<<Self as Config>::RuntimeEvent>

The overarching event type.

source

type RuntimeCall: Dispatchable<RuntimeOrigin = Self::RuntimeOrigin, PostInfo = PostDispatchInfo> + GetDispatchInfo + Decode + IsType<<Self as Config>::RuntimeCall>

The overarching call type.

source

type CallFilter: Contains<<Self as Config>::RuntimeCall>

Filter that is applied to calls dispatched by contracts.

Use this filter to control which dispatchables are callable by contracts. This is applied in addition to frame_system::Config::BaseCallFilter. It is recommended to treat this as a whitelist.

Stability

The runtime must make sure that all dispatchables that are callable by contracts remain stable. In addition Self::RuntimeCall itself must remain stable. This means that no existing variants are allowed to switch their positions.

Note

Note that dispatchables that are called via contracts do not spawn their own wasm instance for each call (as opposed to when called via a transaction). Therefore please make sure to be restrictive about which dispatchables are allowed in order to not introduce a new DoS vector like memory allocation patterns that can be exploited to drive the runtime into a panic.

source

type WeightPrice: Convert<Weight, <<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>

Used to answer contracts’ queries regarding the current weight price. This is not used to calculate the actual fee and is only for informational purposes.

source

type WeightInfo: WeightInfo

Describes the weights of the dispatchables of this module and is also used to construct a default cost schedule.

source

type ChainExtension: ChainExtension<Self> + Default

Type that allows the runtime authors to add new host functions for a contract to call.

source

type Schedule: Get<Schedule<Self>>

Cost schedule and limits.

source

type CallStack: Array<Item = Frame<Self>>

The type of the call stack determines the maximum nesting depth of contract calls.

The allowed depth is CallStack::size() + 1. Therefore a size of 0 means that a contract cannot use call or instantiate. In other words only the origin called “root contract” is allowed to execute then.

This setting along with MaxCodeLen directly affects memory usage of your runtime.

source

type DepositPerByte: Get<<<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>

The amount of balance a caller has to pay for each byte of storage.

Note

Changing this value for an existing chain might need a storage migration.

source

type DefaultDepositLimit: Get<<<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>

Fallback value to limit the storage deposit if it’s not being set by the caller.

source

type DepositPerItem: Get<<<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>

The amount of balance a caller has to pay for each storage item.

Note

Changing this value for an existing chain might need a storage migration.

source

type AddressGenerator: AddressGenerator<Self>

The address generator used to generate the addresses of contracts.

source

type MaxCodeLen: Get<u32>

The maximum length of a contract code in bytes.

The value should be chosen carefully taking into the account the overall memory limit your runtime has, as well as the maximum allowed callstack depth. Look into the integrity_test() for some insights.

source

type MaxStorageKeyLen: Get<u32>

The maximum allowable length in bytes for storage keys.

source

type UnsafeUnstableInterface: Get<bool>

Make contract callable functions marked as #[unstable] available.

Contracts that use #[unstable] functions won’t be able to be uploaded unless this is set to true. This is only meant for testnets and dev nodes in order to experiment with new features.

Warning

Do not set to true on productions chains.

source

type MaxDebugBufferLen: Get<u32>

The maximum length of the debug buffer in bytes.

source

type Migrations: MigrateSequence

The sequence of migration steps that will be applied during a migration.

Examples
use pallet_contracts::migration::{v9, v10, v11};
type Migrations = (v9::Migration<Runtime>, v10::Migration<Runtime>, v11::Migration<Runtime>);

If you have a single migration step, you can use a tuple with a single element:

use pallet_contracts::migration::v9;
type Migrations = (v9::Migration<Runtime>,);
source

type ThreeVm: ThreeVm<Self, <<Self as Config>::Currency as Currency<<Self as Config>::AccountId>>::Balance>

Make this pallet 3VM enabled

Implementors§