Asset¶
Calls¶
accept_asset_ownership_transfer¶
This function is used to accept a token ownership transfer. NB: To reject the transfer, call remove auth function in identity module.
# Arguments
* origin It contains the secondary key of the caller (i.e. who signed the transaction to execute this function).
* auth_id Authorization ID of the token ownership transfer authorization.
Attributes¶
| Name | Type |
|---|---|
| auth_id | u64 |
Python¶
call = substrate.compose_call(
'Asset', 'accept_asset_ownership_transfer', {'auth_id': 'u64'}
)
accept_ticker_transfer¶
Accepts a ticker transfer.
Consumes the authorization auth_id (see pallet_identity::consume_auth).
NB: To reject the transfer, call remove auth function in identity module.
# Arguments
* origin It contains the secondary key of the caller (i.e. who signed the transaction to execute this function).
* auth_id Authorization ID of ticker transfer authorization.
## Errors
- AuthorizationError::BadType if auth_id is not a valid ticket transfer authorization.
Attributes¶
| Name | Type |
|---|---|
| auth_id | u64 |
Python¶
call = substrate.compose_call(
'Asset', 'accept_ticker_transfer', {'auth_id': 'u64'}
)
add_documents¶
Add documents for a given token.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* docs Documents to be attached to ticker.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| docs | Vec<Document> |
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'add_documents', {
'docs': [
{
'content_hash': {
'H128': '[u8; 16]',
'H160': '[u8; 20]',
'H192': '[u8; 24]',
'H224': '[u8; 28]',
'H256': '[u8; 32]',
'H320': '[u8; 40]',
'H384': '[u8; 48]',
'H512': '[u8; 64]',
'None': None,
},
'doc_type': (
None,
'Bytes',
),
'filing_date': (
None,
'u64',
),
'name': 'Bytes',
'uri': 'Bytes',
},
],
'ticker': '[u8; 12]',
}
)
add_mandatory_mediators¶
Sets all identities in the mediators set as mandatory mediators for any instruction transfering ticker.
# Arguments
* origin: The secondary key of the sender.
* ticker: The [Ticker] of the asset that will require the mediators.
* mediators: A set of [IdentityId] of all the mandatory mediators for the given ticker.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| mediators | BoundedBTreeSet<IdentityId, T::MaxAssetMediators> |
Python¶
call = substrate.compose_call(
'Asset', 'add_mandatory_mediators', {
'mediators': 'scale_info::163',
'ticker': '[u8; 12]',
}
)
controller_transfer¶
Forces a transfer of token from from_portfolio to the caller's default portfolio.
# Arguments
* origin Must be an external agent with appropriate permissions for a given ticker.
* ticker Ticker symbol of the asset.
* value Amount of tokens need to force transfer.
* from_portfolio From whom portfolio tokens gets transferred.
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| value | Balance |
| from_portfolio | PortfolioId |
Python¶
call = substrate.compose_call(
'Asset', 'controller_transfer', {
'from_portfolio': {
'did': '[u8; 32]',
'kind': {
'Default': None,
'User': 'u64',
},
},
'ticker': '[u8; 12]',
'value': 'u128',
}
)
create_asset¶
Initializes a new security token, with the initiating account as its owner.
The total supply will initially be zero. To mint tokens, use issue.
# Arguments
* origin - contains the secondary key of the caller (i.e. who signed the transaction to execute this function).
* name - the name of the token.
* ticker - the ticker symbol of the token.
* divisible - a boolean to identify the divisibility status of the token.
* asset_type - the asset type.
* identifiers - a vector of asset identifiers.
* funding_round - name of the funding round.
## Errors
- InvalidAssetIdentifier if any of identifiers are invalid.
- MaxLengthOfAssetNameExceeded if name's length exceeds T::AssetNameMaxLength.
- FundingRoundNameMaxLengthExceeded if the name of the funding round is longer that
T::FundingRoundNameMaxLength.
- AssetAlreadyCreated if asset was already created.
- TickerTooLong if ticker's length is greater than config.max_ticker_length chain
parameter.
- TickerNotAlphanumeric if ticker is not yet registered, and contains non-alphanumeric characters or any character after first occurrence of \0.
## Permissions * Portfolio
Attributes¶
| Name | Type |
|---|---|
| name | AssetName |
| ticker | Ticker |
| divisible | bool |
| asset_type | AssetType |
| identifiers | Vec<AssetIdentifier> |
| funding_round | Option<FundingRoundName> |
Python¶
call = substrate.compose_call(
'Asset', 'create_asset', {
'asset_type': {
'Commodity': None,
'Custom': 'u32',
'Derivative': None,
'EquityCommon': None,
'EquityPreferred': None,
'FixedIncome': None,
'Fund': None,
'NonFungible': {
'Custom': 'u32',
'Derivative': None,
'FixedIncome': None,
'Invoice': None,
},
'REIT': None,
'RevenueShareAgreement': None,
'StableCoin': None,
'StructuredProduct': None,
},
'divisible': 'bool',
'funding_round': (None, 'Bytes'),
'identifiers': [
{
'CINS': '[u8; 9]',
'CUSIP': '[u8; 9]',
'FIGI': '[u8; 12]',
'ISIN': '[u8; 12]',
'LEI': '[u8; 20]',
},
],
'name': 'Bytes',
'ticker': '[u8; 12]',
}
)
create_asset_with_custom_type¶
Utility extrinsic to batch create_asset and register_custom_asset_type.
Attributes¶
| Name | Type |
|---|---|
| name | AssetName |
| ticker | Ticker |
| divisible | bool |
| custom_asset_type | Vec<u8> |
| identifiers | Vec<AssetIdentifier> |
| funding_round | Option<FundingRoundName> |
Python¶
call = substrate.compose_call(
'Asset', 'create_asset_with_custom_type', {
'custom_asset_type': 'Bytes',
'divisible': 'bool',
'funding_round': (None, 'Bytes'),
'identifiers': [
{
'CINS': '[u8; 9]',
'CUSIP': '[u8; 9]',
'FIGI': '[u8; 12]',
'ISIN': '[u8; 12]',
'LEI': '[u8; 20]',
},
],
'name': 'Bytes',
'ticker': '[u8; 12]',
}
)
exempt_ticker_affirmation¶
Pre-approves the receivement of the asset for all identities.
# Arguments
* origin - the secondary key of the sender.
* ticker - the [Ticker] that will be exempt from affirmation.
# Permissions * Root
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'exempt_ticker_affirmation', {'ticker': '[u8; 12]'}
)
freeze¶
Freezes transfers of a given token.
# Arguments
* origin - the secondary key of the sender.
* ticker - the ticker of the token.
## Errors
- AlreadyFrozen if ticker is already frozen.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'freeze', {'ticker': '[u8; 12]'}
)
issue¶
Issue, or mint, new tokens to the caller, which must be an authorized external agent.
# Arguments
* origin - A signer that has permissions to act as an agent of ticker.
* ticker - The [Ticker] of the token.
* amount - The amount of tokens that will be issued.
* portfolio_kind - The [PortfolioKind] of the portfolio that will receive the minted tokens.
# Permissions * Asset * Portfolio
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| amount | Balance |
| portfolio_kind | PortfolioKind |
Python¶
call = substrate.compose_call(
'Asset', 'issue', {
'amount': 'u128',
'portfolio_kind': {
'Default': None,
'User': 'u64',
},
'ticker': '[u8; 12]',
}
)
make_divisible¶
Makes an indivisible token divisible.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
## Errors
- AssetAlreadyDivisible if ticker is already divisible.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'make_divisible', {'ticker': '[u8; 12]'}
)
pre_approve_ticker¶
Pre-approves the receivement of an asset.
# Arguments
* origin - the secondary key of the sender.
* ticker - the [Ticker] that will be exempt from affirmation.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'pre_approve_ticker', {'ticker': '[u8; 12]'}
)
redeem¶
Redeems existing tokens by reducing the balance of the caller's default portfolio and the total supply of the token
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* value Amount of tokens to redeem.
# Errors
- Unauthorized If called by someone without the appropriate external agent permissions
- InvalidGranularity If the amount is not divisible by 10^6 for non-divisible tokens
- InsufficientPortfolioBalance If the caller's default portfolio doesn't have enough free balance
# Permissions * Asset * Portfolio
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| value | Balance |
Python¶
call = substrate.compose_call(
'Asset', 'redeem', {
'ticker': '[u8; 12]',
'value': 'u128',
}
)
redeem_from_portfolio¶
Redeems existing tokens by reducing the balance of the caller's portfolio and the total supply of the token
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* value Amount of tokens to redeem.
* portfolio From whom portfolio tokens gets transferred.
# Errors
- Unauthorized If called by someone without the appropriate external agent permissions
- InvalidGranularity If the amount is not divisible by 10^6 for non-divisible tokens
- InsufficientPortfolioBalance If the caller's portfolio doesn't have enough free balance
- PortfolioDoesNotExist If the portfolio doesn't exist.
# Permissions * Asset * Portfolio
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| value | Balance |
| portfolio | PortfolioKind |
Python¶
call = substrate.compose_call(
'Asset', 'redeem_from_portfolio', {
'portfolio': {
'Default': None,
'User': 'u64',
},
'ticker': '[u8; 12]',
'value': 'u128',
}
)
register_and_set_local_asset_metadata¶
Registers and set local asset metadata.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* name Metadata name.
* spec Metadata type definition.
* value Metadata value.
* details Optional Metadata value details (expire, lock status).
# Errors
* AssetMetadataLocalKeyAlreadyExists if a local metadata type with name already exists for ticker.
* AssetMetadataNameMaxLengthExceeded if the metadata name exceeds the maximum length.
* AssetMetadataTypeDefMaxLengthExceeded if the metadata spec type definition exceeds the maximum length.
* AssetMetadataValueMaxLengthExceeded if the metadata value exceeds the maximum length.
# Permissions * Agent * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| name | AssetMetadataName |
| spec | AssetMetadataSpec |
| value | AssetMetadataValue |
| detail | Option<AssetMetadataValueDetail<T::Moment>> |
Python¶
call = substrate.compose_call(
'Asset', 'register_and_set_local_asset_metadata', {
'detail': (
None,
{
'expire': (None, 'u64'),
'lock_status': {
'Locked': None,
'LockedUntil': 'u64',
'Unlocked': None,
},
},
),
'name': 'Bytes',
'spec': {
'description': (None, 'Bytes'),
'type_def': (None, 'Bytes'),
'url': (None, 'Bytes'),
},
'ticker': '[u8; 12]',
'value': 'Bytes',
}
)
register_asset_metadata_global_type¶
Registers asset metadata global type.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* name Metadata name.
* spec Metadata type definition.
# Errors
* AssetMetadataGlobalKeyAlreadyExists if a globa metadata type with name already exists.
* AssetMetadataNameMaxLengthExceeded if the metadata name exceeds the maximum length.
* AssetMetadataTypeDefMaxLengthExceeded if the metadata spec type definition exceeds the maximum length.
Attributes¶
| Name | Type |
|---|---|
| name | AssetMetadataName |
| spec | AssetMetadataSpec |
Python¶
call = substrate.compose_call(
'Asset', 'register_asset_metadata_global_type', {
'name': 'Bytes',
'spec': {
'description': (None, 'Bytes'),
'type_def': (None, 'Bytes'),
'url': (None, 'Bytes'),
},
}
)
register_asset_metadata_local_type¶
Registers asset metadata local type.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* name Metadata name.
* spec Metadata type definition.
# Errors
* AssetMetadataLocalKeyAlreadyExists if a local metadata type with name already exists for ticker.
* AssetMetadataNameMaxLengthExceeded if the metadata name exceeds the maximum length.
* AssetMetadataTypeDefMaxLengthExceeded if the metadata spec type definition exceeds the maximum length.
# Permissions * Agent * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| name | AssetMetadataName |
| spec | AssetMetadataSpec |
Python¶
call = substrate.compose_call(
'Asset', 'register_asset_metadata_local_type', {
'name': 'Bytes',
'spec': {
'description': (None, 'Bytes'),
'type_def': (None, 'Bytes'),
'url': (None, 'Bytes'),
},
'ticker': '[u8; 12]',
}
)
register_custom_asset_type¶
Registers a custom asset type.
The provided ty will be bound to an ID in storage.
The ID can then be used in AssetType::Custom.
Should the ty already exist in storage, no second ID is assigned to it.
# Arguments
* origin who called the extrinsic.
* ty contains the string representation of the asset type.
Attributes¶
| Name | Type |
|---|---|
| ty | Vec<u8> |
Python¶
call = substrate.compose_call(
'Asset', 'register_custom_asset_type', {'ty': 'Bytes'}
)
register_ticker¶
Registers a new ticker or extends validity of an existing ticker. NB: Ticker validity does not get carry forward when renewing ticker.
# Arguments
* origin It contains the secondary key of the caller (i.e. who signed the transaction to execute this function).
* ticker ticker to register.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'register_ticker', {'ticker': '[u8; 12]'}
)
remove_documents¶
Remove documents for a given token.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* ids Documents ids to be removed from ticker.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ids | Vec<DocumentId> |
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'remove_documents', {'ids': ['u32'], 'ticker': '[u8; 12]'}
)
remove_local_metadata_key¶
Removes the asset metadata key and value of a local key.
# Arguments
* origin - the secondary key of the sender.
* ticker - the ticker of the local metadata key.
* local_key - the local metadata key.
# Errors
- SecondaryKeyNotAuthorizedForAsset - if called by someone without the appropriate external agent permissions.
- UnauthorizedAgent - if called by someone without the appropriate external agent permissions.
- AssetMetadataKeyIsMissing - if the key doens't exist.
- AssetMetadataValueIsLocked - if the value of the key is locked.
- AssetMetadataKeyBelongsToNFTCollection - if the key is a mandatory key in an NFT collection.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| local_key | AssetMetadataLocalKey |
Python¶
call = substrate.compose_call(
'Asset', 'remove_local_metadata_key', {
'local_key': 'u64',
'ticker': '[u8; 12]',
}
)
remove_mandatory_mediators¶
Removes all identities in the mediators set from the mandatory mediators list for the given ticker.
# Arguments
* origin: The secondary key of the sender.
* ticker: The [Ticker] of the asset that will have mediators removed.
* mediators: A set of [IdentityId] of all the mediators that will be removed from the mandatory mediators list.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| mediators | BoundedBTreeSet<IdentityId, T::MaxAssetMediators> |
Python¶
call = substrate.compose_call(
'Asset', 'remove_mandatory_mediators', {
'mediators': 'scale_info::163',
'ticker': '[u8; 12]',
}
)
remove_metadata_value¶
Removes the asset metadata value of a metadata key.
# Arguments
* origin - the secondary key of the sender.
* ticker - the ticker of the local metadata key.
* metadata_key - the metadata key that will have its value deleted.
# Errors
- SecondaryKeyNotAuthorizedForAsset - if called by someone without the appropriate external agent permissions.
- UnauthorizedAgent - if called by someone without the appropriate external agent permissions.
- AssetMetadataKeyIsMissing - if the key doens't exist.
- AssetMetadataValueIsLocked - if the value of the key is locked.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| metadata_key | AssetMetadataKey |
Python¶
call = substrate.compose_call(
'Asset', 'remove_metadata_value', {
'metadata_key': {
'Global': 'u64',
'Local': 'u64',
},
'ticker': '[u8; 12]',
}
)
remove_ticker_affirmation_exemption¶
Removes the pre-approval of the asset for all identities.
# Arguments
* origin - the secondary key of the sender.
* ticker - the [Ticker] that will have its exemption removed.
# Permissions * Root
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'remove_ticker_affirmation_exemption', {'ticker': '[u8; 12]'}
)
remove_ticker_pre_approval¶
Removes the pre approval of an asset.
# Arguments
* origin - the secondary key of the sender.
* ticker - the [Ticker] that will have its exemption removed.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'remove_ticker_pre_approval', {'ticker': '[u8; 12]'}
)
rename_asset¶
Renames a given token.
# Arguments
* origin - the secondary key of the sender.
* ticker - the ticker of the token.
* name - the new name of the token.
## Errors
- MaxLengthOfAssetNameExceeded if length of name is greater than
T::AssetNameMaxLength.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| name | AssetName |
Python¶
call = substrate.compose_call(
'Asset', 'rename_asset', {
'name': 'Bytes',
'ticker': '[u8; 12]',
}
)
set_asset_metadata¶
Set asset metadata value.
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* key Metadata key.
* value Metadata value.
* details Optional Metadata value details (expire, lock status).
# Errors
* AssetMetadataKeyIsMissing if the metadata type key doesn't exist.
* AssetMetadataValueIsLocked if the metadata value for key is locked.
* AssetMetadataValueMaxLengthExceeded if the metadata value exceeds the maximum length.
# Permissions * Agent * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| key | AssetMetadataKey |
| value | AssetMetadataValue |
| detail | Option<AssetMetadataValueDetail<T::Moment>> |
Python¶
call = substrate.compose_call(
'Asset', 'set_asset_metadata', {
'detail': (
None,
{
'expire': (None, 'u64'),
'lock_status': {
'Locked': None,
'LockedUntil': 'u64',
'Unlocked': None,
},
},
),
'key': {
'Global': 'u64',
'Local': 'u64',
},
'ticker': '[u8; 12]',
'value': 'Bytes',
}
)
set_asset_metadata_details¶
Set asset metadata value details (expire, lock status).
# Arguments
* origin is a signer that has permissions to act as an agent of ticker.
* ticker Ticker of the token.
* key Metadata key.
* details Metadata value details (expire, lock status).
# Errors
* AssetMetadataKeyIsMissing if the metadata type key doesn't exist.
* AssetMetadataValueIsLocked if the metadata value for key is locked.
# Permissions * Agent * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| key | AssetMetadataKey |
| detail | AssetMetadataValueDetail<T::Moment> |
Python¶
call = substrate.compose_call(
'Asset', 'set_asset_metadata_details', {
'detail': {
'expire': (None, 'u64'),
'lock_status': {
'Locked': None,
'LockedUntil': 'u64',
'Unlocked': None,
},
},
'key': {
'Global': 'u64',
'Local': 'u64',
},
'ticker': '[u8; 12]',
}
)
set_funding_round¶
Sets the name of the current funding round.
# Arguments
* origin - a signer that has permissions to act as an agent of ticker.
* ticker - the ticker of the token.
* name - the desired name of the current funding round.
## Errors
- FundingRoundNameMaxLengthExceeded if length of name is greater than
T::FundingRoundNameMaxLength.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| name | FundingRoundName |
Python¶
call = substrate.compose_call(
'Asset', 'set_funding_round', {
'name': 'Bytes',
'ticker': '[u8; 12]',
}
)
unfreeze¶
Unfreezes transfers of a given token.
# Arguments
* origin - the secondary key of the sender.
* ticker - the ticker of the frozen token.
## Errors
- NotFrozen if ticker is not frozen yet.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
Python¶
call = substrate.compose_call(
'Asset', 'unfreeze', {'ticker': '[u8; 12]'}
)
update_asset_type¶
Updates the type of an asset.
# Arguments
* origin - the secondary key of the sender.
* ticker - the ticker of the token.
* asset_type - the new type of the token.
## Errors
- InvalidCustomAssetTypeId if asset_type is of type custom and has an invalid type id.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| asset_type | AssetType |
Python¶
call = substrate.compose_call(
'Asset', 'update_asset_type', {
'asset_type': {
'Commodity': None,
'Custom': 'u32',
'Derivative': None,
'EquityCommon': None,
'EquityPreferred': None,
'FixedIncome': None,
'Fund': None,
'NonFungible': {
'Custom': 'u32',
'Derivative': None,
'FixedIncome': None,
'Invoice': None,
},
'REIT': None,
'RevenueShareAgreement': None,
'StableCoin': None,
'StructuredProduct': None,
},
'ticker': '[u8; 12]',
}
)
update_identifiers¶
Updates the asset identifiers.
# Arguments
* origin - a signer that has permissions to act as an agent of ticker.
* ticker - the ticker of the token.
* asset_identifiers - the asset identifiers to be updated in the form of a vector of pairs of IdentifierType and AssetIdentifier value.
## Errors
- InvalidAssetIdentifier if identifiers contains any invalid identifier.
# Permissions * Asset
Attributes¶
| Name | Type |
|---|---|
| ticker | Ticker |
| asset_identifiers | Vec<AssetIdentifier> |
Python¶
call = substrate.compose_call(
'Asset', 'update_identifiers', {
'asset_identifiers': [
{
'CINS': '[u8; 9]',
'CUSIP': '[u8; 9]',
'FIGI': '[u8; 12]',
'ISIN': '[u8; 12]',
'LEI': '[u8; 20]',
},
],
'ticker': '[u8; 12]',
}
)
Events¶
AssetAffirmationExemption¶
An asset has been added to the list of pre aprroved receivement (valid for all identities).
Parameters: [Ticker] of the pre approved asset.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | Ticker |
[u8; 12] |
AssetBalanceUpdated¶
Emitted when Tokens were issued, redeemed or transferred.
Contains the [IdentityId] of the receiver/issuer/redeemer, the [Ticker] for the token, the balance that was issued/transferred/redeemed,
the [PortfolioId] of the source, the [PortfolioId] of the destination and the [PortfolioUpdateReason].
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | Balance |
u128 |
| None | Option<PortfolioId> |
(None, {'did': '[u8; 32]', 'kind': {'Default': None, 'User': 'u64'}}) |
| None | Option<PortfolioId> |
(None, {'did': '[u8; 32]', 'kind': {'Default': None, 'User': 'u64'}}) |
| None | PortfolioUpdateReason |
{'Issued': {'funding_round_name': (None, 'Bytes')}, 'Redeemed': None, 'Transferred': {'instruction_id': (None, 'u64'), 'instruction_memo': (None, '[u8; 32]')}, 'ControllerTransfer': None} |
AssetCreated¶
Event for creation of the asset. caller DID/ owner DID, ticker, divisibility, asset type, beneficiary DID, asset name, identifiers, funding round
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | bool |
bool |
| None | AssetType |
{'EquityCommon': None, 'EquityPreferred': None, 'Commodity': None, 'FixedIncome': None, 'REIT': None, 'Fund': None, 'RevenueShareAgreement': None, 'StructuredProduct': None, 'Derivative': None, 'Custom': 'u32', 'StableCoin': None, 'NonFungible': {'Derivative': None, 'FixedIncome': None, 'Invoice': None, 'Custom': 'u32'}} |
| None | IdentityId |
[u8; 32] |
| None | AssetName |
Bytes |
| None | Vec<AssetIdentifier> |
[{'CUSIP': '[u8; 9]', 'CINS': '[u8; 9]', 'ISIN': '[u8; 12]', 'LEI': '[u8; 20]', 'FIGI': '[u8; 12]'}] |
| None | Option<FundingRoundName> |
(None, 'Bytes') |
AssetFrozen¶
An event emitted when an asset is frozen. Parameter: caller DID, ticker.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
AssetMediatorsAdded¶
An identity has added mandatory mediators to an asset.
Parameters: [IdentityId] of caller, [Ticker] of the asset, the identity of all mediators added.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | BTreeSet<IdentityId> |
scale_info::163 |
AssetMediatorsRemoved¶
An identity has removed mediators from an asset.
Parameters: [IdentityId] of caller, [Ticker] of the asset, the identity of all mediators removed.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | BTreeSet<IdentityId> |
scale_info::163 |
AssetOwnershipTransferred¶
Emit when token ownership is transferred. caller DID / token ownership transferred to DID, ticker, from
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | IdentityId |
[u8; 32] |
AssetRenamed¶
An event emitted when a token is renamed. Parameters: caller DID, ticker, new token name.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetName |
Bytes |
AssetTypeChanged¶
An event emitted when the type of an asset changed. Parameters: caller DID, ticker, new token type.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetType |
{'EquityCommon': None, 'EquityPreferred': None, 'Commodity': None, 'FixedIncome': None, 'REIT': None, 'Fund': None, 'RevenueShareAgreement': None, 'StructuredProduct': None, 'Derivative': None, 'Custom': 'u32', 'StableCoin': None, 'NonFungible': {'Derivative': None, 'FixedIncome': None, 'Invoice': None, 'Custom': 'u32'}} |
AssetUnfrozen¶
An event emitted when an asset is unfrozen. Parameter: caller DID, ticker.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
ControllerTransfer¶
Event for when a forced transfer takes place. caller DID/ controller DID, ticker, Portfolio of token holder, value.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | PortfolioId |
{'did': '[u8; 32]', 'kind': {'Default': None, 'User': 'u64'}} |
| None | Balance |
u128 |
CustomAssetTypeExists¶
A custom asset type already exists on-chain. caller DID, the ID of the custom asset type, the string contents registered.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | CustomAssetTypeId |
u32 |
| None | Vec<u8> |
Bytes |
CustomAssetTypeRegistered¶
A custom asset type was registered on-chain. caller DID, the ID of the custom asset type, the string contents registered.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | CustomAssetTypeId |
u32 |
| None | Vec<u8> |
Bytes |
DivisibilityChanged¶
Event for change in divisibility. caller DID, ticker, divisibility
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | bool |
bool |
DocumentAdded¶
A new document attached to an asset
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | DocumentId |
u32 |
| None | Document |
{'uri': 'Bytes', 'content_hash': {'None': None, 'H512': '[u8; 64]', 'H384': '[u8; 48]', 'H320': '[u8; 40]', 'H256': '[u8; 32]', 'H224': '[u8; 28]', 'H192': '[u8; 24]', 'H160': '[u8; 20]', 'H128': '[u8; 16]'}, 'name': 'Bytes', 'doc_type': (None, 'Bytes'), 'filing_date': (None, 'u64')} |
DocumentRemoved¶
A document removed from an asset
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | DocumentId |
u32 |
ExtensionRemoved¶
A extension got removed. caller DID, ticker, AccountId
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AccountId |
AccountId |
FundingRoundSet¶
An event carrying the name of the current funding round of a ticker. Parameters: caller DID, ticker, funding round name.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | FundingRoundName |
Bytes |
IdentifiersUpdated¶
Event emitted when any token identifiers are updated. caller DID, ticker, a vector of (identifier type, identifier value)
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | Vec<AssetIdentifier> |
[{'CUSIP': '[u8; 9]', 'CINS': '[u8; 9]', 'ISIN': '[u8; 12]', 'LEI': '[u8; 20]', 'FIGI': '[u8; 12]'}] |
IsIssuable¶
is_issuable() output ticker, return value (true if issuable)
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | Ticker |
[u8; 12] |
| None | bool |
bool |
LocalMetadataKeyDeleted¶
An event emitted when a local metadata key has been removed. Parameters: caller ticker, Local type name
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetMetadataLocalKey |
u64 |
MetadataValueDeleted¶
An event emitted when a local metadata value has been removed. Parameters: caller ticker, Local type name
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetMetadataKey |
{'Global': 'u64', 'Local': 'u64'} |
PreApprovedAsset¶
An identity has added an asset to the list of pre aprroved receivement.
Parameters: [IdentityId] of caller, [Ticker] of the pre approved asset.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
RegisterAssetMetadataGlobalType¶
Register asset metadata global type. (Global type name, Global type key, type specs)
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | AssetMetadataName |
Bytes |
| None | AssetMetadataGlobalKey |
u64 |
| None | AssetMetadataSpec |
{'url': (None, 'Bytes'), 'description': (None, 'Bytes'), 'type_def': (None, 'Bytes')} |
RegisterAssetMetadataLocalType¶
Register asset metadata local type. (Caller DID, ticker, Local type name, Local type key, type specs)
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetMetadataName |
Bytes |
| None | AssetMetadataLocalKey |
u64 |
| None | AssetMetadataSpec |
{'url': (None, 'Bytes'), 'description': (None, 'Bytes'), 'type_def': (None, 'Bytes')} |
RemoveAssetAffirmationExemption¶
An asset has been removed from the list of pre aprroved receivement (valid for all identities).
Parameters: [Ticker] of the asset.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | Ticker |
[u8; 12] |
RemovePreApprovedAsset¶
An identity has removed an asset to the list of pre aprroved receivement.
Parameters: [IdentityId] of caller, [Ticker] of the asset.
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
SetAssetMetadataValue¶
Set asset metadata value. (Caller DID, ticker, metadata value, optional value details)
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetMetadataValue |
Bytes |
| None | Option<AssetMetadataValueDetail<Moment>> |
(None, {'expire': (None, 'u64'), 'lock_status': {'Unlocked': None, 'Locked': None, 'LockedUntil': 'u64'}}) |
SetAssetMetadataValueDetails¶
Set asset metadata value details (expire, lock status). (Caller DID, ticker, value details)
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | AssetMetadataValueDetail<Moment> |
{'expire': (None, 'u64'), 'lock_status': {'Unlocked': None, 'Locked': None, 'LockedUntil': 'u64'}} |
TickerRegistered¶
Emit when ticker is registered. caller DID / ticker owner did, ticker, ticker owner, expiry
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | Option<Moment> |
(None, 'u64') |
TickerTransferred¶
Emit when ticker is transferred. caller DID / ticker transferred to DID, ticker, from
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | IdentityId |
[u8; 32] |
TransferWithData¶
An additional event to Transfer; emitted when transfer_with_data is called.
caller DID , ticker, from DID, to DID, value, data
Attributes¶
| Name | Type | Composition |
|---|---|---|
| None | IdentityId |
[u8; 32] |
| None | Ticker |
[u8; 12] |
| None | IdentityId |
[u8; 32] |
| None | IdentityId |
[u8; 32] |
| None | Balance |
u128 |
| None | Vec<u8> |
Bytes |
Storage functions¶
AssetDocuments¶
Documents attached to an Asset (ticker, doc_id) -> document
Python¶
result = substrate.query(
'Asset', 'AssetDocuments', ['[u8; 12]', 'u32']
)
Return value¶
{
'content_hash': {
'H128': '[u8; 16]',
'H160': '[u8; 20]',
'H192': '[u8; 24]',
'H224': '[u8; 28]',
'H256': '[u8; 32]',
'H320': '[u8; 40]',
'H384': '[u8; 48]',
'H512': '[u8; 64]',
'None': None,
},
'doc_type': (None, 'Bytes'),
'filing_date': (None, 'u64'),
'name': 'Bytes',
'uri': 'Bytes',
}
AssetDocumentsIdSequence¶
Per-ticker document ID counter. (ticker) -> doc_id
Python¶
result = substrate.query(
'Asset', 'AssetDocumentsIdSequence', ['[u8; 12]']
)
Return value¶
'u32'
AssetMetadataGlobalKeyToName¶
Asset Metadata Global Key -> Name.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataGlobalKeyToName', ['u64']
)
Return value¶
'Bytes'
AssetMetadataGlobalNameToKey¶
Asset Metadata Global Name -> Key.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataGlobalNameToKey', ['Bytes']
)
Return value¶
'u64'
AssetMetadataGlobalSpecs¶
Asset Metadata Global Key specs.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataGlobalSpecs', ['u64']
)
Return value¶
{
'description': (None, 'Bytes'),
'type_def': (None, 'Bytes'),
'url': (None, 'Bytes'),
}
AssetMetadataLocalKeyToName¶
Asset Metadata Local Key -> Name.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataLocalKeyToName', ['[u8; 12]', 'u64']
)
Return value¶
'Bytes'
AssetMetadataLocalNameToKey¶
Asset Metadata Local Name -> Key.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataLocalNameToKey', ['[u8; 12]', 'Bytes']
)
Return value¶
'u64'
AssetMetadataLocalSpecs¶
Asset Metadata Local Key specs.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataLocalSpecs', ['[u8; 12]', 'u64']
)
Return value¶
{
'description': (None, 'Bytes'),
'type_def': (None, 'Bytes'),
'url': (None, 'Bytes'),
}
AssetMetadataNextGlobalKey¶
Next Asset Metadata Global Key.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataNextGlobalKey', []
)
Return value¶
'u64'
AssetMetadataNextLocalKey¶
Next Asset Metadata Local Key.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataNextLocalKey', ['[u8; 12]']
)
Return value¶
'u64'
AssetMetadataValueDetails¶
Details for an asset's Metadata values.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataValueDetails', [
'[u8; 12]',
{'Global': 'u64', 'Local': 'u64'},
]
)
Return value¶
{
'expire': (None, 'u64'),
'lock_status': {'Locked': None, 'LockedUntil': 'u64', 'Unlocked': None},
}
AssetMetadataValues¶
Metatdata values for an asset.
Python¶
result = substrate.query(
'Asset', 'AssetMetadataValues', [
'[u8; 12]',
{'Global': 'u64', 'Local': 'u64'},
]
)
Return value¶
'Bytes'
AssetNames¶
Asset name of the token corresponding to the token ticker.
(ticker) -> AssetName
Python¶
result = substrate.query(
'Asset', 'AssetNames', ['[u8; 12]']
)
Return value¶
'Bytes'
AssetOwnershipRelations¶
Tickers and token owned by a user (user, ticker) -> AssetOwnership
Python¶
result = substrate.query(
'Asset', 'AssetOwnershipRelations', ['[u8; 32]', '[u8; 12]']
)
Return value¶
('NotOwned', 'TickerOwned', 'AssetOwned')
BalanceOf¶
The total asset ticker balance per identity. (ticker, DID) -> Balance
Python¶
result = substrate.query(
'Asset', 'BalanceOf', ['[u8; 12]', '[u8; 32]']
)
Return value¶
'u128'
CurrentAssetMetadataGlobalKey¶
The last [AssetMetadataGlobalKey] used for a global key.
Python¶
result = substrate.query(
'Asset', 'CurrentAssetMetadataGlobalKey', []
)
Return value¶
'u64'
CurrentAssetMetadataLocalKey¶
The last [AssetMetadataLocalKey] used for [Ticker].
Python¶
result = substrate.query(
'Asset', 'CurrentAssetMetadataLocalKey', ['[u8; 12]']
)
Return value¶
'u64'
CustomTypeIdSequence¶
The next AssetType::Custom ID in the sequence.
Numbers in the sequence start from 1 rather than 0.
Python¶
result = substrate.query(
'Asset', 'CustomTypeIdSequence', []
)
Return value¶
'u32'
CustomTypes¶
Maps custom asset type ids to the registered string contents.
Python¶
result = substrate.query(
'Asset', 'CustomTypes', ['u32']
)
Return value¶
'Bytes'
CustomTypesInverse¶
Inverse map of CustomTypes, from registered string contents to custom asset type ids.
Python¶
result = substrate.query(
'Asset', 'CustomTypesInverse', ['Bytes']
)
Return value¶
'u32'
Frozen¶
The set of frozen assets implemented as a membership map. ticker -> bool
Python¶
result = substrate.query(
'Asset', 'Frozen', ['[u8; 12]']
)
Return value¶
'bool'
FundingRound¶
The name of the current funding round. ticker -> funding round
Python¶
result = substrate.query(
'Asset', 'FundingRound', ['[u8; 12]']
)
Return value¶
'Bytes'
Identifiers¶
A map of a ticker name and asset identifiers.
Python¶
result = substrate.query(
'Asset', 'Identifiers', ['[u8; 12]']
)
Return value¶
[
{
'CINS': '[u8; 9]',
'CUSIP': '[u8; 9]',
'FIGI': '[u8; 12]',
'ISIN': '[u8; 12]',
'LEI': '[u8; 20]',
},
]
IssuedInFundingRound¶
The total balances of tokens issued in all recorded funding rounds. (ticker, funding round) -> balance
Python¶
result = substrate.query(
'Asset', 'IssuedInFundingRound', [('[u8; 12]', 'Bytes')]
)
Return value¶
'u128'
MandatoryMediators¶
The list of mandatory mediators for every ticker.
Python¶
result = substrate.query(
'Asset', 'MandatoryMediators', ['[u8; 12]']
)
Return value¶
'scale_info::163'
PreApprovedTicker¶
All tickers that don't need an affirmation to be received by an identity.
Python¶
result = substrate.query(
'Asset', 'PreApprovedTicker', ['[u8; 32]', '[u8; 12]']
)
Return value¶
'bool'
StorageVersion¶
Storage version.
Python¶
result = substrate.query(
'Asset', 'StorageVersion', []
)
Return value¶
'u8'
TickerConfig¶
Ticker registration config. (ticker) -> TickerRegistrationConfig
Python¶
result = substrate.query(
'Asset', 'TickerConfig', []
)
Return value¶
{'max_ticker_length': 'u8', 'registration_length': (None, 'u64')}
Tickers¶
Ticker registration details. (ticker) -> TickerRegistration
Python¶
result = substrate.query(
'Asset', 'Tickers', ['[u8; 12]']
)
Return value¶
{'expiry': (None, 'u64'), 'owner': '[u8; 32]'}
TickersExemptFromAffirmation¶
A list of tickers that exempt all users from affirming the receivement of the asset.
Python¶
result = substrate.query(
'Asset', 'TickersExemptFromAffirmation', ['[u8; 12]']
)
Return value¶
'bool'
Tokens¶
Details of the token corresponding to the token ticker. (ticker) -> SecurityToken details [returns SecurityToken struct]
Python¶
result = substrate.query(
'Asset', 'Tokens', ['[u8; 12]']
)
Return value¶
{
'asset_type': {
'Commodity': None,
'Custom': 'u32',
'Derivative': None,
'EquityCommon': None,
'EquityPreferred': None,
'FixedIncome': None,
'Fund': None,
'NonFungible': {
'Custom': 'u32',
'Derivative': None,
'FixedIncome': None,
'Invoice': None,
},
'REIT': None,
'RevenueShareAgreement': None,
'StableCoin': None,
'StructuredProduct': None,
},
'divisible': 'bool',
'owner_did': '[u8; 32]',
'total_supply': 'u128',
}
Constants¶
AssetMetadataNameMaxLength¶
Value¶
256
Python¶
constant = substrate.get_constant('Asset', 'AssetMetadataNameMaxLength')
AssetMetadataTypeDefMaxLength¶
Value¶
8192
Python¶
constant = substrate.get_constant('Asset', 'AssetMetadataTypeDefMaxLength')
AssetMetadataValueMaxLength¶
Value¶
8192
Python¶
constant = substrate.get_constant('Asset', 'AssetMetadataValueMaxLength')
AssetNameMaxLength¶
Value¶
128
Python¶
constant = substrate.get_constant('Asset', 'AssetNameMaxLength')
FundingRoundNameMaxLength¶
Value¶
128
Python¶
constant = substrate.get_constant('Asset', 'FundingRoundNameMaxLength')
MaxAssetMediators¶
Value¶
4
Python¶
constant = substrate.get_constant('Asset', 'MaxAssetMediators')
Errors¶
AlreadyFrozen¶
The token is already frozen.
AssetAlreadyCreated¶
The token has already been created.
AssetAlreadyDivisible¶
The token is already divisible.
AssetMetadataGlobalKeyAlreadyExists¶
Asset Metadata Global type already exists.
AssetMetadataKeyBelongsToNFTCollection¶
Attempt to delete a key that is needed for an NFT collection.
AssetMetadataKeyIsMissing¶
Asset Metadata key is missing.
AssetMetadataLocalKeyAlreadyExists¶
Asset Metadata Local type already exists for asset.
AssetMetadataNameMaxLengthExceeded¶
Maximum length of the asset metadata type name has been exceeded.
AssetMetadataTypeDefMaxLengthExceeded¶
Maximum length of the asset metadata type definition has been exceeded.
AssetMetadataValueIsEmpty¶
Attempt to lock a metadata value that is empty.
AssetMetadataValueIsLocked¶
Asset Metadata value is locked.
AssetMetadataValueMaxLengthExceeded¶
Maximum length of the asset metadata value has been exceeded.
BalanceOverflow¶
An overflow while calculating the balance.
FundingRoundNameMaxLengthExceeded¶
Maximum length of the funding round name has been exceeded.
IncompatibleAssetTypeUpdate¶
Attempt to update the type of a non fungible token to a fungible token or the other way around.
InsufficientBalance¶
The sender balance is not sufficient.
InvalidAssetIdentifier¶
Some AssetIdentifier was invalid.
InvalidCustomAssetTypeId¶
Invalid CustomAssetTypeId.
InvalidEthereumSignature¶
An invalid Ethereum EcdsaSignature.
InvalidGranularity¶
An invalid granularity.
InvalidTickerCharacter¶
Invalid ticker character - valid set: A..Z0..9_-./`.
InvalidTransfer¶
Transfer validation check failed.
InvalidTransferComplianceFailure¶
Failed to transfer an NFT - compliance failed.
InvalidTransferFrozenAsset¶
Failed to transfer the asset - asset is frozen.
InvalidTransferInvalidReceiverCDD¶
Failed to transfer the asset - receiver cdd is not valid.
InvalidTransferInvalidSenderCDD¶
Failed to transfer the asset - sender cdd is not valid.
InvestorUniquenessClaimNotAllowed¶
Investor Uniqueness claims are not allowed for this asset.
MaxLengthOfAssetNameExceeded¶
Maximum length of asset name has been exceeded.
NoSuchAsset¶
No such token.
NoSuchDoc¶
The given Document does not exist.
NotAnOwner¶
Not an owner of the token on Ethereum.
NotFrozen¶
The asset must be frozen.
NumberOfAssetMediatorsExceeded¶
Number of asset mediators would exceed the maximum allowed.
SenderSameAsReceiver¶
Transfers to self are not allowed
TickerAlreadyRegistered¶
The ticker is already registered to someone else.
TickerFirstByteNotValid¶
Tickers should start with at least one valid byte.
TickerNotAlphanumeric¶
The ticker has non-alphanumeric parts.
TickerRegistrationExpired¶
Registration of ticker has expired.
TickerTooLong¶
The ticker length is over the limit.
TotalSupplyAboveLimit¶
The total supply is above the limit.
TotalSupplyOverflow¶
An overflow while calculating the total supply.
Unauthorized¶
The user is not authorized.
UnexpectedNonFungibleToken¶
Attempt to call an extrinsic that is only permitted for fungible tokens.