block

package
v0.13.9 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2024 License: Apache-2.0 Imports: 45 Imported by: 1

Documentation

Index

Constants

View Source
const DAIncludedHeightKey = "da included height"

DAIncludedHeightKey is the key used for persisting the da included height in store.

View Source
const LastSubmittedHeightKey = "last submitted"

LastSubmittedHeightKey is the key used for persisting the last submitted height in store.

View Source
const (
	// MetricsSubsystem is a subsystem shared by all metrics exposed by this
	// package.
	MetricsSubsystem = "sequencer"
)

Variables

View Source
var (
	// ErrNoValidatorsInState is used when no validators/proposers are found in state
	ErrNoValidatorsInState = errors.New("no validators found in state")

	// ErrNotProposer is used when the manager is not a proposer
	ErrNotProposer = errors.New("not a proposer")
)

Functions

This section is empty.

Types

type BlockCache added in v0.10.2

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

BlockCache maintains blocks that are seen and hard confirmed

func NewBlockCache added in v0.10.2

func NewBlockCache() *BlockCache

NewBlockCache returns a new BlockCache struct

type BlockSyncService added in v0.10.5

type BlockSyncService = SyncService[*types.Block]

BlockSyncService is the P2P Sync Service for blocks.

func NewBlockSyncService added in v0.10.5

func NewBlockSyncService(store ds.TxnDatastore, conf config.NodeConfig, genesis *cmtypes.GenesisDoc, p2p *p2p.Client, logger log.Logger) (*BlockSyncService, error)

NewBlockSyncService returns a new BlockSyncService.

type HeaderSyncService added in v0.10.7

type HeaderSyncService = SyncService[*types.SignedHeader]

HeaderSyncService is the P2P Sync Service for headers.

func NewHeaderSyncService added in v0.10.7

func NewHeaderSyncService(store ds.TxnDatastore, conf config.NodeConfig, genesis *cmtypes.GenesisDoc, p2p *p2p.Client, logger log.Logger) (*HeaderSyncService, error)

NewHeaderSyncService returns a new HeaderSyncService.

type Manager

type Manager struct {
	HeaderCh chan *types.SignedHeader
	BlockCh  chan *types.Block
	// contains filtered or unexported fields
}

Manager is responsible for aggregating transactions into blocks.

func NewManager

func NewManager(
	proposerKey crypto.PrivKey,
	conf config.BlockManagerConfig,
	genesis *cmtypes.GenesisDoc,
	store store.Store,
	mempool mempool.Mempool,
	proxyApp proxy.AppConnConsensus,
	dalc *da.DAClient,
	eventBus *cmtypes.EventBus,
	logger log.Logger,
	blockStore *goheaderstore.Store[*types.Block],
	seqMetrics *Metrics,
	execMetrics *state.Metrics,
) (*Manager, error)

NewManager creates new block Manager.

func (*Manager) AggregationLoop

func (m *Manager) AggregationLoop(ctx context.Context)

AggregationLoop is responsible for aggregating transactions into rollup-blocks.

func (*Manager) BlockStoreRetrieveLoop added in v0.10.2

func (m *Manager) BlockStoreRetrieveLoop(ctx context.Context)

BlockStoreRetrieveLoop is responsible for retrieving blocks from the Block Store.

func (*Manager) BlockSubmissionLoop added in v0.10.2

func (m *Manager) BlockSubmissionLoop(ctx context.Context)

BlockSubmissionLoop is responsible for submitting blocks to the DA layer.

func (*Manager) GetBlockInCh added in v0.11.8

func (m *Manager) GetBlockInCh() chan NewBlockEvent

GetBlockInCh returns the manager's blockInCh

func (*Manager) GetDAIncludedHeight added in v0.13.7

func (m *Manager) GetDAIncludedHeight() uint64

GetDAIncludedHeight returns the rollup height at which all blocks have been included in the DA

func (*Manager) GetStoreHeight added in v0.10.2

func (m *Manager) GetStoreHeight() uint64

GetStoreHeight returns the manager's store height

func (*Manager) IsBlockHashSeen added in v0.11.8

func (m *Manager) IsBlockHashSeen(blockHash string) bool

IsBlockHashSeen returns true if the block with the given hash has been seen.

func (*Manager) IsDAIncluded added in v0.10.7

func (m *Manager) IsDAIncluded(hash types.Hash) bool

