celestia-app
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
-
Install Go 1.21.1
-
Clone this repo
-
Install the celestia-app CLI
make install
Usage
# Print help
celestia-appd --help
Environment variables
Variable |
Explanation |
Default value |
Required |
CELESITA_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
- Install golangci-lint
- Install markdownlint
- Install hadolint
- Install yamllint
- Install markdown-link-check
- 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.