Type Alias delegation::pallet::Module

source ·
pub type Module<T> = Pallet<T>;
👎Deprecated: use Pallet instead
Expand description

Type alias to Pallet, to be used by construct_runtime.

Generated by pallet attribute macro.

Aliased Type§

struct Module<T>(/* private fields */);

Implementations§

source§

impl<T: Config> Pallet<T>

source

pub fn create_hierarchy( origin: OriginFor<T>, root_node_id: DelegationNodeIdOf<T>, ctype_hash: CtypeHashOf<T> ) -> DispatchResult

Create a new delegation root associated with a given CType hash.

The new root will allow a new trust hierarchy to be created by adding children delegations to the root.

There must be no delegation with the same ID stored on chain, while there must be already a CType with the given hash stored in the CType pallet.

The dispatch origin must be split into

  • a submitter of type AccountId who is responsible for paying the transaction fee and
  • a DID subject of type DelegationEntityId who creates, owns and can revoke the delegation.

Requires the sender of the transaction to have a reservable balance of at least Deposit many tokens.

Emits RootCreated.

Weight: O(1)

  • Reads: [Origin Account], Roots, CTypes
  • Writes: Roots
source

pub fn add_delegation( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, parent_id: DelegationNodeIdOf<T>, delegate: DelegatorIdOf<T>, permissions: Permissions, delegate_signature: DelegateSignatureTypeOf<T> ) -> DispatchResult

Create a new delegation node.

The new delegation node represents a new trust hierarchy that considers the new node as its root. The owner of this node has full control over any of its direct and indirect descendants.

For the creation to succeed, the delegatee must provide a valid signature over the (blake256) hash of the creation operation details which include (in order) delegation id, root node id, parent id, and permissions of the new node.

There must be no delegation with the same id stored on chain. Furthermore, the referenced root and parent nodes must already be present on chain and contain the valid permissions and revocation status (i.e., not revoked).

The dispatch origin must be split into

  • a submitter of type AccountId who is responsible for paying the transaction fee and
  • a DID subject of type DelegationEntityId who creates, owns and can revoke the delegation.

Requires the sender of the transaction to have a reservable balance of at least Deposit many tokens.

Emits DelegationCreated.

Weight: O(1)

  • Reads: [Origin Account], Roots, Delegations
  • Writes: Delegations
source

pub fn revoke_delegation( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, max_parent_checks: u32, max_revocations: u32 ) -> DispatchResultWithPostInfo

Revoke a delegation node (potentially a root node) and all its children.

Does not refund the delegation back to the deposit owner as the node is still stored on chain. Requires to additionally call remove_delegation to unreserve the deposit.

Revoking a delegation node results in the trust hierarchy starting from the given node being revoked. Nevertheless, revocation starts from the leave nodes upwards, so if the operation ends prematurely because it runs out of gas, the delegation state would be consistent as no child would “survive” its parent. As a consequence, if the given node is revoked, the trust hierarchy with the node as root is to be considered revoked.

The dispatch origin must be split into

  • a submitter of type AccountId who is responsible for paying the transaction fee and
  • a DID subject of type DelegationEntityId who creates, owns and can revoke the delegation.

Emits C * DelegationRevoked.

Weight: O(C) where C is the number of children of the delegation node which is bounded by max_children.

  • Reads: [Origin Account], Roots, C * Delegations, C * Children.
  • Writes: Roots, C * Delegations
source

pub fn remove_delegation( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, max_removals: u32 ) -> DispatchResultWithPostInfo

Remove a delegation node (potentially a root node) and all its children.

Returns the delegation deposit to the deposit owner for each removed DelegationNode by unreserving it.

Removing a delegation node results in the trust hierarchy starting from the given node being removed. Nevertheless, removal starts from the leave nodes upwards, so if the operation ends prematurely because it runs out of gas, the delegation state would be consistent as no child would “survive” its parent. As a consequence, if the given node is removed, the trust hierarchy with the node as root is to be considered removed.

The dispatch origin must be split into

  • a submitter of type AccountId who is responsible for paying the transaction fee and
  • a DID subject of type DelegationEntityId who creates, owns and can revoke the delegation.

Emits C * DelegationRemoved.

Weight: O(C) where C is the number of children of the delegation node which is bounded by max_children.

  • Reads: [Origin Account], Roots, C * Delegations, C * Children.
  • Writes: Roots, 2 * C * Delegations
source

pub fn reclaim_deposit( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T>, max_removals: u32 ) -> DispatchResultWithPostInfo

Reclaim the deposit for a delegation node (potentially a root node), removing the node and all its children.

Returns the delegation deposit to the deposit owner for each removed DelegationNode by unreserving it.

Removing a delegation node results in the trust hierarchy starting from the given node being removed. Nevertheless, removal starts from the leave nodes upwards, so if the operation ends prematurely because it runs out of gas, the delegation state would be consistent as no child would “survive” its parent. As a consequence, if the given node is removed, the trust hierarchy with the node as root is to be considered removed.

The dispatch origin must be signed by the delegation deposit owner.

DepositReclaimed.

Weight: O(C) where C is the number of children of the delegation node which is bounded by max_removals.

  • Reads: [Origin Account], Roots, C * Delegations, C * Children.
  • Writes: Roots, 2 * C * Delegations
source

pub fn change_deposit_owner( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T> ) -> DispatchResult

Changes the deposit owner.

The balance that is reserved by the current deposit owner will be freed and balance of the new deposit owner will get reserved.

The subject of the call must be the owner of the delegation node. The sender of the call will be the new deposit owner.

source

pub fn update_deposit( origin: OriginFor<T>, delegation_id: DelegationNodeIdOf<T> ) -> DispatchResult

Updates the deposit amount to the current deposit rate.

The sender must be the deposit owner.

source§

impl<T: Config> Pallet<T>

source

pub fn calculate_delegation_creation_hash( delegation_id: &DelegationNodeIdOf<T>, root_id: &DelegationNodeIdOf<T>, parent_id: &DelegationNodeIdOf<T>, permissions: &Permissions ) -> T::Hash

Calculate the hash of all values of a delegation creation transaction.

Weight: O(1)

source

pub fn is_delegating( identity: &DelegatorIdOf<T>, delegation: &DelegationNodeIdOf<T>, max_parent_checks: u32 ) -> Result<(bool, u32), DispatchError>

Check if an identity is the owner of the given delegation node or any node up the hierarchy, and if the delegation has not been yet revoked.

It checks whether the conditions are required for the given node, otherwise it goes up up to max_parent_checks nodes, including the root node, to check whether the given identity is a valid delegator of the given delegation.

Weight: O(P) where P is the number of steps required to verify that the dispatch Origin controls the delegation entitled to revoke the attestation. It is bounded by max_parent_checks.

  • Reads: Roots, P * Delegations
source§

impl<T: Config> Pallet<T>

source

pub fn delegation_nodes<KArg>(k: KArg) -> Option<DelegationNodeOf<T>>where KArg: EncodeLike<DelegationNodeIdOf<T>>,

An auto-generated getter for DelegationNodes.

source§

impl<T: Config> Pallet<T>

source

pub fn delegation_hierarchies<KArg>( k: KArg ) -> Option<DelegationHierarchyDetails<CtypeHashOf<T>>>where KArg: EncodeLike<DelegationNodeIdOf<T>>,

An auto-generated getter for DelegationHierarchies.

Trait Implementations§

source§

impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>

source§

fn before_all_runtime_migrations() -> Weight

Something that should happen before runtime migrations are executed.
source§

impl<T> Benchmarking for Pallet<T>where T: Config + Debug + Config, T::DelegationNodeId: From<T::Hash>, T::DelegationEntityId: From<Public>, <T as Config>::CtypeCreatorId: From<T::DelegationEntityId>, <<T as Config>::DelegationSignatureVerification as VerifySignature>::Signature: From<(T::DelegationEntityId, <<T as Config>::DelegationSignatureVerification as VerifySignature>::Payload)>, <T as Config>::EnsureOrigin: GenerateBenchmarkOrigin<T::RuntimeOrigin, T::AccountId, T::DelegationEntityId>, BlockNumberFor<T>: From<u64>, <T as Config>::Currency: Mutate<T::AccountId>,

source§

fn benchmarks(extra: bool) -> Vec<BenchmarkMetadata>

Get the benchmarks available for this pallet. Generally there is one benchmark per extrinsic, so these are sometimes just called “extrinsics”. Read more
source§

fn run_benchmark( extrinsic: &[u8], c: &[(BenchmarkParameter, u32)], whitelist: &[TrackedStorageKey], verify: bool, internal_repeats: u32 ) -> Result<Vec<BenchmarkResult>, BenchmarkError>

Run the benchmarks for this pallet.
source§

impl<T: Config> Callable<T> for Pallet<T>

source§

impl<T> Clone for Pallet<T>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T> Debug for Pallet<T>

source§

