NFI

The NFI (Non-Fungible Intelligence) pallet allows for enabling NFI compatibility on new or existing collections. Once enabled, when an NFI-compatible NFT/SFT is minted, our trusted relayer will automatically generate the NFI data, storing the resulting NFIData on-chain.

Note: There may be an additional charge for NFTs minted with NFI enabled. See the MintFee section below. 0.5% of the mint fee is sent to the Vortex for redistribution to network participants.


Pallet Calls


Enable NFI

Currently disabled on TRN mainnet.

Enables NFI compatibility on a collection. Caller must be the collection owner

Namespace:

api.tx.nfi.enableNfi

Type:

function enableNfi(
  collection_id: u32,
  sub_type: SeedPrimitivesNfiNFISubType
)

Manual Data Request

Users can manually request NFI data if it does not already exist on a token. This can be used to manually request data for pre-existing tokens in a collection that has had NFI enabled Caller must be either the token owner or the collection owner Note. the mint fee will need to be paid for any manual request

Namespace:

api.tx.nfi.manualDataRequest

Type:

function manualDataRequest(
  token_id: (u32,u32),
  sub_type: SeedPrimitivesNfiNFISubType
)

Submit NFI Data

Submit NFI data to the chain. Caller must be the registered relayer. NFI must be enabled for the collection

Namespace:

api.tx.nfi.submitNfiData

Type:

function submitNfiData(
  token_id: (u32,u32),
  data_item: SeedPrimitivesNfiNFIDataType
)

Set Fee Details (Sudo Only)

Set the NFI mint fee which is paid per token by the minter. Setting fee_details to None removes the mint fee

Namespace:

api.tx.nfi.setFeeDetails

Type:

function setFeeDetails(
  sub_type: SeedPrimitivesNfiNFISubType,
  fee_details: Option<SeedPrimitivesNfiFeeDetails>
)

Set Relayer (Sudo Only)

Set the relayer address. This address is able to submit the NFI data back to the chain. Caller must be sudo

Namespace:

api.tx.nfi.setRelayer

Type:

function setRelayer(
  relayer: SeedPrimitivesSignatureAccountId20,
)

Set Fee To (Sudo Only)

Set the 'FeeTo' account. Caller must be sudo

Namespace:

api.tx.nfi.setFeeTo

Type:

function setFeeTo(
  fee_to: Option<SeedPrimitivesSignatureAccountId20>,
)

Pallet Storage


Relayer

Stores the permission enabled relayer account

Namespace:

api.query.nfi.relayer

Type:

function relayer(): Option<SeedPrimitivesSignatureAccountId20>

Mint Fee

Stores the extra mint fee that is charged for NFI enabled tokens

Namespace:

api.query.nfi.mintFee

Type:

function mintFee(
  SeedPrimitivesNfiNFISubType
): SeedPrimitivesNfiFeeDetails

NFI Data

Stores the NFI Data linked to a token

Namespace:

api.query.nfi.nfiData

Type:

function nfiData(
  (u32,u32), // token_id
  SeedPrimitivesNfiNFISubType
): SeedPrimitivesNfiDataType

NFI Enabled

Whether or not NFI is enabled for a collection

Namespace:

api.query.nfi.nfiEnabled

Type:

function nfiEnabled(
  u32, // collection_id
  SeedPrimitivesNfiNFISubType
): boolean

Fee To

The Fee To address that collects network fees

Namespace:

api.query.nfi.feeTo

Type:

function feeTo(): Option<SeedPrimitivesSignatureAccountId20>

Pallet Events


Data Request

Request for new NFI data creation

Namespace:

api.events.nfi.DataRequest

Type:

type DataRequest = {
  sub_type: SeedPrimitivesNfiNFISubType,
  caller: SeedPrimitivesSignatureAccountId20,
  collection_id: u32,
  serial_numbers: Vec<u32>
}

Data Set

A new NFI storage item has been set

Namespace:

api.events.nfi.DataSet

Type:

type DataSet = {
  sub_type: SeedPrimitivesNfiNFISubType,
  token_id: (u32,u32),
  data_item: SeedPrimitivesNfiNFIDataType
}

Data Removed

NFI storage has been removed for a token

Namespace:

api.events.nfi.DataRemoved

Type:

type DataRemoved = {
  token_id: (u32,u32)
}

Fee Details Set

New fee details have been set

Namespace:

api.events.nfi.FeeDetailsSet

Type:

type FeeDetailsSet = {
  sub_type: SeedPrimitivesNfiNFISubType,
  fee_details: SeedPrimitivesNfiFeeDetails
}

Fee To Set

The network fee receiver address has been updated

Namespace:

api.events.nfi.FeeToSet

Type:

type FeeToSet = {
  account: SeedPrimitivesSignatureAccountId20
}

Mint Fee Paid

Additional mint fee has been paid to the receiver address

Namespace:

api.events.nfi.MintFeePaid

Type:

type MintFeePaid = {
  sub_type: SeedPrimitivesNfiNFISubType,
  who: SeedPrimitivesSignatureAccountId20,
  asset_id: u32,
  total_fee: u128
}

NFI Enabled

NFI compatibility enabled for a collection

Namespace:

api.events.nfi.NfiEnabled

Type:

type NfiEnabled = {
  sub_type: SeedPrimitivesNfiNFISubType,
  collection_id: u32,
}

Relayer Set

A new relayer has been set

Namespace:

api.events.nfi.RelayerSet

Type:

type RelayerSet = {
  account: SeedPrimitivesSignatureAccountId20
}

Pallet Errors


Invalid Mint Fee

The mint fee must be a valid integer above 0

Namespace:

api.errors.nfi.InvalidMintFee

Not Enabled

NFI storage is not enabled for this collection

Namespace:

api.errors.nfi.NotEnabled

Not Relayer

The caller is not the relayer and does not have permission to perform this action

Namespace:

api.errors.nfi.NotRelayer

Not Collection Owner

The caller is not the collection owner and does not have permission to perform this action

Namespace:

api.errors.nfi.NotCollectionOwner

Not Token Owner

The caller is not the token owner and does not have permission to perform this action

Namespace:

api.errors.nfi.NotTokenOwner

No Token

The token does not exist

Namespace:

api.errors.nfi.NoToken

Pallet Constants


Network Fee Percentage

Percentage of sale price to charge for network fees

Namespace:

api.consts.nfi.NetworkFeePercentage

Type:

type NetworkFeePercentage = Permill

Max Data Length

Maximum length of data stored per token

Namespace:

api.consts.nfi.MaxDataLength

Type:

type MaxDataLength = u32

Last updated

© 2023 -> ♾️