forkid

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2021 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 common.Hash) 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(chain Blockchain) ID

NewID calculates the Ethereum fork ID from the chain config and head.

Jump to

Keyboard shortcuts

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