mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-09 12:31:21 +00:00
47a6ac16da
adds a two indexes to the validators cache creates beaconhttp package with many utilities for beacon http endpoint (future support for ssz is baked in) started on some validator endpoints
34 lines
1.8 KiB
Go
34 lines
1.8 KiB
Go
package fork_graph
|
|
|
|
import (
|
|
libcommon "github.com/ledgerwatch/erigon-lib/common"
|
|
"github.com/ledgerwatch/erigon/cl/cltypes"
|
|
"github.com/ledgerwatch/erigon/cl/cltypes/solid"
|
|
"github.com/ledgerwatch/erigon/cl/phase1/core/state"
|
|
)
|
|
|
|
/*
|
|
* The state store process is related to graph theory in the sense that the Ethereum blockchain can be thought of as a directed graph,
|
|
* where each block represents a node and the links between blocks represent directed edges.
|
|
* In this context, rolling back the state of Ethereum to a previous state can be thought of as traversing the graph in reverse,
|
|
* from the current state to a previous state.
|
|
* The process of reverting the state involves undoing the changes made in the blocks that have been added to the blockchain since the previous state.
|
|
* This can be thought of as "reversing the edges" in the graph, effectively undoing the changes made to the state of Ethereum.
|
|
* By thinking of the Ethereum blockchain as a graph, we can use graph theory concepts, such as traversal algorithms,
|
|
* to analyze and manipulate the state of the blockchain.
|
|
*/
|
|
type ForkGraph interface {
|
|
AddChainSegment(signedBlock *cltypes.SignedBeaconBlock, fullValidation bool) (*state.CachingBeaconState, ChainSegmentInsertionResult, error)
|
|
GetHeader(blockRoot libcommon.Hash) (*cltypes.BeaconBlockHeader, bool)
|
|
GetState(blockRoot libcommon.Hash, alwaysCopy bool) (*state.CachingBeaconState, error)
|
|
GetCurrentJustifiedCheckpoint(blockRoot libcommon.Hash) (solid.Checkpoint, bool)
|
|
GetFinalizedCheckpoint(blockRoot libcommon.Hash) (solid.Checkpoint, bool)
|
|
MarkHeaderAsInvalid(blockRoot libcommon.Hash)
|
|
AnchorSlot() uint64
|
|
Prune(uint64) error
|
|
|
|
// extra methods for validator api
|
|
GetStateAtSlot(slot uint64, alwaysCopy bool) (*state.CachingBeaconState, error)
|
|
GetStateAtStateRoot(root libcommon.Hash, alwaysCopy bool) (*state.CachingBeaconState, error)
|
|
}
|