IsDAIncluded returns true if the block with the given hash has been seen on DA.

func (*Manager) RetrieveLoop

func (m *Manager) RetrieveLoop(ctx context.Context)

RetrieveLoop is responsible for interacting with DA layer.

func (*Manager) SetDALC

func (m *Manager) SetDALC(dalc *da.DAClient)

SetDALC is used to set DataAvailabilityLayerClient used by Manager.

func (*Manager) SetLastState added in v0.11.8

func (m *Manager) SetLastState(state types.State)

SetLastState is used to set lastState used by Manager.

func (*Manager) SyncLoop

func (m *Manager) SyncLoop(ctx context.Context, cancel context.CancelFunc)

SyncLoop is responsible for syncing blocks.

SyncLoop processes headers gossiped in P2P network to know what's the latest block height, block data is retrieved from DA layer.

type Metrics added in v0.11.19

type Metrics struct {
	// Height of the chain.
	Height metrics.Gauge

	// Number of transactions.
	NumTxs metrics.Gauge
	// Size of the block.
	BlockSizeBytes metrics.Gauge
	// Total number of transactions.
	TotalTxs metrics.Gauge
	// The latest block height.
	CommittedHeight metrics.Gauge `metrics_name:"latest_block_height"`
}

Metrics contains metrics exposed by this package.

func NopMetrics added in v0.11.19

func NopMetrics() *Metrics

NopMetrics returns no-op Metrics.

func PrometheusMetrics added in v0.11.19

func PrometheusMetrics(namespace string, labelsAndValues ...string) *Metrics

PrometheusMetrics returns Metrics build using Prometheus client library. Optionally, labels can be provided along with their values ("foo", "fooValue").

type NewBlockEvent added in v0.11.8

type NewBlockEvent struct {
	Block    *types.Block
	DAHeight uint64
}

NewBlockEvent is used to pass block and DA height to blockInCh

type PendingBlocks added in v0.10.3

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

PendingBlocks maintains blocks that need to be published to DA layer

Important assertions: - blocks are safely stored in database before submission to DA - blocks are always pushed to DA in order (by height) - DA submission of multiple blocks is atomic - it's impossible to submit only part of a batch

lastSubmittedHeight is updated only after receiving confirmation from DA. Worst case scenario is when blocks was successfully submitted to DA, but confirmation was not received (e.g. node was restarted, networking issue occurred). In this case blocks are re-submitted to DA (it's extra cost). rollkit is able to skip duplicate blocks so this shouldn't affect full nodes. TODO(tzdybal): we shouldn't try to push all pending blocks at once; this should depend on max blob size

func NewPendingBlocks added in v0.10.3

func NewPendingBlocks(store store.Store, logger log.Logger) (*PendingBlocks, error)

NewPendingBlocks returns a new PendingBlocks struct

type SyncService added in v0.13.6

type SyncService[H header.Header[H]] struct {
	// contains filtered or unexported fields
}

SyncService is the P2P Sync Service for blocks and headers.

Uses the go-header library for handling all P2P logic.

func (*SyncService[H]) Start added in v0.13.6

func (syncService *SyncService[H]) Start(ctx context.Context) error

Start is a part of Service interface.

func (*SyncService[H]) StartSyncer added in v0.13.6

func (syncService *SyncService[H]) StartSyncer(ctx context.Context) error

StartSyncer starts the SyncService's syncer

func (*SyncService[H]) Stop added in v0.13.6

func (syncService *SyncService[H]) Stop(ctx context.Context) error

Stop is a part of Service interface.

`store` is closed last because it's used by other services.

func (*SyncService[H]) Store added in v0.13.6

func (syncService *SyncService[H]) Store() *goheaderstore.Store[H]

Store returns the store of the SyncService

func (*SyncService[H]) WriteToStoreAndBroadcast added in v0.13.6

func (syncService *SyncService[H]) WriteToStoreAndBroadcast(ctx context.Context, headerOrBlock H) error

WriteToStoreAndBroadcast initializes store if needed and broadcasts provided header or block. Note: Only returns an error in case store can't be initialized. Logs error if there's one while broadcasting.

type SyncerStatus added in v0.10.5

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

SyncerStatus is used by header and block exchange service for keeping track of the status of the syncer in them.

Jump to

Keyboard shortcuts

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