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.
git clone https://github.com/TimurOzer/BaklavaBlockChain.git
cd BaklavaBlockChain
go build -o baklava ./cmd/baklava
./baklavaRun 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:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -trimpath -ldflags='-s -w' -o baklava ./cmd/baklavaGet 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.
curl -O https://baklava.network/genesis.json
sha256sum genesis.json
# 92c9b8de6522ee87dec470e11658ea87b8cd6c7256d2bf518fb51f361258b5d7Two 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:
./baklava account -rpc https://rpc.baklava.network \
bkx1x54a66x38meej805yksv20y59u3wng7wufggz7The 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.