ZooBC wiki
ZooBC basics

What ZooBC is

ZooBC is a public blockchain with its own coin, ZBC. Anyone can open an account, send transactions and run a node that checks every block. Its consensus, Proof of Participation, has no mining: blocks are made in turn by registered nodes drawn by lot, and the new coins go to the nodes that do the work of relaying data for the network.

A public chain with its own coin

ZooBC is not a token on another network. It has its own chain, its own nodes and its own native coin, ZBC, which pays transaction fees, node stakes and rent. Nobody needs permission to follow the chain or to check it: every block, balance and transaction is public, and any node's API answers anyone (accounts and addresses).

There are three separate ZooBC networks, devnet, testnet and mainnet (devnet, testnet and mainnet). Each begins with its own genesis block, whose hash is the chain's identity.

How blocks are made

A new block comes about every 15 seconds (blocks and time). Blocks are not won by solving puzzles. The node registry and its seats is the on-chain set of nodes allowed to make blocks, and after each block a random draw from that block's seed names who may make the next one (draw). Every node can repeat the draw and reach the same answer, so a block from a node that was not drawn is refused. Every active seat has the same chance in the draw: hardware, balance and stake do not change it.

Proof of Participation also measures the work that keeps a network alive: passing blocks and transactions on to other nodes. When a registered node receives data from another registered node, it signs a receipt for it, and the receipts a node can show move its participation score. The score weights the coinbase lottery that shares out each block's new coins and fees. Security rests on Ed25519 signatures and the SHA3-256 hash, not on spent energy.

Blocks come every 15 seconds; for each block one node of the node registry is drawn by lot to make it. There is no mining.
Blocks come every 15 seconds; for each block one node of the node registry is drawn by lot to make it. There is no mining.

What a node is

A node is the ZooBC software running on a computer. It downloads the chain, checks every block and transaction against the same rules as every other node, and keeps the resulting state: balances, tokens, the node registry and the rest. It serves a public HTTP API (node API) and the official wallet page at /wallet (getting a wallet and keeping it safe).

A node can take part at two levels:

  • Follower. Anyone can run a node that only follows and checks the chain. It lets its owner verify everything without trusting anyone, but it makes no blocks.
  • Producer. A node that joins the node registry can make blocks. Its owner registers the node key from an ordinary account, locks a stake and waits in the queue until the node is admitted (registering a node). From then on the node is drawn to make blocks, relays data to the peers the protocol assigns it, signs receipts for what it receives, and shares in the new coins according to its score.

A wallet is not a node: it is a client that talks to a node's API. And no ZooBC node mines.

Features built into the protocol

ZooBC has no virtual machine for user code, no EVM and no gas. Every feature is a built-in transaction type with a fixed byte layout and fixed rules: sending ZBC, issuing a token, placing an order on a market, creating an escrow, storing a file, linking accounts into a group, scheduling payments and more. From version 0.5.8 the protocol defines 73 transaction type numbers (transactions, what you can do on ZooBC).

This is a deliberate trade-off. Every node knows in advance everything a transaction can do and applies it in exactly the same way, so the effect of a transaction never depends on who processes it, and a wallet can compute the minimum fee before it signs. In exchange, a new kind of feature arrives with a protocol release (releases and updates) rather than by deploying a contract.

Features are built into the ZooBC protocol as transaction types: send ZBC, tokens, markets, escrow, datasets, files, apps, account groups, schedules; 73 transaction types from version 0.5.8. There is no virtual machine for user code.
Features are built into the ZooBC protocol as transaction types: send ZBC, tokens, markets, escrow, datasets, files, apps, account groups, schedules; 73 transaction types from version 0.5.8. There is no virtual machine for user code.

Rules that no key can change

A chain's rules come with its genesis and with the node software. From version 0.5.8 a chain has 121 consensus rules, all in force from height 0. No key can change a rule, a parameter or a balance by signing a message: balances change only through transactions that every node validates, and the registry's seats can only move a few prices inside fixed bounds (price votes). The ZooBC Foundation holds the first seats of each chain and publishes the command-line tools, but it has no master key.

See also