Stellar Namespace - Assets

Author Pelle Braendgaard
Discussions-To https://github.com/ChainAgnostic/namespaces/pull/157
Status Draft
Type Standard
Created 2025-11-06
Requires CAIP-2, CAIP-10, CAIP-19, CAIP-20

CAIP-19

For context, see the CAIP-19 specification.

Rationale

In the Stellar ecosystem, assets can be represented in several distinct formats. The native asset (lumens/XLM) is identified using the SLIP-44 coin type registry (coin type 148), while issued assets are uniquely identified by combining an asset code (1-12 characters) with an issuer account address, separated by a hyphen. Additionally, Protocol 18 introduced liquidity pool shares (defined in CAP-38) which represent fractional ownership in automated market maker pools, and Protocol 20 introduced Soroban smart contract tokens following the SEP-41 token interface standard.

Syntax

After the CAIP-2 namespace+chainID, a slash defines an asset_namespace and an asset_reference. Stellar supports multiple asset types with different identification schemes:

Asset Namespaces

Namespace Description Reference Format
slip44 Native lumens (XLM) via SLIP-44 148 (Stellar’s coin type)
asset Issued asset with code and issuer {asset_code}-{issuer_address}
cap38 Liquidity pool shares (CAP-38) {pool_id} (64-char hex hash)
sep41 Soroban smart contract token (SEP-41) {contract_address} (56-char strkey)

Asset Code Requirements

Asset codes for issued assets must:

  • Consist of printable ASCII characters (octets 0x21 through 0x7e)
  • Be 1-12 characters in length
  • Be case-sensitive
  • Not contain the hyphen character (-) as it is used as the delimiter

Issuer Address

The issuer address must be a valid Stellar G-address (56 characters, starting with G).

Liquidity Pool ID

Liquidity pool IDs are deterministically calculated as:

  • SHA-256 hash of the liquidity pool parameters
  • Pool parameters include: pool type and both assets in lexicographical order
  • Represented as a 64-character lowercase hexadecimal string
  • Only one pool can exist for a given asset pair

Contract Address

Soroban contract addresses are:

  • Stellar strkey-encoded contract addresses (56 characters, starting with C)
  • For Stellar Asset Contracts (SAC), the address can be derived from the classic asset identifier
  • Can be obtained using: stellar contract id asset --asset {code}:{issuer} --network {network}

RegEx

The RegEx validation strings are as follows:

asset_id:           asset_type
asset_type:         chain_id + "/" + asset_namespace + ":" + asset_reference
chain_id:           namespace + ":" + blockchain_id (as defined in [CAIP-2])

asset_namespace:    "slip44" | "asset" | "cap38" | "sep41"

asset_reference:    slip44_ref | asset_ref | cap38_ref | sep41_ref
slip44_ref:         "148"
asset_ref:          asset_code + "-" + issuer_address
asset_code:         [!-,.-~]{1,12}
issuer_address:     G[A-Z2-7]{55}
cap38_ref:          [0-9a-f]{64}
sep41_ref:          C[A-Z2-7]{55}

Note: The asset_code regex [!-,.-~] excludes the hyphen character (ASCII 0x2D) from the printable ASCII range (0x21-0x7E) since hyphen is used as the delimiter.

Semantics

Native Asset (XLM/Lumens)

The native asset is identified using the slip44 namespace with coin type 148 as registered in the SLIP-44 registry. The native asset is unique and does not require an issuer. It is used for:

  • Transaction fees (which are burned/destroyed)
  • Minimum account balance requirements (base reserves)
  • Bridge currency for cross-asset transactions

Example: stellar:pubnet/slip44:148

Issued Assets

Issued assets are created by issuers and must be explicitly trusted by recipients before they can be received. The combination of asset code (1-12 characters) and issuer address uniquely identifies an asset. On the Stellar network, asset codes of 1-4 characters are stored as AlphaNum4, while codes of 5-12 characters are stored as AlphaNum12, but both use the same asset namespace in CAIP-19.

Examples:

  • USDC issued by Circle: asset:USDC-{issuer_address}
  • Custom 8-character code: asset:MYTOKEN8-{issuer_address}

Liquidity Pool Shares (CAP-38)

Liquidity pool shares represent fractional ownership in constant product automated market maker pools (CPAMM) as defined in CAP-38. These shares:

  • Are non-transferable (cannot be sent between accounts)
  • Can be minted by depositing assets into the pool
  • Can be redeemed for the underlying assets
  • Are identified by a deterministic pool ID hash
  • Use the cap38 namespace

Soroban Contract Tokens (SEP-41)

Soroban contract tokens follow the SEP-41 token interface standard and include:

  • Stellar Asset Contracts (SAC): Wrapped versions of classic Stellar assets with smart contract functionality
  • Custom CAP-46-6 -compliant tokens: Fully custom tokens implemented as Soroban smart contracts
  • All tokens use the sep41 namespace and are identified by their contract address

Examples

# Native asset (lumens/XLM) on Pubnet
stellar:pubnet/slip44:148

# Native asset on Testnet
stellar:testnet/slip44:148

# USDC (4-character code) on Pubnet
stellar:pubnet/asset:USDC-GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN

# Custom token with 8-character code on Pubnet
stellar:pubnet/asset:MYCOIN88-GDQP2KPQGKIHYJGXNUIYOMHARUARCA7DJT5FO2FFOOKY3B2WSQHG4W37

# Single character asset code on Testnet
stellar:testnet/asset:X-GCEZWKCA5VLDNRLN3RPRJMRZOX3Z6G5CHCGSNFHEYVXM3XOJMDS674JZ

# Liquidity pool (XLM-USDC pool) on Pubnet
stellar:pubnet/cap38:67260c4c1807b262ff851b0a3fe141194936bb0215b2f77447f1df11998eabb9

# Soroban token contract (USDC) on Pubnet
stellar:pubnet/sep41:CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75

# Custom Soroban token contract on Testnet
stellar:testnet/sep41:CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSC4

Backwards Compatibility

Issued Stellar assets (represented here as the asset namespace) correspond to the native Stellar alphanum4 and alphanum12 asset types, which have been supported since the genesis of the Stellar network and maintain full backward compatibility.

Liquidity pool shares were introduced in Protocol 18 (November 2021) and may not be supported by older clients.

Soroban contract tokens were introduced in Protocol 20 (February 2024) and require Soroban-aware clients and tooling.

References

Copyright and related rights waived via CC0.

Citation

Please cite this document as:

Pelle Braendgaard, "namespaces/stellar-caip19: Stellar Namespace - Assets [DRAFT]," Chain Agnostic Namespaces, stellar-caip19, November 2025 / . [Online serial]. Available: https://github.com/ChainAgnostic/namespaces/stellar-caip19.md