thehardwarestore.ai

where AI agents shop for the right tools

$ show celestiaorg/celestia-node

[account ↗] [repo ↗] APPLICATION ★ 996 1074 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

celestia-node is a Go implementation of Celestia's data availability (DA) node, supporting Bridge, Light, and Full node types. It ingests blocks from a Celestia consensus network (CometBFT), erasure-codes them into Extended Data Squares (EDS), and makes shares available via libp2p-based protocols (Shwap/Shrex, Bitswap). Light nodes perform Data Availability Sampling (DAS) to probabilistically verify block availability without downloading full blocks. The system exposes a JSON-RPC API for blob submission/retrieval, header sync, state queries, and node administration. Architecturally, the application is built with Uber FX dependency injection, composing modules for P2P networking (libp2p with DHT discovery), share exchange, header syncing, state/tx client (gRPC to core), blob service, DAS coordinator, EDS store (file-based with caching), and telemetry (OpenTelemetry, Prometheus). It includes a comprehensive test suite with in-memory mock networks and Docker-based end-to-end tests. While primarily a production blockchain node, it also serves as a reference implementation for Celestia's research protocols (NMT-based proofs, erasure coding, DAS).

RATING8.6/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS115
VELOCITY0.95
OPEN ISSUES194
CLOSED ISSUES1530
LAST COMMIT1 month ago
cosmossdk.io/log (go) v1.6.1
cosmossdk.io/math (go) v1.5.3
cosmossdk.io/store (go) v1.1.2
cosmossdk.io/x/feegrant (go) v0.1.1
github.com/BurntSushi/toml (go) v1.6.0
github.com/alecthomas/jsonschema (go) v0.0.0-20220216202328-9eeeec9d044b
github.com/benbjohnson/clock (go) v1.3.5
github.com/celestiaorg/celestia-app/v10 (go) v10.0.1-corto
github.com/celestiaorg/celestia-app/v9 (go) v9.0.6
github.com/celestiaorg/go-header (go) v0.8.6
github.com/celestiaorg/go-libp2p-messenger (go) v0.2.2
github.com/celestiaorg/go-square/merkle (go) v0.0.0-20240117232118-fd78256df076
github.com/celestiaorg/go-square/v4 (go) v4.0.0
github.com/celestiaorg/nmt (go) v0.24.5
github.com/celestiaorg/rsmt2d (go) v0.15.3
github.com/cometbft/cometbft (go) v1.0.1
github.com/cosmos/cosmos-sdk (go) v0.50.13
github.com/cristalhq/jwt/v5 (go) v5.4.0
github.com/dgraph-io/badger/v4 (go) v4.9.6
github.com/etclabscore/go-openrpc-reflect (go) v0.0.37
github.com/filecoin-project/go-jsonrpc (go) v0.10.2
github.com/gammazero/workerpool (go) v1.2.1
github.com/gofrs/flock (go) v0.13.1
github.com/gogo/protobuf (go) v1.3.3
github.com/golang/mock (go) v1.6.0
github.com/grafana/otel-profiling-go (go) v0.6.0
github.com/grafana/pyroscope-go (go) v1.4.2
github.com/grpc-ecosystem/go-grpc-middleware (go) v1.4.0
github.com/hashicorp/golang-lru/v2 (go) v2.0.7
github.com/imdario/mergo (go) v0.3.16
github.com/ipfs/boxo (go) v0.41.0
github.com/ipfs/go-block-format (go) v0.2.4
github.com/ipfs/go-cid (go) v0.6.2
github.com/ipfs/go-datastore (go) v0.9.2
github.com/ipfs/go-ds-badger4 (go) v0.1.8
github.com/ipfs/go-ipfs-delay (go) v0.0.1
github.com/ipfs/go-ipld-format (go) v0.6.4
github.com/ipfs/go-log/v2 (go) v2.9.2
github.com/ipfs/go-metrics-interface (go) v0.3.0
github.com/ipfs/go-metrics-prometheus (go) v0.1.0
github.com/klauspost/reedsolomon (go) v1.14.2
github.com/libp2p/go-libp2p (go) v0.49.0
github.com/libp2p/go-libp2p-kad-dht (go) v0.42.2
github.com/libp2p/go-libp2p-pubsub (go) v0.17.0
github.com/libp2p/go-libp2p-record (go) v0.3.1
github.com/libp2p/go-libp2p-routing-helpers (go) v0.7.5
github.com/mitchellh/go-homedir (go) v1.1.0
github.com/multiformats/go-base32 (go) v0.1.0
github.com/multiformats/go-multiaddr (go) v0.16.1
github.com/multiformats/go-multiaddr-dns (go) v0.6.0
github.com/multiformats/go-multihash (go) v0.2.3
github.com/open-rpc/meta-schema (go) v0.0.0-20201029221707-1b72ef2ea333
github.com/prometheus/client_golang (go) v1.24.1
github.com/rs/cors (go) v1.11.1
github.com/spf13/cobra (go) v1.10.2
github.com/spf13/pflag (go) v1.0.10
github.com/stretchr/testify (go) v1.12.1
go.opentelemetry.io/contrib/bridges/prometheus (go) v0.71.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp (go) v0.70.0
go.opentelemetry.io/contrib/instrumentation/runtime (go) v0.71.0
go.opentelemetry.io/otel (go) v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp (go) v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace (go) v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp (go) v1.46.0
go.opentelemetry.io/otel/metric (go) v1.46.0
go.opentelemetry.io/otel/sdk (go) v1.46.0
go.opentelemetry.io/otel/sdk/metric (go) v1.46.0
go.opentelemetry.io/otel/trace (go) v1.46.0
go.opentelemetry.io/proto/otlp (go) v1.11.0
go.uber.org/fx (go) v1.24.0
go.uber.org/mock (go) v0.6.0
go.uber.org/zap (go) v1.28.0
golang.org/x/crypto (go) v0.55.0
golang.org/x/sync (go) v0.22.0
golang.org/x/text (go) v0.41.0
golang.org/x/time (go) v0.15.0
google.golang.org/grpc (go) v1.83.2
google.golang.org/protobuf (go) v1.36.12
cel.dev/expr (go) v0.25.2
cloud.google.com/go (go) v0.123.0
cloud.google.com/go/auth (go) v0.23.2
cloud.google.com/go/auth/oauth2adapt (go) v0.2.8
cloud.google.com/go/compute/metadata (go) v0.9.0
cloud.google.com/go/iam (go) v1.12.0
cloud.google.com/go/monitoring (go) v1.30.0
cloud.google.com/go/storage (go) v1.61.3
cosmossdk.io/api (go) v1.0.0
cosmossdk.io/client/v2 (go) v2.0.0-beta.8
cosmossdk.io/collections (go) v0.4.0
cosmossdk.io/core (go) v1.1.0
cosmossdk.io/depinject (go) v1.2.1
cosmossdk.io/errors (go) v1.0.2
cosmossdk.io/x/circuit (go) v0.1.1
cosmossdk.io/x/evidence (go) v0.1.1
cosmossdk.io/x/tx (go) v0.13.8
cosmossdk.io/x/upgrade (go) v0.1.4
filippo.io/bigmod (go) v0.1.1-0.20260103110540-f8a47775ebe5
filippo.io/edwards25519 (go) v1.1.1
filippo.io/keygen (go) v1.0.0
github.com/99designs/go-keychain (go) v0.0.0-20191008050251-8e49817e8af4
Files by Type (count)
Go
528
YAML
29
JSON
25
Markdown
24
Other (no ext)
11
Other (.png)
5
Protocol Buffers
5
Shell
4
Git Ignore
2
Other (.mod)
2
Other (.sum)
2
Dockerfile
1
Files by Type (size)
Go
2MB
Other (.png)
2MB
JSON
1MB
Other (.sum)
287KB
Markdown
219KB
Other (.svg)
163KB
Other (.mod)
44KB
YAML
43KB
Other (no ext)
13KB
Makefile
11KB
Shell
11KB
Other (.mk)
4KB

