Calls

enableXls20Compatibility

Enables XLS-20 compatibility on a collection. However, this will remove the ability to change the collection metadata.
  • Collection must not have any tokens minted
  • Caller must be collection owner
Namespace
api.tx.xls20.enableXls20Compatibility
Type
function enableXls20Compatibility(
  collection_id: u32
)

fulfillXls20Mint

Submit XLS-20 token ids to The Root Network Only callable by the trusted relayer account Can apply multiple mappings from the same collection in one transaction Namespace
api.tx.xls20.fulfillXls20Mint
Type
function fulfillXls20Mint(
  collection_id: u32,
  token_mappings: Vec<(u32,[u8;64])>
)

reRequestXls20Mint

Namespace
api.tx.xls20.reRequestXls20Mint
Type
function reRequestXls20Mint(
  collection_id: u32,
  serial_numbers: Vec<u32>
)

setRelayer

Set the relayer address Namespace
api.tx.xls20.setRelayer
Type
function setRelayer(
  relayer: SeedPrimitivesSignatureAccountId20
)

setXls20Fee

Set the xls20 mint fee which is paid per token by the collection owner This covers the additional costs incurred by the relayer for the following:
  • Minting the token on XRPL
  • Calling fulfill_xls20_mint on The Root Network
Namespace
api.tx.xls20.setXls20Fee
Type
function setXls20Fee(
  new_fee: u128
)

Storage

relayer

The permissioned relayer Namespace
api.query.xls20.relayer
Type
function relayer(

): Option<SeedPrimitivesSignatureAccountId20>

xls20MintFee

The extra cost of minting an XLS-20 compatible NFT Namespace
api.query.xls20.xls20MintFee
Type
function xls20MintFee(

): u128

xls20TokenMap

Maps from TRN native token_id to XLS-20 TokenId Namespace
api.query.xls20.xls20TokenMap
Type
function xls20TokenMap(
  u32,
  u32
): Option<[u8;64]>

Events

RelayerSet

A new relayer has been set Namespace
api.events.xls20.RelayerSet
Type
type RelayerSet = {
  account: SeedPrimitivesSignatureAccountId20
}

Xls20CompatibilityEnabled

A collection has had XLS-20 compatibility enabled Namespace
api.events.xls20.Xls20CompatibilityEnabled
Type
type Xls20CompatibilityEnabled = {
  collection_id: u32
}

Xls20MappingSet

A new XLS20 mapping has been set Namespace
api.events.xls20.Xls20MappingSet
Type
type Xls20MappingSet = {
  collection_id: u32,
  mappings: Vec<(u32,[u8;64])>
}

Xls20MintFeePaid

Additional mint fee for XLS-20 mint has been paid to relayer Namespace
api.events.xls20.Xls20MintFeePaid
Type
type Xls20MintFeePaid = {
  collection_owner: SeedPrimitivesSignatureAccountId20,
  total_fee: u128
}

Xls20MintFeeSet

A new Xls20 Mint Fee has been set Namespace
api.events.xls20.Xls20MintFeeSet
Type
type Xls20MintFeeSet = {
  new_fee: u128
}

Xls20MintRequest

Request sent to XLS20 Relayer Namespace
api.events.xls20.Xls20MintRequest
Type
type Xls20MintRequest = {
  collection_id: u32,
  serial_numbers: Vec<u32>,
  token_uris: Vec<Bytes>
}

Errors

MappingAlreadyExists

There is already a Root native -> XLS-20 mapping for this token Namespace
api.errors.xls20.MappingAlreadyExists

NotCollectionOwner

No the owner of the collection Namespace
api.errors.xls20.NotCollectionOwner

NoToken

The NFT does not exist Namespace
api.errors.xls20.NoToken

NotRelayer

The caller is not the relayer and does not have permission to perform this action Namespace
api.errors.xls20.NotRelayer

NotXLS20Compatible

The collection is not compatible with XLS-20 Namespace
api.errors.xls20.NotXLS20Compatible

Xls20MintFeeTooLow

The supplied fee for minting XLS-20 tokens is too low Namespace
api.errors.xls20.Xls20MintFeeTooLow
undefined