Skip to content

Sft โ€‹

Calls โ€‹

burn โ€‹

Burn a token ๐Ÿ”ฅ

Caller must be the token owner

Namespace

api.tx.sft.burn

Type

function burn(
  collection_id: u32,
  serial_numbers: Vec<(u32,u128)>
)

createCollection โ€‹

Create a new collection to group multiple semi-fungible tokens Tokens can be created within the collection by calling create_token

collection_name - the name of the collection collection_owner - the collection owner, defaults to the caller metadata_scheme - The off-chain metadata referencing scheme for tokens in this royalties_schedule - defacto royalties plan for secondary sales, this will apply to all tokens in the collection by default.

The collectionUuid used to store the SFT CollectionInfo is retrieved from the NFT pallet. This is so that CollectionUuids are unique across all collections, regardless of if they are SFT or NFT collections.

Namespace

api.tx.sft.createCollection

Type

function createCollection(
  collection_name: Bytes,
  collection_owner: Option<SeedPrimitivesSignatureAccountId20>,
  metadata_scheme: Bytes,
  royalties_schedule: Option<SeedPrimitivesNftRoyaltiesSchedule>
)

createToken โ€‹

Create additional tokens for an existing collection These tokens act similar to tokens within an ERC1155 contract Each token has individual issuance, max_issuance,

Namespace

api.tx.sft.createToken

Type

function createToken(
  collection_id: u32,
  token_name: Bytes,
  initial_issuance: u128,
  max_issuance: Option<u128>,
  token_owner: Option<SeedPrimitivesSignatureAccountId20>
)

createTokenWithAdditionalData โ€‹

Create additional tokens for an existing collection with additional data. These tokens act similar to tokens within an ERC1155 contract. Each token has individual issuance, max_issuance, and additional data.

Namespace

api.tx.sft.createTokenWithAdditionalData

Type

function createTokenWithAdditionalData(
  collection_id: u32,
  token_name: Bytes,
  initial_issuance: u128,
  max_issuance: Option<u128>,
  token_owner: Option<SeedPrimitivesSignatureAccountId20>,
  additional_data: Bytes
)

mint โ€‹

Mints some balances into some serial numbers for an account This acts as a batch mint function and allows for multiple serial numbers and quantities to be passed in simultaneously. Must be called by the collection owner

collection_id - the SFT collection to mint into serial_numbers - A list of serial numbers to mint into quantities - A list of quantities to mint into each serial number token_owner - The owner of the tokens, defaults to the caller

Namespace

api.tx.sft.mint

Type

function mint(
  collection_id: u32,
  serial_numbers: Vec<(u32,u128)>,
  token_owner: Option<SeedPrimitivesSignatureAccountId20>
)

setBaseUri โ€‹

Set the base URI of a collection (MetadataScheme) Caller must be the current collection owner

Namespace

api.tx.sft.setBaseUri

Type

function setBaseUri(
  collection_id: u32,
  metadata_scheme: Bytes
)

setMaxIssuance โ€‹

Set the max issuance of a collection Caller must be the current collection owner

Namespace

api.tx.sft.setMaxIssuance

Type

function setMaxIssuance(
  token_id: (u32,u32),
  max_issuance: u128
)

setMintFee โ€‹

Namespace

api.tx.sft.setMintFee

Type

function setMintFee(
  token_id: (u32,u32),
  pricing_details: Option<(u32,u128)>
)

setName โ€‹

Set the name of a collection Caller must be the current collection owner

Namespace

api.tx.sft.setName

Type

function setName(
  collection_id: u32,
  collection_name: Bytes
)

setOwner โ€‹

Set the owner of a collection Caller must be the current collection owner

Namespace

api.tx.sft.setOwner

Type

function setOwner(
  collection_id: u32,
  new_owner: SeedPrimitivesSignatureAccountId20
)

setRoyaltiesSchedule โ€‹

Set the royalties schedule of a collection Caller must be the current collection owner

Namespace

api.tx.sft.setRoyaltiesSchedule

Type

function setRoyaltiesSchedule(
  collection_id: u32,
  royalties_schedule: SeedPrimitivesNftRoyaltiesSchedule
)

togglePublicMint โ€‹

Namespace

api.tx.sft.togglePublicMint

Type

function togglePublicMint(
  token_id: (u32,u32),
  enabled: bool
)

setTokenName โ€‹

Namespace

api.tx.sft.setTokenName

Type

function setTokenName(
  token_id: (u32, u32),
  token_name: Bytes
)

transfer โ€‹

Transfer ownership of an SFT Caller must be the token owner

Namespace

