76: Add indexing of ExecutionPayloads (and other Merge-related updates). #73
@ -53,7 +53,7 @@ type BeaconClient struct {
|
|||||||
KnownGapsProcess KnownGapsProcessing // object keeping track of knowngaps processing
|
KnownGapsProcess KnownGapsProcessing // object keeping track of knowngaps processing
|
||||||
CheckDb bool // Should we check the DB to see if the slot exists before processing it?
|
CheckDb bool // Should we check the DB to see if the slot exists before processing it?
|
||||||
PerformBeaconStateProcessing bool // Should we process BeaconStates?
|
PerformBeaconStateProcessing bool // Should we process BeaconStates?
|
||||||
ProcessBeaconBlockProcessing bool // Should we process BeaconBlocks?
|
PerformBeaconBlockProcessing bool // Should we process BeaconBlocks?
|
||||||
|
|
||||||
// Used for Head Tracking
|
// Used for Head Tracking
|
||||||
|
|
||||||
@ -112,8 +112,8 @@ func CreateBeaconClient(ctx context.Context, connectionProtocol string, bcAddres
|
|||||||
Metrics: metrics,
|
Metrics: metrics,
|
||||||
UniqueNodeIdentifier: uniqueNodeIdentifier,
|
UniqueNodeIdentifier: uniqueNodeIdentifier,
|
||||||
CheckDb: checkDb,
|
CheckDb: checkDb,
|
||||||
ProcessBeaconBlockProcessing: true,
|
PerformBeaconBlockProcessing: true,
|
||||||
PerformBeaconStateProcessing: true,
|
PerformBeaconStateProcessing: false,
|
||||||
//FinalizationTracking: createSseEvent[FinalizedCheckpoint](endpoint, bcFinalizedTopicEndpoint),
|
//FinalizationTracking: createSseEvent[FinalizedCheckpoint](endpoint, bcFinalizedTopicEndpoint),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -266,8 +266,12 @@ var _ = Describe("Capturehead", Label("head"), func() {
|
|||||||
BeaconNodeTester.SetupBeaconNodeMock(BeaconNodeTester.TestEvents, BeaconNodeTester.TestConfig.protocol, BeaconNodeTester.TestConfig.address, BeaconNodeTester.TestConfig.port, BeaconNodeTester.TestConfig.dummyParentRoot)
|
BeaconNodeTester.SetupBeaconNodeMock(BeaconNodeTester.TestEvents, BeaconNodeTester.TestConfig.protocol, BeaconNodeTester.TestConfig.address, BeaconNodeTester.TestConfig.port, BeaconNodeTester.TestConfig.dummyParentRoot)
|
||||||
defer httpmock.DeactivateAndReset()
|
defer httpmock.DeactivateAndReset()
|
||||||
BeaconNodeTester.testProcessBlock(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, 3, maxRetry, 1, 0, 0)
|
BeaconNodeTester.testProcessBlock(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, 3, maxRetry, 1, 0, 0)
|
||||||
|
if bc.PerformBeaconBlockProcessing {
|
||||||
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectParentRoot, BeaconNodeTester.TestEvents["100"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["100"].CorrectSignedBeaconBlockMhKey)
|
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectParentRoot, BeaconNodeTester.TestEvents["100"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["100"].CorrectSignedBeaconBlockMhKey)
|
||||||
|
}
|
||||||
|
if bc.PerformBeaconStateProcessing {
|
||||||
validateBeaconState(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectBeaconStateMhKey)
|
validateBeaconState(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectBeaconStateMhKey)
|
||||||
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -277,8 +281,12 @@ var _ = Describe("Capturehead", Label("head"), func() {
|
|||||||
BeaconNodeTester.SetupBeaconNodeMock(BeaconNodeTester.TestEvents, BeaconNodeTester.TestConfig.protocol, BeaconNodeTester.TestConfig.address, BeaconNodeTester.TestConfig.port, BeaconNodeTester.TestConfig.dummyParentRoot)
|
BeaconNodeTester.SetupBeaconNodeMock(BeaconNodeTester.TestEvents, BeaconNodeTester.TestConfig.protocol, BeaconNodeTester.TestConfig.address, BeaconNodeTester.TestConfig.port, BeaconNodeTester.TestConfig.dummyParentRoot)
|
||||||
defer httpmock.DeactivateAndReset()
|
defer httpmock.DeactivateAndReset()
|
||||||
BeaconNodeTester.testProcessBlock(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, 74240, maxRetry, 1, 0, 0)
|
BeaconNodeTester.testProcessBlock(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, 74240, maxRetry, 1, 0, 0)
|
||||||
|
if bc.PerformBeaconBlockProcessing {
|
||||||
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectParentRoot, BeaconNodeTester.TestEvents["2375703"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["2375703"].CorrectSignedBeaconBlockMhKey)
|
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectParentRoot, BeaconNodeTester.TestEvents["2375703"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["2375703"].CorrectSignedBeaconBlockMhKey)
|
||||||
|
}
|
||||||
|
if bc.PerformBeaconStateProcessing {
|
||||||
validateBeaconState(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectBeaconStateMhKey)
|
validateBeaconState(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectBeaconStateMhKey)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
Context("Correctly formatted Altair Test Blocks", func() {
|
Context("Correctly formatted Altair Test Blocks", func() {
|
||||||
|
@ -54,8 +54,12 @@ var _ = Describe("Capturehistoric", func() {
|
|||||||
BeaconNodeTester.writeEventToHistoricProcess(bc, 0, 0, 10)
|
BeaconNodeTester.writeEventToHistoricProcess(bc, 0, 0, 10)
|
||||||
BeaconNodeTester.runHistoricalProcess(bc, 2, 1, 0, 0, 0)
|
BeaconNodeTester.runHistoricalProcess(bc, 2, 1, 0, 0, 0)
|
||||||
validateSlot(bc, BeaconNodeTester.TestEvents["0"].HeadMessage, 0, "proposed")
|
validateSlot(bc, BeaconNodeTester.TestEvents["0"].HeadMessage, 0, "proposed")
|
||||||
|
if bc.PerformBeaconBlockProcessing {
|
||||||
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["0"].HeadMessage, BeaconNodeTester.TestEvents["0"].CorrectParentRoot, BeaconNodeTester.TestEvents["0"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["0"].CorrectSignedBeaconBlockMhKey)
|
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["0"].HeadMessage, BeaconNodeTester.TestEvents["0"].CorrectParentRoot, BeaconNodeTester.TestEvents["0"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["0"].CorrectSignedBeaconBlockMhKey)
|
||||||
|
}
|
||||||
|
if bc.PerformBeaconStateProcessing {
|
||||||
validateBeaconState(bc, BeaconNodeTester.TestEvents["0"].HeadMessage, BeaconNodeTester.TestEvents["0"].CorrectBeaconStateMhKey)
|
validateBeaconState(bc, BeaconNodeTester.TestEvents["0"].HeadMessage, BeaconNodeTester.TestEvents["0"].CorrectBeaconStateMhKey)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
Context("When there is a skipped slot", func() {
|
Context("When there is a skipped slot", func() {
|
||||||
@ -268,17 +272,29 @@ func validateMetrics(bc *beaconclient.BeaconClient, expectedInserts, expectedReo
|
|||||||
// A wrapper function to validate a few popular blocks
|
// A wrapper function to validate a few popular blocks
|
||||||
func validatePopularBatchBlocks(bc *beaconclient.BeaconClient) {
|
func validatePopularBatchBlocks(bc *beaconclient.BeaconClient) {
|
||||||
validateSlot(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, 3, "proposed")
|
validateSlot(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, 3, "proposed")
|
||||||
|
if bc.PerformBeaconBlockProcessing {
|
||||||
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectParentRoot, BeaconNodeTester.TestEvents["100"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["100"].CorrectSignedBeaconBlockMhKey)
|
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectParentRoot, BeaconNodeTester.TestEvents["100"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["100"].CorrectSignedBeaconBlockMhKey)
|
||||||
|
}
|
||||||
|
if bc.PerformBeaconStateProcessing {
|
||||||
validateBeaconState(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectBeaconStateMhKey)
|
validateBeaconState(bc, BeaconNodeTester.TestEvents["100"].HeadMessage, BeaconNodeTester.TestEvents["100"].CorrectBeaconStateMhKey)
|
||||||
|
}
|
||||||
|
|
||||||
validateSlot(bc, BeaconNodeTester.TestEvents["101"].HeadMessage, 3, "proposed")
|
validateSlot(bc, BeaconNodeTester.TestEvents["101"].HeadMessage, 3, "proposed")
|
||||||
|
if bc.PerformBeaconBlockProcessing {
|
||||||
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["101"].HeadMessage, BeaconNodeTester.TestEvents["100"].HeadMessage.Block, BeaconNodeTester.TestEvents["101"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["101"].CorrectSignedBeaconBlockMhKey)
|
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["101"].HeadMessage, BeaconNodeTester.TestEvents["100"].HeadMessage.Block, BeaconNodeTester.TestEvents["101"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["101"].CorrectSignedBeaconBlockMhKey)
|
||||||
|
}
|
||||||
|
if bc.PerformBeaconStateProcessing {
|
||||||
validateBeaconState(bc, BeaconNodeTester.TestEvents["101"].HeadMessage, BeaconNodeTester.TestEvents["101"].CorrectBeaconStateMhKey)
|
validateBeaconState(bc, BeaconNodeTester.TestEvents["101"].HeadMessage, BeaconNodeTester.TestEvents["101"].CorrectBeaconStateMhKey)
|
||||||
|
}
|
||||||
|
|
||||||
validateSlot(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, 74240, "proposed")
|
validateSlot(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, 74240, "proposed")
|
||||||
|
if bc.PerformBeaconBlockProcessing {
|
||||||
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectParentRoot, BeaconNodeTester.TestEvents["2375703"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["2375703"].CorrectSignedBeaconBlockMhKey)
|
validateSignedBeaconBlock(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectParentRoot, BeaconNodeTester.TestEvents["2375703"].CorrectEth1BlockHash, BeaconNodeTester.TestEvents["2375703"].CorrectSignedBeaconBlockMhKey)
|
||||||
|
}
|
||||||
|
if bc.PerformBeaconStateProcessing {
|
||||||
validateBeaconState(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectBeaconStateMhKey)
|
validateBeaconState(bc, BeaconNodeTester.TestEvents["2375703"].HeadMessage, BeaconNodeTester.TestEvents["2375703"].CorrectBeaconStateMhKey)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Make sure all rows have checked_out as false.
|
// Make sure all rows have checked_out as false.
|
||||||
func validateAllRowsCheckedOut(db sql.Database, checkStmt string) {
|
func validateAllRowsCheckedOut(db sql.Database, checkStmt string) {
|
||||||
|
@ -361,23 +361,6 @@ func (s *BeaconState) IsPhase0() bool {
|
|||||||
return s.phase0 != nil
|
return s.phase0 != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BeaconState) Slot() Slot {
|
|
||||||
if s.IsBellatrix() {
|
|
||||||
return Slot(s.bellatrix.Slot)
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.IsAltair() {
|
|
||||||
return Slot(s.altair.Slot)
|
|
||||||
}
|
|
||||||
|
|
||||||
if s.IsPhase0() {
|
|
||||||
return Slot(s.phase0.Slot)
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(telackey): Something better than 0?
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *BeaconState) HashTreeRoot() Root {
|
func (s *BeaconState) HashTreeRoot() Root {
|
||||||
spec := chooseSpec(s.spec)
|
spec := chooseSpec(s.spec)
|
||||||
hashFn := tree.GetHashFn()
|
hashFn := tree.GetHashFn()
|
||||||
|
@ -43,7 +43,7 @@ type SlotProcessingDetails struct {
|
|||||||
KnownGapTableIncrement int // The max number of slots within a single known_gaps table entry.
|
KnownGapTableIncrement int // The max number of slots within a single known_gaps table entry.
|
||||||
CheckDb bool // Should we check the DB to see if the slot exists before processing it?
|
CheckDb bool // Should we check the DB to see if the slot exists before processing it?
|
||||||
PerformBeaconStateProcessing bool // Should we process BeaconStates?
|
PerformBeaconStateProcessing bool // Should we process BeaconStates?
|
||||||
ProcessBeaconBlockProcessing bool // Should we process BeaconBlocks?
|
PerformBeaconBlockProcessing bool // Should we process BeaconBlocks?
|
||||||
|
|
||||||
StartingSlot int // If we're performing head tracking. What is the first slot we processed.
|
StartingSlot int // If we're performing head tracking. What is the first slot we processed.
|
||||||
PreviousSlot int // Whats the previous slot we processed
|
PreviousSlot int // Whats the previous slot we processed
|
||||||
@ -58,7 +58,7 @@ func (bc *BeaconClient) SlotProcessingDetails() SlotProcessingDetails {
|
|||||||
Metrics: bc.Metrics,
|
Metrics: bc.Metrics,
|
||||||
|
|
||||||
CheckDb: bc.CheckDb,
|
CheckDb: bc.CheckDb,
|
||||||
ProcessBeaconBlockProcessing: bc.ProcessBeaconBlockProcessing,
|
PerformBeaconBlockProcessing: bc.PerformBeaconBlockProcessing,
|
||||||
PerformBeaconStateProcessing: bc.PerformBeaconStateProcessing,
|
PerformBeaconStateProcessing: bc.PerformBeaconStateProcessing,
|
||||||
|
|
||||||
KnownGapTableIncrement: bc.KnownGapTableIncrement,
|
KnownGapTableIncrement: bc.KnownGapTableIncrement,
|
||||||
@ -168,7 +168,7 @@ func processFullSlot(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if spd.ProcessBeaconBlockProcessing {
|
if spd.PerformBeaconBlockProcessing {
|
||||||
// Get the SignedBeaconBlock.
|
// Get the SignedBeaconBlock.
|
||||||
g.Go(func() error {
|
g.Go(func() error {
|
||||||
select {
|
select {
|
||||||
@ -355,11 +355,11 @@ func (ps *ProcessSlot) getBeaconState(serverEndpoint string) error {
|
|||||||
// Check to make sure that the previous block we processed is the parent of the current block.
|
// Check to make sure that the previous block we processed is the parent of the current block.
|
||||||
func (ps *ProcessSlot) checkPreviousSlot(tx sql.Tx, ctx context.Context, previousSlot int, previousBlockRoot string, knownGapsTableIncrement int) {
|
func (ps *ProcessSlot) checkPreviousSlot(tx sql.Tx, ctx context.Context, previousSlot int, previousBlockRoot string, knownGapsTableIncrement int) {
|
||||||
if nil == ps.FullSignedBeaconBlock {
|
if nil == ps.FullSignedBeaconBlock {
|
||||||
log.Debug("Can't check previous slot, no current slot.")
|
log.Debug("Can't check block root, no current block.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
parentRoot := toHex(ps.FullSignedBeaconBlock.Block().ParentRoot())
|
parentRoot := toHex(ps.FullSignedBeaconBlock.Block().ParentRoot())
|
||||||
slot := int(ps.FullBeaconState.Slot())
|
slot := ps.Slot
|
||||||
if previousSlot == slot {
|
if previousSlot == slot {
|
||||||
log.WithFields(log.Fields{
|
log.WithFields(log.Fields{
|
||||||
"slot": slot,
|
"slot": slot,
|
||||||
|
Loading…
Reference in New Issue
Block a user