Home / Docs / Block Lattice

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:

  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.

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

Differences from Nano

Block Types

Ten block types are defined:

TypeByteAssetDebitsCreditsSize
send0x01XE or XUSDsender162B
receive0x02XE or XUSDrecipient154B
claim0x03XUSDself (+100)122B
lease0x04XUSDconsumer226B
lease_accept0x05XUSDprovider (stake)162B
lease_settle0x06XEprovider (emission)162B
genesis0x07XE or XUSDself (initial)122B
multisig_open0x08XE or XUSDvaries
multisig_update0x09XE or XUSDvaries
lease_cancel0x0AXUSDconsumer (refund)154B