api.tx.sft.transfer

Type

function transfer(
  collection_id: u32,
  serial_numbers: Vec<(u32,u128)>,
  new_owner: SeedPrimitivesSignatureAccountId20
)

setUtilityFlags โ€‹

Set utility flags of a collection. This allows restricting certain operations on a collection such as transfer, burn or mint.

Caller must be the collection owner.

  • collection_id - The id of the collection
  • utility_flags - An object containing the utility flags.
    CollectionUtilityFlags {
      transferable: bool,
      burnable: bool,
      mintable: bool,
    }

Namespace

api.tx.sft.setUtilityFlags

Type

function setUtilityFlags(
  collection_id: u32,
  utility_flags: CollectionUtilityFlags,
)

setTokenTransferableFlag โ€‹

Set transferable flag on a token, allowing or disallowing transfers.

Caller must be the collection owner.

Namespace

api.tx.sft.setTokenTransferableFlag

Type

function setTokenTransferableFlag(
  token_id: (u32, u32),
  transferable: bool,
)

setTokenBurnAuthority โ€‹

Set burn authority on a token. This value will be immutable once set.

Caller must be the collection owner.

  • token_id -. The token id
  • burn_authority - The token burn authority. This value will dictate which account is allowed to burn the token.
    TokenBurnAuthority {
      /// The token can be burned by the collection_owner
      CollectionOwner,
      /// The token can be burned by the token_owner
      TokenOwner,
      /// The token can be burned by either token or collection owner
      Both,
      /// The token cannot be burned by anyone
      Neither,
    }

Namespace

api.tx.sft.setTokenBurnAuthority

Type

function setTokenBurnAuthority(
  token_id: (u32, u32),
  burn_authority: TokenBurnAuthority
)

setAdditionalData โ€‹

Set additional data for a token. This allows collection owners or token owners to store custom data associated with specific tokens.

  • token_id - The token id to set additional data for
  • additional_data - Custom data to associate with the token

Namespace

api.tx.sft.setAdditionalData

Type

function setAdditionalData(
  token_id: (u32,u32),
  additional_data: Bytes
)

burnAsCollectionOwner โ€‹

Burn a token as the collection owner.

The burn authority must have already been set and set to either the collection owner or both.

  • token_owner - The account id of the token owner
  • collection_id - The collection id
  • serial_numbers - Array of serial number and the amount of tokens to burn

Namespace

api.tx.sft.burnAsCollectionOwner

Type

function burnAsCollectionOwner(
  token_owner: SeedPrimitivesSignatureAccountId20,
  collection_id: u32,
  serial_numbers: Vec<u32, u32>
)

issueSoulbound โ€‹

Issue soulbound tokens. The issuance will be pending until the token owner accepts the issuance.

The burn authority for the specified tokens must already have been set prior to attempting to issue the tokens.

  • token_owner - Account id of the token owner. The tokens will be burned for this account.
  • collection_id - The collection id to issue the tokens for
  • serial_numbers - List of token ids and the amount to issue

Namespace

api.tx.sft.issueSoulbound

Type

function issueSoulbound(
  colelction_id: u32,
  serial_numbers: Vec<(u32, u32)>,
  token_owner:
)

acceptSoulboundIssuance โ€‹

Accept the issuance of a soulbound tokens

  • collection_id - The collection id
  • issuance_id - The issuance id. An issuance id is created and emitted on issuance. All pending issuances for an account can be retrieved by querying the collection's pending issuances.

Namespace

api.tx.sft.acceptSoulboundIssuance

Type

function acceptSoulboundIssuance(
  collection_id: u32,
  issuance_idL u32
)

Storage โ€‹

publicMintInfo โ€‹

Map from collection to its public minting information

Namespace

api.query.sft.publicMintInfo

Type

function publicMintInfo(
  (u32,u32)
): Option<SeedPalletCommonUtilsPublicMintInformation>

sftCollectionInfo โ€‹

Map from collection to its information

Namespace

api.query.sft.sftCollectionInfo

Type

function sftCollectionInfo(
  u32
): Option<PalletSftSftCollectionInformation>

tokenInfo โ€‹

Map from token to its token information, including ownership information

Namespace

api.query.sft.tokenInfo

Type

function tokenInfo(
  (u32,u32)
): Option<PalletSftSftTokenInformation>

utilityFlags โ€‹

Map from a collection id to it's utility flags

Namespace

api.query.sft.utilityFlags

Type

function utilityFlags(u32): CollectionUtilityFlags

tokenUtilityFlags โ€‹

Map from a token id to its utility flags

Namespace

