forkid

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2023 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Overview

Package forkid implements EIP-2124 (https://eips.ethereum.org/EIPS/eip-2124).

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrRemoteStale is returned by the validator if a remote fork checksum is a
	// subset of our already applied forks, but the announced next fork block is
	// not on our already passed chain.
	ErrRemoteStale = errors.New("remote needs update")

	// ErrLocalIncompatibleOrStale is returned by the validator if a remote fork
	// checksum does not match any local checksum variation, signalling that the
	// two chains have diverged in the past at some point (possibly at genesis).
	ErrLocalIncompatibleOrStale = errors.New("local incompatible or needs update")
)

Functions

This section is empty.

Types

type Blockchain

type Blockchain interface {
	// Config retrieves the chain's fork configuration.
	Config() *params.ChainConfig

	// Genesis retrieves the chain's genesis block.
	Genesis() *types.Block

	// CurrentHeader retrieves the current head header of the canonical chain.
	CurrentHeader() *types.Header
}

Blockchain defines all necessary method to build a forkID.

type Filter

type Filter func(id ID) error

Filter is a fork id filter to validate a remotely advertised ID.

func NewFilter

func NewFilter(chain Blockchain) Filter

NewFilter creates a filter that returns if a fork ID should be rejected or not based on the local chain's status.

func NewStaticFilter

func NewStaticFilter(config *params.ChainConfig, genesis *types.Block) Filter

NewStaticFilter creates a filter at block zero.

type ID

type ID struct {
	Hash [4]byte // CRC32 checksum of the genesis block and passed fork block numbers
	Next uint64  // Block number of the next upcoming fork, or 0 if no forks are known
}

ID is a fork identifier as defined by EIP-2124.

func NewID

func NewID(config *params.ChainConfig, genesis *types.Block, head, time uint64) ID

NewID calculates the Ethereum fork ID from the chain config, genesis hash, head and time.

func NewIDWithChain

func NewIDWithChain(chain Blockchain) ID

NewIDWithChain calculates the Ethereum fork ID from an existing chain instance.

Jump to

Keyboard shortcuts

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