Assets (XE & XUSD)

Dual-asset model — XE for consensus weight and provider emission, XUSD for compute payment.


XE supports two native assets with distinct economic roles.

Units

Both assets use 6 decimal places (core.Decimals = 6). Every on-chain amount — balances, send amounts, lease costs, stakes — is an unsigned 64-bit integer in micro-units:

1 XE   = 1,000,000 µXE
1 XUSD = 1,000,000 µXUSD

A balance of 1000000 is one whole token, not a million. Where integer division on an amount is unavoidable, the protocol always rounds up.

XE

The native asset. Supply comes from the genesis block (42,000,000 XE) and from lease settlement, which mints XE to the provider in proportion to the lease's XUSD cost:

emission_µXE = max(1, ceil(cost_µXUSD × R_capped / 1000))
R_capped     = CapR(LockedR, LockedPayoutCap, LockedTWAP)

The emission parameters are locked onto the lease when the provider accepts it, so every node computes the same emission. The live epoch.0 publishes r_effective: 2000, so providers currently earn 2× the lease cost.

XE confers voting weight — an account's delegation weight is its XE balance in micro-XE.

XUSD

[!NOTE] XUSD is operator-issued on the testnet The faucet hands out XE from a pre-funded wallet; XUSD enters circulation only through mint blocks from the accounts under the state chain's sys.minter key, which the operators control. On testnet-0005 XUSD exists and settles leases (GET /supply shows the minted total), but unless you have been granted some, the lease pricing below describes what the protocol charges rather than something you can pay for yourself.

  • Lease payment — consumers pay XUSD for compute
  • No voting weight — XUSD is mintable by authorized minters, so letting it carry consensus weight would let a minter mint governance power along with the balance; only XE counts
  • Issuance — XUSD enters circulation only via minter mint blocks from accounts in sys.minter (claim logic was removed from the ledger). On the testnet that key holds a single operator account; the faucet sends XE and holds no minter key. sys.minter is designed for a bridge, and none is deployed.
  • Destruction — XUSD leaves circulation when a lease's escrow is burnt at settlement, or at escrow expiry when neither party acted. Cancellation and force-settle refund the escrow instead.

Asset Encoding

8-byte field, left-aligned UTF-8, zero-padded:

"XE"   → 58 45 00 00 00 00 00 00
"XUSD" → 58 55 53 44 00 00 00 00

Cost Formula

Lease pricing is deterministic, in micro-XUSD:

perHourMicro = vCPUs × 20_000 + ceil(memoryMB / 1024) × 10_000 + diskGB × 1_000
minutes      = ceil(duration / 60)
cost         = max(1, ceil(ceil(perHourMicro × minutes / 60) × multiplierMilli / 1000))

Rates are quoted per hour but billing granularity is one minute: the duration is rounded up to whole minutes and the hourly rate divided down by 60, so a whole-hour lease prices exactly as before and a sub-hour lease pays only for the minutes it uses. multiplierMilli is the provider's price multiplier scaled ×1000 (1000 = 1.000×), read from the performance certificate the lease references. Every validator recomputes this from the lease block's own fields (core.LeaseCost) and rejects a mismatch, so the amount is not negotiable.

ResourceRate
vCPU20,000 µXUSD/hour
Memory10,000 µXUSD/GB/hour
Disk1,000 µXUSD/GB/hour

Worked examples at 1.000×:

  • 1 vCPU, 1 GB memory, 10 GB disk, 1 day → 24 h × (20,000 + 10,000 + 10,000) = 960,000 µXUSD (0.96 XUSD)
  • 1 vCPU, 1 GB memory, 1 GB disk, 5 minutes → ceil(31,000 × 5 / 60) = 2,584 µXUSD; emission at R = 2.000 is 5,168 µXE

There is no provider stake on the current network (LeaseStakeDivisor is 0, so stake on every lease record is 0). XE emission at settlement = ceil(cost × R_capped / 1000) µXE (minimum 1), summed over the base term and every renewal segment at the R each locked.