Documentation
¶
Overview ¶
Package catalyst implements the temporary eth1/eth2 RPC integration.
Index ¶
- func Register(stack *node.Node, backend *eth.Ethereum) error
- func RegisterSimulatedBeaconAPIs(stack *node.Node, sim *SimulatedBeacon)
- type ConsensusAPI
- func (api *ConsensusAPI) ExchangeCapabilities([]string) []string
- func (api *ConsensusAPI) ExchangeTransitionConfigurationV1(config engine.TransitionConfigurationV1) (*engine.TransitionConfigurationV1, error)
- func (api *ConsensusAPI) ExecuteStatelessPayloadV1(params engine.ExecutableData, opaqueWitness hexutil.Bytes) (engine.StatelessPayloadStatusV1, error)
- func (api *ConsensusAPI) ExecuteStatelessPayloadV2(params engine.ExecutableData, opaqueWitness hexutil.Bytes) (engine.StatelessPayloadStatusV1, error)
- func (api *ConsensusAPI) ExecuteStatelessPayloadV3(params engine.ExecutableData, versionedHashes []common.Hash, ...) (engine.StatelessPayloadStatusV1, error)
- func (api *ConsensusAPI) ExecuteStatelessPayloadV4(params engine.ExecutableData, versionedHashes []common.Hash, ...) (engine.StatelessPayloadStatusV1, error)
- func (api *ConsensusAPI) ForkchoiceUpdatedV1(update engine.ForkchoiceStateV1, payloadAttributes *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)
- func (api *ConsensusAPI) ForkchoiceUpdatedV2(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)
- func (api *ConsensusAPI) ForkchoiceUpdatedV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)
- func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV1(update engine.ForkchoiceStateV1, payloadAttributes *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)
- func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV2(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)
- func (api *ConsensusAPI) ForkchoiceUpdatedWithWitnessV3(update engine.ForkchoiceStateV1, params *engine.PayloadAttributes) (engine.ForkChoiceResponse, error)
- func (api *ConsensusAPI) GetBlobsV1(hashes []common.Hash) ([]*engine.BlobAndProofV1, error)
- func (api *ConsensusAPI) GetBlobsV2(hashes []common.Hash) ([]*engine.BlobAndProofV2, error)
- func (api *ConsensusAPI) GetClientVersionV1(info engine.ClientVersionV1) []engine.ClientVersionV1
- func (api *ConsensusAPI) GetPayloadBodiesByHashV1(hashes []common.Hash) []*engine.ExecutionPayloadBody
- func (api *ConsensusAPI) GetPayloadBodiesByHashV2(hashes []common.Hash) []*engine.ExecutionPayloadBody
- func (api *ConsensusAPI) GetPayloadBodiesByRangeV1(start, count hexutil.Uint64) ([]*engine.ExecutionPayloadBody, error)
- func (api *ConsensusAPI) GetPayloadBodiesByRangeV2(start, count hexutil.Uint64) ([]*engine.ExecutionPayloadBody, error)
- func (api *ConsensusAPI) GetPayloadV1(payloadID engine.PayloadID) (*engine.ExecutableData, error)
- func (api *ConsensusAPI) GetPayloadV2(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)
- func (api *ConsensusAPI) GetPayloadV3(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)
- func (api *ConsensusAPI) GetPayloadV4(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)
- func (api *ConsensusAPI) GetPayloadV5(payloadID engine.PayloadID) (*engine.ExecutionPayloadEnvelope, error)
- func (api *ConsensusAPI) NewPayloadV1(params engine.ExecutableData) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadV2(params engine.ExecutableData) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadV3(params engine.ExecutableData, versionedHashes []common.Hash, ...) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadV4(params engine.ExecutableData, versionedHashes []common.Hash, ...) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadWithWitnessV1(params engine.ExecutableData) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadWithWitnessV2(params engine.ExecutableData) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadWithWitnessV3(params engine.ExecutableData, versionedHashes []common.Hash, ...) (engine.PayloadStatusV1, error)
- func (api *ConsensusAPI) NewPayloadWithWitnessV4(params engine.ExecutableData, versionedHashes []common.Hash, ...) (engine.PayloadStatusV1, error)
- type FullSyncTester
- type SimulatedBeacon
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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.