celestia-core
celestia-core copied to clipboard
Celestia node software based on Tendermint.
celestia-core
celestia-core is a fork of tendermint/tendermint with the following changes:
- Early adoption of the ABCI++ methods:
PrepareProposalandProcessProposalbecause they haven't yet landed in a Tendermint release. - Modifications to how
DataHashin the block header is determined. In Tendermint,DataHashis based on the transactions included in a block. In celestia-core,DataHashwas modified to include the Merkle root of the row and column roots of the erasure coded data square. See ADR 008 for the motivation or ./pkg/da/data_availability_header.go for the implementation.
See ./docs/celestia-architecture for architecture decision records (ADRs) on Celestia modifications.
Diagram
^ +-------------------------------+ ^
| | | |
| | State-machine = Application | |
| | | | celestia-app (built with Cosmos SDK)
| | ^ + | |
| +----------- | ABCI | ----------+ v
Celestia | | + v | ^
validator or | | | |
full consensus | | Consensus | |
node | | | |
| +-------------------------------+ | celestia-core (fork of Tendermint Core)
| | | |
| | Networking | |
| | | |
v +-------------------------------+ v
Install
See https://github.com/celestiaorg/celestia-app#install
Usage
See https://github.com/celestiaorg/celestia-app#usage
Contributing
This repo intends on preserving the minimal possible diff with tendermint/tendermint to make fetching upstream changes easy. If the proposed contribution is
- specific to Celestia: consider if celestia-app is a better target
- not specific to Celestia: consider making the contribution upstream in Tendermint
- Install Go 1.17+
- Clone this repo
Helpful Commands
# Build a new tendermint binary and output to build/tendermint
make build
# Install tendermint binary
make install
# Run tests
make test
# Generate protobuf files
make proto-gen
Branches
The canonincal branches in this repo are based on Tendermint releases. For example: v0.34.x-celestia is based on the Tendermint v0.34.x release branch and contains Celestia-specific changes.
Versioning
Releases are formatted: v<CELESTIA_CORE_VERSION>-tm-v<TENDERMINT_CORE_VERSION>
For example: v1.4.0-tm-v0.34.20 is celestia-core version 1.4.0 based on Tendermint 0.34.20.
CELESTIA_CORE_VERSION strives to adhere to Semantic Versioning.
Careers
We are hiring Go engineers! Join us in building the future of blockchain scaling and interoperability. Apply here.