api.query.sft.tokenUtilityFlags

Type

type TokenUtilityFlags = {
	transferable: bool,
	burnAuthority: Option<TokenBurnAuthority>,
}

function tokenUtilityFlags(
  (u32, u32)
): TokenUtilityFlags

additionalData โ€‹

Map from a token id to its additional data

Namespace

api.query.sft.additionalData

Type

function additionalData(
  (u32, u32)
): Option<Bytes>

pendingIssuances โ€‹

Map from a collection id to the collection's pending issuances

Namespace

api.query.sft.pendingIssuances

Type

type SftPendingIssuance = {
  issuanceId: u32;
  serial_numbers: Vec<(u32, u32)>
}

type CollectionPendingIssuances = {
  nextIssuanceId: u32;
  pendingIssuances: Vec(AccountId, PendingIssuance)
}

function pendingIssuances(
  u32
): CollectionPendingIssuances

Can be used to retrieve pending issuances for a particular account.

const collectionIssuances = await api.query.sft.pendingIssuances(collectionId);
const pendingIssuances =
  collectionIssuances.
    pendingIssuances.
    toJSON().
    find((p) => p[0] === accountId);

Events โ€‹

BaseUriSet โ€‹

Base URI was set

Namespace

api.events.sft.BaseUriSet

Type

type BaseUriSet = {
  collection_id: u32,
  metadata_scheme: Bytes
}

Burn โ€‹

A token was burned

Namespace

api.events.sft.Burn

Type

type Burn = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  balances: Vec<u128>,
  owner: SeedPrimitivesSignatureAccountId20
}

CollectionCreate โ€‹

A new collection of tokens was created

Namespace

api.events.sft.CollectionCreate

Type

type CollectionCreate = {
  collection_id: u32,
  collection_owner: SeedPrimitivesSignatureAccountId20,
  metadata_scheme: Bytes,
  name: Bytes,
  royalties_schedule: Option<SeedPrimitivesNftRoyaltiesSchedule>,
  origin_chain: SeedPrimitivesNftOriginChain
}

MaxIssuanceSet โ€‹

Max issuance was set

Namespace

api.events.sft.MaxIssuanceSet

Type

type MaxIssuanceSet = {
  token_id: (u32,u32),
  max_issuance: u128
}

Mint โ€‹

Token(s) were minted

Namespace

api.events.sft.Mint

Type

type Mint = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  balances: Vec<u128>,
  owner: SeedPrimitivesSignatureAccountId20
}

MintFeePaid โ€‹

Payment was made to cover a public mint

Namespace

api.events.sft.MintFeePaid

Type

type MintFeePaid = {
  who: SeedPrimitivesSignatureAccountId20,
  token_id: (u32,u32),
  payment_asset: u32,
  payment_amount: u128,
  token_count: u128
}

MintPriceSet โ€‹

A mint price was set for a collection

Namespace

api.events.sft.MintPriceSet

Type

type MintPriceSet = {
  token_id: (u32,u32),
  payment_asset: Option<u32>,
  mint_price: Option<u128>
}

NameSet โ€‹

Name was set

Namespace

api.events.sft.NameSet

Type

type NameSet = {
  collection_id: u32,
  collection_name: Bytes
}

OwnerSet โ€‹

A new owner was set

Namespace

api.events.sft.OwnerSet

Type

type OwnerSet = {
  collection_id: u32,
  new_owner: SeedPrimitivesSignatureAccountId20
}

PublicMintToggle โ€‹

Public minting was enabled/disabled for a collection

Namespace

api.events.sft.PublicMintToggle

Type

type PublicMintToggle = {
  token_id: (u32,u32),
  enabled: bool
}

RoyaltiesScheduleSet โ€‹

Royalties schedule was set

Namespace

api.events.sft.RoyaltiesScheduleSet

Type

type RoyaltiesScheduleSet = {
  collection_id: u32,
  royalties_schedule: SeedPrimitivesNftRoyaltiesSchedule
}

TokenCreate โ€‹

A new token was created within a collection

Namespace

api.events.sft.TokenCreate

Type

type TokenCreate = {
  token_id: (u32,u32),
  initial_issuance: u128,
  max_issuance: Option<u128>,
  token_name: Bytes,
  token_owner: SeedPrimitivesSignatureAccountId20
}

Transfer โ€‹

A token was transferred

Namespace

api.events.sft.Transfer

Type

type Transfer = {
  previous_owner: SeedPrimitivesSignatureAccountId20,
  collection_id: u32,
  serial_numbers: Vec<u32>,
  balances: Vec<u128>,
  new_owner: SeedPrimitivesSignatureAccountId20
}

