Blocks and the sequencer
The Divi Games chain is a side-chain run by one sequencer: the operator's divi-gamechain node. It
collects signed transactions in a mempool, orders them, and produces blocks.
- A block is produced every
block_ms(default 2000 ms) when the mempool is not empty. - An empty heartbeat block is produced every 60 s, so the chain keeps a pulse and keeps picking up Divi checkpoints.
Each block header holds:
height, prev_hash, time_ms,
divi: { height, hash }, // the Divi checkpoint (MCHK, lesson 3)
tx_root, // SHA256 over the ordered txids
state_root, // lesson 2
producer // the sequencer's address
block_hash = SHA256(canonical header bytes), and the sequencer signs dg-block:<height>:<block_hash> as a
Divi signed message, the same kind of signature your wallet makes.
Honest limits
One sequencer means you trust one operator to include your transaction and not to reorder unfairly. That is a deliberate trade for a testnet game: it is fast and simple, and anyone can check the history afterwards (replay, lesson 5). Funds are testnet funds only.
Failed actions still count
If an action fails (say a move into a taken cell), the transaction is still in the block with
ok: false and an error. Its writes are discarded, but its nonce is used up, so your next transaction
must use the next nonce. The account view /v1/account/<addr> has next_nonce, which also counts
transactions still in the mempool.