Source code
One repository, under the MIT licence: the node, the wallet, the command line, the parameter sets and the golden vectors that define the protocol. Everything the network runs on is in it.
Nothing on this site is worth more than what you can check without asking anybody, and this is where the checking starts. An anonymous author cannot offer you a reputation; what is on offer instead is a tree you can read, build, and compare against the binaries you were handed.
Clone it#
git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
Or read it in the browser first: gitlab.com/zycord-group/zycord-node.
The canonical locations of this project — this one included — are pinned in the
signed attestation in the announcement
thread, under the project key E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29.
A tree hosted anywhere else is a copy: it may be honest, it may be stale, it may be hostile, and
nothing on this page can tell you which. Check the signed list before you trust a
mirror, and build from a tag whose hash you verified yourself.
What is in it#
| Directory | What it holds |
|---|---|
spec/ | The protocol. The parameter sets, the golden vectors and the pre-deployed library images. An implementation that passes the vectors is a peer, not a fork. |
core/ | Consensus-critical code, standard library only: the cell model, stateless validity, the fold, the certificate-adapted EVM, and RandomX behind a build tag. |
node/ | The node around that core — storage, mempool, miner, peer layer, sync, read-only RPC, Stratum. |
wallet/ | Key management and certificate builders. A reference, not consensus. |
cmd/ | zycordd, the node; zcd, the command line and wallet. |
sim/ | The simulator and the fuzz harnesses, a second deliberately naive fold fuzzed against the real one, and the chaos soak that runs real nodes over real sockets. |
contracts/ | The reference contracts, in Solidity. |
packaging/ | The install script and the platform packages, reviewable before you run them. |
docs/ | The architecture, the protocol reference, the operating guide and the whitepaper. |
The protocol is the vectors#
The Go code in this tree is a reference implementation, and deliberately not the
definition. What defines the network is
the parameter sets and the
golden vectors: every fold, block and validity rule as a
(pre-state, block) → (post-state, fees) case, positive and negative. Write your
own node in whatever language you like — if it passes the corpus it is a peer, and this
implementation has no standing over it.
The activation heights live in the same place. h1_bond and h1_vm are
parameters frozen at genesis rather than a release: the machine is compiled into every binary and
refused below its height, so an era arrives because the chain reached a number and never because
operators were asked to upgrade.
Build it#
make build # no cgo, reproducible, development engine only
make build-randomx # the network binary: mainnet and the public testnet
Only the RandomX build can join a network. The default build is byte-for-byte
reproducible and runs a local devnet; the two write different files on purpose, so a binary that
cannot speak to mainnet is never mistaken for one that can. The Go toolchain is pinned to
go1.26.2 and the build refuses to run under anything else, because the same source
compiled by two Go releases is two different binaries.
Rebuilding a published tag and comparing hashes is the check that replaces trusting the publisher — Verifying a download has the full procedure, and Installation covers building it for ordinary use.
Issues and security#
Bugs, questions and patches go to the issue tracker, and CONTRIBUTING.md says what a change needs before it can be merged.
A vulnerability goes to the disclosure process in SECURITY.md rather than to the tracker. The project would rather have the report than the benefit of the doubt, and a defect found before mainnet costs nobody anything.
Licence#
MIT, for the whole tree. Fork it, ship it, sell it, rename it — the licence asks for a
copyright notice and nothing else. The one thing it cannot hand you is the network: that is
decided by the nodes that accept your blocks, and they accept them by the rules in
spec/.