go-sequencing defines a generic sequencing interface for modular blockchains
Method | Params | Return |
---|---|---|
SubmitRollupTransaction |
context.Context , rollupId RollupId , tx Tx |
error |
GetNextBatch |
context.Context , lastBatchHash Hash |
batch Batch , timestamp Time error |
VerifyBatch |
context.Context , batchHash Hash |
success bool , error |
Note: Batch
is []Tx
and Tx
is []byte
. Also Hash
and RollupId
are []byte
.
The following implementations are available:
- centralized-sequencer implements a centralized sequencer that posts rollup transactions to Celestia DA.
- astria-sequencer implements a Astria sequencer middleware that connects to Astria shared sequencer.
In addition the following helper implementations are available:
- DummySequencer implements a Mock sequencer useful for testing.
- Proxy implements a proxy server that forwards requests to a gRPC server. The proxy client can be used directly to interact with the sequencer service.
# Generate protobuf files. Requires docker.
make proto-gen
# Lint protobuf files. Requires docker.
make proto-lint
# Run tests.
make test
# Run linters (requires golangci-lint, markdownlint, hadolint, and yamllint)
make lint
In this repo there is a mock local-sequencer
server that implements the
go-sequencing
interface. This server is useful for testing and development
purposes.
To run the mock local-sequencer
server, run the following command:
make build
This will build the local-sequencer
binary. To run the server, run:
./build/local-sequencer
You will see an output like the following:
2024/11/13 10:56:01 Listening on: localhost:50051
To run the mock local-sequencer
server in Docker, run the following command:
make docker-build
This will build a local-sequencer
Docker image. To run the server, run:
docker run -p 50051:50051 --rm local-sequencer
In order to connect your rollup to your local sequencer, you need to pass in the rollup ID by using the following command:
docker run -p 50051:50051 --rm local-sequencer -listen-all -rollup-id=testing
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. Issues with this tag are suitable for a new external contributor and is a great way to find something you can help with!
Please join our Community Discord to ask questions, discuss your ideas, and connect with other contributors.
See our Code of Conduct here.