settlement

package
v0.0.0-...-2be2167 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2023 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// This event should be emitted internally in order to communicate between the settlement layer and the hub client
	EventNewSettlementBatchAccepted = "EventNewSettlementBatchAccepted"
	// This event should be emitted externally when a batch is accepted
	EventNewBatchAccepted       = "EventNewBatchAccepted"
	EventSequencersListUpdated  = "SequencersListUpdated"
	EventSettlementHealthStatus = "SettlementHealthStatus"
)

Define the event types

View Source
const (
	// EventTypeKey is a reserved composite key for event name.
	EventTypeKey = "settlement.event"
)

Define the event type keys

Variables

View Source
var (
	// ErrBatchNotFound is returned when a batch is not found for the rollapp.
	ErrBatchNotFound = errors.New("batch not found")
	// ErrNoSequencerForRollapp is returned when a sequencer is not found for the rollapp.
	ErrNoSequencerForRollapp = errors.New("no sequencer registered on the hub for this rollapp")
	// ErrBatchNotAccepted is returned when a batch is not accepted by the settlement layer.
	ErrBatchNotAccepted = errors.New("batch not accepted")
)
View Source
var (
	EventQueryNewSettlementBatchAccepted = QueryForEvent(EventNewSettlementBatchAccepted)
	EventQueryNewBatchAccepted           = QueryForEvent(EventNewBatchAccepted)
	EventQuerySettlementHealthStatus     = QueryForEvent(EventSettlementHealthStatus)
)

Define queries

Functions

func QueryForEvent

func QueryForEvent(eventType string) tmpubsub.Query

QueryForEvent returns a query for the given event.

Types

type BaseLayerClient

type BaseLayerClient struct {
	// contains filtered or unexported fields
}

BaseLayerClient is intended only for usage in tests.

func (*BaseLayerClient) GetProposer

func (b *BaseLayerClient) GetProposer() *types.Sequencer

GetProposer returns the sequencer which is currently the proposer

func (*BaseLayerClient) GetSequencersList

func (b *BaseLayerClient) GetSequencersList() []*types.Sequencer

GetSequencersList returns the current list of sequencers from the settlement layer

func (*BaseLayerClient) Init

func (b *BaseLayerClient) Init(config Config, pubsub *pubsub.Server, logger log.Logger, options ...Option) error

Init is called once. it initializes the struct members.

func (*BaseLayerClient) RetrieveBatch

func (b *BaseLayerClient) RetrieveBatch(stateIndex ...uint64) (*ResultRetrieveBatch, error)

RetrieveBatch Gets the batch which contains the given slHeight. Empty slHeight returns the latest batch.

func (*BaseLayerClient) Start

func (b *BaseLayerClient) Start() error

Start is called once, after init. It initializes the query client.

func (*BaseLayerClient) Stop

func (b *BaseLayerClient) Stop() error

Stop is called once, after Start.

func (*BaseLayerClient) SubmitBatch

func (b *BaseLayerClient) SubmitBatch(batch *types.Batch, daClient da.Client, daResult *da.ResultSubmitBatch)

SubmitBatch tries submitting the batch in an async broadcast mode to the settlement layer. Events are emitted on success or failure.

type BaseResult

type BaseResult struct {
	// Code is to determine if the action succeeded.
	Code StatusCode
	// Message may contain settlement layer specific information (like detailed error message, etc)
	Message string
	//TODO(omritoptix): Move StateIndex to be part of the batch struct
	// StateIndex is the rollapp-specific index the batch was saved in the SL
	StateIndex uint64
}

BaseResult contains basic information returned by the settlement layer.

type Batch

type Batch struct {
	StartHeight uint64
	EndHeight   uint64
	AppHashes   [][32]byte
	// MetaData about the batch in the DA layer
	MetaData *BatchMetaData
}

Batch defines a batch structure for the settlement layer

type BatchMetaData

type BatchMetaData struct {
	DA *DAMetaData
}

BatchMetaData aggregates all the batch metadata.

type Config

type Config struct {
	KeyringBackend string `mapstructure:"keyring_backend"`
	NodeAddress    string `mapstructure:"node_address"`
	KeyringHomeDir string `mapstructure:"keyring_home_dir"`
	DymAccountName string `mapstructure:"dym_account_name"`
	RollappID      string `mapstructure:"rollapp_id"`
	GasLimit       uint64 `mapstructure:"gas_limit"`
	GasPrices      string `mapstructure:"gas_prices"`
	GasFees        string `mapstructure:"gas_fees"`

	//For testing only. probably should be refactored
	ProposerPubKey string     `json:"proposer_pub_key"`
	SLGrpc         GrpcConfig `mapstructure:",squash"`
}

