catalyst

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: May 9, 2022 License: GPL-3.0 Imports: 22 Imported by: 0

Documentation

Overview

Package catalyst implements the temporary eth1/eth2 RPC integration.

Index

Constants

This section is empty.

Variables

View Source
var (
	VALID            = GenericStringResponse{"VALID"}
	SUCCESS          = GenericStringResponse{"SUCCESS"}
	INVALID          = ForkChoiceResponse{Status: "INVALID", PayloadID: nil}
	SYNCING          = ForkChoiceResponse{Status: "INVALID", PayloadID: nil}
	UnknownHeader    = rpc.CustomError{Code: -32000, Message: "unknown header"}
	UnknownPayload   = rpc.CustomError{Code: -32001, Message: "unknown payload"}
	InvalidPayloadID = rpc.CustomError{Code: 1, Message: "invalid payload id"}
)

Functions

func ExecutableDataToBlock

func ExecutableDataToBlock(params ExecutableDataV1) (*types.Block, error)

func Register

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

Register adds catalyst APIs to the full node.

func RegisterLight

func RegisterLight(stack *node.Node, backend *les.LightEthereum) error

RegisterLight adds catalyst APIs to the light client.

Types

type ConsensusAPI

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

func NewConsensusAPI

func NewConsensusAPI(eth *eth.Ethereum, les *les.LightEthereum) *ConsensusAPI

func (*ConsensusAPI) ExecutePayloadV1

func (api *ConsensusAPI) ExecutePayloadV1(params ExecutableDataV1) (ExecutePayloadResponse, error)

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

func (*ConsensusAPI) ForkchoiceUpdatedV1

func (api *ConsensusAPI) ForkchoiceUpdatedV1(heads ForkchoiceStateV1, PayloadAttributes *PayloadAttributesV1) (ForkChoiceResponse, error)

func (*ConsensusAPI) GetPayloadV1

func (api *ConsensusAPI) GetPayloadV1(payloadID hexutil.Bytes) (*ExecutableDataV1, error)

type ConsensusValidatedParams

type ConsensusValidatedParams struct {
	BlockHash common.Hash `json:"blockHash"`
	Status    string      `json:"status"`
}

type ExecutableDataV1

type ExecutableDataV1 struct {
	ParentHash    common.Hash    `json:"parentHash"    gencodec:"required"`
	Coinbase      common.Address `json:"coinbase"      gencodec:"required"`
	StateRoot     common.Hash    `json:"stateRoot"     gencodec:"required"`
	ReceiptRoot   common.Hash    `json:"receiptRoot"   gencodec:"required"`
	LogsBloom     []byte         `json:"logsBloom"     gencodec:"required"`
	Random        common.Hash    `json:"random"        gencodec:"required"`
	Number        uint64         `json:"blockNumber"   gencodec:"required"`
	GasLimit      uint64         `json:"gasLimit"      gencodec:"required"`
	GasUsed       uint64         `json:"gasUsed"       gencodec:"required"`
	Timestamp     uint64         `json:"timestamp"     gencodec:"required"`
	ExtraData     []byte         `json:"extraData"     gencodec:"required"`
	BaseFeePerGas *big.Int       `json:"baseFeePerGas" gencodec:"required"`
	BlockHash     common.Hash    `json:"blockHash"     gencodec:"required"`
	Transactions  [][]byte       `json:"transactions"  gencodec:"required"`
}

Structure described at https://github.com/ethereum/execution-apis/src/engine/specification.md

func BlockToExecutableData

func BlockToExecutableData(block *types.Block, random common.Hash) *ExecutableDataV1

func (ExecutableDataV1) MarshalJSON

func (e ExecutableDataV1) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*ExecutableDataV1) UnmarshalJSON

func (e *ExecutableDataV1) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type ExecutePayloadResponse

type ExecutePayloadResponse struct {
	Status          string      `json:"status"`
	LatestValidHash common.Hash `json:"latestValidHash"`
}

type ForkChoiceResponse

type ForkChoiceResponse struct {
	Status    string         `json:"status"`
	PayloadID *hexutil.Bytes `json:"payloadId"`
}

type ForkchoiceStateV1

type ForkchoiceStateV1 struct {
	HeadBlockHash      common.Hash `json:"headBlockHash"`
	SafeBlockHash      common.Hash `json:"safeBlockHash"`
	FinalizedBlockHash common.Hash `json:"finalizedBlockHash"`
}

type GenericResponse

type GenericResponse struct {
	Success bool `json:"success"`
}

type GenericStringResponse

type GenericStringResponse struct {
	Status string `json:"status"`
}

type NewBlockResponse

type NewBlockResponse struct {
	Valid bool `json:"valid"`
}

type PayloadAttributesV1

type PayloadAttributesV1 struct {
	Timestamp    uint64         `json:"timestamp"     gencodec:"required"`
	Random       common.Hash    `json:"random"        gencodec:"required"`
	FeeRecipient common.Address `json:"feeRecipient"  gencodec:"required"`
}

Structure described at https://github.com/ethereum/execution-apis/pull/74

func (PayloadAttributesV1) MarshalJSON

func (p PayloadAttributesV1) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*PayloadAttributesV1) UnmarshalJSON

func (p *PayloadAttributesV1) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

type PayloadResponse

type PayloadResponse struct {
	PayloadID uint64 `json:"payloadId"`
}

func (PayloadResponse) MarshalJSON

func (p PayloadResponse) MarshalJSON() ([]byte, error)

MarshalJSON marshals as JSON.

func (*PayloadResponse) UnmarshalJSON

func (p *PayloadResponse) UnmarshalJSON(input []byte) error

UnmarshalJSON unmarshals from JSON.

Jump to

Keyboard shortcuts

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