prysm-pulse/slasher/beaconclient/historical_data_retrieval.go

50 lines
1.5 KiB
Go
Raw Normal View History

package beaconclient
import (
"context"
"github.com/pkg/errors"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/prysm/shared/params"
"go.opencensus.io/trace"
)
// RequestHistoricalAttestations requests all indexed attestations for a
// given epoch from a beacon node via gRPC.
func (bs *Service) RequestHistoricalAttestations(
ctx context.Context,
epoch uint64,
) ([]*ethpb.IndexedAttestation, error) {
ctx, span := trace.StartSpan(ctx, "beaconclient.RequestHistoricalAttestations")
defer span.End()
indexedAtts := make([]*ethpb.IndexedAttestation, 0)
res := &ethpb.ListIndexedAttestationsResponse{}
var err error
for {
res, err = bs.beaconClient.ListIndexedAttestations(ctx, &ethpb.ListIndexedAttestationsRequest{
QueryFilter: &ethpb.ListIndexedAttestationsRequest_Epoch{
Epoch: epoch,
},
PageSize: int32(params.BeaconConfig().DefaultPageSize),
PageToken: res.NextPageToken,
})
if err != nil {
return nil, errors.Wrapf(err, "could not request indexed attestations for epoch: %d", epoch)
}
indexedAtts = append(indexedAtts, res.IndexedAttestations...)
log.Infof(
"Retrieved %d/%d indexed attestations for epoch %d",
len(indexedAtts),
res.TotalSize,
epoch,
)
if res.NextPageToken == "" || res.TotalSize == 0 || len(indexedAtts) == int(res.TotalSize) {
break
}
}
Plug-in double voting detection into detection service (#4960) * Add double vote detection to spanner * Add documentation * Update slasher/detection/attestations/spanner.go * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-spanner-double * Merge branch 'slasher-spanner-double' of https://github.com/0xKiwi/Prysm into slasher-spanner-double * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-spanner-double * Gazelle * Add double vote detection func * Implement double voting detection * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-implement-double * Merge branch 'master' into slasher-implement-double * Merge branch 'slasher-implement-double' of https://github.com/0xKiwi/Prysm into slasher-implement-double * Fix typo * Remove filter, replace with slot + committee index * Change bloom filter to 2 sig bytes * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-change-filter * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-implement-double * Merge branch 'slasher-change-filter' of https://github.com/0xKiwi/Prysm into slasher-implement-double * Change detection to use prefix * Fix runtime * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-implement-double * Fix bug and comments * Merge branch 'master' of https://github.com/prysmaticlabs/Prysm into slasher-implement-double * Fix flaky test * Merge branch 'master' into slasher-implement-double * Improve logs * Merge branch 'slasher-implement-double' of https://github.com/0xKiwi/Prysm into slasher-implement-double * Add ok check * Fix test * Merge branch 'master' into slasher-implement-double
2020-03-03 18:08:21 +00:00
if err := bs.slasherDB.SaveIndexedAttestations(ctx, indexedAtts); err != nil {
return nil, errors.Wrap(err, "could not save indexed attestations")
}
return indexedAtts, nil
}