Skip to content

Commit

Permalink
Remove silent errors from slasher (#5722)
Browse files Browse the repository at this point in the history
* Remove silent errors from slasher
* Merge refs/heads/master into slasher-silent-errors
* Merge refs/heads/master into slasher-silent-errors
* Merge refs/heads/master into slasher-silent-errors
  • Loading branch information
0xKiwi authored May 4, 2020
1 parent 1432332 commit c614412
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
15 changes: 10 additions & 5 deletions slasher/detection/listeners.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,18 @@ func (ds *Service) detectIncomingBlocks(ctx context.Context, ch chan *ethpb.Sign
defer sub.Unsubscribe()
for {
select {
case sblk := <-ch:
case signedBlock := <-ch:
log.Debug("Running detection on block...")
sbh, err := signedBeaconBlockHeaderFromBlock(sblk)
signedBlkHdr, err := signedBeaconBlockHeaderFromBlock(signedBlock)
if err != nil {
log.WithError(err)
log.WithError(err).Error("Could not get block header from block")
continue
}
slashing, err := ds.proposalsDetector.DetectDoublePropose(ctx, signedBlkHdr)
if err != nil {
log.WithError(err).Error("Could not perform detection on block header")
continue
}
slashing, err := ds.proposalsDetector.DetectDoublePropose(ctx, sbh)
ds.submitProposerSlashing(ctx, slashing)
case <-sub.Err():
log.Error("Subscriber closed, exiting goroutine")
Expand Down Expand Up @@ -80,7 +85,7 @@ func (ds *Service) detectIncomingAttestations(ctx context.Context, ch chan *ethp
func signedBeaconBlockHeaderFromBlock(block *ethpb.SignedBeaconBlock) (*ethpb.SignedBeaconBlockHeader, error) {
bodyRoot, err := ssz.HashTreeRoot(block.Block.Body)
if err != nil {
return nil, errors.Wrap(err, "Failed to get signing root of block")
return nil, errors.Wrap(err, "failed to get body root of block")
}
return &ethpb.SignedBeaconBlockHeader{
Header: &ethpb.BeaconBlockHeader{
Expand Down
11 changes: 5 additions & 6 deletions slasher/detection/proposals/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,16 @@ func (dd *ProposeDetector) DetectDoublePropose(
) (*ethpb.ProposerSlashing, error) {
ctx, span := trace.StartSpan(ctx, "detector.DetectDoublePropose")
defer span.End()
bha, err := dd.slasherDB.BlockHeaders(ctx, incomingBlk.Header.Slot, incomingBlk.Header.ProposerIndex)
headersFromIdx, err := dd.slasherDB.BlockHeaders(ctx, incomingBlk.Header.Slot, incomingBlk.Header.ProposerIndex)
if err != nil {
return nil, err
}
for _, bh := range bha {
if bytes.Equal(bh.Signature, incomingBlk.Signature) {
for _, blockHeader := range headersFromIdx {
if bytes.Equal(blockHeader.Signature, incomingBlk.Signature) {
continue
}
ps := &ethpb.ProposerSlashing{Header_1: incomingBlk, Header_2: bh}
err := dd.slasherDB.SaveProposerSlashing(ctx, status.Active, ps)
if err != nil {
ps := &ethpb.ProposerSlashing{Header_1: incomingBlk, Header_2: blockHeader}
if err := dd.slasherDB.SaveProposerSlashing(ctx, status.Active, ps); err != nil {
return nil, err
}
return ps, nil
Expand Down
3 changes: 1 addition & 2 deletions slasher/detection/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,12 @@ func (ds *Service) Start() {

// The detection service runs detection on all historical
// chain data since genesis.
// TODO(#5030): Re-enable after issue is resolved.
go ds.detectHistoricalChainData(ds.ctx)

// We subscribe to incoming blocks from the beacon node via
// our gRPC client to keep detecting slashable offenses.
go ds.detectIncomingBlocks(ds.ctx, ds.blocksChan)
go ds.detectIncomingAttestations(ds.ctx, ds.attsChan)
go ds.detectHistoricalChainData(ds.ctx)
}

func (ds *Service) detectHistoricalChainData(ctx context.Context) {
Expand Down

0 comments on commit c614412

Please sign in to comment.