Categorygithub.com/rollkit/go-sequencing
modulepackage
0.4.1
Repository: https://github.com/rollkit/go-sequencing.git
Documentation: pkg.go.dev

# README

go-sequencing

go-sequencing defines a generic sequencing interface for modular blockchains

build-and-test golangci-lint Go Report Card codecov GoDoc

Sequencing Interface

MethodParamsReturn
SubmitRollupTransactioncontext.Context, rollupId RollupId, tx Txerror
GetNextBatchcontext.Context, lastBatchHash Hashbatch Batch, timestamp Time error
VerifyBatchcontext.Context, batchHash Hashsuccess bool, error

Note: Batch is []Tx and Tx is []byte. Also Hash and RollupId are []byte.

Implementations

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.

Helpful commands

# 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

Local Sequencer

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.

Running the local sequencer binary

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

Running the local sequencer in Docker

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

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. 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.

Code of Conduct

See our Code of Conduct here.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

Batch is a collection of transactions.
GetNextBatchRequest is a request to get the next batch of transactions from sequencer to rollup.
GetNextBatchResponse is a response to getting the next batch of transactions from sequencer to rollup.
SubmitRollupTransactionRequest is a request to submit a transaction from rollup to sequencer.
SubmitRollupTransactionResponse is a response to submitting a transaction from rollup to sequencer.
VerifyBatchRequest is a request to verify a batch of transactions received from the sequencer.
VerifyBatchResponse is a response to verifying a batch of transactions received from the sequencer.

# Interfaces

BatchVerifier provides a method for verifying a batch of transactions received from the sequencer.
Sequencer is a generic interface for a rollup sequencer.
SequencerInput provides a method for submitting a transaction from rollup to sequencer.
SequencerOutput provides a method for getting the next batch of transactions from sequencer to rollup.

# Type aliases

Hash is a cryptographic hash of the Batch.
RollupId is a unique identifier for a rollup chain.
Tx is a rollup transaction.