aggsender

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2025 License: Apache-2.0, MIT Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AutomaticBlockInterval = time.Second * 0
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AggSender

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

AggSender is a component that will send certificates to the aggLayer

func New

func New(
	ctx context.Context,
	logger *log.Logger,
	cfg config.Config,
	aggLayerClient agglayer.AgglayerClientInterface,
	l1InfoTreeSyncer *l1infotreesync.L1InfoTreeSync,
	l2Syncer types.L2BridgeSyncer,
	epochNotifier types.EpochNotifier,
	l1Client types.EthClient,
	l2Client types.EthClient) (*AggSender, error)

New returns a new AggSender instance

func (*AggSender) GetRPCServices

func (a *AggSender) GetRPCServices() []jRPC.Service

GetRPCServices returns the list of services that the RPC provider exposes

func (*AggSender) Info

func (a *AggSender) Info() types.AggsenderInfo

func (*AggSender) Start

func (a *AggSender) Start(ctx context.Context)

Start starts the AggSender

type BlockNotifierPolling

type BlockNotifierPolling struct {
	types.GenericSubscriber[types.EventNewBlock]
	// contains filtered or unexported fields
}

func NewBlockNotifierPolling

func NewBlockNotifierPolling(ethClient types.EthClient,
	config ConfigBlockNotifierPolling,
	logger aggkitcommon.Logger,
	subscriber types.GenericSubscriber[types.EventNewBlock]) (*BlockNotifierPolling, error)

NewBlockNotifierPolling creates a new BlockNotifierPolling. if param `subscriber` is nil a new GenericSubscriberImpl[types.EventNewBlock] will be created. To use this class you need to subscribe and each time that a new block appear the subscriber will be notified through the channel. (check unit tests TestExploratoryBlockNotifierPolling for more information)

func (*BlockNotifierPolling) GetCurrentBlockNumber added in v0.0.2

func (b *BlockNotifierPolling) GetCurrentBlockNumber() uint64

func (*BlockNotifierPolling) Start

func (b *BlockNotifierPolling) Start(ctx context.Context)

Start starts the BlockNotifierPolling blocking the current goroutine

func (*BlockNotifierPolling) String

func (b *BlockNotifierPolling) String() string

type ConfigBlockNotifierPolling

type ConfigBlockNotifierPolling struct {
	// BlockFinalityType is the finality of the block to be notified
	BlockFinalityType etherman.BlockNumberFinality
	// CheckNewBlockInterval is the interval at which the AggSender will check for new blocks
	// if is 0 it will be calculated automatically
	CheckNewBlockInterval time.Duration
}

type ConfigEpochNotifierPerBlock

type ConfigEpochNotifierPerBlock struct {
	StartingEpochBlock uint64
	NumBlockPerEpoch   uint

	// EpochNotificationPercentage
	// 0 -> begin new Epoch
	// 50 -> middle of epoch
	// 100 -> end of epoch (same as 0)
	EpochNotificationPercentage uint
}

func NewConfigEpochNotifierPerBlock

func NewConfigEpochNotifierPerBlock(ctx context.Context,
	aggLayer agglayer.AggLayerClientGetEpochConfiguration,
	epochNotificationPercentage uint) (*ConfigEpochNotifierPerBlock, error)

func (*ConfigEpochNotifierPerBlock) String

func (c *ConfigEpochNotifierPerBlock) String() string

func (*ConfigEpochNotifierPerBlock) Validate

func (c *ConfigEpochNotifierPerBlock) Validate() error

type EpochNotifierPerBlock

type EpochNotifierPerBlock struct {
	Config ConfigEpochNotifierPerBlock
	types.GenericSubscriber[types.EpochEvent]
	// contains filtered or unexported fields
}

func (*EpochNotifierPerBlock) GetEpochStatus added in v0.0.2

func (e *EpochNotifierPerBlock) GetEpochStatus() types.EpochStatus

GetCurrentStatus returns the current status of the epoch

func (*EpochNotifierPerBlock) Start

func (e *EpochNotifierPerBlock) Start(ctx context.Context)

Start starts the notifier synchronously

func (*EpochNotifierPerBlock) StartAsync

func (e *EpochNotifierPerBlock) StartAsync(ctx context.Context)

StartAsync starts the notifier in a goroutine

func (*EpochNotifierPerBlock) String

func (e *EpochNotifierPerBlock) String() string

type ExtraInfoEventEpoch

type ExtraInfoEventEpoch struct {
	PendingBlocks int
}

func (*ExtraInfoEventEpoch) String

func (e *ExtraInfoEventEpoch) String() string

type GenericSubscriberImpl

type GenericSubscriberImpl[T any] struct {
	// contains filtered or unexported fields
}

func NewGenericSubscriberImpl

func NewGenericSubscriberImpl[T any]() *GenericSubscriberImpl[T]

func (*GenericSubscriberImpl[T]) Publish

func (g *GenericSubscriberImpl[T]) Publish(data T)

func (*GenericSubscriberImpl[T]) Subscribe

func (g *GenericSubscriberImpl[T]) Subscribe(subscriberName string) <-chan T

type RateLimiter added in v0.0.2

type RateLimiter interface {
	Call(msg string, allowToSleep bool) *time.Duration
	String() string
}

Jump to

Keyboard shortcuts

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