Documentation
¶
Overview ¶
Package block contains a light wrapper of the EventsReplayClient[Block] generic which listens for committed block events on chain and emits them through a ReplayObservable. This enables consumers to listen for newly committed blocks and react to them asynchronously.
Index ¶
- func NewBlockClient(ctx context.Context, deps depinject.Config, opts ...client.BlockClientOption) (_ client.BlockClient, err error)
- func UnmarshalNewBlock(blockMsgBz []byte) (client.Block, error)
- func WithConnRetryLimit(limit int) client.BlockClientOption
- type CometBlockResult
- type CometNewBlockEvent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewBlockClient ¶
func NewBlockClient( ctx context.Context, deps depinject.Config, opts ...client.BlockClientOption, ) (_ client.BlockClient, err error)
NewBlockClient creates a new block client from the given dependencies and cometWebsocketURL. It uses a pre-defined committedBlocksQuery to subscribe to newly committed block events which are mapped to Block objects.
This lightly wraps the EventsReplayClient[Block] generic to correctly mock the interface.
Required dependencies: - client.EventsQueryClient - client.BlockQueryClient
func UnmarshalNewBlock ¶
UnmarshalNewBlock is a wrapper around UnmarshalNewBlockEvent to return an interface that satisfies the client.Block interface.
func WithConnRetryLimit ¶
func WithConnRetryLimit(limit int) client.BlockClientOption
WithConnRetryLimit returns an option function which sets the number of times the underlying replay client should retry in the event that it encounters an error or its connection is interrupted. If connRetryLimit is < 0, it will retry indefinitely.
Types ¶
type CometBlockResult ¶ added in v0.1.2
type CometBlockResult coretypes.ResultBlock
CometBlockResult is a non-alias of the comet ResultBlock type that implements the client.Block interface. It is used across the codebase to standardize the access to a block's height and hash across different block clients.
func (*CometBlockResult) Hash ¶ added in v0.1.2
func (cbr *CometBlockResult) Hash() []byte
func (*CometBlockResult) Height ¶ added in v0.1.2
func (cbr *CometBlockResult) Height() int64
func (*CometBlockResult) Txs ¶ added in v0.1.2
func (cbr *CometBlockResult) Txs() []types.Tx
type CometNewBlockEvent ¶
type CometNewBlockEvent struct {
Data struct {
Value struct {
// Block and BlockID are nested to match CometBFT's unique serialization,
// diverging from the rollkit's approach seen in other implementations.
Block *types.Block `json:"block"`
BlockID types.BlockID `json:"block_id"`
ResultFinalizeBlock struct {
Events []abci.Event `json:"events"`
} `json:"result_finalize_block"`
} `json:"value"`
} `json:"data"`
}
CometNewBlockEvent is used to deserialize incoming committed block event messages from the respective events query subscription. It implements the client.Block interface by loosely wrapping cometbft's block type, into which messages are deserialized.
func UnmarshalNewBlockEvent ¶
func UnmarshalNewBlockEvent(blockMsgBz []byte) (*CometNewBlockEvent, error)
UnmarshalNewBlockEvent is a function that attempts to deserialize the given bytes into a comet new block event . If the resulting block has a height of zero, assume the event was not a block event and return an ErrUnmarshalBlockEvent error.
func (*CometNewBlockEvent) Hash ¶
func (blockEvent *CometNewBlockEvent) Hash() []byte
Hash returns the binary representation of the block's hash as a byte slice.
func (*CometNewBlockEvent) Height ¶
func (blockEvent *CometNewBlockEvent) Height() int64
Height returns the block's height.
func (*CometNewBlockEvent) Txs ¶ added in v0.0.2
func (blockEvent *CometNewBlockEvent) Txs() []types.Tx