Lantern

Verify Filecoin from your own machine.

A pure-Go Filecoin light client. Zero CGo, no filecoin-ffi, no Rust. Every block header, finality cert, and state read verified locally.

What Lantern is

A light client that doesn't ask you to trust anyone.

๐Ÿชถ
~1 GB on disk
Headers, F3 certs, hot state. Not 76 GB. Bootstraps in minutes, not hours.
๐Ÿ”
Verified, not trusted
Every header BLS-verified. F3 finality certificates. DRAND beacons. IPLD state proofs. You don't trust an RPC โ€” you verify it.
โšก
Pure Go, one binary
CGO_ENABLED=0. No filecoin-ffi. No Rust. Cross-compile to Linux/macOS/arm64 from anywhere.
๐Ÿ”Œ
Lotus-compatible RPC
71/71 of Curio's FULLNODE_API surface. Drop in as a primary or secondary node โ€” your tools won't notice.
๐ŸฆŠ
eth_* methods
Full coverage: getBalance, call, estimateGas, sendRawTransaction, feeHistory, newHeads subscriptions. Works with wallets and dapps.
๐Ÿ“ฆ
Embeddable
pkg/daemon exposes Lantern as a Go library. Curio Core ships with it embedded.
Trust model

Four cryptographic anchors

Lantern doesn't pick a node and hope. Every claim about the chain is checked against an independent root.

BLS
Every block header's aggregate BLS signature verified locally against the active power table.
F3
Finality certificates from Filecoin's F3 layer give cryptographic finality, not just probabilistic.
DRAND
Beacons fetched and verified against DRAND's public key โ€” the same randomness Filecoin uses for proofs.
IPLD
State reads return content-addressed proofs from the chain itself, not whatever an RPC says.
Install

One line

macOS ยท Linux ยท arm64 + amd64. Signed binaries hosted on Cloudflare.

# install
$ curl -fsSL https://get.golantern.io | bash
# run mainnet
$ lantern daemon
# run calibration
$ lantern daemon --filecoin-network=calibration
Prefer to build from source? github.com/Reiers/lantern
Embed

A chain node, in your binary

Since v1.5.0, Lantern ships pkg/daemon โ€” an embeddable Daemon API. Pull it in as a Go dependency, mint your own admin JWT, and call it like any local server.

// go.mod
require github.com/Reiers/lantern v1.5.3

// main.go
import "github.com/Reiers/lantern/pkg/daemon"

d, _ := daemon.New(daemon.Config{
    Network: "mainnet",
    DataDir: "/var/lib/lantern",
})
// Lotus-compatible /rpc/v1 served in-process
go d.Run(ctx)
token := d.AdminToken()
See it in production: Curio Core โ†’
Releases

Shipping fast

  1. v1.5.3 ยท current
    web3_clientVersion + CORS + eth_subscribe (newHeads). VMBridge fallback for randomness.
  2. v1.5.2
    StateGetRandomnessDigestFromBeacon for PDP ProveTask. ETH-shape miner+hash in eth_getBlockByNumber.
  3. v1.5.0
    Embeddable pkg/daemon. Inline JSON-RPC. AdminToken minting. The release that made Curio Core possible.
  4. v1.4.0
    Full eth_* coverage. net_version. Clean SIGTERM shutdown.
  5. v1.3.0
    Calibration support. Per-network data dir + migration.
  6. v1.2.1
    The SP-failover release. Sync lag 0 epochs ~65% of the time. DHT prefix fix (peer count 4 โ†’ 80).
Full history: CHANGELOG.md