Skip to content

jasmyhigh/celestia-app

 
 

Repository files navigation

celestia-app

Go Reference mdBook Specs GitHub Release Go Report Card GitPOAP Badge

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:

Diagram

                ^  +-------------------------------+  ^
                |  |                               |  |
                |  |  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

From source

  1. Install Go 1.23.1

  2. Clone this repo

  3. Install the celestia-appd binary

    make install

Prebuilt binary

If you'd rather not install from source, you can download a prebuilt binary from the releases page.

  1. Navigate to the latest release on https://github.com/celestiaorg/celestia-app/releases.

  2. 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 run uname -a and look for the operating system (e.g. Linux, Darwin) and architecture (e.g. x86_64, arm64).

  3. Extract the archive

    tar -xvf celestia-app_Linux_x86_64.tar.gz
  4. Verify the extracted binary works

    ./celestia-appd --help
  5. [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.

Usage

Warning

The celestia-appd binary doesn't support signing with Ledger hardware wallets on Windows and OpenBSD.

Prerequisites

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

Environment variables

Variable Explanation Default value Required
CELESTIA_HOME Where the application directory (.celestia-app) should be saved User home directory Optional

Using celestia-appd

# 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

Create a single node local testnet

# 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

Usage as a library

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.

Usage in tests

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

Contributing

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.

Tools

  1. Install golangci-lint 1.61.0
  2. Install markdownlint 0.39.0
  3. Install hadolint
  4. Install yamllint
  5. Install markdown-link-check
  6. Install goreleaser

Helpful Commands

# 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

Docs

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.

Audits

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

Releases

No releases published

Packages

No packages published

Languages

  • Go 96.6%
  • Shell 2.2%
  • Other 1.2%