Baklava

Install

One binary does everything: it makes keys, writes a genesis file, runs a node, signs transfers and serves the faucet.

Build it

There are no binary releases yet. Building needs Go 1.27 and nothing else — the chain is pure Go, so there is no C compiler in the way and it cross-compiles to anything Go targets.

build
git clone https://github.com/TimurOzer/BaklavaBlockChain.git
cd BaklavaBlockChain
go build -o baklava ./cmd/baklava
./baklava

Run with no arguments and you get the console, which is the friendlier half of the same program. baklava -h lists the commands a script or a service file would use instead.

For a server

A static binary depends on nothing the machine has to already have, which is what makes deploying it a copy:

cross-compile for linux/amd64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
    go build -trimpath -ldflags='-s -w' -o baklava ./cmd/baklava

Get the genesis file

A chain is derived from its genesis file: the accounts, the registry and the consensus parameters all come out of it, and the hash of the block it produces is the chain's identity. Without the right file you are not on this network — you are on a different one that happens to share a name.

download and check
curl -O https://baklava.network/genesis.json
sha256sum genesis.json
# 92c9b8de6522ee87dec470e11658ea87b8cd6c7256d2bf518fb51f361258b5d7

Two hashes, and only one of them is the chain

The checksum above is for the download and has nothing to do with consensus — nothing in the protocol hashes the file. The chain's identity is the hash of the block the file derives, which baklava init prints and every node agrees on:

805e52ef1fea4797241e602ef053991904c8cdef19dcc820e2677f54bad7d8e2

Two files that produce the same block are the same chain. A file whose bytes differ but whose block matches is fine; a file whose block differs is another network, however similar it looks.

Check that it works

Ask the public node for its tip. Nothing here needs a key:

a first query
./baklava account -rpc https://rpc.baklava.network \
    bkx1x54a66x38meej805yksv20y59u3wng7wufggz7

The last line of the answer is the one that matters — Proof folds to the header's state root. The balance came with a Merkle proof and the command checked it, so what you are reading is not the node's word for it.

Next

Make a wallet and move some tokens.