Skip to main content

MLS-01: Fungible Token Metadata

MLS-01 is Mintlayer's fungible token standard. Its metadata documents extend the common top-level fields with a token_type discriminator and a type_metadata object whose shape depends on that type.

Full schemas and example files: mintlayer/token-standards/mls01.

Token types

token_typeDescription
utilityGeneral-purpose utility or payment token
stablecoinPegged to fiat, commodity, or crypto
wrappedWrapped representation of an asset from another chain
governanceToken conferring voting rights over a protocol
lpLiquidity provider token from a DEX pool
rwaReal-world asset token (bond, real estate, fund, stock, contract, …)
memecoinCommunity meme token: no utility, fair launch, renounced ownership
commodityTokenized physical commodity: gold, silver, oil; redeemable for delivery
carbon_creditFungible verified carbon offset batch: vintage, methodology, retirement flag
syntheticTracks an external asset price via oracle; no ownership of the underlying
yield_bearingLending/staking receipt token that accrues interest
indexMarket-cap-weighted basket of tokens with monthly rebalancing
fan_tokenSports club or creator token with fan-vote decisions and perks
voucherMerchant gift card / coupon redeemable for goods or services
insuranceDeFi coverage token against exploits, oracle failures, etc.

type_metadata by type

Only the highlights are listed here; the repository contains the complete field documentation and a filled example per type.

stablecoin

FieldDescription
peg.currencyPegged asset (USD, EUR, XAU, BTC)
peg.mechanismfiat_backed | crypto_overcollateralized | commodity_backed | algorithmic | hybrid
peg.collateral_ratioe.g. 1.0 for fully backed
peg.issuerLegal entity responsible for reserves
peg.reserve_audit_urlLink to reserve proof/attestation

wrapped

FieldDescription
underlying.chain / underlying.symbolSource chain and original asset
wrapping_protocolProtocol managing the wrap/unwrap
wrapping_ratioe.g. "1:1"

governance

FieldDescription
governance.voting_mechanismtoken_weighted | quadratic | 1_token_1_vote
governance.quorum_thresholdMinimum participation to pass a vote
governance.proposal_thresholdMinimum tokens to submit a proposal
governance.timelock_daysDelay before execution
governance.dao_name / dao_urlDAO identity

lp

FieldDescription
pool.dex / pool.addressDEX name and on-chain pool address
pool.fee_tiere.g. 0.003 for 0.3%
pool.tokensThe two assets in the pair

commodity

FieldDescription
commodity.typeprecious_metal | base_metal | energy | agricultural
commodity.asset / commodity.unit / units_per_tokene.g. gold, troy_ounce, barrel
commodity.grade / purityQuality attributes
storageCustodian, locations, insurance, audit frequency
redemptionMinimum quantity, delivery fee, destination countries
price_feedOracle provider and URI

carbon_credit

FieldDescription
credit.unite.g. tonne_co2e
credit.vintage_year / credit_type / categoryavoidance | removal, e.g. REDD+
projectName, VCS/Gold Standard ID, methodology, location, SDG goals, co-benefits
registryName, standard, serial range, verification body
retirementretired flag, beneficiary, reason; once retired, a credit cannot be resold
bridgeProtocol used to bring the credit on-chain (e.g. Toucan)

synthetic

FieldDescription
tracksAsset name, ticker, exchange, ISIN, tracking_type, dividends_reflected
price_feedOracle provider, URI, update frequency, circuit-breaker deviation
collateralToken, minimum/safe ratio, liquidation threshold and penalty
risk_warningsArray of mandatory disclosures
trading_hoursTimezone, weekday window, weekend status

yield_bearing

FieldDescription
underlyingToken symbol and address being deposited
yield.apy_type / current_apy / accrual_mechanismfixed | variable; rebasing | exchange_rate
yield.apy_oracle_uriURL of the APY feed
exchange_rateCurrent redemption rate and oracle URI
protocolUtilization rate, total supply/borrowed
redemptionInstant vs delayed, withdrawal fee

index

FieldDescription
index.methodologymarket_cap_weighted | equal_weighted | liquidity_weighted
components[]Symbol, address, weight
rebalancingFrequency, mechanism (autonomous | governed), last/next date
navOracle and current NAV in USD
protocol.streaming_fee_annualManagement fee
issuanceMint/redeem contract

fan_token

FieldDescription
entityType (sports_club | musician | brand), name, sport, league, country
governance.voting_scope[]Decisions fans can vote on, plus scope disclaimer
perks[]Named benefits with descriptions
supplyTotal supply, club reserve vs public split
launchpadPlatform, initial offering price/date

voucher

FieldDescription
issuerLegal entity issuing the voucher
valueface_value_per_token, currency
redeemable_forDescription, categories, in-store/online flags
acceptance.locations / countriesWhere it is accepted
expiry.expiresfalse for open-ended
partial_redemption / combinable / refundableRedemption behavior

insurance

FieldDescription
coverage.against[]Risks covered with descriptions
coverage.covered_protocolName, version, contract address
coverage.limit_per_token_usd / payout_tokenCoverage limit and payout asset
validityValid from/until, cooldown period
premiumAnnual rate, token, prepaid vs streaming
claimsContract address, assessment body, payout delay
poolTotal/available capacity, utilization, capital-provider APY
exclusions[]What is explicitly not covered

memecoin

FieldDescription
meme.origin / archetypeanimal | person | object | phrase | original
launch.fair_launch / presale / team_allocation_pct / airdrop_pctLaunch structure
contract.ownership_renounced / mint_disabled / blacklist_function / pausableContract posture
liquidity.locked / lock_unlock_date / burned_lp_pctLiquidity commitments
tax.buy_tax_pct / sell_tax_pctTransaction taxes

rwa (real-world assets)

The rwa type covers several asset classes selected by asset_class: real_estate, bond, equity, commodity, fund, receivable, carbon_credit, ip. The repository ships one example per class (rwa-bond, rwa-real-estate, rwa-fund, rwa-stock, rwa-contract). Common fields:

FieldDescription
asset_classThe asset class discriminator
legalIssuer, custodian, auditor, legal counsel (entity + jurisdiction + registration)
jurisdictions[]{ country, regulatory_framework, token_classification, status } per jurisdiction
transfer_restrictionsKYC requirement, accredited-investor-only, geographic allow/blocklist, lockup
rightsYield (fixed/variable), voting, redemption terms
valuationMethod, last value, frequency
documents[]{ type, label, url, hash, date }: the hash allows integrity verification

Class-specific highlights:

  • Fund (asset_class: "fund"), fund.type (private_credit, private_equity, venture_capital, hedge_fund, money_market, real_estate_fund), vintage/fund life, manager (AUM, regulatory status), terms (commitments, nav_per_token, fees, hurdle, carried interest), liquidity (closed/open end, lock-up, distributions).
  • Stock (asset_class: "equity"), company, ticker, exchange, ISIN/CUSIP, tokens_per_share, rights.dividends, rights.voting (typically false with a proxy-voting note), corporate actions, valuation price-feed URI.
  • Contract (asset_class: "receivable"), contract.type (royalty_stream, lease, invoice, forward, service_agreement), counterparties (obligor, originator, SPV), cashflows (face value, payment frequency/waterfall, royalty rate), risk_factors[], valuation.method: "dcf".

Issuing an MLS-01 token

The on-chain issuance flow (including setting the metadata URI) is covered in Issue a new token; programmatic issuance via the SDK in JavaScript SDK: Tokens and Go SDK: Tokens.