erigon-pulse/cl/phase1/forkchoice/interface.go

39 lines
1.2 KiB
Go
Raw Normal View History

package forkchoice
import (
"github.com/ledgerwatch/erigon-lib/common"
libcommon "github.com/ledgerwatch/erigon-lib/common"
"github.com/ledgerwatch/erigon/cl/cltypes"
"github.com/ledgerwatch/erigon/cl/cltypes/solid"
state2 "github.com/ledgerwatch/erigon/cl/phase1/core/state"
"github.com/ledgerwatch/erigon/cl/phase1/execution_client"
)
type ForkChoiceStorage interface {
ForkChoiceStorageWriter
ForkChoiceStorageReader
}
type ForkChoiceStorageReader interface {
Ancestor(root common.Hash, slot uint64) common.Hash
AnchorSlot() uint64
Engine() execution_client.ExecutionEngine
FinalizedCheckpoint() solid.Checkpoint
FinalizedSlot() uint64
GetEth1Hash(eth2Root common.Hash) common.Hash
GetHead() (common.Hash, uint64, error)
HighestSeen() uint64
JustifiedCheckpoint() solid.Checkpoint
ProposerBoostRoot() common.Hash
GetFullState(libcommon.Hash, bool) (*state2.CachingBeaconState, error)
Slot() uint64
Time() uint64
}
type ForkChoiceStorageWriter interface {
OnAttestation(attestation *solid.Attestation, fromBlock bool) error
OnAttesterSlashing(attesterSlashing *cltypes.AttesterSlashing, test bool) error
OnBlock(block *cltypes.SignedBeaconBlock, newPayload bool, fullValidation bool) error
OnTick(time uint64)
}