finds.dev← search

// the find

filecoin-project/lotus

★ 2,989 · Go · NOASSERTION · updated Jul 2026

Reference implementation of the Filecoin protocol, written in Go

Lotus is the reference Go implementation of the Filecoin protocol — the full node, storage miner, and worker suite. It's what you run if you want to participate in the Filecoin network as a validator or storage provider, or if you're building tooling against the Filecoin chain. Not a library you'd embed; this is the whole node.

The versioned actor state machine (v0 through v19 per actor type, code-generated from templates) is genuinely well-structured for a protocol that has to maintain compatibility across years of network upgrades. The splitstore blockstore design — separating hot and cold chain data with compaction — is a real solution to the chain state growth problem that most blockchain nodes just ignore. CI is thorough: separate workflows for build, lint, tests, and 'very-expensive' integration tests, plus OpenRPC spec generation kept in sync with the actual API. The JSON-RPC API surface has proper versioning (v0, v1, v2 namespaces) which means they can break things without immediately breaking everyone.

Build dependencies are a slog — you need OpenCL headers, hwloc, clang, and Rust (for the proof binaries) before you can even compile. That's not a complaint about the project's choices, but it means 'clone and build' is a half-day affair on a fresh machine. The master branch being the dev branch with an explicit warning not to use it in production is a process smell — it means the default checkout is the wrong checkout for most people. The codebase has a lot of code-generated files (cbor_gen.go, proxy_gen.go, mock_full.go) with no obvious regeneration instructions in the README, which is a trap for anyone who touches the interface definitions. ~3k stars for a reference implementation of a live network is also a signal about the Filecoin ecosystem's current developer momentum.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →