catalyst

package
v1.16.39 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2025 License: GPL-3.0, BSD-3-Clause Imports: 34 Imported by: 0

Documentation

Overview

Package catalyst implements the temporary eth1/eth2 RPC integration.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Register

func Register(stack *node.Node, backend *eth.Ethereum) error

Register adds the engine API to the full node.

func RegisterSimulatedBeaconAPIs

func RegisterSimulatedBeaconAPIs(stack *node.Node, sim *SimulatedBeacon)

RegisterSimulatedBeaconAPIs registers the simulated beacon's API with the stack.

Types

type ConsensusAPI

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

func NewConsensusAPI

func NewConsensusAPI(eth *eth.Ethereum) *ConsensusAPI

NewConsensusAPI creates a new consensus api for the given backend. The underlying blockchain needs to have a valid terminal total difficulty set.

func (*ConsensusAPI) ExchangeCapabilities

func (api *ConsensusAPI) ExchangeCapabilities([]string) []string

ExchangeCapabilities returns the current methods provided by this node.

func (*ConsensusAPI) ExchangeTransitionConfigurationV1

func (api *ConsensusAPI) ExchangeTransitionConfigurationV1(config engine.TransitionConfigurationV1) (*engine.TransitionConfigurationV1, error)

ExchangeTransitionConfigurationV1 checks the given configuration against the configuration of the node.

func (*ConsensusAPI) ExecuteStatelessPayloadV1

func (api *ConsensusAPI) ExecuteStatelessPayloadV1(params engine.ExecutableData, opaqueWitness hexutil.Bytes) (engine.StatelessPayloadStatusV1, error)

ExecuteStatelessPayloadV1 is analogous to NewPayloadV1, only it operates in a stateless mode on top of a provided witness instead of the local database.

func (*ConsensusAPI) ExecuteStatelessPayloadV2

func (api *ConsensusAPI) ExecuteStatelessPayloadV2(params engine.ExecutableData, opaqueWitness hexutil.Bytes) (engine.StatelessPayloadStatusV1, error)

ExecuteStatelessPayloadV2 is analogous to NewPayloadV2, only it operates in a stateless mode on top of a provided witness instead of the local database.

func (*ConsensusAPI) ExecuteStatelessPayloadV3

func (api *ConsensusAPI) ExecuteStatelessPayloadV3(params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash, opaqueWitness hexutil.Bytes) (engine.StatelessPayloadStatusV1, error)

ExecuteStatelessPayloadV3 is analogous to NewPayloadV3, only it operates in a stateless mode on top of a provided witness instead of the local database.

func (*ConsensusAPI) ExecuteStatelessPayloadV4

func (api *ConsensusAPI) ExecuteStatelessPayloadV4(params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash, executionRequests []hexutil.Bytes, opaqueWitness hexutil.Bytes) (engine.StatelessPayloadStatusV1, error)

ExecuteStatelessPayloadV4 is analogous to NewPayloadV4, only it operates in a stateless mode on top of a provided witness instead of the local database.

func (*ConsensusAPI) ForkchoiceUpdatedV1

func (api *ConsensusAPI) ForkchoiceUpdatedV1(update engine.ForkchoiceStateV1, payloadAttributes *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)

ForkchoiceUpdatedV1 has several responsibilities:

We try to set our blockchain to the headBlock.

If the method is called with an empty head block: we return success, which can be used to check if the engine API is enabled.

If the total difficulty was not reached: we return INVALID.

If the finalizedBlockHash is set: we check if we have the finalizedBlockHash in our db, if not we start a sync.

If there are payloadAttributes: we try to assemble a block with the payloadAttributes and return its payloadID.

func (*ConsensusAPI) ForkchoiceUpdatedV2

func (api *ConsensusAPI) ForkchoiceUpdatedV2(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)

ForkchoiceUpdatedV2 is equivalent to V1 with the addition of withdrawals in the payload attributes. It supports both PayloadAttributesV1 and PayloadAttributesV2.

func (*ConsensusAPI) ForkchoiceUpdatedV3

func (api *ConsensusAPI) ForkchoiceUpdatedV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)

ForkchoiceUpdatedV3 is equivalent to V2 with the addition of parent beacon block root in the payload attributes. It supports only PayloadAttributesV3.

func (*ConsensusAPI) ForkchoiceUpdatedWithWitnessV1

func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV1(update engine.ForkchoiceStateV1, payloadAttributes *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)

ForkchoiceUpdatedWithWitnessV1 is analogous to ForkchoiceUpdatedV1, only it generates an execution witness too if block building was requested.

func (*ConsensusAPI) ForkchoiceUpdatedWithWitnessV2

func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV2(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)

ForkchoiceUpdatedWithWitnessV2 is analogous to ForkchoiceUpdatedV2, only it generates an execution witness too if block building was requested.

func (*ConsensusAPI) ForkchoiceUpdatedWithWitnessV3

func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)

ForkchoiceUpdatedWithWitnessV3 is analogous to ForkchoiceUpdatedV3, only it generates an execution witness too if block building was requested.

func (*ConsensusAPI) GetBlobsV1

func (api *ConsensusAPI) GetBlobsV1(hashes []common.Hash) ([]*engine.BlobAndProofV1, error)

GetBlobsV1 returns a blob from the transaction pool.

Specification:

Given an array of blob versioned hashes client software MUST respond with an array of BlobAndProofV1 objects with matching versioned hashes, respecting the order of versioned hashes in the input array.

Client software MUST place responses in the order given in the request, using null for any missing blobs. For instance:

if the request is [A_versioned_hash, B_versioned_hash, C_versioned_hash] and client software has data for blobs A and C, but doesn't have data for B, the response MUST be [A, null, C].

Client software MUST support request sizes of at least 128 blob versioned hashes. The client MUST return -38004: Too large request error if the number of requested blobs is too large.

Client software MAY return an array of all null entries if syncing or otherwise unable to serve blob pool data.

func (*ConsensusAPI) GetBlobsV2

func (api *ConsensusAPI) GetBlobsV2(hashes []common.Hash) ([]*engine.BlobAndProofV2, error)

GetBlobsV2 returns a blob from the transaction pool.

Specification: Refer to the specification for engine_getBlobsV1 with changes of the following:

Given an array of blob versioned hashes client software MUST respond with an array of BlobAndProofV2 objects with matching versioned hashes, respecting the order of versioned hashes in the input array.

Client software MUST return null in case of any missing or older version blobs. For instance,

  • if the request is [A_versioned_hash, B_versioned_hash, C_versioned_hash] and client software has data for blobs A and C, but doesn't have data for B, the response MUST be null.

  • if the request is [A_versioned_hash_for_blob_with_blob_proof], the response MUST be null as well.

Client software MUST support request sizes of at least 128 blob versioned hashes. The client MUST return -38004: Too large request error if the number of requested blobs is too large.

Client software MUST return null if syncing or otherwise unable to serve blob pool data.

func (*ConsensusAPI) GetClientVersionV1

func (api *ConsensusAPI) GetClientVersionV1(info engine.ClientVersionV1) []engine.ClientVersionV1

GetClientVersionV1 exchanges client version data of this node.

func (*ConsensusAPI) GetPayloadBodiesByHashV1

func (api *ConsensusAPI) GetPayloadBodiesByHashV1(hashes []common.Hash) []*engine.ExecutionPayloadBody

GetPayloadBodiesByHashV1 implements engine_getPayloadBodiesByHashV1 which allows for retrieval of a list of block bodies by the engine api.

func (*ConsensusAPI) GetPayloadBodiesByHashV2

func (api *ConsensusAPI) GetPayloadBodiesByHashV2(hashes []common.Hash) []*engine.ExecutionPayloadBody

GetPayloadBodiesByHashV2 implements engine_getPayloadBodiesByHashV1 which allows for retrieval of a list of block bodies by the engine api.

func (*ConsensusAPI) GetPayloadBodiesByRangeV1

func (api *ConsensusAPI) GetPayloadBodiesByRangeV1(start, count hexutil.Uint64) ([]*engine.ExecutionPayloadBody, error)

GetPayloadBodiesByRangeV1 implements engine_getPayloadBodiesByRangeV1 which allows for retrieval of a range of block bodies by the engine api.

func (*ConsensusAPI) GetPayloadBodiesByRangeV2

func (api *ConsensusAPI) GetPayloadBodiesByRangeV2(start, count hexutil.Uint64) ([]*engine.ExecutionPayloadBody, error)

GetPayloadBodiesByRangeV2 implements engine_getPayloadBodiesByRangeV1 which allows for retrieval of a range of block bodies by the engine api.

func (*ConsensusAPI) GetPayloadV1

func (api *ConsensusAPI) GetPayloadV1(payloadID engine.PayloadID) (*engine.ExecutableData, error)

GetPayloadV1 returns a cached payload by id.

func (*ConsensusAPI) GetPayloadV2

func (api *ConsensusAPI) GetPayloadV2(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)

GetPayloadV2 returns a cached payload by id.

func (*ConsensusAPI) GetPayloadV3

func (api *ConsensusAPI) GetPayloadV3(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)

GetPayloadV3 returns a cached payload by id. This endpoint should only be used for the Cancun fork.

func (*ConsensusAPI) GetPayloadV4

func (api *ConsensusAPI) GetPayloadV4(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)

GetPayloadV4 returns a cached payload by id. This endpoint should only be used for the Prague fork.

func (*ConsensusAPI) GetPayloadV5

func (api *ConsensusAPI) GetPayloadV5(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)

GetPayloadV5 returns a cached payload by id. This endpoint should only be used after the Osaka fork.

