celestia-app is the software used by validators and consensus nodes on the Celestia consensus network. celestia-app is a blockchain application built using parts of the Cosmos stack:
- celestiaorg/cosmos-sdk a fork of cosmos/cosmos-sdk
- celestiaorg/celestia-core a fork of cometbft/cometbft
^ +-------------------------------+ ^
| | | |
| | State-machine = Application | |
| | | | celestia-app (built with Cosmos SDK)
| | ^ + | |
| +----------- | ABCI | ----------+ v
Celestia | | + v | ^
validator or | | | |
full consensus | | Consensus | |
node | | | |
| +-------------------------------+ | celestia-core (fork of CometBFT)
| | | |
| | Networking | |
| | | |
v +-------------------------------+ v
-
Install Go 1.23.1
-
Clone this repo
-
Install the celestia-appd binary
make install
If you'd rather not install from source, you can download a prebuilt binary from the releases page.
-
Navigate to the latest release on https://github.com/celestiaorg/celestia-app/releases.
-
Download the binary for your platform (e.g.
celestia-app_Linux_x86_64.tar.gz
) from the Assets section. Tip: if you're not sure what platform you're on, you can rununame -a
and look for the operating system (e.g.Linux
,Darwin
) and architecture (e.g.x86_64
,arm64
). -
Extract the archive
tar -xvf celestia-app_Linux_x86_64.tar.gz
-
Verify the extracted binary works
./celestia-appd --help
-
[Optional] verify the prebuilt binary checksum. Download
checksums.txt
and then verify the checksum:sha256sum --ignore-missing --check checksums.txt
You should see output like this:
celestia-app_Linux_x86_64.tar.gz: OK
See https://docs.celestia.org/nodes/celestia-app for more information.
Warning
The celestia-appd binary doesn't support signing with Ledger hardware wallets on Windows and OpenBSD.
Enable the BBR ("Bottleneck Bandwidth and Round-trip propagation time") congestion control algorithm.
# Check if BBR is enabled.
make bbr-check
# If BBR is not enabled then enable it.
make bbr-enable
Variable | Explanation | Default value | Required |
---|---|---|---|
CELESTIA_HOME |
Where the application directory (.celestia-app ) should be saved |
User home directory | Optional |
# Print help.
celestia-appd --help
# Create config files for a new chain named "test".
celestia-appd init test
# Start the consensus node.
celestia-appd start
# Start a single node local testnet.
./scripts/single-node.sh
# Publish blob data to the local testnet.
celestia-appd tx blob pay-for-blob 0x00010203040506070809 0x48656c6c6f2c20576f726c6421 \
--chain-id private \
--from validator \
--keyring-backend test \
--fees 21000utia \
--yes
If you import celestia-app as a Go module, you may need to add some Go module replace
directives to avoid type incompatibilities. Please see the replace
directive in go.mod for inspiration.
If you are running celestia-app in tests, you may want to override the timeout_commit
to produce blocks faster. By default, a celestia-app chain with app version >= 3 will produce blocks every ~6 seconds. To produce blocks faster, you can override the timeout_commit
with the --timeout-commit
flag.
# Start celestia-appd with a one second timeout commit.
celestia-appd start --timeout-commit 1s
This repo attempts to conform to conventional commits so PR titles should ideally start with fix:
, feat:
, build:
, chore:
, ci:
, docs:
, style:
, refactor:
, perf:
, or test:
because this helps with semantic versioning and changelog generation. It is especially important to include an !
(e.g. feat!:
) if the PR includes a breaking change.
This repo contains multiple go modules. When using it, rename go.work.example
to go.work
and run go work sync
.
- Install golangci-lint 1.61.0
- Install markdownlint 0.39.0
- Install hadolint
- Install yamllint
- Install markdown-link-check
- Install goreleaser
# Get more info on make commands.
make help
# Build the celestia-appd binary into the ./build directory.
make build
# Build and install the celestia-appd binary into the $GOPATH/bin directory.
make install
# Run tests.
make test
# Format code with linters (this assumes golangci-lint and markdownlint are installed).
make lint-fix
# Regenerate Protobuf files (this assumes Docker is running).
make proto-gen
Package-specific READMEs aim to explain implementation details for developers that are contributing to these packages. The specs aim to explain the protocol as a whole for developers building on top of Celestia.
Date | Auditor | Version | Report |
---|---|---|---|
2023/9/15 | Informal Systems | v1.0.0-rc6 | informal-systems.pdf |
2023/10/17 | Binary Builders | v1.0.0-rc10 | binary-builders.pdf |
2024/7/1 | Informal Systems | v2.0.0-rc1 | informal-systems-v2.pdf |
2024/9/20 | Informal Systems | 306c587 | informal-systems-authored-blobs.pdf |