Type Alias delegation::pallet::Module
source · pub type Module<T> = Pallet<T>;
Pallet
insteadExpand 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>
impl<T: Config> Pallet<T>
sourcepub fn create_hierarchy(
origin: OriginFor<T>,
root_node_id: DelegationNodeIdOf<T>,
ctype_hash: CtypeHashOf<T>
) -> DispatchResult
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
sourcepub fn add_delegation(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
parent_id: DelegationNodeIdOf<T>,
delegate: DelegatorIdOf<T>,
permissions: Permissions,
delegate_signature: DelegateSignatureTypeOf<T>
) -> DispatchResult
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
sourcepub fn revoke_delegation(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
max_parent_checks: u32,
max_revocations: u32
) -> DispatchResultWithPostInfo
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
sourcepub fn remove_delegation(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
max_removals: u32
) -> DispatchResultWithPostInfo
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
sourcepub fn reclaim_deposit(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>,
max_removals: u32
) -> DispatchResultWithPostInfo
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
sourcepub fn change_deposit_owner(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>
) -> DispatchResult
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.
sourcepub fn update_deposit(
origin: OriginFor<T>,
delegation_id: DelegationNodeIdOf<T>
) -> DispatchResult
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>
impl<T: Config> Pallet<T>
sourcepub fn calculate_delegation_creation_hash(
delegation_id: &DelegationNodeIdOf<T>,
root_id: &DelegationNodeIdOf<T>,
parent_id: &DelegationNodeIdOf<T>,
permissions: &Permissions
) -> T::Hash
pub fn calculate_delegation_creation_hash( delegation_id: &DelegationNodeIdOf<T>, root_id: &DelegationNodeIdOf<T>, parent_id: &DelegationNodeIdOf<T>, permissions: &Permissions ) -> T::Hash
sourcepub fn is_delegating(
identity: &DelegatorIdOf<T>,
delegation: &DelegationNodeIdOf<T>,
max_parent_checks: u32
) -> Result<(bool, u32), DispatchError>
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>
impl<T: Config> Pallet<T>
sourcepub fn delegation_nodes<KArg>(k: KArg) -> Option<DelegationNodeOf<T>>where
KArg: EncodeLike<DelegationNodeIdOf<T>>,
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>
impl<T: Config> Pallet<T>
sourcepub fn delegation_hierarchies<KArg>(
k: KArg
) -> Option<DelegationHierarchyDetails<CtypeHashOf<T>>>where
KArg: EncodeLike<DelegationNodeIdOf<T>>,
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>
impl<T: Config> BeforeAllRuntimeMigrations for Pallet<T>
source§fn before_all_runtime_migrations() -> Weight
fn before_all_runtime_migrations() -> Weight
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>,
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§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
§type CurrentStorageVersion = StorageVersion
type CurrentStorageVersion = StorageVersion
source§fn current_storage_version() -> Self::CurrentStorageVersion
fn current_storage_version() -> Self::CurrentStorageVersion
source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
source§impl<T: Config> Hooks<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
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>
fn try_state(_n: BlockNumberFor<T>) -> Result<(), TryRuntimeError>
§fn on_initialize(_n: BlockNumber) -> Weight
fn on_initialize(_n: BlockNumber) -> Weight
§fn on_finalize(_n: BlockNumber)
fn on_finalize(_n: BlockNumber)
§fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
fn on_idle(_n: BlockNumber, _remaining_weight: Weight) -> Weight
Hooks::on_finalize
]). Read more§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
§fn pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>
fn pre_upgrade() -> Result<Vec<u8, Global>, DispatchError>
§fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>
fn post_upgrade(_state: Vec<u8, Global>) -> Result<(), DispatchError>
§fn offchain_worker(_n: BlockNumber)
fn offchain_worker(_n: BlockNumber)
§fn integrity_test()
fn integrity_test()
source§impl<T: Config> IntegrityTest for Pallet<T>
impl<T: Config> IntegrityTest for Pallet<T>
source§fn integrity_test()
fn integrity_test()
Hooks::integrity_test
].source§impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OffchainWorker<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn offchain_worker(n: BlockNumberFor<T>)
fn offchain_worker(n: BlockNumberFor<T>)
source§impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnFinalize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn on_finalize(n: BlockNumberFor<T>)
fn on_finalize(n: BlockNumberFor<T>)
Hooks::on_finalize
].source§impl<T: Config> OnGenesis for Pallet<T>
impl<T: Config> OnGenesis for Pallet<T>
source§fn on_genesis()
fn on_genesis()
source§impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnIdle<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§impl<T: Config> OnInitialize<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
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
fn on_initialize(n: BlockNumberFor<T>) -> Weight
Hooks::on_initialize
].source§impl<T: Config> OnRuntimeUpgrade for Pallet<T>
impl<T: Config> OnRuntimeUpgrade for Pallet<T>
source§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Hooks::on_runtime_upgrade
].§fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
fn try_on_runtime_upgrade(checks: bool) -> Result<Weight, DispatchError>
pre_upgrade
->
on_runtime_upgrade
-> post_upgrade
hooks for a migration. Read moresource§impl<T: Config> PalletInfoAccess for Pallet<T>
impl<T: Config> PalletInfoAccess for Pallet<T>
source§fn module_name() -> &'static str
fn module_name() -> &'static str
source§fn crate_version() -> CrateVersion
fn crate_version() -> CrateVersion
source§impl<T> PartialEq<Pallet<T>> for Pallet<T>
impl<T> PartialEq<Pallet<T>> for Pallet<T>
source§impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> TryState<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§impl<T: Config> WhitelistedStorageKeys for Pallet<T>
impl<T: Config> WhitelistedStorageKeys for Pallet<T>
source§fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
fn whitelisted_storage_keys() -> Vec<TrackedStorageKey>
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.