referrerpolicy=no-referrer-when-downgrade

Config

Trait Config 

Source
pub trait Config: Config + Config {
    type DeliveryHelper: EnsureDelivery;

    // Required method
    fn get_asset() -> Asset;

    // Provided methods
    fn reachable_dest() -> Option<Location> { ... }
    fn teleportable_asset_and_dest() -> Option<(Asset, Location)> { ... }
    fn reserve_transferable_asset_and_dest() -> Option<(Asset, Location)> { ... }
    fn set_up_complex_asset_transfer(    ) -> Option<(Assets, u32, Location, Box<dyn FnOnce()>)> { ... }
    fn get_assets(_n: u32) -> Assets { ... }
    fn batch_call(
        _calls: Vec<<Self as Config>::RuntimeCall>,
    ) -> Option<<Self as Config>::RuntimeCall> { ... }
}
Expand description

Trait that must be implemented by runtime to be able to benchmark pallet properly.

Required Associated Types§

Source

type DeliveryHelper: EnsureDelivery

Helper that ensures successful delivery for extrinsics/benchmarks which need SendXcm.

Required Methods§

Source

fn get_asset() -> Asset

Gets an asset that can be handled by the AssetTransactor.

Used only in benchmarks.

Used, for example, in the benchmark for claim_assets.

Provided Methods§

Source

fn reachable_dest() -> Option<Location>

A Location that can be reached via XcmRouter. Used only in benchmarks.

If None, the benchmarks that depend on a reachable destination will be skipped.

Source

fn teleportable_asset_and_dest() -> Option<(Asset, Location)>

A (Asset, Location) pair representing asset and the destination it can be teleported to. Used only in benchmarks.

Implementation should also make sure dest is reachable/connected.

If None, the benchmarks that depend on this will default to Weight::MAX.

Source

fn reserve_transferable_asset_and_dest() -> Option<(Asset, Location)>

A (Asset, Location) pair representing asset and the destination it can be reserve-transferred to. Used only in benchmarks.

Implementation should also make sure dest is reachable/connected.

If None, the benchmarks that depend on this will default to Weight::MAX.

Source

fn set_up_complex_asset_transfer() -> Option<(Assets, u32, Location, Box<dyn FnOnce()>)>

Sets up a complex transfer (usually consisting of a teleport and reserve-based transfer), so that runtime can properly benchmark transfer_assets() extrinsic. Should return a tuple (Asset, u32, Location, dyn FnOnce()) representing the assets to transfer, the u32 index of the asset to be used for fees, the destination chain for the transfer, and a verify() closure to verify the intended transfer side-effects.

Implementation should make sure the provided assets can be transacted by the runtime, there are enough balances in the involved accounts, and that dest is reachable/connected.

Used only in benchmarks.

If None, the benchmarks that depend on this will default to Weight::MAX.

Source

fn get_assets(_n: u32) -> Assets

Gets n distinct fungible assets handled by the AssetTransactor, preferring the most expensive-to-deposit kind the chain supports. Used only in benchmarks.

The default ignores n and returns a single asset, so it measures a ~zero per-asset slope: that is sound only for chains whose AssetTransactor handles one asset kind. Chains that can deposit several MUST override it, otherwise claim_assets is under-weighted; there is no generic default, since which ids are depositable is runtime-specific.

Source

fn batch_call( _calls: Vec<<Self as Config>::RuntimeCall>, ) -> Option<<Self as Config>::RuntimeCall>

Wraps calls into a single call that dispatches all of them, e.g. utility.batch. Used only by helpers::worst_case_weighable_message.

If None, that worst case degrades to a single call and measures a far cheaper slope, so chains with a batching pallet MUST implement this or the precompile that charges weigh_message is under-charged.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§