This method follows the same specification as engine_getPayloadV4 with changes of returning BlobsBundleV2 with BlobSidecar version 1.

func (*ConsensusAPI) NewPayloadV1

func (api *ConsensusAPI) NewPayloadV1(params engine.ExecutableData) (engine.PayloadStatusV1, error)

NewPayloadV1 creates an Eth1 block, inserts it in the chain, and returns the status of the chain.

func (*ConsensusAPI) NewPayloadV2

func (api *ConsensusAPI) NewPayloadV2(params engine.ExecutableData) (engine.PayloadStatusV1, error)

NewPayloadV2 creates an Eth1 block, inserts it in the chain, and returns the status of the chain.

func (*ConsensusAPI) NewPayloadV3

func (api *ConsensusAPI) NewPayloadV3(params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash) (engine.PayloadStatusV1, error)

NewPayloadV3 creates an Eth1 block, inserts it in the chain, and returns the status of the chain.

func (*ConsensusAPI) NewPayloadV4

func (api *ConsensusAPI) NewPayloadV4(params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash, executionRequests []hexutil.Bytes) (engine.PayloadStatusV1, error)

NewPayloadV4 creates an Eth1 block, inserts it in the chain, and returns the status of the chain.

func (*ConsensusAPI) NewPayloadWithWitnessV1

func (api *ConsensusAPI) NewPayloadWithWitnessV1(params engine.ExecutableData) (engine.PayloadStatusV1, error)

NewPayloadWithWitnessV1 is analogous to NewPayloadV1, only it also generates and returns a stateless witness after running the payload.

func (*ConsensusAPI) NewPayloadWithWitnessV2

func (api *ConsensusAPI) NewPayloadWithWitnessV2(params engine.ExecutableData) (engine.PayloadStatusV1, error)

NewPayloadWithWitnessV2 is analogous to NewPayloadV2, only it also generates and returns a stateless witness after running the payload.

func (*ConsensusAPI) NewPayloadWithWitnessV3

func (api *ConsensusAPI) NewPayloadWithWitnessV3(params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash) (engine.PayloadStatusV1, error)

NewPayloadWithWitnessV3 is analogous to NewPayloadV3, only it also generates and returns a stateless witness after running the payload.

func (*ConsensusAPI) NewPayloadWithWitnessV4

func (api *ConsensusAPI) NewPayloadWithWitnessV4(params engine.ExecutableData, versionedHashes []common.Hash, beaconRoot *common.Hash, executionRequests []hexutil.Bytes) (engine.PayloadStatusV1, error)

NewPayloadWithWitnessV4 is analogous to NewPayloadV4, only it also generates and returns a stateless witness after running the payload.

type FullSyncTester

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

FullSyncTester is an auxiliary service that allows Geth to perform full sync alone without consensus-layer attached. Users must specify a valid block hash as the sync target.

This tester can be applied to different networks, no matter it's pre-merge or post-merge, but only for full-sync.

func RegisterFullSyncTester

func RegisterFullSyncTester(stack *node.Node, backend *eth.Ethereum, target common.Hash, exitWhenSynced bool) (*FullSyncTester, error)

RegisterFullSyncTester registers the full-sync tester service into the node stack for launching and stopping the service controlled by node.

func (*FullSyncTester) Start

func (tester *FullSyncTester) Start() error

Start launches the beacon sync with provided sync target.

func (*FullSyncTester) Stop

func (tester *FullSyncTester) Stop() error

Stop stops the full-sync tester to stop all background activities. This function can only be called for one time.

type SimulatedBeacon

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

SimulatedBeacon drives an Ethereum instance as if it were a real beacon client. It can run in period mode where it mines a new block every period (seconds) or on every transaction via Commit, Fork and AdjustTime.

func NewSimulatedBeacon

func NewSimulatedBeacon(period uint64, feeRecipient common.Address, eth *eth.Ethereum) (*SimulatedBeacon, error)

NewSimulatedBeacon constructs a new simulated beacon chain.

func (*SimulatedBeacon) AdjustTime

func (c *SimulatedBeacon) AdjustTime(adjustment time.Duration) error

AdjustTime creates a new block with an adjusted timestamp.

func (*SimulatedBeacon) Commit

func (c *SimulatedBeacon) Commit() common.Hash

Commit seals a block on demand.

func (*SimulatedBeacon) Fork

func (c *SimulatedBeacon) Fork(parentHash common.Hash) error

Fork sets the head to the provided hash.

func (*SimulatedBeacon) Rollback

func (c *SimulatedBeacon) Rollback()

Rollback un-sends previously added transactions.

func (*SimulatedBeacon) Start

func (c *SimulatedBeacon) Start() error

Start invokes the SimulatedBeacon life-cycle function in a goroutine.

func (*SimulatedBeacon) Stop

func (c *SimulatedBeacon) Stop() error

Stop halts the SimulatedBeacon service.

Jump to

Keyboard shortcuts

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