sequencing

package module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 24, 2024 License: Apache-2.0 Imports: 3 Imported by: 5

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

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.

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

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.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Batch

type Batch struct {
	Transactions []Tx
}

Batch is a collection of transactions

func (*Batch) FromProto

func (batch *Batch) FromProto(pb *pbseq.Batch)

FromProto deserializes a batch from a protobuf message.

func (*Batch) Marshal

func (batch *Batch) Marshal() ([]byte, error)

Marshal serializes a batch to a byte slice.

func (*Batch) ToProto

func (batch *Batch) ToProto() *pbseq.Batch

ToProto serializes a batch to a protobuf message.

func (*Batch) Unmarshal

func (batch *Batch) Unmarshal(data []byte) error

Unmarshal deserializes a batch from a byte slice.

type BatchVerifier

type BatchVerifier interface {
	// VerifyBatch verifies a batch of transactions received from the sequencer
	VerifyBatch(ctx context.Context, batchHash Hash) (bool, error)
}

BatchVerifier provides a method for verifying a batch of transactions received from the sequencer

type Hash

type Hash = []byte

Hash is a cryptographic hash of the Batch

type RollupId

type RollupId = []byte

RollupId is a unique identifier for a rollup chain

type Sequencer

type Sequencer interface {
	SequencerInput
	SequencerOutput
	BatchVerifier
}

Sequencer is a generic interface for a rollup sequencer

type SequencerInput

type SequencerInput interface {
	// SubmitRollupTransaction submits a transaction from rollup to sequencer
	SubmitRollupTransaction(ctx context.Context, rollupId RollupId, tx Tx) error
}

SequencerInput provides a method for submitting a transaction from rollup to sequencer

type SequencerOutput

type SequencerOutput interface {
	// GetNextBatch returns the next batch of transactions from sequencer to rollup
	// lastBatch is the last batch of transactions received from the sequencer
	// returns the next batch of transactions and an error if any from the sequencer
	GetNextBatch(ctx context.Context, lastBatchHash Hash) (*Batch, time.Time, error)
}

SequencerOutput provides a method for getting the next batch of transactions from sequencer to rollup

type Tx

type Tx = []byte

Tx is a rollup transaction

Directories

Path Synopsis
types

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL