Building with Rollkit

Building with Rollkit

While Rollkit is a modular framework that aims to be compatible with a wide range of data availability layers, settlement layers, and execution environments, the most supported development environment is building on Celestia as a data availability layer.

Building from source

Dependencies

  • Requires Go version >= 1.19

To build:

git clone https://github.com/rollkit/rollkit.git
cd rollkit 
go build -v ./...

Building on Celestia

There are currently 2 ways to build on Celestia:

  1. Using a local development environment with local-celestia-devnet (opens in a new tab)
  2. Using the Arabica or Mocha Celestia testnets*

Compatibility

networkrollkitcelestia-nodecelestia-app
local-celestia-devnetv0.9.0v0.11.0-rc6v1.0.0-rc7
arabicav0.9.0v0.11.0-rc6v1.0.0-rc7
rollkit/cosmos-sdkrollkit/cometbftrollkit
v0.46.13-rollkit-v0.9.0-no-fraud-proofsv0.0.0-20230524013049-75272ebaee38v0.9.0
v0.45.16-rollkit-v0.9.0-no-fraud-proofsv0.0.0-20230524013001-2968c8b8b121v0.9.0

Local Development Environment

The Rollkit v0.9.0 release is compatible with the local-celestia-devnet (opens in a new tab) oolong (opens in a new tab) release. This version combination is compatible with celestia-app v1.0.0-rc7 (opens in a new tab) and celestia-node v0.11.0-rc6 (opens in a new tab).

Arabica devnet and Mocha testnet

:::warning Rollkit v0.9.0 is not compatible with latest release of Mocha. :::

The Rollkit v0.9.0 release is compatible with Arabica devnet which is running celestia-app v1.0.0-rc7 (opens in a new tab) and celestia-node v0.11.0-rc6 (opens in a new tab).

Testing

  1. Install golangci-lint (opens in a new tab)
  2. Install markdownlint (opens in a new tab)
  3. Install hadolint (opens in a new tab)
  4. Install yamllint (opens in a new tab)

Helpful Commands

# Run unit tests
make test-unit
 
# Run unit tests with the data race detector
make test-unit-race
 
# Run tests with and without the data race detector
make test-all
 
# Generate protobuf files (requires Docker)
make proto-gen
 
# Run linters (requires golangci-lint, markdownlint, hadolint, and yamllint)
make lint
 
# Lint protobuf files (requires Docker and buf)
make proto-lint
 

Contributing

We welcome your contributions! Everyone is welcome to contribute, whether it's in the form of code, documentation, bug reports, feature requests, or anything else.

If you're looking for issues to work on, try looking at the good first issue list (opens in a new tab). Issues with this tag are suitable for a new external contributor and is a great way to find something you can help with!

See the contributing guide (opens in a new tab) for more details.

Please join our Community Discord (opens in a new tab) to ask questions, discuss your ideas, and connect with other contributors.

Dependency Graph

To see our progress and a possible future of Rollkit visit our Dependency Graph (opens in a new tab).