sync

package
v0.16.7-rc.0 Latest Latest
Warning

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

Go to latest
Published: Sep 23, 2026 License: Apache-2.0 Imports: 21 Imported by: 2

Documentation

Index

Constants

View Source
const (
	OpVerify = "verify"
	OpStore  = "store"
	OpFetch  = "fetch"

	// Reorg-check ops, one per exit level of isReverting: resolved from the
	// local height alone, after fetching the remote head, or only after also
	// reading the local header for a hash comparison.
	OpReorgCheckFast   = "reorgCheckFast"
	OpReorgCheckRemote = "reorgCheckRemote"
	OpReorgCheckLocal  = "reorgCheckLocal"
)
View Source
const DefaultPreConfirmedPollInterval = 500 * time.Millisecond

DefaultPreConfirmedPollInterval is how often the pre-confirmed poller ticks unless overridden.

Variables

This section is empty.

Functions

func MakeEmptyPendingForParent deprecated added in v0.16.0

func MakeEmptyPendingForParent(
	bcReader blockchain.Reader,
	latestHeader *core.Header,
) (pending.Pending, error)

Deprecated: MakeEmptyPendingForParent constructs an empty pending.Pending placeholder used by rpc/v8 to serve "pending" block ID requests. Remove when rpc/v8 is deprecated.

Types

type CommittedBlock added in v0.15.0

type CommittedBlock struct {
	Block       *core.Block
	StateUpdate *core.StateUpdate
	NewClasses  map[felt.Felt]core.ClassDefinition
	Persisted   chan error // This is used to signal whether the block was persisted successfully
}

type DataSource added in v0.15.0

type DataSource interface {
	BlockByNumber(ctx context.Context, blockNumber uint64) (CommittedBlock, error)
	BlockHeaderLatest(ctx context.Context) (*core.Header, error)
	preconfirmed.DataSource
}

func NewFeederGatewayDataSource added in v0.15.0

func NewFeederGatewayDataSource(blockchain *blockchain.Blockchain, starknetData starknetdata.StarknetData) DataSource

type EventListener added in v0.7.0

type EventListener interface {
	OnSyncStepDone(op string, blockNum uint64, took time.Duration)
	OnReorg(blockNum uint64)
}

type NewHeadSubscription added in v0.13.2

type NewHeadSubscription struct {
	*feed.Subscription[*core.Block]
}

This is a work-around. mockgen chokes when the instantiated generic type is in the interface.

type NoopSynchronizer added in v0.10.0

type NoopSynchronizer struct{}

This is temporary and will be removed once the p2p synchronizer implements this interface.

func (*NoopSynchronizer) HighestBlockHeader added in v0.10.0

func (n *NoopSynchronizer) HighestBlockHeader() *core.Header

func (*NoopSynchronizer) PreConfirmedChain added in v0.16.5

func (n *NoopSynchronizer) PreConfirmedChain() (preconfirmed.ChainReader, error)

func (*NoopSynchronizer) StartingBlockHeader added in v0.16.6

func (n *NoopSynchronizer) StartingBlockHeader() (*core.Header, error)

func (*NoopSynchronizer) SubscribeNewHeads added in v0.10.0

func (n *NoopSynchronizer) SubscribeNewHeads() NewHeadSubscription

func (*NoopSynchronizer) SubscribePreConfirmed added in v0.16.0

func (n *NoopSynchronizer) SubscribePreConfirmed() preconfirmed.Subscription

func (*NoopSynchronizer) SubscribeReorg added in v0.13.0

func (n *NoopSynchronizer) SubscribeReorg() ReorgSubscription

type Option added in v0.16.7

type Option func(*options)

Option is a functional option for configuring a Synchronizer.

func WithPreConfirmedPollInterval added in v0.16.7

func WithPreConfirmedPollInterval(interval time.Duration) Option

WithPreConfirmedPollInterval overrides DefaultPreConfirmedPollInterval; zero disables polling.

func WithReadOnlyBlockchain added in v0.16.7

func WithReadOnlyBlockchain(readOnly bool) Option

WithReadOnlyBlockchain stops the synchronizer from writing to the blockchain.

type PendingTxSubscription added in v0.13.0

type PendingTxSubscription struct {
	*feed.Subscription[[]core.Transaction]
}

type Reader added in v0.6.2

type Reader interface {
	StartingBlockHeader() (*core.Header, error)
	HighestBlockHeader() *core.Header
	SubscribeNewHeads() NewHeadSubscription
	SubscribeReorg() ReorgSubscription
	SubscribePreConfirmed() preconfirmed.Subscription
	PreConfirmedChain() (preconfirmed.ChainReader, error)
}

Todo: Since this is also going to be implemented by p2p package we should move this interface to node package

type ReorgBlockRange added in v0.13.0

type ReorgBlockRange struct {
	// StartBlockHash is the hash of the first known block of the orphaned chain
	StartBlockHash *felt.Felt
	// StartBlockNum is the number of the first known block of the orphaned chain
	StartBlockNum uint64
	// The last known block of the orphaned chain
	EndBlockHash *felt.Felt
	// Number of the last known block of the orphaned chain
	EndBlockNum uint64
}

ReorgBlockRange represents data about reorganised blocks, starting and ending block number and hash

type ReorgSubscription added in v0.13.0

type ReorgSubscription struct {
	*feed.Subscription[*ReorgBlockRange]
}

type SelectiveListener added in v0.7.0

type SelectiveListener struct {
	OnSyncStepDoneCb func(op string, blockNum uint64, took time.Duration)
	OnReorgCb        func(blockNum uint64)
}

func (*SelectiveListener) OnReorg added in v0.7.0

func (l *SelectiveListener) OnReorg(blockNum uint64)

func (*SelectiveListener) OnSyncStepDone added in v0.7.0

func (l *SelectiveListener) OnSyncStepDone(op string, blockNum uint64, took time.Duration)

type Synchronizer

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

Synchronizer manages a list of StarknetData to fetch the latest blockchain updates

func New added in v0.2.1

func New(
	blockchain *blockchain.Blockchain,
	dataSource DataSource,
	logger log.StructuredLogger,
	opts ...Option,
) *Synchronizer

func (*Synchronizer) HighestBlockHeader added in v0.3.0

func (s *Synchronizer) HighestBlockHeader() *core.Header

func (*Synchronizer) PreConfirmedChain added in v0.16.5

func (s *Synchronizer) PreConfirmedChain() (preconfirmed.ChainReader, error)

func (*Synchronizer) Run

func (s *Synchronizer) Run(ctx context.Context) error

Run starts the Synchronizer, returns an error if the loop is already running

func (*Synchronizer) StartingBlockHeader added in v0.16.6

func (s *Synchronizer) StartingBlockHeader() (*core.Header, error)

func (*Synchronizer) SubscribeNewHeads added in v0.7.4

func (s *Synchronizer) SubscribeNewHeads() NewHeadSubscription

func (*Synchronizer) SubscribePreConfirmed added in v0.16.0

func (s *Synchronizer) SubscribePreConfirmed() preconfirmed.Subscription

func (*Synchronizer) SubscribeReorg added in v0.13.0

func (s *Synchronizer) SubscribeReorg() ReorgSubscription

func (*Synchronizer) WithListener added in v0.7.0

func (s *Synchronizer) WithListener(listener EventListener) *Synchronizer

WithListener registers an EventListener

func (*Synchronizer) WithPlugin added in v0.12.3

func (s *Synchronizer) WithPlugin(plugin junoplugin.JunoPlugin) *Synchronizer

WithPlugin registers an plugin

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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