Block Lattice

Per-account chains, cross-chain links, and the twelve block types.


Every account address corresponds to a chain of blocks. Each block's Previous field points to the hash of the preceding block. The first block has Previous set to "0".

Transfers require two blocks:

  1. A send block on the sender's chain debits the sender (creates a pending send)
  2. A receive block on the recipient's chain credits the recipient (consumes the pending send)

The sender and receiver do not need to be online at the same time.

Account chains open with a crediting block — receive, mint, multisig_open, or genesis:

Alice            Bob              Carol
┌─────────┐      ┌────────┐      ┌─────────┐
│ recv    │      │ recv   │      │ recv    │
│ bal: 10 │      │ bal: 5 │      │ bal: 10 │
└───┬─────┘      └───┬────┘      └───┬─────┘
    │                │               │
┌───▼─────┐      ┌───▼────┐      ┌───▼─────┐
│ send    │─────▶│ recv   │      │ send    │
│ to: Bob │      │ src:   │      │ to: Bob │
│ amt: 5  │      │ bal: 10│      │ amt: 3  │
│ bal: 5  │      └───┬────┘      │ bal: 7  │
└─────────┘          │           └─────────┘
                 ┌───▼────┐
                 │ recv   │◀── from Carol
                 │ bal: 13│
                 └────────┘

Properties

  • No contention between accounts (parallel processing)
  • Instant finality for non-conflicting transactions

XE Extensions

  • Dual assets (XE and XUSD)
  • Additional block types (lease, lease_accept, lease_settle)
  • State chain for governance
  • blake2b PoW as anti-spam
  • Voting weight from delegated XE balances (XUSD is mintable and confers none)

Block Types

Twelve block types are defined:

TypeByteAssetDebitsCredits
send0x01XE or XUSDsender
receive0x02XE or XUSDrecipient
lease0x04XUSDconsumer (escrow)
lease_accept0x05XUSDprovider (stake)
lease_settle0x06XEprovider (emission)
genesis0x07XEtreasury (42,000,000 XE)
multisig_open0x08XE or XUSD
multisig_update0x09XE or XUSD
lease_cancel0x0AXUSDconsumer (refund)
burn0x0BXEself
lease_force_settle0x0CXUSDconsumer (refund)
mint0x0DXUSDminter (new supply)

0x03 is a retired, unallocated gap: the permissionless claim type was removed — XUSD now enters circulation only via mint blocks on accounts registered under the state chain's sys.minter key. Genesis is XE-only and its balance must equal GenesisSupply (42,000,000 XE).