On this page
Issue assets and compose their utility.

One network, several asset surfaces

Paxeer X combines native bank denominations, EVM token interfaces, and the LayerX Asset registry. Choose the authority and settlement path that match the instrument. A token name is display metadata: the registered asset identifier, bank denomination, or contract address identifies the actual balance authority.

SurfaceIdentityPrimary use
LayerX registered asset32-byte asset ID and issuer DIDAuthorized issuance, agent payments, payer grants, supply-bound receipts.
Native bank assetBank denominationNative transfers, tokenfactory issuance, module settlement.
ERC-20 interfaceEVM addressWallet and contract integration, including native-asset pointers.
Launchpad instrumentNative denomination plus ERC-20 pointerFixed-supply issuance and a virtual-reserve trading market.

Agents create and operate businesses, and trade instruments those businesses issue. The business, its instrument, and the agent acting for it have separate identities. A token balance does not by itself define business ownership, revenue rights, or a legal claim: those terms belong to the instrument and its associated agreement. Read Launchpad for issuance into a curve market and Exchange for market execution.

Register a LayerX asset

The Asset module is module 1. Registration records the issuer, symbol, name, decimals, supply cap, custody reference, and salt. Amounts are unsigned integer counts of the smallest unit; decimals only affect presentation. For example, an asset with six decimals represents 12.5 display units as 12500000 base units.

FieldRule
Symbol1–16 ASCII bytes.
Name1–32 bytes of valid UTF-8.
DecimalsAt most 38.
Supply capUnsigned 128-bit integer; zero means uncapped.
Issuer kind1 for native issuance; 2 for Paxeer custody.
Custody referenceAt most 128 bytes; empty for native issuance.

Identifiers and accounts

native_asset_id = SHA-256("LX:ASSET:v1" || issuer_did_id32 || salt32)
account_id = SHA-256("LX:ACCOUNT:v1" || u32_be(name_length) || name_bytes)

agent:<DID>:main
agent:<DID>:asset:<asset_id_hex64>

Hexadecimal text inside canonical account names is lowercase. Custody-backed assets use the supplied custody asset ID rather than deriving a native ID. Registration creates a version-3 asset record and an issuance account. Duplicate asset IDs are rejected.

Issue, transfer, and retire units

  1. Register the asset under the issuing DID and record its asset ID.
  2. Open a per-asset account for the actor receiving or holding units.
  3. Mint a positive base-unit amount to a matching asset account, with issuer authorization and available issuance units.
  4. Send units directly or authorize a recipient to draw against a scoped payer grant.
  5. Burn units from an actor-owned account when retiring supply.

Mint moves units from the issuance account to the destination. Burn returns units to issuance. The module checks account ownership, asset identity, available balance, and supply invariants before updating balances. A nonzero supply cap limits issuance. Supply before and after are bound into asset transition receipts, with withdrawal handled through its separate settlement path.

OrdinalOperationAuthority or effect
1RegisterCreate the canonical asset and issuance account.
2 / 3Pause / unpauseRecorded issuer controls the asset pause state.
4Account openOpen the actor's account for the asset.
5 / 6Send / receiveOwner-authorized send or grant-authorized recipient draw.
7 / 8Grant issue / revokeCreate or revoke a narrowly scoped payer grant.
10 / 11Mint / burnIssuer-controlled mint; actor-owned source for burn.

Scoped payments and recurring draws

A payer grant names one recipient, one payer account, one asset, per-draw maximum, total allowance, expiry, and purpose. Recurring grants also bind a window length. Wildcard recipients and accounts are excluded. Receive verifies the grant, receiver authorization, purpose, network, signed context, and revocation sequence together.

A business can authorize a service agent to collect metered fees without handing it unrestricted wallet authority. Keep the service purpose and maximum draw explicit; revoke the grant when the relationship ends. Payments explains direct transfers and x402 covers metered service collection.

Pause and custody settlement

Only the recorded issuer pauses or unpauses an asset. A pause blocks send, mint, burn, account opening, grant issuance, and withdrawal. Revocation remains a distinct operation, allowing authorization to be withdrawn without creating a new payment.

Custody withdrawal debits the asset account into the withdrawal settlement account and binds a payout recipient, checkpoint ID, amount, and fee. Paxeer-side payout uses a claim against a finalized checkpoint. Use the Bridge workflow for that claim; an ordinary asset transfer does not release custody funds.

Discover balances and verify context

lx_listAssets lists registry records in ascending asset-ID order. Supply an optional exclusive cursor and a limit from 1 to 256; the default is 64. Follow next_cursor until it is null. lx_getAsset retrieves one asset, lx_getBalances reads DID accounts, and lx_estimateFee prices canonical activities.

Reads carry an observed sequence and committed state root. The label authenticated_committed_snapshot identifies an authenticated committed snapshot; independent inclusion proofs and finality are separate verification concerns. Match the snapshot, asset identifier, issuer, pause state, and base-unit amount before signing.

Continue building

Use Tokenfactory for native denomination administration, Pointers for cross-runtime token interfaces, and Launchpad for fixed-supply curve markets.

Paxeer X · System documentationBack to top ↑

Ask Paxeer X Docs

Answers from the documentation.

What would you like to know?

Ask a question, find a guide, or get help with your next step.

Enter to send · Shift+Enter for a new line