UtilityFlagsSet โ€‹

Utility flags were set for a collection

Namespace

api.events.sft.UtilityFlagsSet

Type

type UtilityFlagsSet = {
  collection_id: u32,
  utility_flags: CollectionUtilityFlags,
}

TokenTransferableFlagSet โ€‹

Token transferable flag was set

Namespace

api.events.sft.TokenTransferableFlagSet

Type

type TokenTransferableFlagSet = {
  token_id: (u32, u32),
  transferable: bool,
}

AdditionalDataSet โ€‹

Additional data was set for a token

Namespace

api.events.sft.AdditionalDataSet

Type

type AdditionalDataSet = {
  token_id: (u32, u32),
  additional_data: Bytes
}

PendingIssuanceCreated โ€‹

A pending issuance for a soulbound token has been created

Namespace

api.events.sft.PendingIssuanceCreated

Type

PendingIssuanceCreated = {
  collection_id: u32,
  issuance_id: u32,
  serial_numbers: Vec<u32>,
  balances: Vec<u32>,
  token_owner: SeedPrimitivesSignatureAccountId20,
}

Issued โ€‹

Soulbound tokens were successfully issued

Namespace

api.events.sft.Issued

Type

type Issued = {
  token_owner: SeedPrimitivesSignatureAccountId20,
  serial_numbers: Vec<u32>,
  balances: Vec<u32>,
}

Errors โ€‹

InsufficientBalance โ€‹

The user does not own enough of this token to perform the operation

Namespace

api.errors.sft.InsufficientBalance

InvalidMaxIssuance โ€‹

Max issuance needs to be greater than 0 and initial_issuance Cannot exceed MaxTokensPerCollection

Namespace

api.errors.sft.InvalidMaxIssuance

InvalidNewOwner โ€‹

Caller can not be the new owner

Namespace

api.errors.sft.InvalidNewOwner

InvalidQuantity โ€‹

The specified quantity must be greater than 0

Namespace

api.errors.sft.InvalidQuantity

MaxIssuanceAlreadySet โ€‹

The max issuance has already been set and can't be changed

Namespace

api.errors.sft.MaxIssuanceAlreadySet

MaxIssuanceReached โ€‹

The collection max issuance has been reached and no more tokens can be minted

Namespace

api.errors.sft.MaxIssuanceReached

MaxOwnersReached โ€‹

The max amount of owners per token has been reached

Namespace

api.errors.sft.MaxOwnersReached

NameInvalid โ€‹

Given collection or token name is invalid (invalid utf-8, empty)

Namespace

api.errors.sft.NameInvalid

NoCollectionFound โ€‹

The collection does not exist

Namespace

api.errors.sft.NoCollectionFound

NotCollectionOwner โ€‹

Origin is not the collection owner and is not permitted to perform the operation

Namespace

api.errors.sft.NotCollectionOwner

NoToken โ€‹

The token does not exist

Namespace

api.errors.sft.NoToken

Overflow โ€‹

The operation would cause a numeric overflow

Namespace

api.errors.sft.Overflow

PublicMintDisabled โ€‹

This collection has not allowed public minting

Namespace

api.errors.sft.PublicMintDisabled

RoyaltiesInvalid โ€‹

Total royalties would exceed 100% of sale or an empty vec is supplied

Namespace

api.errors.sft.RoyaltiesInvalid

InvalidAdditionalData โ€‹

The additional data provided is invalid or exceeds the maximum allowed size

Namespace

api.errors.sft.InvalidAdditionalData

Constants โ€‹

maxOwnersPerSftToken โ€‹

Max unique owners that can own an SFT token

Namespace

api.consts.sft.maxOwnersPerSftToken

Type

type maxOwnersPerSftToken = u32

maxSerialsPerMint โ€‹

Max tokens that can be minted in one transaction

Namespace

api.consts.sft.maxSerialsPerMint

Type

type maxSerialsPerMint = u32

maxTokensPerSftCollection โ€‹

Max tokens that a collection can contain

Namespace

api.consts.sft.maxTokensPerSftCollection

Type

type maxTokensPerSftCollection = u32

palletId โ€‹

This pallet's Id, used for deriving a sovereign account ID

Namespace

api.consts.sft.palletId

Type

type palletId = FrameSupportPalletId

stringLimit โ€‹

The maximum length of a collection or token name, stored on-chain

Namespace

api.consts.sft.stringLimit

Type

type stringLimit = u32

Curated independently by Codeology. Source-attributed reference for The Root Network. Not affiliated with Futureverse / TRN Labs.