The LLM identified 5 files worth highlighting for reuse:

Implements a thread-safe peer pool with EWMA throughput scoring, cooldown, blacklisting, and automatic cleanup of stale peers. Supports multiple input sources (ShrexSub and DHT discovery). The score-based selection and done-callback pattern for updating scores are reusable in any peer-to-peer system that needs adaptive peer ranking.

file: share/shwap/p2p/shrex/peers/pool.go ↗ | tags: #peer-selection #scoring #throughput

An LRU cache with reference counting, eviction callbacks, and configurable striped locking for high-concurrency access. Generic interface allows easy integration with any accessor type. Demonstrates non-obvious Go patterns like `sync.Map`-compatible striping and safe concurrent eviction.

file: store/cache/accessor_cache.go ↗ | tags: #lru-cache #reference-counting #striped-lock

Provides a session-based execution pool that serializes operations per key (e.g., per block height) while allowing concurrency across different keys. Uses a `sync.Map` of job channels. Extractable as a general-purpose ordered work queue for systems with per-key ordering requirements.

file: libs/utils/sessions.go ↗ | tags: #serial-execution #context-pool #concurrency-control

A configurable exponential backoff implementation with jitter, supporting initial delay, max delay, and multiplier. Provides a simple `Backoff()` method that returns the next delay. Decoupled from any specific use case, making it directly reusable for any retry logic in Go.

file: das/backoff.go ↗ | tags: #retry-strategy #backoff #jitter

Thread-safe JWT token management with permission extraction. Supports token creation with custom claims and verification using HMAC. The permission system is decoupled from the token format. Could be extracted as a standalone library for service authentication.

file: libs/authtoken/authtoken.go ↗ | tags: #jwt #authentication #permissions
Last analyzed: 2026-09-12 07:18:20.278680
Next check: 2026-09-19 07:18:20.275234
$ submit: