Files
xrpl-dev-portal/_code-samples/issue-mpt-with-metadata/js

Issue MPT with Metadata (JavaScript)

Creates a sample MPT issuance with metadata encoded as JSON according to the XLS-89 standard, then updates its metadata and transfer fee, enables Can Trade, and declares its metadata immutable.

Quick setup and usage:

npm i
node issue-mpt-with-metadata.js

The script should output a validated transaction and decoded metadata, similar to the following:

=== Funding new wallet from faucet...===
Issuer address: rfZTKm4gusieAmq2r49kz9twtR3wSNiE4

=== Encoding metadata...===
Encoded mptMetadataHex:  7B226163223A22727761222C226169223A7B226375736970223A22393132373936525830222C22696E7465726573745F72617465223A22352E303025222C22696E7465726573745F74797065223A227661726961626C65222C226D617475726974795F64617465223A22323034352D30362D3330222C227969656C645F736F75726365223A22552E532E2054726561737572792042696C6C73227D2C226173223A227472656173757279222C2264223A2241207969656C642D62656172696E6720737461626C65636F696E206261636B65642062792073686F72742D7465726D20552E532E205472656173757269657320616E64206D6F6E6579206D61726B657420696E737472756D656E74732E222C2269223A2268747470733A2F2F6578616D706C652E6F72672F7462696C6C2D69636F6E2E706E67222C22696E223A224578616D706C65205969656C6420436F2E222C226E223A22542D42696C6C205969656C6420546F6B656E222C2274223A225442494C4C222C227573223A5B7B2263223A2277656273697465222C2274223A2250726F647563742050616765222C2275223A2268747470733A2F2F6578616D706C657969656C642E636F2F7462696C6C227D2C7B2263223A22646F6373222C2274223A225969656C6420546F6B656E20446F6373222C2275223A2268747470733A2F2F6578616D706C657969656C642E636F2F646F6373227D5D7D

=== Sending MPTokenIssuanceCreate transaction...===
{
  "TransactionType": "MPTokenIssuanceCreate",
  "Account": "rfZTKm4gusieAmq2r49kz9twtR3wSNiE4",
  "AssetScale": 4,
  "MaximumAmount": "50000000",
  "TransferFee": 0,
  "Flags": 34,
  "ImmutableFlags": 64,
  "MPTokenMetadata": "7B226163223A22727761222C226169223A7B226375736970223A22393132373936525830222C22696E7465726573745F72617465223A22352E303025222C22696E7465726573745F74797065223A227661726961626C65222C226D617475726974795F64617465223A22323034352D30362D3330222C227969656C645F736F75726365223A22552E532E2054726561737572792042696C6C73227D2C226173223A227472656173757279222C2264223A2241207969656C642D62656172696E6720737461626C65636F696E206261636B65642062792073686F72742D7465726D20552E532E205472656173757269657320616E64206D6F6E6579206D61726B657420696E737472756D656E74732E222C2269223A2268747470733A2F2F6578616D706C652E6F72672F7462696C6C2D69636F6E2E706E67222C22696E223A224578616D706C65205969656C6420436F2E222C226E223A22542D42696C6C205969656C6420546F6B656E222C2274223A225442494C4C222C227573223A5B7B2263223A2277656273697465222C2274223A2250726F647563742050616765222C2275223A2268747470733A2F2F6578616D706C657969656C642E636F2F7462696C6C227D2C7B2263223A22646F6373222C2274223A225969656C6420546F6B656E20446F6373222C2275223A2268747470733A2F2F6578616D706C657969656C642E636F2F646F6373227D5D7D"
}

=== Checking MPTokenIssuanceCreate results... ===

- MPToken created successfully with issuance ID: 00410265013D963E046BF6E9CEE92C2735C74F3BEFBA524E
- Explorer URL: https://devnet.xrpl.org/mpt/00410265013D963E046BF6E9CEE92C2735C74F3BEFBA524E

=== Confirming MPT Issuance metadata in the validated ledger... ===
Decoded MPT metadata:
 {
  asset_class: 'rwa',
  additional_info: {
    cusip: '912796RX0',
    interest_rate: '5.00%',
    interest_type: 'variable',
    maturity_date: '2045-06-30',
    yield_source: 'U.S. Treasury Bills'
  },
  asset_subclass: 'treasury',
  desc: 'A yield-bearing stablecoin backed by short-term U.S. Treasuries and money market instruments.',
  icon: 'https://example.org/tbill-icon.png',
  issuer_name: 'Example Yield Co.',
  name: 'T-Bill Yield Token',
  ticker: 'TBILL',
  uris: [
    {
      category: 'website',
      title: 'Product Page',
      uri: 'https://exampleyield.co/tbill'
    },
    {
      category: 'docs',
      title: 'Yield Token Docs',
      uri: 'https://exampleyield.co/docs'
    }
  ]
}

=== Sending MPTokenIssuanceSet transaction to update properties...===
{
  "TransactionType": "MPTokenIssuanceSet",
  "Account": "rfZTKm4gusieAmq2r49kz9twtR3wSNiE4",
  "MPTokenIssuanceID": "00410265013D963E046BF6E9CEE92C2735C74F3BEFBA524E",
  "MPTokenMetadata": "7B226163223A22727761222C226169223A7B226375736970223A22393132373936525830222C22696E7465726573745F72617465223A22342E373525222C22696E7465726573745F74797065223A227661726961626C65222C226D617475726974795F64617465223A22323034352D30362D3330222C227969656C645F736F75726365223A22552E532E2054726561737572792042696C6C73227D2C226173223A227472656173757279222C2264223A2241207969656C642D62656172696E6720737461626C65636F696E206261636B65642062792073686F72742D7465726D20552E532E205472656173757269657320616E64206D6F6E6579206D61726B657420696E737472756D656E74732E222C2269223A2268747470733A2F2F6578616D706C652E6F72672F7462696C6C2D69636F6E2E706E67222C22696E223A224578616D706C65205969656C6420436F2E222C226E223A22542D42696C6C205969656C6420546F6B656E222C2274223A225442494C4C222C227573223A5B7B2263223A2277656273697465222C2274223A2250726F647563742050616765222C2275223A2268747470733A2F2F6578616D706C657969656C642E636F2F7462696C6C227D2C7B2263223A22646F6373222C2274223A225969656C6420546F6B656E20446F6373222C2275223A2268747470733A2F2F6578616D706C657969656C642E636F2F646F6373227D5D7D",
  "TransferFee": 10,
  "Flags": 32,
  "ImmutableFlags": 65536
}

=== Confirming the updated MPT Issuance in the validated ledger... ===
TransferFee: 10
ImmutableFlags: 65600
Decoded MPT metadata:
 {
  asset_class: 'rwa',
  additional_info: {
    cusip: '912796RX0',
    interest_rate: '4.75%',
    interest_type: 'variable',
    maturity_date: '2045-06-30',
    yield_source: 'U.S. Treasury Bills'
  },
  asset_subclass: 'treasury',
  desc: 'A yield-bearing stablecoin backed by short-term U.S. Treasuries and money market instruments.',
  icon: 'https://example.org/tbill-icon.png',
  issuer_name: 'Example Yield Co.',
  name: 'T-Bill Yield Token',
  ticker: 'TBILL',
  uris: [
    {
      category: 'website',
      title: 'Product Page',
      uri: 'https://exampleyield.co/tbill'
    },
    {
      category: 'docs',
      title: 'Yield Token Docs',
      uri: 'https://exampleyield.co/docs'
    }
  ]
}