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 µXUSDA 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
mintblocks from the accounts under the state chain'ssys.minterkey, which the operators control. Ontestnet-0005XUSD exists and settles leases (GET /supplyshows 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
mintblocks from accounts insys.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.minteris 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 00Cost 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.
| Resource | Rate |
|---|---|
| vCPU | 20,000 µXUSD/hour |
| Memory | 10,000 µXUSD/GB/hour |
| Disk | 1,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.