Skip to content

PoS application for the consensus portion of the Celestia network. Built using celestia-core (fork of CometBFT) and the cosmos-sdk

License

Notifications You must be signed in to change notification settings

Ziggy2shots/celestia-app

 
 

Repository files navigation

celestia-app

Go Reference mdBook Specs GitHub Release Go Report Card Lint Tests / Code Coverage codecov GitPOAP Badge

celestia-app is a blockchain application built using parts of the Cosmos stack. celestia-app uses

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

  1. Install Go 1.21.1

  2. Clone this repo

  3. Install the celestia-app CLI

    make install

Ledger Support

Ledger is not supported on Windows and OpenBSD.

Usage

# Print help
celestia-appd --help

Environment variables

Variable Explanation Default value Required
CELESTIA_HOME Home directory for the application User home dir. Ref. Optional

Create your own single node devnet

# Start a single node devnet using the pre-installed celestia app
./scripts/single-node.sh

# Build and start a single node devnet
./scripts/build-run-single-node.sh

# Post data to the local devnet
celestia-appd tx blob PayForBlobs [hexNamespace] [hexBlob] [flags]

Note: please note that the ./scripts/ commands above, created a random tmp directory and keeps all data/configs there.

See https://docs.celestia.org/category/celestia-app for more information

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.

Tools

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

Helpful Commands

# Build a new celestia-app binary and output to build/celestia-appd
make build

# Run tests
make test

# Format code with linters (this assumes golangci-lint and markdownlint are installed)
make fmt

# Regenerate Protobuf files (this assumes Docker is running)
make proto-gen

# Build binaries with goreleaser
make goreleaser-build

Publishing a Release

NOTE Due to goreleaser's CGO limitations, cross-compiling the binary does not work. So the binaries must be built on the target platform. This means that the release process must be done on a Linux amd64 machine.

To generate the binaries for the Github release, you can run the following command:

make goreleaser-release

This will generate the binaries as defined in .goreleaser.yaml and put them in build/goreleaser like so:

build
└── goreleaser
    ├── CHANGELOG.md
    ├── artifacts.json
    ├── celestia-app_Linux_x86_64.tar.gz
    ├── celestia-app_linux_amd64_v1
    │   └── celestia-appd
    ├── checksums.txt
    ├── config.yaml
    └── metadata.json

For the Github release, you just need to upload the checksums.txt and celestia-app_Linux_x86_64.tar.gz files.

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

Informal Systems audited celestia-app v1.0.0-rc6 in Q3 of 2023. See audit/informal-systems.pdf for the full report.

Careers

We are hiring Go engineers! Join us in building the future of blockchain scaling and interoperability. Apply here.

About

PoS application for the consensus portion of the Celestia network. Built using celestia-core (fork of CometBFT) and the cosmos-sdk

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 86.6%
  • JavaScript 11.8%
  • Other 1.6%