fn fmt(&self, fmt: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Config> GetStorageVersion for Pallet<T>

§

type CurrentStorageVersion = StorageVersion

This will be filled out by the pallet macro. Read more
source§

fn current_storage_version() -> Self::CurrentStorageVersion

Returns the current storage version as supported by the pallet.
source§

fn on_chain_storage_version() -> StorageVersion

Returns the on-chain storage version of the pallet as stored in the storage.
source§

impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn try_state(_n: BlockNumberFor<T>) -> Result<(), TryRuntimeError>

Execute the sanity checks of this pallet, per block. Read more
§

fn on_initialize(_n: BlockNumber) -> Weight

Block initialization hook. This is called at the very beginning of block execution. Read more
§

fn on_finalize(_n: BlockNumber)

Block finalization hook. This is called at the very end of block execution. Read more
§

fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight

Hook to consume a block’s idle time. This will run when the block is being finalized (before [Hooks::on_finalize]). Read more
§

fn on_runtime_upgrade() -> Weight

Hook executed when a code change (aka. a “runtime upgrade”) is detected by FRAME. Read more
§

fn pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>

Execute some pre-checks prior to a runtime upgrade. Read more
§

fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>

Execute some post-checks after a runtime upgrade. Read more
§

fn offchain_worker(_n: BlockNumber)

Implementing this function on a pallet allows you to perform long-running tasks that are dispatched as separate threads, and entirely independent of the main wasm runtime. Read more
§

fn integrity_test()

Check the integrity of this pallet’s configuration. Read more
source§

impl<T: Config> IntegrityTest for Pallet<T>

source§

fn integrity_test()

See [Hooks::integrity_test].
source§

impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn offchain_worker(n: BlockNumberFor<T>)

This function is being called after every block import (when fully synced). Read more
source§

impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn on_finalize(n: BlockNumberFor<T>)

See [Hooks::on_finalize].
source§

impl<T: Config> OnGenesis for Pallet<T>

source§

fn on_genesis()

Something that should happen at genesis.
source§

impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn on_idle(n: BlockNumberFor<T>, remaining_weight: Weight) -> Weight

See [Hooks::on_idle].
source§

impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn on_initialize(n: BlockNumberFor<T>) -> Weight

See [Hooks::on_initialize].
source§

impl<T: Config> OnRuntimeUpgrade for Pallet<T>

source§

fn on_runtime_upgrade() -> Weight

See [Hooks::on_runtime_upgrade].
source§

fn pre_upgrade() -> Result<Vec<u8>, TryRuntimeError>

See [Hooks::pre_upgrade].
source§

fn post_upgrade(state: Vec<u8>) -> Result<(), TryRuntimeError>

See [Hooks::post_upgrade].
§

fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>

The expected and default behavior of this method is to handle executing pre_upgrade -> on_runtime_upgrade -> post_upgrade hooks for a migration. Read more
source§

impl<T: Config> PalletInfoAccess for Pallet<T>

source§

fn index() -> usize

Index of the pallet as configured in the runtime.
source§

fn name() -> &'static str

Name of the pallet as configured in the runtime.
source§

fn name_hash() -> [u8; 16]

Two128 hash of name.
source§

fn module_name() -> &'static str

Name of the Rust module containing the pallet.
source§

fn crate_version() -> CrateVersion

Version of the crate containing the pallet.
source§

impl<T: Config> PalletsInfoAccess for Pallet<T>

source§

fn count() -> usize

The number of pallets’ information that this type represents. Read more
source§

fn infos() -> Vec<PalletInfoData>

All of the pallets’ information that this type represents.
source§

impl<T> PartialEq<Pallet<T>> for Pallet<T>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<T: Config> StorageInfoTrait for Pallet<T>

source§

fn storage_info() -> Vec<StorageInfo>

source§

impl<T: Config> TryDecodeEntireStorage for Pallet<T>

source§

fn try_decode_entire_state() -> Result<usize, Vec<TryDecodeEntireStorageError>>

Decode the entire data under the given storage, returning Ok(bytes_decoded) if success.
source§

impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>

source§

fn try_state( n: BlockNumberFor<T>, _s: TryStateSelect ) -> Result<(), TryRuntimeError>

Execute the state checks.
source§

impl<T: Config> WhitelistedStorageKeys for Pallet<T>

source§

fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>

Returns a Vec<TrackedStorageKey> indicating the storage keys that should be whitelisted during benchmarking. This means that those keys will be excluded from the benchmarking performance calculation.
source§

impl<T> Eq for Pallet<T>