Struct pallet_msa::pallet::Pallet
source · pub struct Pallet<T>(/* private fields */);
Expand description
The Pallet
struct, the main type that implements traits and standalone
functions within the pallet.
Implementations§
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn create(origin: OriginFor<T>) -> DispatchResult
pub fn create(origin: OriginFor<T>) -> DispatchResult
Creates an MSA for the Origin (sender of the transaction). Origin is assigned an MSA ID.
Events
Errors
Error::KeyAlreadyRegistered
- MSA is already registered to the Origin.
sourcepub fn create_sponsored_account_with_delegation(
origin: OriginFor<T>,
delegator_key: T::AccountId,
proof: MultiSignature,
add_provider_payload: AddProvider
) -> DispatchResult
pub fn create_sponsored_account_with_delegation( origin: OriginFor<T>, delegator_key: T::AccountId, proof: MultiSignature, add_provider_payload: AddProvider ) -> DispatchResult
Origin
MSA creates an MSA on behalf of delegator_key
, creates a Delegation with the delegator_key
’s MSA as the Delegator and origin
as Provider
. Deposits events MsaCreated
and DelegationGranted
.
Remarks
- Origin MUST be the provider
- Signatures should be over the
AddProvider
struct
Events
Errors
Error::UnauthorizedProvider
- payload’s MSA does not match given provider MSA.Error::InvalidSignature
-proof
verification fails;delegator_key
must have signedadd_provider_payload
Error::NoKeyExists
- there is no MSA fororigin
.Error::KeyAlreadyRegistered
- there is already an MSA fordelegator_key
.Error::ProviderNotRegistered
- the a non-provider MSA is used as the providerError::ProofNotYetValid
-add_provider_payload
expiration is too far in the futureError::ProofHasExpired
-add_provider_payload
expiration is in the pastError::SignatureAlreadySubmitted
- signature has already been used
sourcepub fn create_provider(
origin: OriginFor<T>,
provider_name: Vec<u8>
) -> DispatchResult
pub fn create_provider( origin: OriginFor<T>, provider_name: Vec<u8> ) -> DispatchResult
Adds an association between MSA id and ProviderRegistryEntry. As of now, the only piece of metadata we are recording is provider name.
Events
Errors
Error::NoKeyExists
- origin does not have an MSAError::ExceedsMaxProviderNameSize
- Too long of a provider nameError::DuplicateProviderRegistryEntry
- a ProviderRegistryEntry associated with the given MSA id already exists.
sourcepub fn grant_delegation(
origin: OriginFor<T>,
delegator_key: T::AccountId,
proof: MultiSignature,
add_provider_payload: AddProvider
) -> DispatchResult
pub fn grant_delegation( origin: OriginFor<T>, delegator_key: T::AccountId, proof: MultiSignature, add_provider_payload: AddProvider ) -> DispatchResult
Creates a new Delegation for an existing MSA, with origin
as the Provider and delegator_key
is the delegator.
Since it is being sent on the Delegator’s behalf, it requires the Delegator to authorize the new Delegation.
Remarks
- Origin MUST be the provider
- Signatures should be over the
AddProvider
struct
Events
Errors
Error::AddProviderSignatureVerificationFailed
-origin
’s MSA ID does not equaladd_provider_payload.authorized_msa_id
.Error::DuplicateProvider
- there is already a Delegation fororigin
MSA anddelegator_key
MSA.Error::UnauthorizedProvider
-add_provider_payload.authorized_msa_id
does not match MSA ID ofdelegator_key
.Error::InvalidSelfProvider
- Cannot delegate to the same MSAError::InvalidSignature
-proof
verification fails;delegator_key
must have signedadd_provider_payload
Error::NoKeyExists
- there is no MSA fororigin
ordelegator_key
.Error::ProviderNotRegistered
- the a non-provider MSA is used as the providerError::UnauthorizedDelegator
- Origin attempted to add a delegate for someone else’s MSA
sourcepub fn revoke_delegation_by_delegator(
origin: OriginFor<T>,
provider_msa_id: MessageSourceId
) -> DispatchResult
pub fn revoke_delegation_by_delegator( origin: OriginFor<T>, provider_msa_id: MessageSourceId ) -> DispatchResult
Delegator (Origin) MSA terminates a delegation relationship with the Provider
MSA. Deposits eventDelegationRevoked
.
Events
Errors
Error::NoKeyExists
- origin does not have an MSAError::DelegationRevoked
- the delegation has already been revoked.Error::DelegationNotFound
- there is not delegation relationship between Origin and Delegator or Origin and Delegator are the same.
sourcepub fn add_public_key_to_msa(
origin: OriginFor<T>,
msa_owner_public_key: T::AccountId,
msa_owner_proof: MultiSignature,
new_key_owner_proof: MultiSignature,
add_key_payload: AddKeyData<T>
) -> DispatchResult
pub fn add_public_key_to_msa( origin: OriginFor<T>, msa_owner_public_key: T::AccountId, msa_owner_proof: MultiSignature, new_key_owner_proof: MultiSignature, add_key_payload: AddKeyData<T> ) -> DispatchResult
Adds a new public key to an existing Message Source Account (MSA). This functionality enables the MSA owner to manage multiple keys for their account or rotate keys for enhanced security.
The origin
parameter represents the account from which the function is called and can be either the MSA owner’s account or a delegated provider’s account,
depending on the intended use.
The function requires two signatures: msa_owner_proof
and new_key_owner_proof
, which serve as proofs of ownership for the existing MSA
and the new public key account, respectively. This ensures that a new key cannot be added without permission of both the MSA owner and the owner of the new key.
The necessary information for the key addition, the new public key and the MSA ID, is contained in the add_key_payload
parameter of type AddKeyData.
It also contains an expiration block number for both proofs, ensuring they are valid and must be greater than the current block.
Events
Errors
Error::MsaOwnershipInvalidSignature
-key
is not a valid signer of the providedadd_key_payload
.Error::NewKeyOwnershipInvalidSignature
-key
is not a valid signer of the providedadd_key_payload
.Error::NoKeyExists
- the MSA id for the account inadd_key_payload
does not exist.Error::NotMsaOwner
- Origin’s MSA is not the same as ’add_key_payload` MSA. Essentially you can only add a key to your own MSA.Error::ProofHasExpired
- the current block is less than theexpired
block number set inAddKeyData
.Error::ProofNotYetValid
- theexpired
block number set inAddKeyData
is greater than the current block number plus mortality_block_limit().Error::SignatureAlreadySubmitted
- signature has already been used.
sourcepub fn delete_msa_public_key(
origin: OriginFor<T>,
public_key_to_delete: T::AccountId
) -> DispatchResult
pub fn delete_msa_public_key( origin: OriginFor<T>, public_key_to_delete: T::AccountId ) -> DispatchResult
Remove a key associated with an MSA by expiring it at the current block.
Remarks
- Removal of key deletes the association of the key with the MSA.
- The key can be re-added to same or another MSA if needed.
Events
Errors
Error::InvalidSelfRemoval
-origin
andkey
are the same.Error::NotKeyOwner
-origin
does not own the MSA ID associated withkey
.Error::NoKeyExists
-origin
orkey
are not associated withorigin
’s MSA ID.
sourcepub fn revoke_delegation_by_provider(
origin: OriginFor<T>,
delegator: MessageSourceId
) -> DispatchResult
pub fn revoke_delegation_by_provider( origin: OriginFor<T>, delegator: MessageSourceId ) -> DispatchResult
Provider MSA terminates Delegation with a Delegator MSA by expiring the Delegation at the current block.
Events
Errors
Error::NoKeyExists
-provider_key
does not have an MSA key.Error::DelegationRevoked
- delegation is already revokedError::DelegationNotFound
- no Delegation found between origin MSA and delegator MSA.
sourcepub fn revoke_schema_permissions(
origin: OriginFor<T>,
provider_msa_id: MessageSourceId,
schema_ids: Vec<SchemaId>
) -> DispatchResult
👎Deprecated since 1.3.0: revoke_schema_permissions() has been deprecated.
pub fn revoke_schema_permissions( origin: OriginFor<T>, provider_msa_id: MessageSourceId, schema_ids: Vec<SchemaId> ) -> DispatchResult
Revokes a list of schema permissions to a provider. Attempting to revoke a Schemas that have already been revoked are ignored.
Events
Errors
NoKeyExists
- If there is not MSA fororigin
.DelegationNotFound
- If there is not delegation relationship between Origin and Delegator or Origin and Delegator are the same.SchemaNotGranted
- If attempting to revoke a schema that has not previously been granted.
sourcepub fn retire_msa(origin: OriginFor<T>) -> DispatchResult
pub fn retire_msa(origin: OriginFor<T>) -> DispatchResult
Retires a MSA
When a user wants to disassociate themselves from Frequency, they can retire their MSA for free provided that: (1) They own the MSA (2) The MSA is not a registered provider. (3) They retire their user handle (if they have one) (4) There is only one account key (5) The user has already deleted all delegations to providers
This does not currently remove any messages related to the MSA.
Events
Errors
Error::NoKeyExists
-delegator
does not have an MSA key.
sourcepub fn propose_to_be_provider(
origin: OriginFor<T>,
provider_name: Vec<u8>
) -> DispatchResult
pub fn propose_to_be_provider( origin: OriginFor<T>, provider_name: Vec<u8> ) -> DispatchResult
Propose to be a provider. Creates a proposal for council approval to create a provider from a MSA
Errors
NoKeyExists
- If there is not MSA fororigin
.
sourcepub fn create_provider_via_governance(
origin: OriginFor<T>,
provider_key: T::AccountId,
provider_name: Vec<u8>
) -> DispatchResult
pub fn create_provider_via_governance( origin: OriginFor<T>, provider_key: T::AccountId, provider_name: Vec<u8> ) -> DispatchResult
Create a provider by means of governance approval
Events
Errors
Error::NoKeyExists
- account does not have an MSAError::ExceedsMaxProviderNameSize
- Too long of a provider nameError::DuplicateProviderRegistryEntry
- a ProviderRegistryEntry associated with the given MSA id already exists.
source§impl<T: Config> Pallet<T>
impl<T: Config> Pallet<T>
sourcepub fn create_account<F>(
key: T::AccountId,
on_success: F
) -> Result<(MessageSourceId, T::AccountId), DispatchError>where
F: FnOnce(MessageSourceId) -> DispatchResult,
pub fn create_account<F>(
key: T::AccountId,
on_success: F
) -> Result<(MessageSourceId, T::AccountId), DispatchError>where
F: FnOnce(MessageSourceId) -> DispatchResult,
Create the account for the key
Errors
sourcepub fn get_next_msa_id() -> Result<MessageSourceId, DispatchError>
pub fn get_next_msa_id() -> Result<MessageSourceId, DispatchError>
sourcepub fn set_msa_identifier(identifier: MessageSourceId) -> DispatchResult
pub fn set_msa_identifier(identifier: MessageSourceId) -> DispatchResult
Set the current identifier in storage
sourcepub fn create_registered_provider(
provider_id: ProviderId,
name: BoundedVec<u8, T::MaxProviderNameSize>
) -> DispatchResult
pub fn create_registered_provider( provider_id: ProviderId, name: BoundedVec<u8, T::MaxProviderNameSize> ) -> DispatchResult
Create Register Provider
sourcepub fn grant_permissions_for_schemas(
delegator_id: DelegatorId,
provider_id: ProviderId,
schema_ids: Vec<SchemaId>
) -> DispatchResult
pub fn grant_permissions_for_schemas( delegator_id: DelegatorId, provider_id: ProviderId, schema_ids: Vec<SchemaId> ) -> DispatchResult
Adds a list of schema permissions to a delegation relationship.
sourcepub fn revoke_permissions_for_schemas(
delegator_id: DelegatorId,
provider_id: ProviderId,
schema_ids: Vec<SchemaId>
) -> DispatchResult
pub fn revoke_permissions_for_schemas( delegator_id: DelegatorId, provider_id: ProviderId, schema_ids: Vec<SchemaId> ) -> DispatchResult
Revokes a list of schema permissions from a delegation relationship.
sourcepub fn add_key<F>(
msa_id: MessageSourceId,
key: &T::AccountId,
on_success: F
) -> DispatchResultwhere
F: FnOnce(MessageSourceId) -> DispatchResult,
pub fn add_key<F>(
msa_id: MessageSourceId,
key: &T::AccountId,
on_success: F
) -> DispatchResultwhere
F: FnOnce(MessageSourceId) -> DispatchResult,
sourcepub fn ensure_all_schema_ids_are_valid(
schema_ids: &Vec<SchemaId>
) -> DispatchResult
pub fn ensure_all_schema_ids_are_valid( schema_ids: &Vec<SchemaId> ) -> DispatchResult
Check that schema ids are all valid
Errors
sourcepub fn is_registered_provider(msa_id: MessageSourceId) -> bool
pub fn is_registered_provider(msa_id: MessageSourceId) -> bool
Returns if provider is registered by checking if the ProviderToRegistryEntry
contains the MSA id
sourcepub fn ensure_valid_registered_provider(
delegator_key: &T::AccountId,
provider_key: &T::AccountId
) -> Result<(ProviderId, DelegatorId), DispatchError>
pub fn ensure_valid_registered_provider( delegator_key: &T::AccountId, provider_key: &T::AccountId ) -> Result<(ProviderId, DelegatorId), DispatchError>
Checks that a provider and delegator keys are valid and that a provider and delegator are not the same and that a provider has authorized a delegator to create a delegation relationship.
Errors
sourcepub fn ensure_msa_owner(
who: &T::AccountId,
msa_id: MessageSourceId
) -> DispatchResult
pub fn ensure_msa_owner( who: &T::AccountId, msa_id: MessageSourceId ) -> DispatchResult
sourcepub fn verify_signature(
signature: &MultiSignature,
signer: &T::AccountId,
payload: Vec<u8>
) -> bool
pub fn verify_signature( signature: &MultiSignature, signer: &T::AccountId, payload: Vec<u8> ) -> bool
Verify the signature
was signed by signer
on payload
by a wallet
Note the wrap_binary_data
follows the Polkadot wallet pattern of wrapping with <Byte>
tags.
Errors
sourcepub fn add_provider(
provider_id: ProviderId,
delegator_id: DelegatorId,
schema_ids: Vec<SchemaId>
) -> DispatchResult
pub fn add_provider( provider_id: ProviderId, delegator_id: DelegatorId, schema_ids: Vec<SchemaId> ) -> DispatchResult
Add a provider to a delegator with the default permissions
Errors
sourcepub fn upsert_schema_permissions(
provider_id: ProviderId,
delegator_id: DelegatorId,
schema_ids: Vec<SchemaId>
) -> DispatchResult
pub fn upsert_schema_permissions( provider_id: ProviderId, delegator_id: DelegatorId, schema_ids: Vec<SchemaId> ) -> DispatchResult
sourcepub fn create_provider_for(
provider_msa_id: MessageSourceId,
provider_name: Vec<u8>
) -> DispatchResult
pub fn create_provider_for( provider_msa_id: MessageSourceId, provider_name: Vec<u8> ) -> DispatchResult
Adds an association between MSA id and ProviderRegistryEntry. As of now, the only piece of metadata we are recording is provider name.
Events
Errors
Error::NoKeyExists
- account does not have an MSAError::ExceedsMaxProviderNameSize
- Too long of a provider nameError::DuplicateProviderRegistryEntry
- a ProviderRegistryEntry associated with the given MSA id already exists.
sourcepub fn try_mutate_delegation<R, E: From<DispatchError>>(
delegator_id: DelegatorId,
provider_id: ProviderId,
f: impl FnOnce(&mut Delegation<SchemaId, BlockNumberFor<T>, T::MaxSchemaGrantsPerDelegation>, bool) -> Result<R, E>
) -> Result<R, E>
pub fn try_mutate_delegation<R, E: From<DispatchError>>( delegator_id: DelegatorId, provider_id: ProviderId, f: impl FnOnce(&mut Delegation<SchemaId, BlockNumberFor<T>, T::MaxSchemaGrantsPerDelegation>, bool) -> Result<R, E> ) -> Result<R, E>
Mutates the delegation relationship storage item only when the supplied function returns an ‘Ok()’ result. The callback function ‘f’ takes the value (a delegation) and a reference to a boolean variable. This callback sets the boolean variable to ‘true’ if the value is to be inserted and to ‘false’ if it is to be updated.
sourcepub fn delete_key_for_msa(
msa_id: MessageSourceId,
key: &T::AccountId
) -> DispatchResult
pub fn delete_key_for_msa( msa_id: MessageSourceId, key: &T::AccountId ) -> DispatchResult
sourcepub fn revoke_provider(
provider_id: ProviderId,
delegator_id: DelegatorId
) -> DispatchResult
pub fn revoke_provider( provider_id: ProviderId, delegator_id: DelegatorId ) -> DispatchResult
Revoke the grant for permissions from the delegator to the provider
Errors
sourcepub fn get_owner_of(key: &T::AccountId) -> Option<MessageSourceId>
pub fn get_owner_of(key: &T::AccountId) -> Option<MessageSourceId>
Retrieves the MSA Id for a given AccountId
sourcepub fn ensure_valid_msa_key(
key: &T::AccountId
) -> Result<MessageSourceId, DispatchError>
pub fn ensure_valid_msa_key( key: &T::AccountId ) -> Result<MessageSourceId, DispatchError>
Retrieve MSA Id associated with key
or return NoKeyExists
sourcepub fn get_granted_schemas_by_msa_id(
delegator: DelegatorId,
provider: Option<ProviderId>
) -> Result<Vec<DelegationResponse<SchemaId, BlockNumberFor<T>>>, DispatchError>
pub fn get_granted_schemas_by_msa_id( delegator: DelegatorId, provider: Option<ProviderId> ) -> Result<Vec<DelegationResponse<SchemaId, BlockNumberFor<T>>>, DispatchError>
Get a list of Schema Ids that a provider has been granted access to
Errors
sourcepub fn register_signature(
signature: &MultiSignature,
signature_expires_at: BlockNumberFor<T>
) -> DispatchResult
pub fn register_signature( signature: &MultiSignature, signature_expires_at: BlockNumberFor<T> ) -> DispatchResult
Adds a signature to the PayloadSignatureRegistryList
Check that mortality_block is within bounds. If so, proceed and add the new entry.
Raises SignatureAlreadySubmitted
if the signature exists in the registry.
Raises SignatureRegistryLimitExceeded
if the oldest signature of the list has not yet expired.
Example list:
1,2 (oldest)
2,3
3,4
- 4 (newest in pointer storage)`
Errors
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: Config> BlockNumberProvider for Pallet<T>
impl<T: Config> BlockNumberProvider for Pallet<T>
§type BlockNumber = <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number
type BlockNumber = <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number
BlockNumber
to provide.source§fn current_block_number() -> Self::BlockNumber
fn current_block_number() -> Self::BlockNumber
§fn set_block_number(_block: Self::BlockNumber)
fn set_block_number(_block: Self::BlockNumber)
source§impl<T: Config> DelegationValidator for Pallet<T>
impl<T: Config> DelegationValidator for Pallet<T>
source§fn ensure_valid_delegation(
provider_id: ProviderId,
delegator_id: DelegatorId,
block_number: Option<BlockNumberFor<T>>
) -> Result<Delegation<SchemaId, BlockNumberFor<T>, T::MaxSchemaGrantsPerDelegation>, DispatchError>
fn ensure_valid_delegation( provider_id: ProviderId, delegator_id: DelegatorId, block_number: Option<BlockNumberFor<T>> ) -> Result<Delegation<SchemaId, BlockNumberFor<T>, T::MaxSchemaGrantsPerDelegation>, DispatchError>
Check that the delegator has an active delegation to the provider.
block_number
: Provide None
to know if the delegation is active at the current block.
Provide Some(N) to know if the delegation was or will be active at block N.
Errors
§type BlockNumber = <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number
type BlockNumber = <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number
§type MaxSchemaGrantsPerDelegation = <T as Config>::MaxSchemaGrantsPerDelegation
type MaxSchemaGrantsPerDelegation = <T as Config>::MaxSchemaGrantsPerDelegation
source§impl<T: Config> GetStorageVersion for Pallet<T>
impl<T: Config> GetStorageVersion for Pallet<T>
§type InCodeStorageVersion = StorageVersion
type InCodeStorageVersion = StorageVersion
source§fn in_code_storage_version() -> Self::InCodeStorageVersion
fn in_code_storage_version() -> Self::InCodeStorageVersion
storage_version
attribute, or
[NoStorageVersionSet
] if the attribute is missing.source§fn on_chain_storage_version() -> StorageVersion
fn on_chain_storage_version() -> StorageVersion
§fn current_storage_version() -> Self::InCodeStorageVersion
fn current_storage_version() -> Self::InCodeStorageVersion
in_code_storage_version
and will be removed after March 2024.Self::current_storage_version
] instead. Read moresource§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 on_initialize(_block_number: BlockNumberFor<T>) -> Weight
fn on_initialize(_block_number: BlockNumberFor<T>) -> Weight
source§fn offchain_worker(block_number: BlockNumberFor<T>)
fn offchain_worker(block_number: BlockNumberFor<T>)
§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_poll(_n: BlockNumber, _weight: &mut WeightMeter)
fn on_poll(_n: BlockNumber, _weight: &mut WeightMeter)
§fn on_runtime_upgrade() -> Weight
fn on_runtime_upgrade() -> Weight
Executive
pallet. Read more§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> MsaLookup for Pallet<T>
impl<T: Config> MsaLookup for Pallet<T>
source§fn get_msa_id(key: &Self::AccountId) -> Option<MessageSourceId>
fn get_msa_id(key: &Self::AccountId) -> Option<MessageSourceId>
AccountId
if anysource§impl<T: Config> MsaValidator for Pallet<T>
impl<T: Config> MsaValidator for Pallet<T>
source§fn ensure_valid_msa_key(
key: &T::AccountId
) -> Result<MessageSourceId, DispatchError>
fn ensure_valid_msa_key( key: &T::AccountId ) -> Result<MessageSourceId, DispatchError>
DispatchError
] if there is no MSA associated with the keysource§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> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> OnPoll<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
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
].source§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 for Pallet<T>
impl<T> PartialEq for Pallet<T>
source§impl<T: Config> ProviderLookup for Pallet<T>
impl<T: Config> ProviderLookup for Pallet<T>
§type BlockNumber = <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number
type BlockNumber = <<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number
§type MaxSchemaGrantsPerDelegation = <T as Config>::MaxSchemaGrantsPerDelegation
type MaxSchemaGrantsPerDelegation = <T as Config>::MaxSchemaGrantsPerDelegation
source§fn get_delegation_of(
delegator: DelegatorId,
provider: ProviderId
) -> Option<Delegation<SchemaId, Self::BlockNumber, Self::MaxSchemaGrantsPerDelegation>>
fn get_delegation_of( delegator: DelegatorId, provider: ProviderId ) -> Option<Delegation<SchemaId, Self::BlockNumber, Self::MaxSchemaGrantsPerDelegation>>
source§impl<T: Config> SchemaGrantValidator<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
impl<T: Config> SchemaGrantValidator<<<<T as Config>::Block as HeaderProvider>::HeaderT as Header>::Number> for Pallet<T>
source§fn ensure_valid_schema_grant(
provider: ProviderId,
delegator: DelegatorId,
schema_id: SchemaId,
block_number: BlockNumberFor<T>
) -> DispatchResult
fn ensure_valid_schema_grant( provider: ProviderId, delegator: DelegatorId, schema_id: SchemaId, block_number: BlockNumberFor<T> ) -> DispatchResult
Check if provider is allowed to publish for a given schema_id for a given delegator
Errors
source§impl<T: Config> TargetValidator for Pallet<T>
impl<T: Config> TargetValidator for Pallet<T>
source§fn validate(target: MessageSourceId) -> bool
fn validate(target: MessageSourceId) -> bool
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.impl<T> Eq for Pallet<T>
Auto Trait Implementations§
impl<T> RefUnwindSafe for Pallet<T>where
T: RefUnwindSafe,
impl<T> Send for Pallet<T>where
T: Send,
impl<T> Sync for Pallet<T>where
T: Sync,
impl<T> Unpin for Pallet<T>where
T: Unpin,
impl<T> UnwindSafe for Pallet<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Conv for T
impl<T> Conv for T
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
impl<T, U> TryIntoKey<U> for Twhere
U: TryFromKey<T>,
type Error = <U as TryFromKey<T>>::Error
fn try_into_key(self) -> Result<U, <U as TryFromKey<T>>::Error>
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.