Config for the DymensionLayerClient

func (Config) Validate

func (c Config) Validate() error

type DAMetaData

type DAMetaData struct {
	// Height is the height of the block in the da layer
	Height uint64
	// Client is the client to use to fetch data from the da layer
	Client da.Client
}

DAMetaData contains meta data about a batch on the Data Availability Layer.

func (*DAMetaData) FromPath

func (d *DAMetaData) FromPath(path string) (*DAMetaData, error)

FromPath parses a path to a DAMetaData.

func (*DAMetaData) ToPath

func (d *DAMetaData) ToPath() string

ToPath converts a DAMetaData to a path.

type EventDataNewBatchAccepted

type EventDataNewBatchAccepted struct {
	// EndHeight is the height of the last accepted batch
	EndHeight uint64
	// StateIndex is the rollapp-specific index the batch was saved in the SL
	StateIndex uint64
}

EventDataNewBatchAccepted defines the structure of the event data for the EventNewBatchAccepted

type EventDataNewSettlementBatchAccepted

type EventDataNewSettlementBatchAccepted EventDataNewBatchAccepted

EventDataNewSettlementBatchAccepted defines the structure of the event data for the EventNewSettlementBatchAccepted

type EventDataSequencersListUpdated

type EventDataSequencersListUpdated struct {
	// Sequencers is the list of sequencers
	Sequencers []types.Sequencer
}

EventDataSequencersListUpdated defines the structure of the event data for the EventSequencersListUpdated

type EventDataSettlementHealthStatus

type EventDataSettlementHealthStatus struct {
	// Healthy is true if the settlement layer is healthy
	Healthy bool
	// Error is the error that was encountered in case of a health check failure
	Error error
}

EventDataSettlementHealthStatus defines the structure of the event data for the EventDataSettlementHealthStatus

type GrpcConfig

type GrpcConfig struct {
	// TODO(tzdybal): add more options!
	Host string `json:"host"`
	Port int    `json:"port"`
}

Config contains configuration options for DataAvailabilityLayerClient.

type HubClient

type HubClient interface {
	Start() error
	Stop() error
	PostBatch(batch *types.Batch, daClient da.Client, daResult *da.ResultSubmitBatch)
	GetLatestBatch(rollappID string) (*ResultRetrieveBatch, error)
	GetBatchAtIndex(rollappID string, index uint64) (*ResultRetrieveBatch, error)
	GetSequencers(rollappID string) ([]*types.Sequencer, error)
}

HubClient is an helper interface for a more granualr interaction with the hub. Implementing a new settlement layer client basically requires embedding the base client and implementing the helper interfaces.

type LayerI

type LayerI interface {

	// Init is called once for the client initialization
	Init(config Config, pubsub *pubsub.Server, logger log.Logger, options ...Option) error

	// Start is called once, after Init. It's implementation should start the client service.
	Start() error

	// Stop is called once, after Start. It should stop the client service.
	Stop() error

	// SubmitBatch tries submiting the batch in an async way to the settlement layer. This should create a transaction which (potentially)
	// triggers a state transition in the settlement layer. Events are emitted on success or failure.
	SubmitBatch(batch *types.Batch, daClient da.Client, daResult *da.ResultSubmitBatch)

	// RetrieveBatch Gets the batch which contains the given height. Empty height returns the latest batch.
	RetrieveBatch(stateIndex ...uint64) (*ResultRetrieveBatch, error)

	// GetSequencersList returns the list of the sequencers for this chain.
	GetSequencersList() []*types.Sequencer

	// GetProposer returns the current proposer for this chain.
	GetProposer() *types.Sequencer
}

LayerI defines generic interface for Settlement layer interaction.

type Option

type Option func(LayerI)

Option is a function that sets a parameter on the settlement layer.

func WithHubClient

func WithHubClient(hubClient HubClient) Option

WithHubClient is an option which sets the hub client.

type ResultRetrieveBatch

type ResultRetrieveBatch struct {
	BaseResult
	*Batch
}

ResultRetrieveBatch contains information returned from settlement layer after batch retrieva

type StatusCode

type StatusCode uint64

StatusCode is a type for settlement layer return status.

const (
	StatusUnknown StatusCode = iota
	StatusSuccess
	StatusTimeout
	StatusError
)

settlement layer return codes.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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