Block Lattice
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".
Cross-Chain Links
Transfers require two blocks:
- A send block on the sender's chain debits the sender (creates a pending send)
- 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.
Alice Bob Carol
┌─────────┐ ┌────────┐ ┌─────────┐
│ claim │ │ recv │ │ claim │
│ 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
- Compact representation (122–226 bytes per block)
Differences from Nano
- 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 XUSD balances only
Block Types
Ten block types are defined:
| Type | Byte | Asset | Debits | Credits | Size |
|---|---|---|---|---|---|
send | 0x01 | XE or XUSD | sender | — | 162B |
receive | 0x02 | XE or XUSD | — | recipient | 154B |
claim | 0x03 | XUSD | — | self (+100) | 122B |
lease | 0x04 | XUSD | consumer | — | 226B |
lease_accept | 0x05 | XUSD | provider (stake) | — | 162B |
lease_settle | 0x06 | XE | — | provider (emission) | 162B |
genesis | 0x07 | XE or XUSD | — | self (initial) | 122B |
multisig_open | 0x08 | XE or XUSD | — | — | varies |
multisig_update | 0x09 | XE or XUSD | — | — | varies |
lease_cancel | 0x0A | XUSD | — | consumer (refund) | 154B |