Various code inspection resolutions (#7438)

* remove unused code

* remove defer use in loop

* Remove unused methods and constants

* gofmt and gaz

* nilness check

* remove unused args

* Add TODO for refactoring subscribeWithBase to remove unused arg. It seems too involved to include in this sweeping PR. https://github.com/prysmaticlabs/prysm/issues/7437

* replace empty slice declaration

* Remove unnecessary type conversions

* remove redundant type declaration

* rename receivers to be consistent

* Remove bootnode query tool. It is now obsolete by discv5

* Remove relay node. It is no longer used or supported

* Revert "Remove relay node. It is no longer used or supported"

This reverts commit 4bd7717334.

* Delete unused test directory

* Delete unsupported gcp startup script

* Delete old k8s script

* build fixes

* fix build

* go mod tidy

* revert slasher/db/kv/block_header.go

* fix build

* remove redundant nil check

* combine func args

Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
Co-authored-by: Victor Farazdagi <simple.square@gmail.com>
This commit is contained in:
Preston Van Loon
2020-10-12 01:11:05 -07:00
committed by GitHub
parent 0214553415
commit 7cc32c4dda
173 changed files with 553 additions and 1142 deletions

View File

@@ -1,17 +1,13 @@
package blockchain package blockchain
import ( import (
"time"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promauto"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute" "github.com/prysmaticlabs/prysm/beacon-chain/core/epoch/precompute"
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state" stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/shared/bytesutil" "github.com/prysmaticlabs/prysm/shared/bytesutil"
"github.com/prysmaticlabs/prysm/shared/params" "github.com/prysmaticlabs/prysm/shared/params"
"github.com/prysmaticlabs/prysm/shared/timeutils"
) )
var ( var (
@@ -100,13 +96,6 @@ var (
Name: "beacon_reorg_total", Name: "beacon_reorg_total",
Help: "Count the number of times beacon chain has a reorg", Help: "Count the number of times beacon chain has a reorg",
}) })
sentBlockPropagationHistogram = promauto.NewHistogram(
prometheus.HistogramOpts{
Name: "block_sent_latency_milliseconds",
Help: "Captures blocks broadcast time. Blocks sent in milliseconds distribution",
Buckets: []float64{1000, 2000, 3000, 4000, 5000, 6000},
},
)
attestationInclusionDelay = promauto.NewHistogram( attestationInclusionDelay = promauto.NewHistogram(
prometheus.HistogramOpts{ prometheus.HistogramOpts{
Name: "attestation_inclusion_delay_slots", Name: "attestation_inclusion_delay_slots",
@@ -233,18 +222,6 @@ func reportEpochMetrics(state *stateTrie.BeaconState) {
} }
} }
// This captures metrics for block sent time by subtracts slot start time.
func captureSentTimeMetric(genesisTime uint64, currentSlot uint64) error {
startTime, err := helpers.SlotToTime(genesisTime, currentSlot)
if err != nil {
return err
}
diffMs := timeutils.Now().Sub(startTime) / time.Millisecond
sentBlockPropagationHistogram.Observe(float64(diffMs))
return nil
}
func reportAttestationInclusion(blk *ethpb.BeaconBlock) { func reportAttestationInclusion(blk *ethpb.BeaconBlock) {
for _, att := range blk.Body.Attestations { for _, att := range blk.Body.Attestations {
attestationInclusionDelay.Observe(float64(blk.Slot - att.Data.Slot)) attestationInclusionDelay.Observe(float64(blk.Slot - att.Data.Slot))

View File

@@ -99,7 +99,7 @@ func (s *Service) onAttestation(ctx context.Context, a *ethpb.Attestation) ([]ui
return nil, err return nil, err
} }
indices := indexedAtt.AttestingIndices indices := indexedAtt.AttestingIndices
pubkeys := []bls.PublicKey{} var pubkeys []bls.PublicKey
for i := 0; i < len(indices); i++ { for i := 0; i < len(indices); i++ {
pubkeyAtIdx := c.PubKeys[indices[i]] pubkeyAtIdx := c.PubKeys[indices[i]]
pk, err := bls.PublicKeyFromBytes(pubkeyAtIdx) pk, err := bls.PublicKeyFromBytes(pubkeyAtIdx)

View File

@@ -126,7 +126,7 @@ func (s *Service) getAttCheckPtInfo(ctx context.Context, c *ethpb.Checkpoint, e
} }
// verifyAttTargetEpoch validates attestation is from the current or previous epoch. // verifyAttTargetEpoch validates attestation is from the current or previous epoch.
func (s *Service) verifyAttTargetEpoch(ctx context.Context, genesisTime uint64, nowTime uint64, c *ethpb.Checkpoint) error { func (s *Service) verifyAttTargetEpoch(_ context.Context, genesisTime, nowTime uint64, c *ethpb.Checkpoint) error {
currentSlot := (nowTime - genesisTime) / params.BeaconConfig().SecondsPerSlot currentSlot := (nowTime - genesisTime) / params.BeaconConfig().SecondsPerSlot
currentEpoch := helpers.SlotToEpoch(currentSlot) currentEpoch := helpers.SlotToEpoch(currentSlot)
var prevEpoch uint64 var prevEpoch uint64

View File

@@ -146,8 +146,8 @@ func TestStore_OnBlockBatch(t *testing.T) {
bState := st.Copy() bState := st.Copy()
blks := []*ethpb.SignedBeaconBlock{} var blks []*ethpb.SignedBeaconBlock
blkRoots := [][32]byte{} var blkRoots [][32]byte
var firstState *stateTrie.BeaconState var firstState *stateTrie.BeaconState
for i := 1; i < 10; i++ { for i := 1; i < 10; i++ {
b, err := testutil.GenerateFullBlock(bState, keys, testutil.DefaultBlockGenConfig(), uint64(i)) b, err := testutil.GenerateFullBlock(bState, keys, testutil.DefaultBlockGenConfig(), uint64(i))

View File

@@ -141,7 +141,7 @@ func (mon *MockOperationNotifier) OperationFeed() *event.Feed {
} }
// ReceiveBlockInitialSync mocks ReceiveBlockInitialSync method in chain service. // ReceiveBlockInitialSync mocks ReceiveBlockInitialSync method in chain service.
func (ms *ChainService) ReceiveBlockInitialSync(ctx context.Context, block *ethpb.SignedBeaconBlock, blockRoot [32]byte) error { func (ms *ChainService) ReceiveBlockInitialSync(ctx context.Context, block *ethpb.SignedBeaconBlock, _ [32]byte) error {
if ms.State == nil { if ms.State == nil {
ms.State = &stateTrie.BeaconState{} ms.State = &stateTrie.BeaconState{}
} }
@@ -168,7 +168,7 @@ func (ms *ChainService) ReceiveBlockInitialSync(ctx context.Context, block *ethp
} }
// ReceiveBlockBatch processes blocks in batches from initial-sync. // ReceiveBlockBatch processes blocks in batches from initial-sync.
func (ms *ChainService) ReceiveBlockBatch(ctx context.Context, blks []*ethpb.SignedBeaconBlock, roots [][32]byte) error { func (ms *ChainService) ReceiveBlockBatch(ctx context.Context, blks []*ethpb.SignedBeaconBlock, _ [][32]byte) error {
if ms.State == nil { if ms.State == nil {
ms.State = &stateTrie.BeaconState{} ms.State = &stateTrie.BeaconState{}
} }
@@ -197,7 +197,7 @@ func (ms *ChainService) ReceiveBlockBatch(ctx context.Context, blks []*ethpb.Sig
} }
// ReceiveBlock mocks ReceiveBlock method in chain service. // ReceiveBlock mocks ReceiveBlock method in chain service.
func (ms *ChainService) ReceiveBlock(ctx context.Context, block *ethpb.SignedBeaconBlock, blockRoot [32]byte) error { func (ms *ChainService) ReceiveBlock(ctx context.Context, block *ethpb.SignedBeaconBlock, _ [32]byte) error {
if ms.State == nil { if ms.State == nil {
ms.State = &stateTrie.BeaconState{} ms.State = &stateTrie.BeaconState{}
} }
@@ -232,7 +232,7 @@ func (ms *ChainService) HeadSlot() uint64 {
} }
// HeadRoot mocks HeadRoot method in chain service. // HeadRoot mocks HeadRoot method in chain service.
func (ms *ChainService) HeadRoot(ctx context.Context) ([]byte, error) { func (ms *ChainService) HeadRoot(_ context.Context) ([]byte, error) {
if len(ms.Root) > 0 { if len(ms.Root) > 0 {
return ms.Root, nil return ms.Root, nil
} }
@@ -270,7 +270,7 @@ func (ms *ChainService) PreviousJustifiedCheckpt() *ethpb.Checkpoint {
} }
// ReceiveAttestation mocks ReceiveAttestation method in chain service. // ReceiveAttestation mocks ReceiveAttestation method in chain service.
func (ms *ChainService) ReceiveAttestation(context.Context, *ethpb.Attestation) error { func (ms *ChainService) ReceiveAttestation(_ context.Context, _ *ethpb.Attestation) error {
return nil return nil
} }
@@ -280,12 +280,12 @@ func (ms *ChainService) ReceiveAttestationNoPubsub(context.Context, *ethpb.Attes
} }
// AttestationPreState mocks AttestationPreState method in chain service. // AttestationPreState mocks AttestationPreState method in chain service.
func (ms *ChainService) AttestationPreState(ctx context.Context, att *ethpb.Attestation) (*stateTrie.BeaconState, error) { func (ms *ChainService) AttestationPreState(_ context.Context, _ *ethpb.Attestation) (*stateTrie.BeaconState, error) {
return ms.State, nil return ms.State, nil
} }
// HeadValidatorsIndices mocks the same method in the chain service. // HeadValidatorsIndices mocks the same method in the chain service.
func (ms *ChainService) HeadValidatorsIndices(ctx context.Context, epoch uint64) ([]uint64, error) { func (ms *ChainService) HeadValidatorsIndices(_ context.Context, epoch uint64) ([]uint64, error) {
if ms.State == nil { if ms.State == nil {
return []uint64{}, nil return []uint64{}, nil
} }
@@ -293,7 +293,7 @@ func (ms *ChainService) HeadValidatorsIndices(ctx context.Context, epoch uint64)
} }
// HeadSeed mocks the same method in the chain service. // HeadSeed mocks the same method in the chain service.
func (ms *ChainService) HeadSeed(ctx context.Context, epoch uint64) ([32]byte, error) { func (ms *ChainService) HeadSeed(_ context.Context, epoch uint64) ([32]byte, error) {
return helpers.Seed(ms.State, epoch, params.BeaconConfig().DomainBeaconAttester) return helpers.Seed(ms.State, epoch, params.BeaconConfig().DomainBeaconAttester)
} }
@@ -323,18 +323,18 @@ func (ms *ChainService) CurrentSlot() uint64 {
} }
// Participation mocks the same method in the chain service. // Participation mocks the same method in the chain service.
func (ms *ChainService) Participation(epoch uint64) *precompute.Balance { func (ms *ChainService) Participation(_ uint64) *precompute.Balance {
return ms.Balance return ms.Balance
} }
// IsValidAttestation always returns true. // IsValidAttestation always returns true.
func (ms *ChainService) IsValidAttestation(ctx context.Context, att *ethpb.Attestation) bool { func (ms *ChainService) IsValidAttestation(_ context.Context, _ *ethpb.Attestation) bool {
return ms.ValidAttestation return ms.ValidAttestation
} }
// IsCanonical returns and determines whether a block with the provided root is part of // IsCanonical returns and determines whether a block with the provided root is part of
// the canonical chain. // the canonical chain.
func (ms *ChainService) IsCanonical(ctx context.Context, blockRoot [32]byte) (bool, error) { func (ms *ChainService) IsCanonical(_ context.Context, _ [32]byte) (bool, error) {
return true, nil return true, nil
} }
@@ -342,7 +342,7 @@ func (ms *ChainService) IsCanonical(ctx context.Context, blockRoot [32]byte) (bo
func (ms *ChainService) ClearCachedStates() {} func (ms *ChainService) ClearCachedStates() {}
// HasInitSyncBlock mocks the same method in the chain service. // HasInitSyncBlock mocks the same method in the chain service.
func (ms *ChainService) HasInitSyncBlock(root [32]byte) bool { func (ms *ChainService) HasInitSyncBlock(_ [32]byte) bool {
return false return false
} }
@@ -352,17 +352,17 @@ func (ms *ChainService) HeadGenesisValidatorRoot() [32]byte {
} }
// VerifyBlkDescendant mocks VerifyBlkDescendant and always returns nil. // VerifyBlkDescendant mocks VerifyBlkDescendant and always returns nil.
func (ms *ChainService) VerifyBlkDescendant(ctx context.Context, root [32]byte) error { func (ms *ChainService) VerifyBlkDescendant(_ context.Context, _ [32]byte) error {
return ms.VerifyBlkDescendantErr return ms.VerifyBlkDescendantErr
} }
// VerifyLmdFfgConsistency mocks VerifyLmdFfgConsistency and always returns nil. // VerifyLmdFfgConsistency mocks VerifyLmdFfgConsistency and always returns nil.
func (ms *ChainService) VerifyLmdFfgConsistency(ctx context.Context, att *ethpb.Attestation) error { func (ms *ChainService) VerifyLmdFfgConsistency(_ context.Context, _ *ethpb.Attestation) error {
return nil return nil
} }
// AttestationCheckPtInfo mocks AttestationCheckPtInfo and always returns nil. // AttestationCheckPtInfo mocks AttestationCheckPtInfo and always returns nil.
func (ms *ChainService) AttestationCheckPtInfo(ctx context.Context, att *ethpb.Attestation) (*pb.CheckPtInfo, error) { func (ms *ChainService) AttestationCheckPtInfo(_ context.Context, att *ethpb.Attestation) (*pb.CheckPtInfo, error) {
f := ms.State.Fork() f := ms.State.Fork()
g := bytesutil.ToBytes32(ms.State.GenesisValidatorRoot()) g := bytesutil.ToBytes32(ms.State.GenesisValidatorRoot())
seed, err := helpers.Seed(ms.State, helpers.SlotToEpoch(att.Data.Slot), params.BeaconConfig().DomainBeaconAttester) seed, err := helpers.Seed(ms.State, helpers.SlotToEpoch(att.Data.Slot), params.BeaconConfig().DomainBeaconAttester)

View File

@@ -138,7 +138,7 @@ func (c *AttestationCache) MarkNotInProgress(req *ethpb.AttestationDataRequest)
} }
// Put the response in the cache. // Put the response in the cache.
func (c *AttestationCache) Put(ctx context.Context, req *ethpb.AttestationDataRequest, res *ethpb.AttestationData) error { func (c *AttestationCache) Put(_ context.Context, req *ethpb.AttestationDataRequest, res *ethpb.AttestationData) error {
data := &attestationReqResWrapper{ data := &attestationReqResWrapper{
req, req,
res, res,

View File

@@ -1,7 +1,6 @@
package cache package cache
import ( import (
"errors"
"sync" "sync"
lru "github.com/hashicorp/golang-lru" lru "github.com/hashicorp/golang-lru"
@@ -13,10 +12,6 @@ import (
) )
var ( var (
// ErrNotCheckpointState will be returned when a cache object is not a pointer to
// a CheckpointState struct.
ErrNotCheckpointState = errors.New("object is not a state by check point struct")
// maxCheckpointStateSize defines the max number of entries check point to state cache can contain. // maxCheckpointStateSize defines the max number of entries check point to state cache can contain.
// Choosing 10 to account for multiple forks, this allows 5 forks per epoch boundary with 2 epochs // Choosing 10 to account for multiple forks, this allows 5 forks per epoch boundary with 2 epochs
// window to accept attestation based on latest spec. // window to accept attestation based on latest spec.

View File

@@ -24,6 +24,6 @@ func trim(queue *cache.FIFO, maxSize uint64) {
} }
// popProcessNoopFunc is a no-op function that never returns an error. // popProcessNoopFunc is a no-op function that never returns an error.
func popProcessNoopFunc(obj interface{}) error { func popProcessNoopFunc(_ interface{}) error {
return nil return nil
} }

View File

@@ -136,7 +136,7 @@ func (c *SkipSlotCache) MarkNotInProgress(slot uint64) error {
} }
// Put the response in the cache. // Put the response in the cache.
func (c *SkipSlotCache) Put(ctx context.Context, slot uint64, state *stateTrie.BeaconState) error { func (c *SkipSlotCache) Put(_ context.Context, slot uint64, state *stateTrie.BeaconState) error {
if c.disabled { if c.disabled {
return nil return nil
} }

View File

@@ -113,7 +113,7 @@ func (c *subnetIDs) GetAllSubnets() []uint64 {
defer c.subnetsLock.RUnlock() defer c.subnetsLock.RUnlock()
itemsMap := c.persistentSubnets.Items() itemsMap := c.persistentSubnets.Items()
committees := []uint64{} var committees []uint64
for _, v := range itemsMap { for _, v := range itemsMap {
if v.Expired() { if v.Expired() {

View File

@@ -314,7 +314,7 @@ func VerifyIndexedAttestation(ctx context.Context, beaconState *stateTrie.Beacon
return err return err
} }
indices := indexedAtt.AttestingIndices indices := indexedAtt.AttestingIndices
pubkeys := []bls.PublicKey{} var pubkeys []bls.PublicKey
for i := 0; i < len(indices); i++ { for i := 0; i < len(indices); i++ {
pubkeyAtIdx := beaconState.PubkeyAtIndex(indices[i]) pubkeyAtIdx := beaconState.PubkeyAtIndex(indices[i])
pk, err := bls.PublicKeyFromBytes(pubkeyAtIdx[:]) pk, err := bls.PublicKeyFromBytes(pubkeyAtIdx[:])
@@ -365,7 +365,7 @@ func VerifyAttSigUseCheckPt(ctx context.Context, c *pb.CheckPtInfo, att *ethpb.A
return err return err
} }
indices := indexedAtt.AttestingIndices indices := indexedAtt.AttestingIndices
pubkeys := []bls.PublicKey{} var pubkeys []bls.PublicKey
for i := 0; i < len(indices); i++ { for i := 0; i < len(indices); i++ {
pubkeyAtIdx := c.PubKeys[indices[i]] pubkeyAtIdx := c.PubKeys[indices[i]]
pk, err := bls.PublicKeyFromBytes(pubkeyAtIdx) pk, err := bls.PublicKeyFromBytes(pubkeyAtIdx)

View File

@@ -639,7 +639,7 @@ func TestValidateIndexedAttestation_BadAttestationsSignatureSet(t *testing.T) {
sig := keys[0].Sign([]byte{'t', 'e', 's', 't'}) sig := keys[0].Sign([]byte{'t', 'e', 's', 't'})
list := bitfield.Bitlist{0b11111111} list := bitfield.Bitlist{0b11111111}
atts := []*ethpb.Attestation{} var atts []*ethpb.Attestation
for i := uint64(0); i < 1000; i++ { for i := uint64(0); i < 1000; i++ {
atts = append(atts, &ethpb.Attestation{ atts = append(atts, &ethpb.Attestation{
Data: &ethpb.AttestationData{ Data: &ethpb.AttestationData{

View File

@@ -57,7 +57,7 @@ func TestProcessAttesterSlashings_DataNotSlashable(t *testing.T) {
}, },
}, },
} }
registry := []*ethpb.Validator{} var registry []*ethpb.Validator
currentSlot := uint64(0) currentSlot := uint64(0)
beaconState, err := stateTrie.InitializeFromProto(&pb.BeaconState{ beaconState, err := stateTrie.InitializeFromProto(&pb.BeaconState{
@@ -77,7 +77,7 @@ func TestProcessAttesterSlashings_DataNotSlashable(t *testing.T) {
} }
func TestProcessAttesterSlashings_IndexedAttestationFailedToVerify(t *testing.T) { func TestProcessAttesterSlashings_IndexedAttestationFailedToVerify(t *testing.T) {
registry := []*ethpb.Validator{} var registry []*ethpb.Validator
currentSlot := uint64(0) currentSlot := uint64(0)
beaconState, err := stateTrie.InitializeFromProto(&pb.BeaconState{ beaconState, err := stateTrie.InitializeFromProto(&pb.BeaconState{

View File

@@ -46,13 +46,13 @@ func TestFuzzProcessBlockHeader_10000(t *testing.T) {
func TestFuzzverifyDepositDataSigningRoot_10000(t *testing.T) { func TestFuzzverifyDepositDataSigningRoot_10000(t *testing.T) {
fuzzer := fuzz.NewWithSeed(0) fuzzer := fuzz.NewWithSeed(0)
ba := []byte{} var ba []byte
pubkey := [48]byte{} pubkey := [48]byte{}
sig := [96]byte{} sig := [96]byte{}
domain := [4]byte{} domain := [4]byte{}
p := []byte{} var p []byte
s := []byte{} var s []byte
d := []byte{} var d []byte
for i := 0; i < 10000; i++ { for i := 0; i < 10000; i++ {
fuzzer.Fuzz(&ba) fuzzer.Fuzz(&ba)
fuzzer.Fuzz(&pubkey) fuzzer.Fuzz(&pubkey)
@@ -98,7 +98,7 @@ func TestFuzzareEth1DataEqual_10000(t *testing.T) {
func TestFuzzEth1DataHasEnoughSupport_10000(t *testing.T) { func TestFuzzEth1DataHasEnoughSupport_10000(t *testing.T) {
fuzzer := fuzz.NewWithSeed(0) fuzzer := fuzz.NewWithSeed(0)
eth1data := &eth.Eth1Data{} eth1data := &eth.Eth1Data{}
stateVotes := []*eth.Eth1Data{} var stateVotes []*eth.Eth1Data
for i := 0; i < 100000; i++ { for i := 0; i < 100000; i++ {
fuzzer.Fuzz(eth1data) fuzzer.Fuzz(eth1data)
fuzzer.Fuzz(&stateVotes) fuzzer.Fuzz(&stateVotes)

View File

@@ -50,7 +50,7 @@ func TestProcessAttesterSlashings_RegressionSlashableIndices(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
signingRoot, err := helpers.ComputeSigningRoot(att1.Data, domain) signingRoot, err := helpers.ComputeSigningRoot(att1.Data, domain)
require.NoError(t, err, "Could not get signing root of beacon block header") require.NoError(t, err, "Could not get signing root of beacon block header")
aggSigs := []bls.Signature{} var aggSigs []bls.Signature
for _, index := range setA { for _, index := range setA {
sig := privKeys[index].Sign(signingRoot[:]) sig := privKeys[index].Sign(signingRoot[:])
aggSigs = append(aggSigs, sig) aggSigs = append(aggSigs, sig)

View File

@@ -158,8 +158,7 @@ func ProcessDeposit(beaconState *stateTrie.BeaconState, deposit *ethpb.Deposit,
if err != nil { if err != nil {
return nil, err return nil, err
} }
depositSig := deposit.Data.Signature if err := verifyDepositDataSigningRoot(deposit.Data, domain); err != nil {
if err := verifyDepositDataSigningRoot(deposit.Data, pubKey, depositSig, domain); err != nil {
// Ignore this error as in the spec pseudo code. // Ignore this error as in the spec pseudo code.
log.Debugf("Skipping deposit: could not verify deposit data signature: %v", err) log.Debugf("Skipping deposit: could not verify deposit data signature: %v", err)
return beaconState, nil return beaconState, nil
@@ -223,7 +222,7 @@ func verifyDeposit(beaconState *stateTrie.BeaconState, deposit *ethpb.Deposit) e
} }
// Deprecated: This method uses deprecated ssz.SigningRoot. // Deprecated: This method uses deprecated ssz.SigningRoot.
func verifyDepositDataSigningRoot(obj *ethpb.Deposit_Data, pub []byte, signature []byte, domain []byte) error { func verifyDepositDataSigningRoot(obj *ethpb.Deposit_Data, domain []byte) error {
return depositutil.VerifyDepositSignature(obj, domain) return depositutil.VerifyDepositSignature(obj, domain)
} }

View File

@@ -19,7 +19,7 @@ import (
// state.eth1_data_votes.append(body.eth1_data) // state.eth1_data_votes.append(body.eth1_data)
// if state.eth1_data_votes.count(body.eth1_data) * 2 > EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH: // if state.eth1_data_votes.count(body.eth1_data) * 2 > EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH:
// state.latest_eth1_data = body.eth1_data // state.latest_eth1_data = body.eth1_data
func ProcessEth1DataInBlock(ctx context.Context, beaconState *stateTrie.BeaconState, b *ethpb.SignedBeaconBlock) (*stateTrie.BeaconState, error) { func ProcessEth1DataInBlock(_ context.Context, beaconState *stateTrie.BeaconState, b *ethpb.SignedBeaconBlock) (*stateTrie.BeaconState, error) {
block := b.Block block := b.Block
if beaconState == nil { if beaconState == nil {
return nil, errors.New("nil state") return nil, errors.New("nil state")

View File

@@ -37,7 +37,7 @@ import (
// # Initiate exit // # Initiate exit
// initiate_validator_exit(state, exit.validator_index) // initiate_validator_exit(state, exit.validator_index)
func ProcessVoluntaryExits( func ProcessVoluntaryExits(
ctx context.Context, _ context.Context,
beaconState *stateTrie.BeaconState, beaconState *stateTrie.BeaconState,
b *ethpb.SignedBeaconBlock, b *ethpb.SignedBeaconBlock,
) (*stateTrie.BeaconState, error) { ) (*stateTrie.BeaconState, error) {

View File

@@ -37,7 +37,7 @@ import (
// # Verify proposer signature // # Verify proposer signature
// assert bls_verify(proposer.pubkey, signing_root(block), block.signature, get_domain(state, DOMAIN_BEACON_PROPOSER)) // assert bls_verify(proposer.pubkey, signing_root(block), block.signature, get_domain(state, DOMAIN_BEACON_PROPOSER))
func ProcessBlockHeader( func ProcessBlockHeader(
ctx context.Context, _ context.Context,
beaconState *stateTrie.BeaconState, beaconState *stateTrie.BeaconState,
block *ethpb.SignedBeaconBlock, block *ethpb.SignedBeaconBlock,
) (*stateTrie.BeaconState, error) { ) (*stateTrie.BeaconState, error) {

View File

@@ -36,7 +36,7 @@ import (
// //
// slash_validator(state, proposer_slashing.proposer_index) // slash_validator(state, proposer_slashing.proposer_index)
func ProcessProposerSlashings( func ProcessProposerSlashings(
ctx context.Context, _ context.Context,
beaconState *stateTrie.BeaconState, beaconState *stateTrie.BeaconState,
b *ethpb.SignedBeaconBlock, b *ethpb.SignedBeaconBlock,
) (*stateTrie.BeaconState, error) { ) (*stateTrie.BeaconState, error) {

View File

@@ -26,7 +26,7 @@ import (
// mix = xor(get_randao_mix(state, epoch), hash(body.randao_reveal)) // mix = xor(get_randao_mix(state, epoch), hash(body.randao_reveal))
// state.randao_mixes[epoch % EPOCHS_PER_HISTORICAL_VECTOR] = mix // state.randao_mixes[epoch % EPOCHS_PER_HISTORICAL_VECTOR] = mix
func ProcessRandao( func ProcessRandao(
ctx context.Context, _ context.Context,
beaconState *stateTrie.BeaconState, beaconState *stateTrie.BeaconState,
b *ethpb.SignedBeaconBlock, b *ethpb.SignedBeaconBlock,
) (*stateTrie.BeaconState, error) { ) (*stateTrie.BeaconState, error) {

View File

@@ -122,7 +122,7 @@ func TestAttestationDeltaPrecompute(t *testing.T) {
base, err := epoch.BaseReward(state, i) base, err := epoch.BaseReward(state, i)
assert.NoError(t, err, "Could not get base reward") assert.NoError(t, err, "Could not get base reward")
assert.Equal(t, uint64(0), rewards[i], "Unexpected slashed indices reward balance") assert.Equal(t, uint64(0), rewards[i], "Unexpected slashed indices reward balance")
assert.Equal(t, uint64(3*base), penalties[i], "Unexpected slashed indices penalty balance") assert.Equal(t, 3*base, penalties[i], "Unexpected slashed indices penalty balance")
} }
nonAttestedIndices := []uint64{434, 677, 872, 791} nonAttestedIndices := []uint64{434, 677, 872, 791}

View File

@@ -60,7 +60,7 @@ func TestSplitIndices_OK(t *testing.T) {
} }
func TestShuffleList_Vs_ShuffleIndex(t *testing.T) { func TestShuffleList_Vs_ShuffleIndex(t *testing.T) {
list := []uint64{} var list []uint64
listSize := uint64(1000) listSize := uint64(1000)
seed := [32]byte{123, 42} seed := [32]byte{123, 42}
for i := uint64(0); i < listSize; i++ { for i := uint64(0); i < listSize; i++ {
@@ -124,7 +124,7 @@ func BenchmarkShuffleList(b *testing.B) {
} }
func TestShuffledIndex(t *testing.T) { func TestShuffledIndex(t *testing.T) {
list := []uint64{} var list []uint64
listSize := uint64(399) listSize := uint64(399)
for i := uint64(0); i < listSize; i++ { for i := uint64(0); i < listSize; i++ {
list = append(list, i) list = append(list, i)

View File

@@ -198,7 +198,7 @@ func ComputeDomain(domainType [DomainByteLength]byte, forkVersion []byte, genesi
// This returns the bls domain given by the domain type and fork data root. // This returns the bls domain given by the domain type and fork data root.
func domain(domainType [DomainByteLength]byte, forkDataRoot []byte) []byte { func domain(domainType [DomainByteLength]byte, forkDataRoot []byte) []byte {
b := []byte{} var b []byte
b = append(b, domainType[:4]...) b = append(b, domainType[:4]...)
b = append(b, forkDataRoot[:28]...) b = append(b, forkDataRoot[:28]...)
return b return b

View File

@@ -63,9 +63,9 @@ func TestFuzzverifySigningRoot_10000(t *testing.T) {
pubkey := [48]byte{} pubkey := [48]byte{}
sig := [96]byte{} sig := [96]byte{}
domain := [4]byte{} domain := [4]byte{}
p := []byte{} var p []byte
s := []byte{} var s []byte
d := []byte{} var d []byte
for i := 0; i < 10000; i++ { for i := 0; i < 10000; i++ {
fuzzer.Fuzz(state) fuzzer.Fuzz(state)
fuzzer.Fuzz(&pubkey) fuzzer.Fuzz(&pubkey)

View File

@@ -64,7 +64,7 @@ func GenesisBeaconState(deposits []*ethpb.Deposit, genesisTime uint64, eth1Data
return nil, err return nil, err
} }
// Process initial deposits. // Process initial deposits.
leaves := [][]byte{} var leaves [][]byte
for _, deposit := range deposits { for _, deposit := range deposits {
if deposit == nil || deposit.Data == nil { if deposit == nil || deposit.Data == nil {
return nil, fmt.Errorf("nil deposit or deposit with nil data cannot be processed: %v", deposit) return nil, fmt.Errorf("nil deposit or deposit with nil data cannot be processed: %v", deposit)

View File

@@ -599,7 +599,7 @@ func ProcessOperationsNoVerifyAttsSigs(
} }
// VerifyOperationLengths verifies that block operation lengths are valid. // VerifyOperationLengths verifies that block operation lengths are valid.
func VerifyOperationLengths(ctx context.Context, state *stateTrie.BeaconState, b *ethpb.SignedBeaconBlock) (*stateTrie.BeaconState, error) { func VerifyOperationLengths(_ context.Context, state *stateTrie.BeaconState, b *ethpb.SignedBeaconBlock) (*stateTrie.BeaconState, error) {
if b.Block == nil || b.Block.Body == nil { if b.Block == nil || b.Block.Body == nil {
return nil, errors.New("block and block body can't be nil") return nil, errors.New("block and block body can't be nil")
} }

View File

@@ -52,7 +52,7 @@ func InitiateValidatorExit(state *stateTrie.BeaconState, idx uint64) (*stateTrie
if validator.ExitEpoch != params.BeaconConfig().FarFutureEpoch { if validator.ExitEpoch != params.BeaconConfig().FarFutureEpoch {
return state, nil return state, nil
} }
exitEpochs := []uint64{} var exitEpochs []uint64
for _, val := range readOnlyVals { for _, val := range readOnlyVals {
if val.ExitEpoch() != params.BeaconConfig().FarFutureEpoch { if val.ExitEpoch() != params.BeaconConfig().FarFutureEpoch {
exitEpochs = append(exitEpochs, val.ExitEpoch()) exitEpochs = append(exitEpochs, val.ExitEpoch())

View File

@@ -9,11 +9,11 @@ import (
) )
// LastArchivedSlot from the db. // LastArchivedSlot from the db.
func (kv *Store) LastArchivedSlot(ctx context.Context) (uint64, error) { func (s *Store) LastArchivedSlot(ctx context.Context) (uint64, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.LastArchivedSlot") ctx, span := trace.StartSpan(ctx, "BeaconDB.LastArchivedSlot")
defer span.End() defer span.End()
var index uint64 var index uint64
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(stateSlotIndicesBucket) bkt := tx.Bucket(stateSlotIndicesBucket)
b, _ := bkt.Cursor().Last() b, _ := bkt.Cursor().Last()
index = bytesutil.BytesToUint64BigEndian(b) index = bytesutil.BytesToUint64BigEndian(b)
@@ -24,12 +24,12 @@ func (kv *Store) LastArchivedSlot(ctx context.Context) (uint64, error) {
} }
// LastArchivedRoot from the db. // LastArchivedRoot from the db.
func (kv *Store) LastArchivedRoot(ctx context.Context) [32]byte { func (s *Store) LastArchivedRoot(ctx context.Context) [32]byte {
ctx, span := trace.StartSpan(ctx, "BeaconDB.LastArchivedRoot") ctx, span := trace.StartSpan(ctx, "BeaconDB.LastArchivedRoot")
defer span.End() defer span.End()
var blockRoot []byte var blockRoot []byte
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(stateSlotIndicesBucket) bkt := tx.Bucket(stateSlotIndicesBucket)
_, blockRoot = bkt.Cursor().Last() _, blockRoot = bkt.Cursor().Last()
return nil return nil
@@ -42,12 +42,12 @@ func (kv *Store) LastArchivedRoot(ctx context.Context) [32]byte {
// ArchivedPointRoot returns the block root of an archived point from the DB. // ArchivedPointRoot returns the block root of an archived point from the DB.
// This is essential for cold state management and to restore a cold state. // This is essential for cold state management and to restore a cold state.
func (kv *Store) ArchivedPointRoot(ctx context.Context, slot uint64) [32]byte { func (s *Store) ArchivedPointRoot(ctx context.Context, slot uint64) [32]byte {
ctx, span := trace.StartSpan(ctx, "BeaconDB.ArchivedPointRoot") ctx, span := trace.StartSpan(ctx, "BeaconDB.ArchivedPointRoot")
defer span.End() defer span.End()
var blockRoot []byte var blockRoot []byte
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
bucket := tx.Bucket(stateSlotIndicesBucket) bucket := tx.Bucket(stateSlotIndicesBucket)
blockRoot = bucket.Get(bytesutil.Uint64ToBytesBigEndian(slot)) blockRoot = bucket.Get(bytesutil.Uint64ToBytesBigEndian(slot))
return nil return nil
@@ -59,11 +59,11 @@ func (kv *Store) ArchivedPointRoot(ctx context.Context, slot uint64) [32]byte {
} }
// HasArchivedPoint returns true if an archived point exists in DB. // HasArchivedPoint returns true if an archived point exists in DB.
func (kv *Store) HasArchivedPoint(ctx context.Context, slot uint64) bool { func (s *Store) HasArchivedPoint(ctx context.Context, slot uint64) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasArchivedPoint") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasArchivedPoint")
defer span.End() defer span.End()
var exists bool var exists bool
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
iBucket := tx.Bucket(stateSlotIndicesBucket) iBucket := tx.Bucket(stateSlotIndicesBucket)
exists = iBucket.Get(bytesutil.Uint64ToBytesBigEndian(slot)) != nil exists = iBucket.Get(bytesutil.Uint64ToBytesBigEndian(slot)) != nil
return nil return nil

View File

@@ -17,12 +17,12 @@ const backupsDirectoryName = "backups"
// Backup the database to the datadir backup directory. // Backup the database to the datadir backup directory.
// Example for backup at slot 345: $DATADIR/backups/prysm_beacondb_at_slot_0000345.backup // Example for backup at slot 345: $DATADIR/backups/prysm_beacondb_at_slot_0000345.backup
func (kv *Store) Backup(ctx context.Context) error { func (s *Store) Backup(ctx context.Context) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.Backup") ctx, span := trace.StartSpan(ctx, "BeaconDB.Backup")
defer span.End() defer span.End()
backupsDir := path.Join(kv.databasePath, backupsDirectoryName) backupsDir := path.Join(s.databasePath, backupsDirectoryName)
head, err := kv.HeadBlock(ctx) head, err := s.HeadBlock(ctx)
if err != nil { if err != nil {
return err return err
} }
@@ -46,7 +46,7 @@ func (kv *Store) Backup(ctx context.Context) error {
} }
}() }()
return kv.db.View(func(tx *bolt.Tx) error { return s.db.View(func(tx *bolt.Tx) error {
return tx.ForEach(func(name []byte, b *bolt.Bucket) error { return tx.ForEach(func(name []byte, b *bolt.Bucket) error {
logrus.Debugf("Copying bucket %s\n", name) logrus.Debugf("Copying bucket %s\n", name)
return copyDB.Update(func(tx2 *bolt.Tx) error { return copyDB.Update(func(tx2 *bolt.Tx) error {

View File

@@ -17,15 +17,15 @@ import (
) )
// Block retrieval by root. // Block retrieval by root.
func (kv *Store) Block(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBeaconBlock, error) { func (s *Store) Block(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBeaconBlock, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.Block") ctx, span := trace.StartSpan(ctx, "BeaconDB.Block")
defer span.End() defer span.End()
// Return block from cache if it exists. // Return block from cache if it exists.
if v, ok := kv.blockCache.Get(string(blockRoot[:])); v != nil && ok { if v, ok := s.blockCache.Get(string(blockRoot[:])); v != nil && ok {
return v.(*ethpb.SignedBeaconBlock), nil return v.(*ethpb.SignedBeaconBlock), nil
} }
var block *ethpb.SignedBeaconBlock var block *ethpb.SignedBeaconBlock
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
enc := bkt.Get(blockRoot[:]) enc := bkt.Get(blockRoot[:])
if enc == nil { if enc == nil {
@@ -38,11 +38,11 @@ func (kv *Store) Block(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBe
} }
// HeadBlock returns the latest canonical block in eth2. // HeadBlock returns the latest canonical block in eth2.
func (kv *Store) HeadBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error) { func (s *Store) HeadBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HeadBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.HeadBlock")
defer span.End() defer span.End()
var headBlock *ethpb.SignedBeaconBlock var headBlock *ethpb.SignedBeaconBlock
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
headRoot := bkt.Get(headBlockRootKey) headRoot := bkt.Get(headBlockRootKey)
if headRoot == nil { if headRoot == nil {
@@ -59,11 +59,11 @@ func (kv *Store) HeadBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error
} }
// Blocks retrieves a list of beacon blocks by filter criteria. // Blocks retrieves a list of beacon blocks by filter criteria.
func (kv *Store) Blocks(ctx context.Context, f *filters.QueryFilter) ([]*ethpb.SignedBeaconBlock, error) { func (s *Store) Blocks(ctx context.Context, f *filters.QueryFilter) ([]*ethpb.SignedBeaconBlock, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.Blocks") ctx, span := trace.StartSpan(ctx, "BeaconDB.Blocks")
defer span.End() defer span.End()
blocks := make([]*ethpb.SignedBeaconBlock, 0) blocks := make([]*ethpb.SignedBeaconBlock, 0)
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
keys, err := getBlockRootsByFilter(ctx, tx, f) keys, err := getBlockRootsByFilter(ctx, tx, f)
@@ -85,11 +85,11 @@ func (kv *Store) Blocks(ctx context.Context, f *filters.QueryFilter) ([]*ethpb.S
} }
// BlockRoots retrieves a list of beacon block roots by filter criteria. // BlockRoots retrieves a list of beacon block roots by filter criteria.
func (kv *Store) BlockRoots(ctx context.Context, f *filters.QueryFilter) ([][32]byte, error) { func (s *Store) BlockRoots(ctx context.Context, f *filters.QueryFilter) ([][32]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.BlockRoots") ctx, span := trace.StartSpan(ctx, "BeaconDB.BlockRoots")
defer span.End() defer span.End()
blockRoots := make([][32]byte, 0) blockRoots := make([][32]byte, 0)
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
keys, err := getBlockRootsByFilter(ctx, tx, f) keys, err := getBlockRootsByFilter(ctx, tx, f)
if err != nil { if err != nil {
return err return err
@@ -107,14 +107,14 @@ func (kv *Store) BlockRoots(ctx context.Context, f *filters.QueryFilter) ([][32]
} }
// HasBlock checks if a block by root exists in the db. // HasBlock checks if a block by root exists in the db.
func (kv *Store) HasBlock(ctx context.Context, blockRoot [32]byte) bool { func (s *Store) HasBlock(ctx context.Context, blockRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasBlock")
defer span.End() defer span.End()
if v, ok := kv.blockCache.Get(string(blockRoot[:])); v != nil && ok { if v, ok := s.blockCache.Get(string(blockRoot[:])); v != nil && ok {
return true return true
} }
exists := false exists := false
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
exists = bkt.Get(blockRoot[:]) != nil exists = bkt.Get(blockRoot[:]) != nil
return nil return nil
@@ -125,10 +125,10 @@ func (kv *Store) HasBlock(ctx context.Context, blockRoot [32]byte) bool {
} }
// deleteBlock by block root. // deleteBlock by block root.
func (kv *Store) deleteBlock(ctx context.Context, blockRoot [32]byte) error { func (s *Store) deleteBlock(ctx context.Context, blockRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteBlock")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
enc := bkt.Get(blockRoot[:]) enc := bkt.Get(blockRoot[:])
if enc == nil { if enc == nil {
@@ -142,17 +142,17 @@ func (kv *Store) deleteBlock(ctx context.Context, blockRoot [32]byte) error {
if err := deleteValueForIndices(ctx, indicesByBucket, blockRoot[:], tx); err != nil { if err := deleteValueForIndices(ctx, indicesByBucket, blockRoot[:], tx); err != nil {
return errors.Wrap(err, "could not delete root for DB indices") return errors.Wrap(err, "could not delete root for DB indices")
} }
kv.blockCache.Del(string(blockRoot[:])) s.blockCache.Del(string(blockRoot[:]))
return bkt.Delete(blockRoot[:]) return bkt.Delete(blockRoot[:])
}) })
} }
// deleteBlocks by block roots. // deleteBlocks by block roots.
func (kv *Store) deleteBlocks(ctx context.Context, blockRoots [][32]byte) error { func (s *Store) deleteBlocks(ctx context.Context, blockRoots [][32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteBlocks") ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteBlocks")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
for _, blockRoot := range blockRoots { for _, blockRoot := range blockRoots {
enc := bkt.Get(blockRoot[:]) enc := bkt.Get(blockRoot[:])
@@ -167,7 +167,7 @@ func (kv *Store) deleteBlocks(ctx context.Context, blockRoots [][32]byte) error
if err := deleteValueForIndices(ctx, indicesByBucket, blockRoot[:], tx); err != nil { if err := deleteValueForIndices(ctx, indicesByBucket, blockRoot[:], tx); err != nil {
return errors.Wrap(err, "could not delete root for DB indices") return errors.Wrap(err, "could not delete root for DB indices")
} }
kv.blockCache.Del(string(blockRoot[:])) s.blockCache.Del(string(blockRoot[:]))
if err := bkt.Delete(blockRoot[:]); err != nil { if err := bkt.Delete(blockRoot[:]); err != nil {
return err return err
} }
@@ -177,26 +177,26 @@ func (kv *Store) deleteBlocks(ctx context.Context, blockRoots [][32]byte) error
} }
// SaveBlock to the db. // SaveBlock to the db.
func (kv *Store) SaveBlock(ctx context.Context, signed *ethpb.SignedBeaconBlock) error { func (s *Store) SaveBlock(ctx context.Context, signed *ethpb.SignedBeaconBlock) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveBlock")
defer span.End() defer span.End()
blockRoot, err := signed.Block.HashTreeRoot() blockRoot, err := signed.Block.HashTreeRoot()
if err != nil { if err != nil {
return err return err
} }
if v, ok := kv.blockCache.Get(string(blockRoot[:])); v != nil && ok { if v, ok := s.blockCache.Get(string(blockRoot[:])); v != nil && ok {
return nil return nil
} }
return kv.SaveBlocks(ctx, []*ethpb.SignedBeaconBlock{signed}) return s.SaveBlocks(ctx, []*ethpb.SignedBeaconBlock{signed})
} }
// SaveBlocks via bulk updates to the db. // SaveBlocks via bulk updates to the db.
func (kv *Store) SaveBlocks(ctx context.Context, blocks []*ethpb.SignedBeaconBlock) error { func (s *Store) SaveBlocks(ctx context.Context, blocks []*ethpb.SignedBeaconBlock) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveBlocks") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveBlocks")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
for _, block := range blocks { for _, block := range blocks {
blockRoot, err := block.Block.HashTreeRoot() blockRoot, err := block.Block.HashTreeRoot()
@@ -215,7 +215,7 @@ func (kv *Store) SaveBlocks(ctx context.Context, blocks []*ethpb.SignedBeaconBlo
if err := updateValueForIndices(ctx, indicesByBucket, blockRoot[:], tx); err != nil { if err := updateValueForIndices(ctx, indicesByBucket, blockRoot[:], tx); err != nil {
return errors.Wrap(err, "could not update DB indices") return errors.Wrap(err, "could not update DB indices")
} }
kv.blockCache.Set(string(blockRoot[:]), block, int64(len(enc))) s.blockCache.Set(string(blockRoot[:]), block, int64(len(enc)))
if err := bkt.Put(blockRoot[:], enc); err != nil { if err := bkt.Put(blockRoot[:], enc); err != nil {
return err return err
@@ -226,11 +226,11 @@ func (kv *Store) SaveBlocks(ctx context.Context, blocks []*ethpb.SignedBeaconBlo
} }
// SaveHeadBlockRoot to the db. // SaveHeadBlockRoot to the db.
func (kv *Store) SaveHeadBlockRoot(ctx context.Context, blockRoot [32]byte) error { func (s *Store) SaveHeadBlockRoot(ctx context.Context, blockRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveHeadBlockRoot") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveHeadBlockRoot")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
hasStateSummaryInCache := kv.stateSummaryCache.Has(blockRoot) hasStateSummaryInCache := s.stateSummaryCache.Has(blockRoot)
hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(blockRoot[:]) != nil hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(blockRoot[:]) != nil
hasStateInDB := tx.Bucket(stateBucket).Get(blockRoot[:]) != nil hasStateInDB := tx.Bucket(stateBucket).Get(blockRoot[:]) != nil
if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) { if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) {
@@ -243,11 +243,11 @@ func (kv *Store) SaveHeadBlockRoot(ctx context.Context, blockRoot [32]byte) erro
} }
// GenesisBlock retrieves the genesis block of the beacon chain. // GenesisBlock retrieves the genesis block of the beacon chain.
func (kv *Store) GenesisBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error) { func (s *Store) GenesisBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.GenesisBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.GenesisBlock")
defer span.End() defer span.End()
var block *ethpb.SignedBeaconBlock var block *ethpb.SignedBeaconBlock
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
root := bkt.Get(genesisBlockRootKey) root := bkt.Get(genesisBlockRootKey)
enc := bkt.Get(root) enc := bkt.Get(root)
@@ -261,22 +261,22 @@ func (kv *Store) GenesisBlock(ctx context.Context) (*ethpb.SignedBeaconBlock, er
} }
// SaveGenesisBlockRoot to the db. // SaveGenesisBlockRoot to the db.
func (kv *Store) SaveGenesisBlockRoot(ctx context.Context, blockRoot [32]byte) error { func (s *Store) SaveGenesisBlockRoot(ctx context.Context, blockRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveGenesisBlockRoot") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveGenesisBlockRoot")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(blocksBucket) bucket := tx.Bucket(blocksBucket)
return bucket.Put(genesisBlockRootKey, blockRoot[:]) return bucket.Put(genesisBlockRootKey, blockRoot[:])
}) })
} }
// HighestSlotBlocksBelow returns the block with the highest slot below the input slot from the db. // HighestSlotBlocksBelow returns the block with the highest slot below the input slot from the db.
func (kv *Store) HighestSlotBlocksBelow(ctx context.Context, slot uint64) ([]*ethpb.SignedBeaconBlock, error) { func (s *Store) HighestSlotBlocksBelow(ctx context.Context, slot uint64) ([]*ethpb.SignedBeaconBlock, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HighestSlotBlocksBelow") ctx, span := trace.StartSpan(ctx, "BeaconDB.HighestSlotBlocksBelow")
defer span.End() defer span.End()
var best []byte var best []byte
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blockSlotIndicesBucket) bkt := tx.Bucket(blockSlotIndicesBucket)
// Iterate through the index, which is in byte sorted order. // Iterate through the index, which is in byte sorted order.
c := bkt.Cursor() c := bkt.Cursor()
@@ -298,13 +298,13 @@ func (kv *Store) HighestSlotBlocksBelow(ctx context.Context, slot uint64) ([]*et
var blk *ethpb.SignedBeaconBlock var blk *ethpb.SignedBeaconBlock
var err error var err error
if best != nil { if best != nil {
blk, err = kv.Block(ctx, bytesutil.ToBytes32(best)) blk, err = s.Block(ctx, bytesutil.ToBytes32(best))
if err != nil { if err != nil {
return nil, err return nil, err
} }
} }
if blk == nil { if blk == nil {
blk, err = kv.GenesisBlock(ctx) blk, err = s.GenesisBlock(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -14,11 +14,11 @@ import (
var errMissingStateForCheckpoint = errors.New("missing state summary for finalized root") var errMissingStateForCheckpoint = errors.New("missing state summary for finalized root")
// JustifiedCheckpoint returns the latest justified checkpoint in beacon chain. // JustifiedCheckpoint returns the latest justified checkpoint in beacon chain.
func (kv *Store) JustifiedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error) { func (s *Store) JustifiedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.JustifiedCheckpoint") ctx, span := trace.StartSpan(ctx, "BeaconDB.JustifiedCheckpoint")
defer span.End() defer span.End()
var checkpoint *ethpb.Checkpoint var checkpoint *ethpb.Checkpoint
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(checkpointBucket) bkt := tx.Bucket(checkpointBucket)
enc := bkt.Get(justifiedCheckpointKey) enc := bkt.Get(justifiedCheckpointKey)
if enc == nil { if enc == nil {
@@ -32,11 +32,11 @@ func (kv *Store) JustifiedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, er
} }
// FinalizedCheckpoint returns the latest finalized checkpoint in beacon chain. // FinalizedCheckpoint returns the latest finalized checkpoint in beacon chain.
func (kv *Store) FinalizedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error) { func (s *Store) FinalizedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.FinalizedCheckpoint") ctx, span := trace.StartSpan(ctx, "BeaconDB.FinalizedCheckpoint")
defer span.End() defer span.End()
var checkpoint *ethpb.Checkpoint var checkpoint *ethpb.Checkpoint
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(checkpointBucket) bkt := tx.Bucket(checkpointBucket)
enc := bkt.Get(finalizedCheckpointKey) enc := bkt.Get(finalizedCheckpointKey)
if enc == nil { if enc == nil {
@@ -50,7 +50,7 @@ func (kv *Store) FinalizedCheckpoint(ctx context.Context) (*ethpb.Checkpoint, er
} }
// SaveJustifiedCheckpoint saves justified checkpoint in beacon chain. // SaveJustifiedCheckpoint saves justified checkpoint in beacon chain.
func (kv *Store) SaveJustifiedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error { func (s *Store) SaveJustifiedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveJustifiedCheckpoint") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveJustifiedCheckpoint")
defer span.End() defer span.End()
@@ -58,10 +58,10 @@ func (kv *Store) SaveJustifiedCheckpoint(ctx context.Context, checkpoint *ethpb.
if err != nil { if err != nil {
return err return err
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(checkpointBucket) bucket := tx.Bucket(checkpointBucket)
hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(checkpoint.Root) != nil hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(checkpoint.Root) != nil
hasStateSummaryInCache := kv.stateSummaryCache.Has(bytesutil.ToBytes32(checkpoint.Root)) hasStateSummaryInCache := s.stateSummaryCache.Has(bytesutil.ToBytes32(checkpoint.Root))
hasStateInDB := tx.Bucket(stateBucket).Get(checkpoint.Root) != nil hasStateInDB := tx.Bucket(stateBucket).Get(checkpoint.Root) != nil
if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) { if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) {
return errMissingStateForCheckpoint return errMissingStateForCheckpoint
@@ -71,7 +71,7 @@ func (kv *Store) SaveJustifiedCheckpoint(ctx context.Context, checkpoint *ethpb.
} }
// SaveFinalizedCheckpoint saves finalized checkpoint in beacon chain. // SaveFinalizedCheckpoint saves finalized checkpoint in beacon chain.
func (kv *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error { func (s *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.Checkpoint) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveFinalizedCheckpoint") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveFinalizedCheckpoint")
defer span.End() defer span.End()
@@ -79,10 +79,10 @@ func (kv *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.
if err != nil { if err != nil {
return err return err
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(checkpointBucket) bucket := tx.Bucket(checkpointBucket)
hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(checkpoint.Root) != nil hasStateSummaryInDB := tx.Bucket(stateSummaryBucket).Get(checkpoint.Root) != nil
hasStateSummaryInCache := kv.stateSummaryCache.Has(bytesutil.ToBytes32(checkpoint.Root)) hasStateSummaryInCache := s.stateSummaryCache.Has(bytesutil.ToBytes32(checkpoint.Root))
hasStateInDB := tx.Bucket(stateBucket).Get(checkpoint.Root) != nil hasStateInDB := tx.Bucket(stateBucket).Get(checkpoint.Root) != nil
if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) { if !(hasStateInDB || hasStateSummaryInDB || hasStateSummaryInCache) {
return errMissingStateForCheckpoint return errMissingStateForCheckpoint
@@ -91,6 +91,6 @@ func (kv *Store) SaveFinalizedCheckpoint(ctx context.Context, checkpoint *ethpb.
return err return err
} }
return kv.updateFinalizedBlockRoots(ctx, tx, checkpoint) return s.updateFinalizedBlockRoots(ctx, tx, checkpoint)
}) })
} }

View File

@@ -11,11 +11,11 @@ import (
// DepositContractAddress returns contract address is the address of // DepositContractAddress returns contract address is the address of
// the deposit contract on the proof of work chain. // the deposit contract on the proof of work chain.
func (kv *Store) DepositContractAddress(ctx context.Context) ([]byte, error) { func (s *Store) DepositContractAddress(ctx context.Context) ([]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.DepositContractAddress") ctx, span := trace.StartSpan(ctx, "BeaconDB.DepositContractAddress")
defer span.End() defer span.End()
var addr []byte var addr []byte
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
chainInfo := tx.Bucket(chainMetadataBucket) chainInfo := tx.Bucket(chainMetadataBucket)
addr = chainInfo.Get(depositContractAddressKey) addr = chainInfo.Get(depositContractAddressKey)
return nil return nil
@@ -26,11 +26,11 @@ func (kv *Store) DepositContractAddress(ctx context.Context) ([]byte, error) {
} }
// SaveDepositContractAddress to the db. It returns an error if an address has been previously saved. // SaveDepositContractAddress to the db. It returns an error if an address has been previously saved.
func (kv *Store) SaveDepositContractAddress(ctx context.Context, addr common.Address) error { func (s *Store) SaveDepositContractAddress(ctx context.Context, addr common.Address) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.VerifyContractAddress") ctx, span := trace.StartSpan(ctx, "BeaconDB.VerifyContractAddress")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
chainInfo := tx.Bucket(chainMetadataBucket) chainInfo := tx.Bucket(chainMetadataBucket)
expectedAddress := chainInfo.Get(depositContractAddressKey) expectedAddress := chainInfo.Get(depositContractAddressKey)
if expectedAddress != nil { if expectedAddress != nil {

View File

@@ -37,7 +37,7 @@ var containerFinalizedButNotCanonical = []byte("recent block needs reindexing to
// //
// This method ensures that all blocks from the current finalized epoch are considered "final" while // This method ensures that all blocks from the current finalized epoch are considered "final" while
// maintaining only canonical and finalized blocks older than the current finalized epoch. // maintaining only canonical and finalized blocks older than the current finalized epoch.
func (kv *Store) updateFinalizedBlockRoots(ctx context.Context, tx *bolt.Tx, checkpoint *ethpb.Checkpoint) error { func (s *Store) updateFinalizedBlockRoots(ctx context.Context, tx *bolt.Tx, checkpoint *ethpb.Checkpoint) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.updateFinalizedBlockRoots") ctx, span := trace.StartSpan(ctx, "BeaconDB.updateFinalizedBlockRoots")
defer span.End() defer span.End()
@@ -56,7 +56,7 @@ func (kv *Store) updateFinalizedBlockRoots(ctx context.Context, tx *bolt.Tx, che
} }
} }
blockRoots, err := kv.BlockRoots(ctx, filters.NewFilter(). blockRoots, err := s.BlockRoots(ctx, filters.NewFilter().
SetStartEpoch(previousFinalizedCheckpoint.Epoch). SetStartEpoch(previousFinalizedCheckpoint.Epoch).
SetEndEpoch(checkpoint.Epoch+1), SetEndEpoch(checkpoint.Epoch+1),
) )
@@ -78,7 +78,7 @@ func (kv *Store) updateFinalizedBlockRoots(ctx context.Context, tx *bolt.Tx, che
break break
} }
signedBlock, err := kv.Block(ctx, bytesutil.ToBytes32(root)) signedBlock, err := s.Block(ctx, bytesutil.ToBytes32(root))
if err != nil { if err != nil {
traceutil.AnnotateError(span, err) traceutil.AnnotateError(span, err)
return err return err
@@ -129,7 +129,7 @@ func (kv *Store) updateFinalizedBlockRoots(ctx context.Context, tx *bolt.Tx, che
} }
// Upsert blocks from the current finalized epoch. // Upsert blocks from the current finalized epoch.
roots, err := kv.BlockRoots(ctx, filters.NewFilter().SetStartEpoch(checkpoint.Epoch).SetEndEpoch(checkpoint.Epoch+1)) roots, err := s.BlockRoots(ctx, filters.NewFilter().SetStartEpoch(checkpoint.Epoch).SetEndEpoch(checkpoint.Epoch+1))
if err != nil { if err != nil {
traceutil.AnnotateError(span, err) traceutil.AnnotateError(span, err)
return err return err
@@ -159,12 +159,12 @@ func (kv *Store) updateFinalizedBlockRoots(ctx context.Context, tx *bolt.Tx, che
// A beacon block root contained exists in this index if it is considered finalized and canonical. // A beacon block root contained exists in this index if it is considered finalized and canonical.
// Note: beacon blocks from the latest finalized epoch return true, whether or not they are // Note: beacon blocks from the latest finalized epoch return true, whether or not they are
// considered canonical in the "head view" of the beacon node. // considered canonical in the "head view" of the beacon node.
func (kv *Store) IsFinalizedBlock(ctx context.Context, blockRoot [32]byte) bool { func (s *Store) IsFinalizedBlock(ctx context.Context, blockRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.IsFinalizedBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.IsFinalizedBlock")
defer span.End() defer span.End()
var exists bool var exists bool
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
exists = tx.Bucket(finalizedBlockRootsIndexBucket).Get(blockRoot[:]) != nil exists = tx.Bucket(finalizedBlockRootsIndexBucket).Get(blockRoot[:]) != nil
// Check genesis block root. // Check genesis block root.
if !exists { if !exists {
@@ -182,12 +182,12 @@ func (kv *Store) IsFinalizedBlock(ctx context.Context, blockRoot [32]byte) bool
// FinalizedChildBlock returns the child block of a provided finalized block. If // FinalizedChildBlock returns the child block of a provided finalized block. If
// no finalized block or its respective child block exists we return with a nil // no finalized block or its respective child block exists we return with a nil
// block. // block.
func (kv *Store) FinalizedChildBlock(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBeaconBlock, error) { func (s *Store) FinalizedChildBlock(ctx context.Context, blockRoot [32]byte) (*ethpb.SignedBeaconBlock, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.FinalizedChildBlock") ctx, span := trace.StartSpan(ctx, "BeaconDB.FinalizedChildBlock")
defer span.End() defer span.End()
var blk *ethpb.SignedBeaconBlock var blk *ethpb.SignedBeaconBlock
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
blkBytes := tx.Bucket(finalizedBlockRootsIndexBucket).Get(blockRoot[:]) blkBytes := tx.Bucket(finalizedBlockRootsIndexBucket).Get(blockRoot[:])
if blkBytes == nil { if blkBytes == nil {
return nil return nil

View File

@@ -122,26 +122,26 @@ func NewKVStore(dirPath string, stateSummaryCache *cache.StateSummaryCache) (*St
} }
// ClearDB removes the previously stored database in the data directory. // ClearDB removes the previously stored database in the data directory.
func (kv *Store) ClearDB() error { func (s *Store) ClearDB() error {
if _, err := os.Stat(kv.databasePath); os.IsNotExist(err) { if _, err := os.Stat(s.databasePath); os.IsNotExist(err) {
return nil return nil
} }
prometheus.Unregister(createBoltCollector(kv.db)) prometheus.Unregister(createBoltCollector(s.db))
if err := os.Remove(path.Join(kv.databasePath, databaseFileName)); err != nil { if err := os.Remove(path.Join(s.databasePath, databaseFileName)); err != nil {
return errors.Wrap(err, "could not remove database file") return errors.Wrap(err, "could not remove database file")
} }
return nil return nil
} }
// Close closes the underlying BoltDB database. // Close closes the underlying BoltDB database.
func (kv *Store) Close() error { func (s *Store) Close() error {
prometheus.Unregister(createBoltCollector(kv.db)) prometheus.Unregister(createBoltCollector(s.db))
return kv.db.Close() return s.db.Close()
} }
// DatabasePath at which this database writes files. // DatabasePath at which this database writes files.
func (kv *Store) DatabasePath() string { func (s *Store) DatabasePath() string {
return kv.databasePath return s.databasePath
} }
func createBuckets(tx *bolt.Tx, buckets ...[]byte) error { func createBuckets(tx *bolt.Tx, buckets ...[]byte) error {

View File

@@ -9,10 +9,10 @@ import (
) )
// VoluntaryExit retrieval by signing root. // VoluntaryExit retrieval by signing root.
func (kv *Store) VoluntaryExit(ctx context.Context, exitRoot [32]byte) (*ethpb.VoluntaryExit, error) { func (s *Store) VoluntaryExit(ctx context.Context, exitRoot [32]byte) (*ethpb.VoluntaryExit, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.VoluntaryExit") ctx, span := trace.StartSpan(ctx, "BeaconDB.VoluntaryExit")
defer span.End() defer span.End()
enc, err := kv.voluntaryExitBytes(ctx, exitRoot) enc, err := s.voluntaryExitBytes(ctx, exitRoot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -27,10 +27,10 @@ func (kv *Store) VoluntaryExit(ctx context.Context, exitRoot [32]byte) (*ethpb.V
} }
// HasVoluntaryExit verifies if a voluntary exit is stored in the db by its signing root. // HasVoluntaryExit verifies if a voluntary exit is stored in the db by its signing root.
func (kv *Store) HasVoluntaryExit(ctx context.Context, exitRoot [32]byte) bool { func (s *Store) HasVoluntaryExit(ctx context.Context, exitRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasVoluntaryExit") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasVoluntaryExit")
defer span.End() defer span.End()
enc, err := kv.voluntaryExitBytes(ctx, exitRoot) enc, err := s.voluntaryExitBytes(ctx, exitRoot)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -38,7 +38,7 @@ func (kv *Store) HasVoluntaryExit(ctx context.Context, exitRoot [32]byte) bool {
} }
// SaveVoluntaryExit to the db by its signing root. // SaveVoluntaryExit to the db by its signing root.
func (kv *Store) SaveVoluntaryExit(ctx context.Context, exit *ethpb.VoluntaryExit) error { func (s *Store) SaveVoluntaryExit(ctx context.Context, exit *ethpb.VoluntaryExit) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveVoluntaryExit") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveVoluntaryExit")
defer span.End() defer span.End()
exitRoot, err := exit.HashTreeRoot() exitRoot, err := exit.HashTreeRoot()
@@ -49,17 +49,17 @@ func (kv *Store) SaveVoluntaryExit(ctx context.Context, exit *ethpb.VoluntaryExi
if err != nil { if err != nil {
return err return err
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(voluntaryExitsBucket) bucket := tx.Bucket(voluntaryExitsBucket)
return bucket.Put(exitRoot[:], enc) return bucket.Put(exitRoot[:], enc)
}) })
} }
func (kv *Store) voluntaryExitBytes(ctx context.Context, exitRoot [32]byte) ([]byte, error) { func (s *Store) voluntaryExitBytes(ctx context.Context, exitRoot [32]byte) ([]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.voluntaryExitBytes") ctx, span := trace.StartSpan(ctx, "BeaconDB.voluntaryExitBytes")
defer span.End() defer span.End()
var dst []byte var dst []byte
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(voluntaryExitsBucket) bkt := tx.Bucket(voluntaryExitsBucket)
dst = bkt.Get(exitRoot[:]) dst = bkt.Get(exitRoot[:])
return nil return nil
@@ -68,10 +68,10 @@ func (kv *Store) voluntaryExitBytes(ctx context.Context, exitRoot [32]byte) ([]b
} }
// deleteVoluntaryExit clears a voluntary exit from the db by its signing root. // deleteVoluntaryExit clears a voluntary exit from the db by its signing root.
func (kv *Store) deleteVoluntaryExit(ctx context.Context, exitRoot [32]byte) error { func (s *Store) deleteVoluntaryExit(ctx context.Context, exitRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteVoluntaryExit") ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteVoluntaryExit")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(voluntaryExitsBucket) bucket := tx.Bucket(voluntaryExitsBucket)
return bucket.Delete(exitRoot[:]) return bucket.Delete(exitRoot[:])
}) })

View File

@@ -12,7 +12,7 @@ import (
) )
// SavePowchainData saves the pow chain data. // SavePowchainData saves the pow chain data.
func (kv *Store) SavePowchainData(ctx context.Context, data *db.ETH1ChainData) error { func (s *Store) SavePowchainData(ctx context.Context, data *db.ETH1ChainData) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SavePowchainData") ctx, span := trace.StartSpan(ctx, "BeaconDB.SavePowchainData")
defer span.End() defer span.End()
@@ -22,7 +22,7 @@ func (kv *Store) SavePowchainData(ctx context.Context, data *db.ETH1ChainData) e
return err return err
} }
err := kv.db.Update(func(tx *bolt.Tx) error { err := s.db.Update(func(tx *bolt.Tx) error {
bkt := tx.Bucket(powchainBucket) bkt := tx.Bucket(powchainBucket)
enc, err := proto.Marshal(data) enc, err := proto.Marshal(data)
if err != nil { if err != nil {
@@ -35,12 +35,12 @@ func (kv *Store) SavePowchainData(ctx context.Context, data *db.ETH1ChainData) e
} }
// PowchainData retrieves the powchain data. // PowchainData retrieves the powchain data.
func (kv *Store) PowchainData(ctx context.Context) (*db.ETH1ChainData, error) { func (s *Store) PowchainData(ctx context.Context) (*db.ETH1ChainData, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.PowchainData") ctx, span := trace.StartSpan(ctx, "BeaconDB.PowchainData")
defer span.End() defer span.End()
var data *db.ETH1ChainData var data *db.ETH1ChainData
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(powchainBucket) bkt := tx.Bucket(powchainBucket)
enc := bkt.Get(powchainDataKey) enc := bkt.Get(powchainDataKey)
if len(enc) == 0 { if len(enc) == 0 {

View File

@@ -9,10 +9,10 @@ import (
) )
// ProposerSlashing retrieval by slashing root. // ProposerSlashing retrieval by slashing root.
func (kv *Store) ProposerSlashing(ctx context.Context, slashingRoot [32]byte) (*ethpb.ProposerSlashing, error) { func (s *Store) ProposerSlashing(ctx context.Context, slashingRoot [32]byte) (*ethpb.ProposerSlashing, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.ProposerSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.ProposerSlashing")
defer span.End() defer span.End()
enc, err := kv.proposerSlashingBytes(ctx, slashingRoot) enc, err := s.proposerSlashingBytes(ctx, slashingRoot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -27,10 +27,10 @@ func (kv *Store) ProposerSlashing(ctx context.Context, slashingRoot [32]byte) (*
} }
// HasProposerSlashing verifies if a slashing is stored in the db. // HasProposerSlashing verifies if a slashing is stored in the db.
func (kv *Store) HasProposerSlashing(ctx context.Context, slashingRoot [32]byte) bool { func (s *Store) HasProposerSlashing(ctx context.Context, slashingRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasProposerSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasProposerSlashing")
defer span.End() defer span.End()
enc, err := kv.proposerSlashingBytes(ctx, slashingRoot) enc, err := s.proposerSlashingBytes(ctx, slashingRoot)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -38,7 +38,7 @@ func (kv *Store) HasProposerSlashing(ctx context.Context, slashingRoot [32]byte)
} }
// SaveProposerSlashing to the db by its hash tree root. // SaveProposerSlashing to the db by its hash tree root.
func (kv *Store) SaveProposerSlashing(ctx context.Context, slashing *ethpb.ProposerSlashing) error { func (s *Store) SaveProposerSlashing(ctx context.Context, slashing *ethpb.ProposerSlashing) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveProposerSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveProposerSlashing")
defer span.End() defer span.End()
slashingRoot, err := slashing.HashTreeRoot() slashingRoot, err := slashing.HashTreeRoot()
@@ -49,17 +49,17 @@ func (kv *Store) SaveProposerSlashing(ctx context.Context, slashing *ethpb.Propo
if err != nil { if err != nil {
return err return err
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(proposerSlashingsBucket) bucket := tx.Bucket(proposerSlashingsBucket)
return bucket.Put(slashingRoot[:], enc) return bucket.Put(slashingRoot[:], enc)
}) })
} }
func (kv *Store) proposerSlashingBytes(ctx context.Context, slashingRoot [32]byte) ([]byte, error) { func (s *Store) proposerSlashingBytes(ctx context.Context, slashingRoot [32]byte) ([]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.proposerSlashingBytes") ctx, span := trace.StartSpan(ctx, "BeaconDB.proposerSlashingBytes")
defer span.End() defer span.End()
var dst []byte var dst []byte
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(proposerSlashingsBucket) bkt := tx.Bucket(proposerSlashingsBucket)
dst = bkt.Get(slashingRoot[:]) dst = bkt.Get(slashingRoot[:])
return nil return nil
@@ -68,20 +68,20 @@ func (kv *Store) proposerSlashingBytes(ctx context.Context, slashingRoot [32]byt
} }
// deleteProposerSlashing clears a proposer slashing from the db by its hash tree root. // deleteProposerSlashing clears a proposer slashing from the db by its hash tree root.
func (kv *Store) deleteProposerSlashing(ctx context.Context, slashingRoot [32]byte) error { func (s *Store) deleteProposerSlashing(ctx context.Context, slashingRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteProposerSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteProposerSlashing")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(proposerSlashingsBucket) bucket := tx.Bucket(proposerSlashingsBucket)
return bucket.Delete(slashingRoot[:]) return bucket.Delete(slashingRoot[:])
}) })
} }
// AttesterSlashing retrieval by hash tree root. // AttesterSlashing retrieval by hash tree root.
func (kv *Store) AttesterSlashing(ctx context.Context, slashingRoot [32]byte) (*ethpb.AttesterSlashing, error) { func (s *Store) AttesterSlashing(ctx context.Context, slashingRoot [32]byte) (*ethpb.AttesterSlashing, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.AttesterSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.AttesterSlashing")
defer span.End() defer span.End()
enc, err := kv.attesterSlashingBytes(ctx, slashingRoot) enc, err := s.attesterSlashingBytes(ctx, slashingRoot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -96,10 +96,10 @@ func (kv *Store) AttesterSlashing(ctx context.Context, slashingRoot [32]byte) (*
} }
// HasAttesterSlashing verifies if a slashing is stored in the db. // HasAttesterSlashing verifies if a slashing is stored in the db.
func (kv *Store) HasAttesterSlashing(ctx context.Context, slashingRoot [32]byte) bool { func (s *Store) HasAttesterSlashing(ctx context.Context, slashingRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasAttesterSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasAttesterSlashing")
defer span.End() defer span.End()
enc, err := kv.attesterSlashingBytes(ctx, slashingRoot) enc, err := s.attesterSlashingBytes(ctx, slashingRoot)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -107,7 +107,7 @@ func (kv *Store) HasAttesterSlashing(ctx context.Context, slashingRoot [32]byte)
} }
// SaveAttesterSlashing to the db by its hash tree root. // SaveAttesterSlashing to the db by its hash tree root.
func (kv *Store) SaveAttesterSlashing(ctx context.Context, slashing *ethpb.AttesterSlashing) error { func (s *Store) SaveAttesterSlashing(ctx context.Context, slashing *ethpb.AttesterSlashing) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveAttesterSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveAttesterSlashing")
defer span.End() defer span.End()
slashingRoot, err := slashing.HashTreeRoot() slashingRoot, err := slashing.HashTreeRoot()
@@ -118,17 +118,17 @@ func (kv *Store) SaveAttesterSlashing(ctx context.Context, slashing *ethpb.Attes
if err != nil { if err != nil {
return err return err
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(attesterSlashingsBucket) bucket := tx.Bucket(attesterSlashingsBucket)
return bucket.Put(slashingRoot[:], enc) return bucket.Put(slashingRoot[:], enc)
}) })
} }
func (kv *Store) attesterSlashingBytes(ctx context.Context, slashingRoot [32]byte) ([]byte, error) { func (s *Store) attesterSlashingBytes(ctx context.Context, slashingRoot [32]byte) ([]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.attesterSlashingBytes") ctx, span := trace.StartSpan(ctx, "BeaconDB.attesterSlashingBytes")
defer span.End() defer span.End()
var dst []byte var dst []byte
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(attesterSlashingsBucket) bkt := tx.Bucket(attesterSlashingsBucket)
dst = bkt.Get(slashingRoot[:]) dst = bkt.Get(slashingRoot[:])
return nil return nil
@@ -137,10 +137,10 @@ func (kv *Store) attesterSlashingBytes(ctx context.Context, slashingRoot [32]byt
} }
// deleteAttesterSlashing clears an attester slashing from the db by its hash tree root. // deleteAttesterSlashing clears an attester slashing from the db by its hash tree root.
func (kv *Store) deleteAttesterSlashing(ctx context.Context, slashingRoot [32]byte) error { func (s *Store) deleteAttesterSlashing(ctx context.Context, slashingRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteAttesterSlashing") ctx, span := trace.StartSpan(ctx, "BeaconDB.deleteAttesterSlashing")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(attesterSlashingsBucket) bucket := tx.Bucket(attesterSlashingsBucket)
return bucket.Delete(slashingRoot[:]) return bucket.Delete(slashingRoot[:])
}) })

View File

@@ -15,11 +15,11 @@ import (
// State returns the saved state using block's signing root, // State returns the saved state using block's signing root,
// this particular block was used to generate the state. // this particular block was used to generate the state.
func (kv *Store) State(ctx context.Context, blockRoot [32]byte) (*state.BeaconState, error) { func (s *Store) State(ctx context.Context, blockRoot [32]byte) (*state.BeaconState, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.State") ctx, span := trace.StartSpan(ctx, "BeaconDB.State")
defer span.End() defer span.End()
var s *pb.BeaconState var st *pb.BeaconState
enc, err := kv.stateBytes(ctx, blockRoot) enc, err := s.stateBytes(ctx, blockRoot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -28,19 +28,19 @@ func (kv *Store) State(ctx context.Context, blockRoot [32]byte) (*state.BeaconSt
return nil, nil return nil, nil
} }
s, err = createState(ctx, enc) st, err = createState(ctx, enc)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return state.InitializeFromProtoUnsafe(s) return state.InitializeFromProtoUnsafe(st)
} }
// HeadState returns the latest canonical state in beacon chain. // HeadState returns the latest canonical state in beacon chain.
func (kv *Store) HeadState(ctx context.Context) (*state.BeaconState, error) { func (s *Store) HeadState(ctx context.Context) (*state.BeaconState, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HeadState") ctx, span := trace.StartSpan(ctx, "BeaconDB.HeadState")
defer span.End() defer span.End()
var s *pb.BeaconState var st *pb.BeaconState
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
// Retrieve head block's signing root from blocks bucket, // Retrieve head block's signing root from blocks bucket,
// to look up what the head state is. // to look up what the head state is.
bucket := tx.Bucket(blocksBucket) bucket := tx.Bucket(blocksBucket)
@@ -53,28 +53,28 @@ func (kv *Store) HeadState(ctx context.Context) (*state.BeaconState, error) {
} }
var err error var err error
s, err = createState(ctx, enc) st, err = createState(ctx, enc)
return err return err
}) })
if err != nil { if err != nil {
return nil, err return nil, err
} }
if s == nil { if st == nil {
return nil, nil return nil, nil
} }
span.AddAttributes(trace.BoolAttribute("exists", s != nil)) span.AddAttributes(trace.BoolAttribute("exists", s != nil))
if s != nil { if st != nil {
span.AddAttributes(trace.Int64Attribute("slot", int64(s.Slot))) span.AddAttributes(trace.Int64Attribute("slot", int64(st.Slot)))
} }
return state.InitializeFromProtoUnsafe(s) return state.InitializeFromProtoUnsafe(st)
} }
// GenesisState returns the genesis state in beacon chain. // GenesisState returns the genesis state in beacon chain.
func (kv *Store) GenesisState(ctx context.Context) (*state.BeaconState, error) { func (s *Store) GenesisState(ctx context.Context) (*state.BeaconState, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.GenesisState") ctx, span := trace.StartSpan(ctx, "BeaconDB.GenesisState")
defer span.End() defer span.End()
var s *pb.BeaconState var st *pb.BeaconState
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
// Retrieve genesis block's signing root from blocks bucket, // Retrieve genesis block's signing root from blocks bucket,
// to look up what the genesis state is. // to look up what the genesis state is.
bucket := tx.Bucket(blocksBucket) bucket := tx.Bucket(blocksBucket)
@@ -87,28 +87,28 @@ func (kv *Store) GenesisState(ctx context.Context) (*state.BeaconState, error) {
} }
var err error var err error
s, err = createState(ctx, enc) st, err = createState(ctx, enc)
return err return err
}) })
if err != nil { if err != nil {
return nil, err return nil, err
} }
if s == nil { if st == nil {
return nil, nil return nil, nil
} }
return state.InitializeFromProtoUnsafe(s) return state.InitializeFromProtoUnsafe(st)
} }
// SaveState stores a state to the db using block's signing root which was used to generate the state. // SaveState stores a state to the db using block's signing root which was used to generate the state.
func (kv *Store) SaveState(ctx context.Context, st *state.BeaconState, blockRoot [32]byte) error { func (s *Store) SaveState(ctx context.Context, st *state.BeaconState, blockRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveState") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveState")
defer span.End() defer span.End()
return kv.SaveStates(ctx, []*state.BeaconState{st}, [][32]byte{blockRoot}) return s.SaveStates(ctx, []*state.BeaconState{st}, [][32]byte{blockRoot})
} }
// SaveStates stores multiple states to the db using the provided corresponding roots. // SaveStates stores multiple states to the db using the provided corresponding roots.
func (kv *Store) SaveStates(ctx context.Context, states []*state.BeaconState, blockRoots [][32]byte) error { func (s *Store) SaveStates(ctx context.Context, states []*state.BeaconState, blockRoots [][32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStates") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStates")
defer span.End() defer span.End()
if states == nil { if states == nil {
@@ -123,7 +123,7 @@ func (kv *Store) SaveStates(ctx context.Context, states []*state.BeaconState, bl
} }
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(stateBucket) bucket := tx.Bucket(stateBucket)
for i, rt := range blockRoots { for i, rt := range blockRoots {
indicesByBucket := createStateIndicesFromStateSlot(ctx, states[i].Slot()) indicesByBucket := createStateIndicesFromStateSlot(ctx, states[i].Slot())
@@ -139,10 +139,10 @@ func (kv *Store) SaveStates(ctx context.Context, states []*state.BeaconState, bl
} }
// HasState checks if a state by root exists in the db. // HasState checks if a state by root exists in the db.
func (kv *Store) HasState(ctx context.Context, blockRoot [32]byte) bool { func (s *Store) HasState(ctx context.Context, blockRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasState") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasState")
defer span.End() defer span.End()
enc, err := kv.stateBytes(ctx, blockRoot) enc, err := s.stateBytes(ctx, blockRoot)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@@ -150,10 +150,10 @@ func (kv *Store) HasState(ctx context.Context, blockRoot [32]byte) bool {
} }
// DeleteState by block root. // DeleteState by block root.
func (kv *Store) DeleteState(ctx context.Context, blockRoot [32]byte) error { func (s *Store) DeleteState(ctx context.Context, blockRoot [32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.DeleteState") ctx, span := trace.StartSpan(ctx, "BeaconDB.DeleteState")
defer span.End() defer span.End()
return kv.DeleteStates(ctx, [][32]byte{blockRoot}) return s.DeleteStates(ctx, [][32]byte{blockRoot})
} }
// DeleteStates by block roots. // DeleteStates by block roots.
@@ -162,7 +162,7 @@ func (kv *Store) DeleteState(ctx context.Context, blockRoot [32]byte) error {
// cursor is faster when there are a large set of keys to delete. This method is O(n) deletion where // cursor is faster when there are a large set of keys to delete. This method is O(n) deletion where
// n is the number of keys in the database. The alternative of calling bkt.Delete on each key to // n is the number of keys in the database. The alternative of calling bkt.Delete on each key to
// delete would be O(m*log(n)) which would be much slower given a large set of keys to delete. // delete would be O(m*log(n)) which would be much slower given a large set of keys to delete.
func (kv *Store) DeleteStates(ctx context.Context, blockRoots [][32]byte) error { func (s *Store) DeleteStates(ctx context.Context, blockRoots [][32]byte) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.DeleteStates") ctx, span := trace.StartSpan(ctx, "BeaconDB.DeleteStates")
defer span.End() defer span.End()
@@ -171,7 +171,7 @@ func (kv *Store) DeleteStates(ctx context.Context, blockRoots [][32]byte) error
rootMap[blockRoot] = true rootMap[blockRoot] = true
} }
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bkt := tx.Bucket(blocksBucket) bkt := tx.Bucket(blocksBucket)
genesisBlockRoot := bkt.Get(genesisBlockRootKey) genesisBlockRoot := bkt.Get(genesisBlockRootKey)
@@ -225,11 +225,11 @@ func createState(ctx context.Context, enc []byte) (*pb.BeaconState, error) {
} }
// HasState checks if a state by root exists in the db. // HasState checks if a state by root exists in the db.
func (kv *Store) stateBytes(ctx context.Context, blockRoot [32]byte) ([]byte, error) { func (s *Store) stateBytes(ctx context.Context, blockRoot [32]byte) ([]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.stateBytes") ctx, span := trace.StartSpan(ctx, "BeaconDB.stateBytes")
defer span.End() defer span.End()
var dst []byte var dst []byte
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(stateBucket) bkt := tx.Bucket(stateBucket)
dst = bkt.Get(blockRoot[:]) dst = bkt.Get(blockRoot[:])
return nil return nil
@@ -287,12 +287,12 @@ func slotByBlockRoot(ctx context.Context, tx *bolt.Tx, blockRoot []byte) (uint64
// from the db. Ideally there should just be one state per slot, but given validator // from the db. Ideally there should just be one state per slot, but given validator
// can double propose, a single slot could have multiple block roots and // can double propose, a single slot could have multiple block roots and
// results states. This returns a list of states. // results states. This returns a list of states.
func (kv *Store) HighestSlotStatesBelow(ctx context.Context, slot uint64) ([]*state.BeaconState, error) { func (s *Store) HighestSlotStatesBelow(ctx context.Context, slot uint64) ([]*state.BeaconState, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HighestSlotStatesBelow") ctx, span := trace.StartSpan(ctx, "BeaconDB.HighestSlotStatesBelow")
defer span.End() defer span.End()
var best []byte var best []byte
if err := kv.db.View(func(tx *bolt.Tx) error { if err := s.db.View(func(tx *bolt.Tx) error {
bkt := tx.Bucket(stateSlotIndicesBucket) bkt := tx.Bucket(stateSlotIndicesBucket)
c := bkt.Cursor() c := bkt.Cursor()
for s, root := c.First(); s != nil; s, root = c.Next() { for s, root := c.First(); s != nil; s, root = c.Next() {
@@ -313,13 +313,13 @@ func (kv *Store) HighestSlotStatesBelow(ctx context.Context, slot uint64) ([]*st
var st *state.BeaconState var st *state.BeaconState
var err error var err error
if best != nil { if best != nil {
st, err = kv.State(ctx, bytesutil.ToBytes32(best)) st, err = s.State(ctx, bytesutil.ToBytes32(best))
if err != nil { if err != nil {
return nil, err return nil, err
} }
} }
if st == nil { if st == nil {
st, err = kv.GenesisState(ctx) st, err = s.GenesisState(ctx)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -9,19 +9,19 @@ import (
) )
// SaveStateSummary saves a state summary object to the DB. // SaveStateSummary saves a state summary object to the DB.
func (kv *Store) SaveStateSummary(ctx context.Context, summary *pb.StateSummary) error { func (s *Store) SaveStateSummary(ctx context.Context, summary *pb.StateSummary) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStateSummary") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStateSummary")
defer span.End() defer span.End()
return kv.SaveStateSummaries(ctx, []*pb.StateSummary{summary}) return s.SaveStateSummaries(ctx, []*pb.StateSummary{summary})
} }
// SaveStateSummaries saves state summary objects to the DB. // SaveStateSummaries saves state summary objects to the DB.
func (kv *Store) SaveStateSummaries(ctx context.Context, summaries []*pb.StateSummary) error { func (s *Store) SaveStateSummaries(ctx context.Context, summaries []*pb.StateSummary) error {
ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStateSummaries") ctx, span := trace.StartSpan(ctx, "BeaconDB.SaveStateSummaries")
defer span.End() defer span.End()
return kv.db.Update(func(tx *bolt.Tx) error { return s.db.Update(func(tx *bolt.Tx) error {
bucket := tx.Bucket(stateSummaryBucket) bucket := tx.Bucket(stateSummaryBucket)
for _, summary := range summaries { for _, summary := range summaries {
enc, err := encode(ctx, summary) enc, err := encode(ctx, summary)
@@ -37,10 +37,10 @@ func (kv *Store) SaveStateSummaries(ctx context.Context, summaries []*pb.StateSu
} }
// StateSummary returns the state summary object from the db using input block root. // StateSummary returns the state summary object from the db using input block root.
func (kv *Store) StateSummary(ctx context.Context, blockRoot [32]byte) (*pb.StateSummary, error) { func (s *Store) StateSummary(ctx context.Context, blockRoot [32]byte) (*pb.StateSummary, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.StateSummary") ctx, span := trace.StartSpan(ctx, "BeaconDB.StateSummary")
defer span.End() defer span.End()
enc, err := kv.stateSummaryBytes(ctx, blockRoot) enc, err := s.stateSummaryBytes(ctx, blockRoot)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -55,22 +55,22 @@ func (kv *Store) StateSummary(ctx context.Context, blockRoot [32]byte) (*pb.Stat
} }
// HasStateSummary returns true if a state summary exists in DB. // HasStateSummary returns true if a state summary exists in DB.
func (kv *Store) HasStateSummary(ctx context.Context, blockRoot [32]byte) bool { func (s *Store) HasStateSummary(ctx context.Context, blockRoot [32]byte) bool {
ctx, span := trace.StartSpan(ctx, "BeaconDB.HasStateSummary") ctx, span := trace.StartSpan(ctx, "BeaconDB.HasStateSummary")
defer span.End() defer span.End()
enc, err := kv.stateSummaryBytes(ctx, blockRoot) enc, err := s.stateSummaryBytes(ctx, blockRoot)
if err != nil { if err != nil {
panic(err) panic(err)
} }
return len(enc) > 0 return len(enc) > 0
} }
func (kv *Store) stateSummaryBytes(ctx context.Context, blockRoot [32]byte) ([]byte, error) { func (s *Store) stateSummaryBytes(ctx context.Context, blockRoot [32]byte) ([]byte, error) {
ctx, span := trace.StartSpan(ctx, "BeaconDB.stateSummaryBytes") ctx, span := trace.StartSpan(ctx, "BeaconDB.stateSummaryBytes")
defer span.End() defer span.End()
var enc []byte var enc []byte
err := kv.db.View(func(tx *bolt.Tx) error { err := s.db.View(func(tx *bolt.Tx) error {
bucket := tx.Bucket(stateSummaryBucket) bucket := tx.Bucket(stateSummaryBucket)
enc = bucket.Get(blockRoot[:]) enc = bucket.Get(blockRoot[:])
return nil return nil

View File

@@ -54,7 +54,7 @@ func ConfigureGlobalFlags(ctx *cli.Context) {
func configureMinimumPeers(ctx *cli.Context, cfg *GlobalFlags) { func configureMinimumPeers(ctx *cli.Context, cfg *GlobalFlags) {
cfg.MinimumSyncPeers = ctx.Int(MinSyncPeers.Name) cfg.MinimumSyncPeers = ctx.Int(MinSyncPeers.Name)
maxPeers := int(ctx.Int(cmd.P2PMaxPeers.Name)) maxPeers := ctx.Int(cmd.P2PMaxPeers.Name)
if cfg.MinimumSyncPeers > maxPeers { if cfg.MinimumSyncPeers > maxPeers {
log.Warnf("Changing Minimum Sync Peers to %d", maxPeers) log.Warnf("Changing Minimum Sync Peers to %d", maxPeers)
cfg.MinimumSyncPeers = maxPeers cfg.MinimumSyncPeers = maxPeers

View File

@@ -121,7 +121,7 @@ func (s *Service) Status() error {
} }
// AllDeposits mocks out the deposit cache functionality for interop. // AllDeposits mocks out the deposit cache functionality for interop.
func (s *Service) AllDeposits(ctx context.Context, untilBlk *big.Int) []*ethpb.Deposit { func (s *Service) AllDeposits(_ context.Context, _ *big.Int) []*ethpb.Deposit {
return []*ethpb.Deposit{} return []*ethpb.Deposit{}
} }
@@ -146,22 +146,22 @@ func (s *Service) ClearPreGenesisData() {
} }
// DepositByPubkey mocks out the deposit cache functionality for interop. // DepositByPubkey mocks out the deposit cache functionality for interop.
func (s *Service) DepositByPubkey(ctx context.Context, pubKey []byte) (*ethpb.Deposit, *big.Int) { func (s *Service) DepositByPubkey(_ context.Context, _ []byte) (*ethpb.Deposit, *big.Int) {
return &ethpb.Deposit{}, nil return &ethpb.Deposit{}, nil
} }
// DepositsNumberAndRootAtHeight mocks out the deposit cache functionality for interop. // DepositsNumberAndRootAtHeight mocks out the deposit cache functionality for interop.
func (s *Service) DepositsNumberAndRootAtHeight(ctx context.Context, blockHeight *big.Int) (uint64, [32]byte) { func (s *Service) DepositsNumberAndRootAtHeight(_ context.Context, _ *big.Int) (uint64, [32]byte) {
return 0, [32]byte{} return 0, [32]byte{}
} }
// FinalizedDeposits mocks out the deposit cache functionality for interop. // FinalizedDeposits mocks out the deposit cache functionality for interop.
func (s *Service) FinalizedDeposits(ctx context.Context) *depositcache.FinalizedDeposits { func (s *Service) FinalizedDeposits(_ context.Context) *depositcache.FinalizedDeposits {
return nil return nil
} }
// NonFinalizedDeposits mocks out the deposit cache functionality for interop. // NonFinalizedDeposits mocks out the deposit cache functionality for interop.
func (s *Service) NonFinalizedDeposits(ctx context.Context, untilBlk *big.Int) []*ethpb.Deposit { func (s *Service) NonFinalizedDeposits(_ context.Context, _ *big.Int) []*ethpb.Deposit {
return []*ethpb.Deposit{} return []*ethpb.Deposit{}
} }

View File

@@ -15,14 +15,14 @@ import (
) )
func validAttesterSlashingForValIdx(t *testing.T, beaconState *state.BeaconState, privs []bls.SecretKey, valIdx ...uint64) *ethpb.AttesterSlashing { func validAttesterSlashingForValIdx(t *testing.T, beaconState *state.BeaconState, privs []bls.SecretKey, valIdx ...uint64) *ethpb.AttesterSlashing {
slashings := []*ethpb.AttesterSlashing{} var slashings []*ethpb.AttesterSlashing
for _, idx := range valIdx { for _, idx := range valIdx {
slashing, err := testutil.GenerateAttesterSlashingForValidator(beaconState, privs[idx], idx) slashing, err := testutil.GenerateAttesterSlashingForValidator(beaconState, privs[idx], idx)
require.NoError(t, err) require.NoError(t, err)
slashings = append(slashings, slashing) slashings = append(slashings, slashing)
} }
allSig1 := []bls.Signature{} var allSig1 []bls.Signature
allSig2 := []bls.Signature{} var allSig2 []bls.Signature
for _, slashing := range slashings { for _, slashing := range slashings {
sig1 := slashing.Attestation_1.Signature sig1 := slashing.Attestation_1.Signature
sig2 := slashing.Attestation_2.Signature sig2 := slashing.Attestation_2.Signature

View File

@@ -56,7 +56,6 @@ go_library(
"//shared/timeutils:go_default_library", "//shared/timeutils:go_default_library",
"//shared/traceutil:go_default_library", "//shared/traceutil:go_default_library",
"//shared/version:go_default_library", "//shared/version:go_default_library",
"@com_github_btcsuite_btcd//btcec:go_default_library",
"@com_github_dgraph_io_ristretto//:go_default_library", "@com_github_dgraph_io_ristretto//:go_default_library",
"@com_github_ethereum_go_ethereum//p2p/discover:go_default_library", "@com_github_ethereum_go_ethereum//p2p/discover:go_default_library",
"@com_github_ethereum_go_ethereum//p2p/enode:go_default_library", "@com_github_ethereum_go_ethereum//p2p/enode:go_default_library",

View File

@@ -20,7 +20,7 @@ const ipLimit = 4
const ipBurst = 8 const ipBurst = 8
// InterceptPeerDial tests whether we're permitted to Dial the specified peer. // InterceptPeerDial tests whether we're permitted to Dial the specified peer.
func (s *Service) InterceptPeerDial(p peer.ID) (allow bool) { func (s *Service) InterceptPeerDial(_ peer.ID) (allow bool) {
return true return true
} }
@@ -51,12 +51,12 @@ func (s *Service) InterceptAccept(n network.ConnMultiaddrs) (allow bool) {
// InterceptSecured tests whether a given connection, now authenticated, // InterceptSecured tests whether a given connection, now authenticated,
// is allowed. // is allowed.
func (s *Service) InterceptSecured(_ network.Direction, _ peer.ID, n network.ConnMultiaddrs) (allow bool) { func (s *Service) InterceptSecured(_ network.Direction, _ peer.ID, _ network.ConnMultiaddrs) (allow bool) {
return true return true
} }
// InterceptUpgraded tests whether a fully capable connection is allowed. // InterceptUpgraded tests whether a fully capable connection is allowed.
func (s *Service) InterceptUpgraded(n network.Conn) (allow bool, reason control.DisconnectReason) { func (s *Service) InterceptUpgraded(_ network.Conn) (allow bool, reason control.DisconnectReason) {
return true, 0 return true, 0
} }

View File

@@ -22,7 +22,7 @@ func TestReadVarint_ExceedsMaxLength(t *testing.T) {
fByte := byte(1 << 7) fByte := byte(1 << 7)
// Terminating byte. // Terminating byte.
tByte := byte(1 << 6) tByte := byte(1 << 6)
header := []byte{} var header []byte
for i := 0; i < 9; i++ { for i := 0; i < 9; i++ {
header = append(header, fByte) header = append(header, fByte)
} }

View File

@@ -93,7 +93,7 @@ func TestStartDiscv5_DifferentForkDigests(t *testing.T) {
s.genesisTime = genesisTime s.genesisTime = genesisTime
s.genesisValidatorsRoot = make([]byte, 32) s.genesisValidatorsRoot = make([]byte, 32)
s.dv5Listener = lastListener s.dv5Listener = lastListener
addrs := []ma.Multiaddr{} var addrs []ma.Multiaddr
for _, n := range nodes { for _, n := range nodes {
if s.filterPeer(n) { if s.filterPeer(n) {
@@ -182,7 +182,7 @@ func TestStartDiscv5_SameForkDigests_DifferentNextForkData(t *testing.T) {
s.genesisTime = genesisTime s.genesisTime = genesisTime
s.genesisValidatorsRoot = make([]byte, 32) s.genesisValidatorsRoot = make([]byte, 32)
s.dv5Listener = lastListener s.dv5Listener = lastListener
addrs := []ma.Multiaddr{} var addrs []ma.Multiaddr
for _, n := range nodes { for _, n := range nodes {
if s.filterPeer(n) { if s.filterPeer(n) {

View File

@@ -36,7 +36,7 @@ func (mockListener) Lookup(enode.ID) []*enode.Node {
panic("implement me") panic("implement me")
} }
func (mockListener) ReadRandomNodes([]*enode.Node) int { func (mockListener) ReadRandomNodes(_ []*enode.Node) int {
panic("implement me") panic("implement me")
} }

View File

@@ -112,7 +112,7 @@ func retrieveAttSubnets(record *enr.Record) ([]uint64, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
committeeIdxs := []uint64{} var committeeIdxs []uint64
for i := uint64(0); i < attestationSubnetCount; i++ { for i := uint64(0); i < attestationSubnetCount; i++ {
if bitV.BitAt(i) { if bitV.BitAt(i) {
committeeIdxs = append(committeeIdxs, i) committeeIdxs = append(committeeIdxs, i)

View File

@@ -33,22 +33,22 @@ func (p *FakeP2P) Encoding() encoder.NetworkEncoding {
} }
// AddConnectionHandler -- fake. // AddConnectionHandler -- fake.
func (p *FakeP2P) AddConnectionHandler(f func(ctx context.Context, id peer.ID) error) { func (p *FakeP2P) AddConnectionHandler(_ func(ctx context.Context, id peer.ID) error) {
} }
// AddDisconnectionHandler -- fake. // AddDisconnectionHandler -- fake.
func (p *FakeP2P) AddDisconnectionHandler(f func(ctx context.Context, id peer.ID) error) { func (p *FakeP2P) AddDisconnectionHandler(_ func(ctx context.Context, id peer.ID) error) {
} }
// AddPingMethod -- fake. // AddPingMethod -- fake.
func (p *FakeP2P) AddPingMethod(reqFunc func(ctx context.Context, id peer.ID) error) { func (p *FakeP2P) AddPingMethod(_ func(ctx context.Context, id peer.ID) error) {
} }
// PeerID -- fake. // PeerID -- fake.
func (p *FakeP2P) PeerID() peer.ID { func (p *FakeP2P) PeerID() peer.ID {
return peer.ID("fake") return "fake"
} }
// ENR returns the enr of the local peer. // ENR returns the enr of the local peer.
@@ -57,7 +57,7 @@ func (p *FakeP2P) ENR() *enr.Record {
} }
// FindPeersWithSubnet mocks the p2p func. // FindPeersWithSubnet mocks the p2p func.
func (p *FakeP2P) FindPeersWithSubnet(ctx context.Context, index uint64) (bool, error) { func (p *FakeP2P) FindPeersWithSubnet(_ context.Context, _ uint64) (bool, error) {
return false, nil return false, nil
} }
@@ -67,7 +67,7 @@ func (p *FakeP2P) RefreshENR() {
} }
// LeaveTopic -- fake. // LeaveTopic -- fake.
func (p *FakeP2P) LeaveTopic(topic string) error { func (p *FakeP2P) LeaveTopic(_ string) error {
return nil return nil
} }
@@ -83,12 +83,12 @@ func (p *FakeP2P) Peers() *peers.Status {
} }
// PublishToTopic -- fake. // PublishToTopic -- fake.
func (p *FakeP2P) PublishToTopic(ctx context.Context, topic string, data []byte, opts ...pubsub.PubOpt) error { func (p *FakeP2P) PublishToTopic(_ context.Context, _ string, _ []byte, _ ...pubsub.PubOpt) error {
return nil return nil
} }
// Send -- fake. // Send -- fake.
func (p *FakeP2P) Send(ctx context.Context, msg interface{}, topic string, pid peer.ID) (network.Stream, error) { func (p *FakeP2P) Send(_ context.Context, _ interface{}, _ string, _ peer.ID) (network.Stream, error) {
return nil, nil return nil, nil
} }
@@ -103,17 +103,17 @@ func (p *FakeP2P) MetadataSeq() uint64 {
} }
// SetStreamHandler -- fake. // SetStreamHandler -- fake.
func (p *FakeP2P) SetStreamHandler(topic string, handler network.StreamHandler) { func (p *FakeP2P) SetStreamHandler(_ string, _ network.StreamHandler) {
} }
// SubscribeToTopic -- fake. // SubscribeToTopic -- fake.
func (p *FakeP2P) SubscribeToTopic(topic string, opts ...pubsub.SubOpt) (*pubsub.Subscription, error) { func (p *FakeP2P) SubscribeToTopic(_ string, _ ...pubsub.SubOpt) (*pubsub.Subscription, error) {
return nil, nil return nil, nil
} }
// JoinTopic -- fake. // JoinTopic -- fake.
func (p *FakeP2P) JoinTopic(topic string, opts ...pubsub.TopicOpt) (*pubsub.Topic, error) { func (p *FakeP2P) JoinTopic(_ string, _ ...pubsub.TopicOpt) (*pubsub.Topic, error) {
return nil, nil return nil, nil
} }
@@ -123,17 +123,17 @@ func (p *FakeP2P) Host() host.Host {
} }
// Disconnect -- fake. // Disconnect -- fake.
func (p *FakeP2P) Disconnect(pid peer.ID) error { func (p *FakeP2P) Disconnect(_ peer.ID) error {
return nil return nil
} }
// Broadcast -- fake. // Broadcast -- fake.
func (p *FakeP2P) Broadcast(ctx context.Context, msg proto.Message) error { func (p *FakeP2P) Broadcast(_ context.Context, _ proto.Message) error {
return nil return nil
} }
// BroadcastAttestation -- fake. // BroadcastAttestation -- fake.
func (p *FakeP2P) BroadcastAttestation(ctx context.Context, subnet uint64, att *ethpb.Attestation) error { func (p *FakeP2P) BroadcastAttestation(_ context.Context, _ uint64, _ *ethpb.Attestation) error {
return nil return nil
} }
@@ -148,7 +148,7 @@ func (p *FakeP2P) InterceptAddrDial(peer.ID, multiaddr.Multiaddr) (allow bool) {
} }
// InterceptAccept -- fake. // InterceptAccept -- fake.
func (p *FakeP2P) InterceptAccept(n network.ConnMultiaddrs) (allow bool) { func (p *FakeP2P) InterceptAccept(_ network.ConnMultiaddrs) (allow bool) {
return true return true
} }

View File

@@ -19,7 +19,7 @@ func (m *MockBroadcaster) Broadcast(context.Context, proto.Message) error {
} }
// BroadcastAttestation records a broadcast occurred. // BroadcastAttestation records a broadcast occurred.
func (m *MockBroadcaster) BroadcastAttestation(ctx context.Context, subnet uint64, att *ethpb.Attestation) error { func (m *MockBroadcaster) BroadcastAttestation(_ context.Context, _ uint64, _ *ethpb.Attestation) error {
m.BroadcastCalled = true m.BroadcastCalled = true
return nil return nil
} }

View File

@@ -39,9 +39,9 @@ func (m MockPeerManager) ENR() *enr.Record {
func (m MockPeerManager) RefreshENR() {} func (m MockPeerManager) RefreshENR() {}
// FindPeersWithSubnet . // FindPeersWithSubnet .
func (m MockPeerManager) FindPeersWithSubnet(ctx context.Context, index uint64) (bool, error) { func (m MockPeerManager) FindPeersWithSubnet(_ context.Context, _ uint64) (bool, error) {
return true, nil return true, nil
} }
// AddPingMethod . // AddPingMethod .
func (m MockPeerManager) AddPingMethod(reqFunc func(ctx context.Context, id peer.ID) error) {} func (m MockPeerManager) AddPingMethod(_ func(ctx context.Context, id peer.ID) error) {}

View File

@@ -143,13 +143,13 @@ func (p *TestP2P) ReceivePubSub(topic string, msg proto.Message) {
} }
// Broadcast a message. // Broadcast a message.
func (p *TestP2P) Broadcast(ctx context.Context, msg proto.Message) error { func (p *TestP2P) Broadcast(_ context.Context, _ proto.Message) error {
p.BroadcastCalled = true p.BroadcastCalled = true
return nil return nil
} }
// BroadcastAttestation broadcasts an attestation. // BroadcastAttestation broadcasts an attestation.
func (p *TestP2P) BroadcastAttestation(ctx context.Context, subnet uint64, att *ethpb.Attestation) error { func (p *TestP2P) BroadcastAttestation(_ context.Context, _ uint64, _ *ethpb.Attestation) error {
p.BroadcastCalled = true p.BroadcastCalled = true
return nil return nil
} }
@@ -314,7 +314,7 @@ func (p *TestP2P) Peers() *peers.Status {
} }
// FindPeersWithSubnet mocks the p2p func. // FindPeersWithSubnet mocks the p2p func.
func (p *TestP2P) FindPeersWithSubnet(ctx context.Context, index uint64) (bool, error) { func (p *TestP2P) FindPeersWithSubnet(_ context.Context, _ uint64) (bool, error) {
return false, nil return false, nil
} }
@@ -337,7 +337,7 @@ func (p *TestP2P) MetadataSeq() uint64 {
} }
// AddPingMethod mocks the p2p func. // AddPingMethod mocks the p2p func.
func (p *TestP2P) AddPingMethod(reqFunc func(ctx context.Context, id peer.ID) error) { func (p *TestP2P) AddPingMethod(_ func(ctx context.Context, id peer.ID) error) {
// no-op // no-op
} }
@@ -352,7 +352,7 @@ func (p *TestP2P) InterceptAddrDial(peer.ID, multiaddr.Multiaddr) (allow bool) {
} }
// InterceptAccept . // InterceptAccept .
func (p *TestP2P) InterceptAccept(n network.ConnMultiaddrs) (allow bool) { func (p *TestP2P) InterceptAccept(_ network.ConnMultiaddrs) (allow bool) {
return true return true
} }

View File

@@ -13,7 +13,6 @@ import (
"path" "path"
"time" "time"
"github.com/btcsuite/btcd/btcec"
"github.com/ethereum/go-ethereum/p2p/enr" "github.com/ethereum/go-ethereum/p2p/enr"
"github.com/libp2p/go-libp2p-core/crypto" "github.com/libp2p/go-libp2p-core/crypto"
"github.com/pkg/errors" "github.com/pkg/errors"
@@ -40,17 +39,17 @@ func SerializeENR(record *enr.Record) (string, error) {
} }
func convertFromInterfacePrivKey(privkey crypto.PrivKey) *ecdsa.PrivateKey { func convertFromInterfacePrivKey(privkey crypto.PrivKey) *ecdsa.PrivateKey {
typeAssertedKey := (*ecdsa.PrivateKey)((*btcec.PrivateKey)(privkey.(*crypto.Secp256k1PrivateKey))) typeAssertedKey := (*ecdsa.PrivateKey)(privkey.(*crypto.Secp256k1PrivateKey))
return typeAssertedKey return typeAssertedKey
} }
func convertToInterfacePrivkey(privkey *ecdsa.PrivateKey) crypto.PrivKey { func convertToInterfacePrivkey(privkey *ecdsa.PrivateKey) crypto.PrivKey {
typeAssertedKey := crypto.PrivKey((*crypto.Secp256k1PrivateKey)((*btcec.PrivateKey)(privkey))) typeAssertedKey := crypto.PrivKey((*crypto.Secp256k1PrivateKey)(privkey))
return typeAssertedKey return typeAssertedKey
} }
func convertToInterfacePubkey(pubkey *ecdsa.PublicKey) crypto.PubKey { func convertToInterfacePubkey(pubkey *ecdsa.PublicKey) crypto.PubKey {
typeAssertedKey := crypto.PubKey((*crypto.Secp256k1PublicKey)((*btcec.PublicKey)(pubkey))) typeAssertedKey := crypto.PubKey((*crypto.Secp256k1PublicKey)(pubkey))
return typeAssertedKey return typeAssertedKey
} }

View File

@@ -4,6 +4,7 @@ import (
"context" "context"
"github.com/libp2p/go-libp2p-core/host" "github.com/libp2p/go-libp2p-core/host"
"github.com/libp2p/go-libp2p-core/peer"
) )
// ensurePeerConnections will attempt to reestablish connection to the peers // ensurePeerConnections will attempt to reestablish connection to the peers
@@ -24,13 +25,17 @@ func ensurePeerConnections(ctx context.Context, h host.Host, peers ...string) {
c := h.Network().ConnsToPeer(peer.ID) c := h.Network().ConnsToPeer(peer.ID)
if len(c) == 0 { if len(c) == 0 {
log.WithField("peer", peer.ID).Debug("No connections to peer, reconnecting") if err := connectWithTimeout(ctx, h, peer); err != nil {
ctx, cancel := context.WithTimeout(ctx, maxDialTimeout)
defer cancel()
if err := h.Connect(ctx, *peer); err != nil {
log.WithField("peer", peer.ID).WithField("addrs", peer.Addrs).WithError(err).Errorf("Failed to reconnect to peer") log.WithField("peer", peer.ID).WithField("addrs", peer.Addrs).WithError(err).Errorf("Failed to reconnect to peer")
continue continue
} }
} }
} }
} }
func connectWithTimeout(ctx context.Context, h host.Host, peer *peer.AddrInfo) error {
log.WithField("peer", peer.ID).Debug("No connections to peer, reconnecting")
ctx, cancel := context.WithTimeout(ctx, maxDialTimeout)
defer cancel()
return h.Connect(ctx, *peer)
}

View File

@@ -179,6 +179,6 @@ func trim(queue *cache.FIFO, maxSize uint64) {
} }
// popProcessNoopFunc is a no-op function that never returns an error. // popProcessNoopFunc is a no-op function that never returns an error.
func popProcessNoopFunc(obj interface{}) error { func popProcessNoopFunc(_ interface{}) error {
return nil return nil
} }

View File

@@ -41,7 +41,7 @@ func TestProcessDeposit_OK(t *testing.T) {
valcount, err := helpers.ActiveValidatorCount(web3Service.preGenesisState, 0) valcount, err := helpers.ActiveValidatorCount(web3Service.preGenesisState, 0)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, int(1), int(valcount), "Did not get correct active validator count") require.Equal(t, 1, int(valcount), "Did not get correct active validator count")
} }
func TestProcessDeposit_InvalidMerkleBranch(t *testing.T) { func TestProcessDeposit_InvalidMerkleBranch(t *testing.T) {
@@ -230,7 +230,7 @@ func TestProcessDeposit_IncompleteDeposit(t *testing.T) {
valcount, err := helpers.ActiveValidatorCount(web3Service.preGenesisState, 0) valcount, err := helpers.ActiveValidatorCount(web3Service.preGenesisState, 0)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, int(0), int(valcount), "Did not get correct active validator count") require.Equal(t, 0, int(valcount), "Did not get correct active validator count")
} }
} }

View File

@@ -158,7 +158,7 @@ func TestProcessDepositLog_InsertsPendingDeposit(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
pendingDeposits := web3Service.depositCache.PendingDeposits(context.Background(), nil /*blockNum*/) pendingDeposits := web3Service.depositCache.PendingDeposits(context.Background(), nil /*blockNum*/)
require.Equal(t, int(2), len(pendingDeposits), "Unexpected number of deposits") require.Equal(t, 2, len(pendingDeposits), "Unexpected number of deposits")
hook.Reset() hook.Reset()
} }

View File

@@ -74,7 +74,7 @@ type goodFetcher struct {
backend *backends.SimulatedBackend backend *backends.SimulatedBackend
} }
func (g *goodFetcher) HeaderByHash(ctx context.Context, hash common.Hash) (*gethTypes.Header, error) { func (g *goodFetcher) HeaderByHash(_ context.Context, hash common.Hash) (*gethTypes.Header, error) {
if bytes.Equal(hash.Bytes(), common.BytesToHash([]byte{0}).Bytes()) { if bytes.Equal(hash.Bytes(), common.BytesToHash([]byte{0}).Bytes()) {
return nil, fmt.Errorf("expected block hash to be nonzero %v", hash) return nil, fmt.Errorf("expected block hash to be nonzero %v", hash)
} }
@@ -91,7 +91,7 @@ func (g *goodFetcher) HeaderByHash(ctx context.Context, hash common.Hash) (*geth
} }
func (g *goodFetcher) HeaderByNumber(ctx context.Context, number *big.Int) (*gethTypes.Header, error) { func (g *goodFetcher) HeaderByNumber(_ context.Context, number *big.Int) (*gethTypes.Header, error) {
if g.backend == nil { if g.backend == nil {
return &gethTypes.Header{ return &gethTypes.Header{
Number: big.NewInt(15), Number: big.NewInt(15),
@@ -110,7 +110,7 @@ func (g *goodFetcher) HeaderByNumber(ctx context.Context, number *big.Int) (*get
return header, nil return header, nil
} }
func (g *goodFetcher) SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error) { func (g *goodFetcher) SyncProgress(_ context.Context) (*ethereum.SyncProgress, error) {
return nil, nil return nil, nil
} }

View File

@@ -29,7 +29,7 @@ func (f *FaultyMockPOWChain) LatestBlockHeight() *big.Int {
} }
// BlockExists -- // BlockExists --
func (f *FaultyMockPOWChain) BlockExists(_ context.Context, hash common.Hash) (bool, *big.Int, error) { func (f *FaultyMockPOWChain) BlockExists(_ context.Context, _ common.Hash) (bool, *big.Int, error) {
if f.HashesByHeight == nil { if f.HashesByHeight == nil {
return false, big.NewInt(1), errors.New("failed") return false, big.NewInt(1), errors.New("failed")
} }
@@ -38,12 +38,12 @@ func (f *FaultyMockPOWChain) BlockExists(_ context.Context, hash common.Hash) (b
} }
// BlockHashByHeight -- // BlockHashByHeight --
func (f *FaultyMockPOWChain) BlockHashByHeight(_ context.Context, height *big.Int) (common.Hash, error) { func (f *FaultyMockPOWChain) BlockHashByHeight(_ context.Context, _ *big.Int) (common.Hash, error) {
return [32]byte{}, errors.New("failed") return [32]byte{}, errors.New("failed")
} }
// BlockTimeByHeight -- // BlockTimeByHeight --
func (f *FaultyMockPOWChain) BlockTimeByHeight(_ context.Context, height *big.Int) (uint64, error) { func (f *FaultyMockPOWChain) BlockTimeByHeight(_ context.Context, _ *big.Int) (uint64, error) {
return 0, errors.New("failed") return 0, errors.New("failed")
} }

View File

@@ -378,7 +378,7 @@ func (bs *Server) collectReceivedAttestations(ctx context.Context) {
// attestations are processed and when they are no longer valid. // attestations are processed and when they are no longer valid.
// https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#attestations // https://github.com/ethereum/eth2.0-specs/blob/dev/specs/core/0_beacon-chain.md#attestations
func (bs *Server) AttestationPool( func (bs *Server) AttestationPool(
ctx context.Context, req *ethpb.AttestationPoolRequest, _ context.Context, req *ethpb.AttestationPoolRequest,
) (*ethpb.AttestationPoolResponse, error) { ) (*ethpb.AttestationPoolResponse, error) {
if int(req.PageSize) > cmd.Get().MaxRPCPageSize { if int(req.PageSize) > cmd.Get().MaxRPCPageSize {
return nil, status.Errorf( return nil, status.Errorf(

View File

@@ -11,7 +11,6 @@ import (
mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing" mock "github.com/prysmaticlabs/prysm/beacon-chain/blockchain/testing"
"github.com/prysmaticlabs/prysm/beacon-chain/cache" "github.com/prysmaticlabs/prysm/beacon-chain/cache"
"github.com/prysmaticlabs/prysm/beacon-chain/core/helpers" "github.com/prysmaticlabs/prysm/beacon-chain/core/helpers"
"github.com/prysmaticlabs/prysm/beacon-chain/db"
dbTest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing" dbTest "github.com/prysmaticlabs/prysm/beacon-chain/db/testing"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state" stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/beacon-chain/state/stategen" "github.com/prysmaticlabs/prysm/beacon-chain/state/stategen"
@@ -30,7 +29,7 @@ func TestServer_ListBeaconCommittees_CurrentEpoch(t *testing.T) {
numValidators := 128 numValidators := 128
ctx := context.Background() ctx := context.Background()
headState := setupActiveValidators(t, db, numValidators) headState := setupActiveValidators(t, numValidators)
m := &mock.ChainService{ m := &mock.ChainService{
Genesis: timeutils.Now().Add(time.Duration(-1*int64(headState.Slot()*params.BeaconConfig().SecondsPerSlot)) * time.Second), Genesis: timeutils.Now().Add(time.Duration(-1*int64(headState.Slot()*params.BeaconConfig().SecondsPerSlot)) * time.Second),
@@ -76,7 +75,7 @@ func TestServer_ListBeaconCommittees_PreviousEpoch(t *testing.T) {
helpers.ClearCache() helpers.ClearCache()
numValidators := 128 numValidators := 128
headState := setupActiveValidators(t, db, numValidators) headState := setupActiveValidators(t, numValidators)
mixes := make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector) mixes := make([][]byte, params.BeaconConfig().EpochsPerHistoricalVector)
for i := 0; i < len(mixes); i++ { for i := 0; i < len(mixes); i++ {
@@ -144,7 +143,7 @@ func TestRetrieveCommitteesForRoot(t *testing.T) {
ctx := context.Background() ctx := context.Background()
numValidators := 128 numValidators := 128
headState := setupActiveValidators(t, db, numValidators) headState := setupActiveValidators(t, numValidators)
m := &mock.ChainService{ m := &mock.ChainService{
Genesis: timeutils.Now().Add(time.Duration(-1*int64(headState.Slot()*params.BeaconConfig().SecondsPerSlot)) * time.Second), Genesis: timeutils.Now().Add(time.Duration(-1*int64(headState.Slot()*params.BeaconConfig().SecondsPerSlot)) * time.Second),
@@ -192,7 +191,7 @@ func TestRetrieveCommitteesForRoot(t *testing.T) {
assert.DeepEqual(t, wantedRes, receivedRes) assert.DeepEqual(t, wantedRes, receivedRes)
} }
func setupActiveValidators(t *testing.T, db db.Database, count int) *stateTrie.BeaconState { func setupActiveValidators(t *testing.T, count int) *stateTrie.BeaconState {
balances := make([]uint64, count) balances := make([]uint64, count)
validators := make([]*ethpb.Validator, 0, count) validators := make([]*ethpb.Validator, 0, count)
for i := 0; i < count; i++ { for i := 0; i < count; i++ {
@@ -208,9 +207,11 @@ func setupActiveValidators(t *testing.T, db db.Database, count int) *stateTrie.B
} }
s := testutil.NewBeaconState() s := testutil.NewBeaconState()
if err := s.SetValidators(validators); err != nil { if err := s.SetValidators(validators); err != nil {
t.Error(err)
return nil return nil
} }
if err := s.SetBalances(balances); err != nil { if err := s.SetBalances(balances); err != nil {
t.Error(err)
return nil return nil
} }
return s return s

View File

@@ -11,7 +11,7 @@ import (
) )
// GetBeaconConfig retrieves the current configuration parameters of the beacon chain. // GetBeaconConfig retrieves the current configuration parameters of the beacon chain.
func (bs *Server) GetBeaconConfig(ctx context.Context, _ *ptypes.Empty) (*ethpb.BeaconConfig, error) { func (bs *Server) GetBeaconConfig(_ context.Context, _ *ptypes.Empty) (*ethpb.BeaconConfig, error) {
conf := params.BeaconConfig() conf := params.BeaconConfig()
val := reflect.ValueOf(conf).Elem() val := reflect.ValueOf(conf).Elem()
numFields := val.Type().NumField() numFields := val.Type().NumField()

View File

@@ -9,7 +9,7 @@ import (
) )
// GetProtoArrayForkChoice returns proto array fork choice store. // GetProtoArrayForkChoice returns proto array fork choice store.
func (ds *Server) GetProtoArrayForkChoice(ctx context.Context, _ *ptypes.Empty) (*pbrpc.ProtoArrayForkChoiceResponse, error) { func (ds *Server) GetProtoArrayForkChoice(_ context.Context, _ *ptypes.Empty) (*pbrpc.ProtoArrayForkChoiceResponse, error) {
store := ds.HeadFetcher.ProtoArrayStore() store := ds.HeadFetcher.ProtoArrayStore()
nodes := store.Nodes() nodes := store.Nodes()

View File

@@ -14,7 +14,7 @@ import (
) )
// GetPeer returns the data known about the peer defined by the provided peer id. // GetPeer returns the data known about the peer defined by the provided peer id.
func (ds *Server) GetPeer(ctx context.Context, peerReq *ethpb.PeerRequest) (*pbrpc.DebugPeerResponse, error) { func (ds *Server) GetPeer(_ context.Context, peerReq *ethpb.PeerRequest) (*pbrpc.DebugPeerResponse, error) {
pid, err := peer.Decode(peerReq.PeerId) pid, err := peer.Decode(peerReq.PeerId)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "Unable to parse provided peer id: %v", err) return nil, status.Errorf(codes.InvalidArgument, "Unable to parse provided peer id: %v", err)
@@ -24,8 +24,8 @@ func (ds *Server) GetPeer(ctx context.Context, peerReq *ethpb.PeerRequest) (*pbr
// ListPeers returns all peers known to the host node, irregardless of if they are connected/ // ListPeers returns all peers known to the host node, irregardless of if they are connected/
// disconnected. // disconnected.
func (ds *Server) ListPeers(ctx context.Context, _ *types.Empty) (*pbrpc.DebugPeerResponses, error) { func (ds *Server) ListPeers(_ context.Context, _ *types.Empty) (*pbrpc.DebugPeerResponses, error) {
responses := []*pbrpc.DebugPeerResponse{} var responses []*pbrpc.DebugPeerResponse
for _, pid := range ds.PeersFetcher.Peers().All() { for _, pid := range ds.PeersFetcher.Peers().All() {
resp, err := ds.getPeer(pid) resp, err := ds.getPeer(pid)
if err != nil { if err != nil {
@@ -101,7 +101,7 @@ func (ds *Server) getPeer(pid peer.ID) (*pbrpc.DebugPeerResponse, error) {
PeerLatency: uint64(peerStore.LatencyEWMA(pid).Milliseconds()), PeerLatency: uint64(peerStore.LatencyEWMA(pid).Milliseconds()),
} }
addresses := peerStore.Addrs(pid) addresses := peerStore.Addrs(pid)
stringAddrs := []string{} var stringAddrs []string
if addr != nil { if addr != nil {
stringAddrs = append(stringAddrs, addr.String()) stringAddrs = append(stringAddrs, addr.String())
} }

View File

@@ -34,7 +34,7 @@ type Server struct {
// SetLoggingLevel of a beacon node according to a request type, // SetLoggingLevel of a beacon node according to a request type,
// either INFO, DEBUG, or TRACE. // either INFO, DEBUG, or TRACE.
func (ds *Server) SetLoggingLevel(ctx context.Context, req *pbrpc.LoggingLevelRequest) (*ptypes.Empty, error) { func (ds *Server) SetLoggingLevel(_ context.Context, req *pbrpc.LoggingLevelRequest) (*ptypes.Empty, error) {
var verbosity string var verbosity string
switch req.Level { switch req.Level {
case pbrpc.LoggingLevelRequest_INFO: case pbrpc.LoggingLevelRequest_INFO:

View File

@@ -37,7 +37,7 @@ type Server struct {
} }
// GetSyncStatus checks the current network sync status of the node. // GetSyncStatus checks the current network sync status of the node.
func (ns *Server) GetSyncStatus(ctx context.Context, _ *ptypes.Empty) (*ethpb.SyncStatus, error) { func (ns *Server) GetSyncStatus(_ context.Context, _ *ptypes.Empty) (*ethpb.SyncStatus, error) {
return &ethpb.SyncStatus{ return &ethpb.SyncStatus{
Syncing: ns.SyncChecker.Syncing(), Syncing: ns.SyncChecker.Syncing(),
}, nil }, nil
@@ -71,7 +71,7 @@ func (ns *Server) GetGenesis(ctx context.Context, _ *ptypes.Empty) (*ethpb.Genes
} }
// GetVersion checks the version information of the beacon node. // GetVersion checks the version information of the beacon node.
func (ns *Server) GetVersion(ctx context.Context, _ *ptypes.Empty) (*ethpb.Version, error) { func (ns *Server) GetVersion(_ context.Context, _ *ptypes.Empty) (*ethpb.Version, error) {
return &ethpb.Version{ return &ethpb.Version{
Version: version.GetVersion(), Version: version.GetVersion(),
}, nil }, nil
@@ -82,7 +82,7 @@ func (ns *Server) GetVersion(ctx context.Context, _ *ptypes.Empty) (*ethpb.Versi
// Any service not present in this list may return UNIMPLEMENTED or // Any service not present in this list may return UNIMPLEMENTED or
// PERMISSION_DENIED. The server may also support fetching services by grpc // PERMISSION_DENIED. The server may also support fetching services by grpc
// reflection. // reflection.
func (ns *Server) ListImplementedServices(ctx context.Context, _ *ptypes.Empty) (*ethpb.ImplementedServices, error) { func (ns *Server) ListImplementedServices(_ context.Context, _ *ptypes.Empty) (*ethpb.ImplementedServices, error) {
serviceInfo := ns.Server.GetServiceInfo() serviceInfo := ns.Server.GetServiceInfo()
serviceNames := make([]string, 0, len(serviceInfo)) serviceNames := make([]string, 0, len(serviceInfo))
for svc := range serviceInfo { for svc := range serviceInfo {
@@ -95,8 +95,8 @@ func (ns *Server) ListImplementedServices(ctx context.Context, _ *ptypes.Empty)
} }
// GetHost returns the p2p data on the current local and host peer. // GetHost returns the p2p data on the current local and host peer.
func (ns *Server) GetHost(ctx context.Context, _ *ptypes.Empty) (*ethpb.HostData, error) { func (ns *Server) GetHost(_ context.Context, _ *ptypes.Empty) (*ethpb.HostData, error) {
stringAddr := []string{} var stringAddr []string
for _, addr := range ns.PeerManager.Host().Addrs() { for _, addr := range ns.PeerManager.Host().Addrs() {
stringAddr = append(stringAddr, addr.String()) stringAddr = append(stringAddr, addr.String())
} }
@@ -118,7 +118,7 @@ func (ns *Server) GetHost(ctx context.Context, _ *ptypes.Empty) (*ethpb.HostData
} }
// GetPeer returns the data known about the peer defined by the provided peer id. // GetPeer returns the data known about the peer defined by the provided peer id.
func (ns *Server) GetPeer(ctx context.Context, peerReq *ethpb.PeerRequest) (*ethpb.Peer, error) { func (ns *Server) GetPeer(_ context.Context, peerReq *ethpb.PeerRequest) (*ethpb.Peer, error) {
pid, err := peer.Decode(peerReq.PeerId) pid, err := peer.Decode(peerReq.PeerId)
if err != nil { if err != nil {
return nil, status.Errorf(codes.InvalidArgument, "Unable to parse provided peer id: %v", err) return nil, status.Errorf(codes.InvalidArgument, "Unable to parse provided peer id: %v", err)

View File

@@ -17,16 +17,16 @@ import (
// SubmitAggregateSelectionProof is called by a validator when its assigned to be an aggregator. // SubmitAggregateSelectionProof is called by a validator when its assigned to be an aggregator.
// The aggregator submits the selection proof to obtain the aggregated attestation // The aggregator submits the selection proof to obtain the aggregated attestation
// object to sign over. // object to sign over.
func (as *Server) SubmitAggregateSelectionProof(ctx context.Context, req *ethpb.AggregateSelectionRequest) (*ethpb.AggregateSelectionResponse, error) { func (vs *Server) SubmitAggregateSelectionProof(ctx context.Context, req *ethpb.AggregateSelectionRequest) (*ethpb.AggregateSelectionResponse, error) {
ctx, span := trace.StartSpan(ctx, "AggregatorServer.SubmitAggregateSelectionProof") ctx, span := trace.StartSpan(ctx, "AggregatorServer.SubmitAggregateSelectionProof")
defer span.End() defer span.End()
span.AddAttributes(trace.Int64Attribute("slot", int64(req.Slot))) span.AddAttributes(trace.Int64Attribute("slot", int64(req.Slot)))
if as.SyncChecker.Syncing() { if vs.SyncChecker.Syncing() {
return nil, status.Errorf(codes.Unavailable, "Syncing to latest head, not ready to respond") return nil, status.Errorf(codes.Unavailable, "Syncing to latest head, not ready to respond")
} }
st, err := as.HeadFetcher.HeadState(ctx) st, err := vs.HeadFetcher.HeadState(ctx)
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "Could not determine head state: %v", err) return nil, status.Errorf(codes.Internal, "Could not determine head state: %v", err)
} }
@@ -59,14 +59,14 @@ func (as *Server) SubmitAggregateSelectionProof(ctx context.Context, req *ethpb.
return nil, status.Errorf(codes.InvalidArgument, "Validator is not an aggregator") return nil, status.Errorf(codes.InvalidArgument, "Validator is not an aggregator")
} }
if err := as.AttPool.AggregateUnaggregatedAttestationsBySlotIndex(req.Slot, req.CommitteeIndex); err != nil { if err := vs.AttPool.AggregateUnaggregatedAttestationsBySlotIndex(req.Slot, req.CommitteeIndex); err != nil {
return nil, status.Errorf(codes.Internal, "Could not aggregate unaggregated attestations") return nil, status.Errorf(codes.Internal, "Could not aggregate unaggregated attestations")
} }
aggregatedAtts := as.AttPool.AggregatedAttestationsBySlotIndex(req.Slot, req.CommitteeIndex) aggregatedAtts := vs.AttPool.AggregatedAttestationsBySlotIndex(req.Slot, req.CommitteeIndex)
// Filter out the best aggregated attestation (ie. the one with the most aggregated bits). // Filter out the best aggregated attestation (ie. the one with the most aggregated bits).
if len(aggregatedAtts) == 0 { if len(aggregatedAtts) == 0 {
aggregatedAtts = as.AttPool.UnaggregatedAttestationsBySlotIndex(req.Slot, req.CommitteeIndex) aggregatedAtts = vs.AttPool.UnaggregatedAttestationsBySlotIndex(req.Slot, req.CommitteeIndex)
if len(aggregatedAtts) == 0 { if len(aggregatedAtts) == 0 {
return nil, status.Errorf(codes.Internal, "Could not find attestation for slot and committee in pool") return nil, status.Errorf(codes.Internal, "Could not find attestation for slot and committee in pool")
} }
@@ -108,7 +108,7 @@ func (as *Server) SubmitAggregateSelectionProof(ctx context.Context, req *ethpb.
// SubmitSignedAggregateSelectionProof is called by a validator to broadcast a signed // SubmitSignedAggregateSelectionProof is called by a validator to broadcast a signed
// aggregated and proof object. // aggregated and proof object.
func (as *Server) SubmitSignedAggregateSelectionProof(ctx context.Context, req *ethpb.SignedAggregateSubmitRequest) (*ethpb.SignedAggregateSubmitResponse, error) { func (vs *Server) SubmitSignedAggregateSelectionProof(ctx context.Context, req *ethpb.SignedAggregateSubmitRequest) (*ethpb.SignedAggregateSubmitResponse, error) {
if req.SignedAggregateAndProof == nil || req.SignedAggregateAndProof.Message == nil || if req.SignedAggregateAndProof == nil || req.SignedAggregateAndProof.Message == nil ||
req.SignedAggregateAndProof.Message.Aggregate == nil || req.SignedAggregateAndProof.Message.Aggregate.Data == nil { req.SignedAggregateAndProof.Message.Aggregate == nil || req.SignedAggregateAndProof.Message.Aggregate.Data == nil {
return nil, status.Error(codes.InvalidArgument, "Signed aggregate request can't be nil") return nil, status.Error(codes.InvalidArgument, "Signed aggregate request can't be nil")
@@ -120,11 +120,11 @@ func (as *Server) SubmitSignedAggregateSelectionProof(ctx context.Context, req *
} }
// As a preventive measure, a beacon node shouldn't broadcast an attestation whose slot is out of range. // As a preventive measure, a beacon node shouldn't broadcast an attestation whose slot is out of range.
if err := helpers.ValidateAttestationTime(req.SignedAggregateAndProof.Message.Aggregate.Data.Slot, as.GenesisTimeFetcher.GenesisTime()); err != nil { if err := helpers.ValidateAttestationTime(req.SignedAggregateAndProof.Message.Aggregate.Data.Slot, vs.GenesisTimeFetcher.GenesisTime()); err != nil {
return nil, status.Error(codes.InvalidArgument, "Attestation slot is no longer valid from current time") return nil, status.Error(codes.InvalidArgument, "Attestation slot is no longer valid from current time")
} }
if err := as.P2P.Broadcast(ctx, req.SignedAggregateAndProof); err != nil { if err := vs.P2P.Broadcast(ctx, req.SignedAggregateAndProof); err != nil {
return nil, status.Errorf(codes.Internal, "Could not broadcast signed aggregated attestation: %v", err) return nil, status.Errorf(codes.Internal, "Could not broadcast signed aggregated attestation: %v", err)
} }

View File

@@ -203,7 +203,7 @@ func assignValidatorToSubnet(pubkey []byte, status ethpb.ValidatorStatus) {
return return
} }
epochDuration := time.Duration(params.BeaconConfig().SlotsPerEpoch * params.BeaconConfig().SecondsPerSlot) epochDuration := time.Duration(params.BeaconConfig().SlotsPerEpoch * params.BeaconConfig().SecondsPerSlot)
assignedIdxs := []uint64{} var assignedIdxs []uint64
randGen := rand.NewGenerator() randGen := rand.NewGenerator()
for i := uint64(0); i < params.BeaconNetworkConfig().RandomSubnetsPerValidator; i++ { for i := uint64(0); i < params.BeaconNetworkConfig().RandomSubnetsPerValidator; i++ {
assignedIdx := randGen.Intn(int(params.BeaconNetworkConfig().AttestationSubnetCount)) assignedIdx := randGen.Intn(int(params.BeaconNetworkConfig().AttestationSubnetCount))

View File

@@ -348,7 +348,9 @@ func chosenEth1DataMajorityVote(votes []eth1DataSingleVote) eth1DataAggregatedVo
voteCount = append(voteCount, eth1DataAggregatedVote{data: singleVote, votes: 1}) voteCount = append(voteCount, eth1DataAggregatedVote{data: singleVote, votes: 1})
} }
} }
if len(voteCount) == 0 {
return eth1DataAggregatedVote{}
}
currentVote := voteCount[0] currentVote := voteCount[0]
for _, aggregatedVote := range voteCount[1:] { for _, aggregatedVote := range voteCount[1:] {
// Choose new eth1data if it has more votes or the same number of votes with a bigger block height. // Choose new eth1data if it has more votes or the same number of votes with a bigger block height.
@@ -557,7 +559,7 @@ func (vs *Server) depositTrie(ctx context.Context, canonicalEth1DataHeight *big.
} }
upToEth1DataDeposits := vs.DepositFetcher.AllDeposits(ctx, canonicalEth1DataHeight) upToEth1DataDeposits := vs.DepositFetcher.AllDeposits(ctx, canonicalEth1DataHeight)
depositData := [][]byte{} var depositData [][]byte
for _, dep := range upToEth1DataDeposits { for _, dep := range upToEth1DataDeposits {
depHash, err := dep.Data.HashTreeRoot() depHash, err := dep.Data.HashTreeRoot()
if err != nil { if err != nil {

View File

@@ -131,7 +131,7 @@ func (vs *Server) ValidatorIndex(ctx context.Context, req *ethpb.ValidatorIndexR
} }
// DomainData fetches the current domain version information from the beacon state. // DomainData fetches the current domain version information from the beacon state.
func (vs *Server) DomainData(ctx context.Context, request *ethpb.DomainRequest) (*ethpb.DomainResponse, error) { func (vs *Server) DomainData(_ context.Context, request *ethpb.DomainRequest) (*ethpb.DomainResponse, error) {
fork := vs.ForkFetcher.CurrentFork() fork := vs.ForkFetcher.CurrentFork()
headGenesisValidatorRoot := vs.HeadFetcher.HeadGenesisValidatorRoot() headGenesisValidatorRoot := vs.HeadFetcher.HeadGenesisValidatorRoot()
dv, err := helpers.Domain(fork, request.Epoch, bytesutil.ToBytes4(request.Domain), headGenesisValidatorRoot[:]) dv, err := helpers.Domain(fork, request.Epoch, bytesutil.ToBytes4(request.Domain), headGenesisValidatorRoot[:])
@@ -145,7 +145,7 @@ func (vs *Server) DomainData(ctx context.Context, request *ethpb.DomainRequest)
// CanonicalHead of the current beacon chain. This method is requested on-demand // CanonicalHead of the current beacon chain. This method is requested on-demand
// by a validator when it is their time to propose or attest. // by a validator when it is their time to propose or attest.
func (vs *Server) CanonicalHead(ctx context.Context, req *ptypes.Empty) (*ethpb.SignedBeaconBlock, error) { func (vs *Server) CanonicalHead(ctx context.Context, _ *ptypes.Empty) (*ethpb.SignedBeaconBlock, error) {
headBlk, err := vs.HeadFetcher.HeadBlock(ctx) headBlk, err := vs.HeadFetcher.HeadBlock(ctx)
if err != nil { if err != nil {
return nil, status.Errorf(codes.Internal, "Could not get head block: %v", err) return nil, status.Errorf(codes.Internal, "Could not get head block: %v", err)
@@ -157,7 +157,7 @@ func (vs *Server) CanonicalHead(ctx context.Context, req *ptypes.Empty) (*ethpb.
// has started its runtime and validators begin their responsibilities. If it has not, it then // has started its runtime and validators begin their responsibilities. If it has not, it then
// subscribes to an event stream triggered by the powchain service whenever the ChainStart log does // subscribes to an event stream triggered by the powchain service whenever the ChainStart log does
// occur in the Deposit Contract on ETH 1.0. // occur in the Deposit Contract on ETH 1.0.
func (vs *Server) WaitForChainStart(req *ptypes.Empty, stream ethpb.BeaconNodeValidator_WaitForChainStartServer) error { func (vs *Server) WaitForChainStart(_ *ptypes.Empty, stream ethpb.BeaconNodeValidator_WaitForChainStartServer) error {
head, err := vs.HeadFetcher.HeadState(stream.Context()) head, err := vs.HeadFetcher.HeadState(stream.Context())
if err != nil { if err != nil {
return status.Errorf(codes.Internal, "Could not retrieve head state: %v", err) return status.Errorf(codes.Internal, "Could not retrieve head state: %v", err)
@@ -212,7 +212,7 @@ func (vs *Server) WaitForChainStart(req *ptypes.Empty, stream ethpb.BeaconNodeVa
// WaitForSynced subscribes to the state channel and ends the stream when the state channel // WaitForSynced subscribes to the state channel and ends the stream when the state channel
// indicates the beacon node has been initialized and is ready // indicates the beacon node has been initialized and is ready
func (vs *Server) WaitForSynced(req *ptypes.Empty, stream ethpb.BeaconNodeValidator_WaitForSyncedServer) error { func (vs *Server) WaitForSynced(_ *ptypes.Empty, stream ethpb.BeaconNodeValidator_WaitForSyncedServer) error {
head, err := vs.HeadFetcher.HeadState(stream.Context()) head, err := vs.HeadFetcher.HeadState(stream.Context())
if err != nil { if err != nil {
return status.Errorf(codes.Internal, "Could not retrieve head state: %v", err) return status.Errorf(codes.Internal, "Could not retrieve head state: %v", err)

View File

@@ -318,7 +318,7 @@ func (b *BeaconState) ApplyToEveryValidator(f func(idx int, val *ethpb.Validator
b.sharedFieldReferences[validators] = &reference{refs: 1} b.sharedFieldReferences[validators] = &reference{refs: 1}
} }
b.lock.Unlock() b.lock.Unlock()
changedVals := []uint64{} var changedVals []uint64
for i, val := range v { for i, val := range v {
changed, err := f(i, val) changed, err := f(i, val)
if err != nil { if err != nil {

View File

@@ -144,7 +144,7 @@ func trim(queue *cache.FIFO, maxSize uint64) {
} }
// popProcessNoopFunc is a no-op function that never returns an error. // popProcessNoopFunc is a no-op function that never returns an error.
func popProcessNoopFunc(obj interface{}) error { func popProcessNoopFunc(_ interface{}) error {
return nil return nil
} }

View File

@@ -43,7 +43,7 @@ func (s *State) ForceCheckpoint(ctx context.Context, root []byte) error {
// SaveStateSummary saves the relevant state summary for a block and its corresponding state slot in the // SaveStateSummary saves the relevant state summary for a block and its corresponding state slot in the
// state summary cache. // state summary cache.
func (s *State) SaveStateSummary(ctx context.Context, blk *ethpb.SignedBeaconBlock, blockRoot [32]byte) { func (s *State) SaveStateSummary(_ context.Context, blk *ethpb.SignedBeaconBlock, blockRoot [32]byte) {
// Save State summary // Save State summary
s.stateSummaryCache.Put(blockRoot, &pb.StateSummary{ s.stateSummaryCache.Put(blockRoot, &pb.StateSummary{
Slot: blk.Block.Slot, Slot: blk.Block.Slot,

View File

@@ -70,7 +70,7 @@ func (h *stateRootHasher) arraysRoot(input [][]byte, length uint64, fieldName st
changedIndices = append(changedIndices, maxChangedIndex+1) changedIndices = append(changedIndices, maxChangedIndex+1)
} }
for i := 0; i < len(changedIndices); i++ { for i := 0; i < len(changedIndices); i++ {
rt, err = recomputeRoot(changedIndices[i], chunks, length, fieldName, hashFunc) rt, err = recomputeRoot(changedIndices[i], chunks, fieldName, hashFunc)
if err != nil { if err != nil {
return [32]byte{}, err return [32]byte{}, err
} }
@@ -133,8 +133,7 @@ func merkleizeTrieLeaves(layers [][][32]byte, hashLayer [][32]byte,
return layers, hashLayer return layers, hashLayer
} }
func recomputeRoot(idx int, chunks [][32]byte, length uint64, func recomputeRoot(idx int, chunks [][32]byte, fieldName string, hasher func([]byte) [32]byte) ([32]byte, error) {
fieldName string, hasher func([]byte) [32]byte) ([32]byte, error) {
items, ok := layersCache[fieldName] items, ok := layersCache[fieldName]
if !ok { if !ok {
return [32]byte{}, errors.New("could not recompute root as there was no cache found") return [32]byte{}, errors.New("could not recompute root as there was no cache found")

View File

@@ -16,7 +16,7 @@ import (
// PendingAttestationRoot describes a method from which the hash tree root // PendingAttestationRoot describes a method from which the hash tree root
// of a pending attestation is returned. // of a pending attestation is returned.
func PendingAttestationRoot(hasher htrutils.HashFn, att *pb.PendingAttestation) ([32]byte, error) { func PendingAttestationRoot(hasher htrutils.HashFn, att *pb.PendingAttestation) ([32]byte, error) {
fieldRoots := [][32]byte{} var fieldRoots [][32]byte
if att != nil { if att != nil {
// Bitfield. // Bitfield.
aggregationRoot, err := htrutils.BitlistRoot(hasher, att.AggregationBits, params.BeaconConfig().MaxValidatorsPerCommittee) aggregationRoot, err := htrutils.BitlistRoot(hasher, att.AggregationBits, params.BeaconConfig().MaxValidatorsPerCommittee)

View File

@@ -64,7 +64,7 @@ func ValidatorBalancesRoot(balances []uint64) ([32]byte, error) {
// ValidatorRoot describes a method from which the hash tree root // ValidatorRoot describes a method from which the hash tree root
// of a validator is returned. // of a validator is returned.
func ValidatorRoot(hasher htrutils.HashFn, validator *ethpb.Validator) ([32]byte, error) { func ValidatorRoot(hasher htrutils.HashFn, validator *ethpb.Validator) ([32]byte, error) {
fieldRoots := [][32]byte{} var fieldRoots [][32]byte
if validator != nil { if validator != nil {
pubkey := bytesutil.ToBytes48(validator.PublicKey) pubkey := bytesutil.ToBytes48(validator.PublicKey)
withdrawCreds := bytesutil.ToBytes32(validator.WithdrawalCredentials) withdrawCreds := bytesutil.ToBytes32(validator.WithdrawalCredentials)

View File

@@ -54,7 +54,7 @@ func (s *Service) processPendingAtts(ctx context.Context) error {
} }
s.pendingAttsLock.RUnlock() s.pendingAttsLock.RUnlock()
pendingRoots := [][32]byte{} var pendingRoots [][32]byte
randGen := rand.NewGenerator() randGen := rand.NewGenerator()
for _, bRoot := range roots { for _, bRoot := range roots {
s.pendingAttsLock.RLock() s.pendingAttsLock.RLock()

View File

@@ -49,7 +49,7 @@ func (s *Service) processPendingBlocks(ctx context.Context) error {
return errors.Wrap(err, "could not validate pending slots") return errors.Wrap(err, "could not validate pending slots")
} }
slots := s.sortedPendingSlots() slots := s.sortedPendingSlots()
parentRoots := [][32]byte{} var parentRoots [][32]byte
span.AddAttributes( span.AddAttributes(
trace.Int64Attribute("numSlots", int64(len(slots))), trace.Int64Attribute("numSlots", int64(len(slots))),

View File

@@ -113,18 +113,18 @@ func TestRegularSync_InsertDuplicateBlocks(t *testing.T) {
b1r := [32]byte{'b'} b1r := [32]byte{'b'}
r.insertBlockToPendingQueue(b0.Block.Slot, b0, b0r) r.insertBlockToPendingQueue(b0.Block.Slot, b0, b0r)
require.Equal(t, int(1), len(r.slotToPendingBlocks[b0.Block.Slot]), "Block was not added to map") require.Equal(t, 1, len(r.slotToPendingBlocks[b0.Block.Slot]), "Block was not added to map")
r.insertBlockToPendingQueue(b1.Block.Slot, b1, b1r) r.insertBlockToPendingQueue(b1.Block.Slot, b1, b1r)
require.Equal(t, int(1), len(r.slotToPendingBlocks[b1.Block.Slot]), "Block was not added to map") require.Equal(t, 1, len(r.slotToPendingBlocks[b1.Block.Slot]), "Block was not added to map")
// Add duplicate block which should not be saved. // Add duplicate block which should not be saved.
r.insertBlockToPendingQueue(b0.Block.Slot, b0, b0r) r.insertBlockToPendingQueue(b0.Block.Slot, b0, b0r)
require.Equal(t, int(1), len(r.slotToPendingBlocks[b0.Block.Slot]), "Block was added to map") require.Equal(t, 1, len(r.slotToPendingBlocks[b0.Block.Slot]), "Block was added to map")
// Add duplicate block which should not be saved. // Add duplicate block which should not be saved.
r.insertBlockToPendingQueue(b1.Block.Slot, b1, b1r) r.insertBlockToPendingQueue(b1.Block.Slot, b1, b1r)
require.Equal(t, int(1), len(r.slotToPendingBlocks[b1.Block.Slot]), "Block was added to map") require.Equal(t, 1, len(r.slotToPendingBlocks[b1.Block.Slot]), "Block was added to map")
} }
@@ -379,7 +379,7 @@ func TestService_BatchRootRequest(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
out := [][32]byte{} var out [][32]byte
assert.NoError(t, p2.Encoding().DecodeWithMaxLength(stream, &out)) assert.NoError(t, p2.Encoding().DecodeWithMaxLength(stream, &out))
assert.DeepEqual(t, expectedRoots, out, "Did not receive expected message") assert.DeepEqual(t, expectedRoots, out, "Did not receive expected message")
response := []*ethpb.SignedBeaconBlock{b2, b3, b4, b5} response := []*ethpb.SignedBeaconBlock{b2, b3, b4, b5}

View File

@@ -52,7 +52,7 @@ func TestRPCBeaconBlocksByRange_RPCHandlerReturnsBlocks(t *testing.T) {
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
for i := req.StartSlot; i < req.StartSlot+req.Count*req.Step; i += req.Step { for i := req.StartSlot; i < req.StartSlot+req.Count*req.Step; i += req.Step {
expectSuccess(t, r, stream) expectSuccess(t, stream)
res := testutil.NewBeaconBlock() res := testutil.NewBeaconBlock()
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res))
if (res.Block.Slot-req.StartSlot)%req.Step != 0 { if (res.Block.Slot-req.StartSlot)%req.Step != 0 {
@@ -117,7 +117,7 @@ func TestRPCBeaconBlocksByRange_RPCHandlerReturnsSortedBlocks(t *testing.T) {
prevSlot := uint64(0) prevSlot := uint64(0)
require.Equal(t, uint64(len(expectedRoots)), req.Count, "Number of roots not expected") require.Equal(t, uint64(len(expectedRoots)), req.Count, "Number of roots not expected")
for i, j := req.StartSlot, 0; i < req.StartSlot+req.Count*req.Step; i += req.Step { for i, j := req.StartSlot, 0; i < req.StartSlot+req.Count*req.Step; i += req.Step {
expectSuccess(t, r, stream) expectSuccess(t, stream)
res := &ethpb.SignedBeaconBlock{} res := &ethpb.SignedBeaconBlock{}
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res))
if res.Block.Slot < prevSlot { if res.Block.Slot < prevSlot {
@@ -177,12 +177,12 @@ func TestRPCBeaconBlocksByRange_ReturnsGenesisBlock(t *testing.T) {
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
// check for genesis block // check for genesis block
expectSuccess(t, r, stream) expectSuccess(t, stream)
res := &ethpb.SignedBeaconBlock{} res := &ethpb.SignedBeaconBlock{}
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res))
assert.Equal(t, uint64(0), res.Block.Slot, "genesis block was not returned") assert.Equal(t, uint64(0), res.Block.Slot, "genesis block was not returned")
for i := req.StartSlot + req.Step; i < req.Count*req.Step; i += req.Step { for i := req.StartSlot + req.Step; i < req.Count*req.Step; i += req.Step {
expectSuccess(t, r, stream) expectSuccess(t, stream)
res := &ethpb.SignedBeaconBlock{} res := &ethpb.SignedBeaconBlock{}
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res))
} }
@@ -219,7 +219,7 @@ func TestRPCBeaconBlocksByRange_RPCHandlerRateLimitOverflow(t *testing.T) {
return return
} }
for i := req.StartSlot; i < req.StartSlot+req.Count*req.Step; i += req.Step { for i := req.StartSlot; i < req.StartSlot+req.Count*req.Step; i += req.Step {
expectSuccess(t, r, stream) expectSuccess(t, stream)
res := testutil.NewBeaconBlock() res := testutil.NewBeaconBlock()
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, res))
if (res.Block.Slot-req.StartSlot)%req.Step != 0 { if (res.Block.Slot-req.StartSlot)%req.Step != 0 {
@@ -434,7 +434,7 @@ func TestRPCBeaconBlocksByRange_validateRangeRequest(t *testing.T) {
name: "Valid Request", name: "Valid Request",
req: &pb.BeaconBlocksByRangeRequest{ req: &pb.BeaconBlocksByRangeRequest{
Step: 1, Step: 1,
Count: uint64(params.BeaconNetworkConfig().MaxRequestBlocks) - 1, Count: params.BeaconNetworkConfig().MaxRequestBlocks - 1,
StartSlot: 50, StartSlot: 50,
}, },
errorToLog: "validation failed with valid params", errorToLog: "validation failed with valid params",
@@ -472,7 +472,7 @@ func TestRPCBeaconBlocksByRange_EnforceResponseInvariants(t *testing.T) {
defer wg.Done() defer wg.Done()
blocks := make([]*ethpb.SignedBeaconBlock, 0, req.Count) blocks := make([]*ethpb.SignedBeaconBlock, 0, req.Count)
for i := req.StartSlot; i < req.StartSlot+req.Count*req.Step; i += req.Step { for i := req.StartSlot; i < req.StartSlot+req.Count*req.Step; i += req.Step {
expectSuccess(t, r, stream) expectSuccess(t, stream)
blk := testutil.NewBeaconBlock() blk := testutil.NewBeaconBlock()
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, blk)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, blk))
if (blk.Block.Slot-req.StartSlot)%req.Step != 0 { if (blk.Block.Slot-req.StartSlot)%req.Step != 0 {

View File

@@ -53,7 +53,7 @@ func TestRecentBeaconBlocksRPCHandler_ReturnsBlocks(t *testing.T) {
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
for i := range blkRoots { for i := range blkRoots {
expectSuccess(t, r, stream) expectSuccess(t, stream)
res := testutil.NewBeaconBlock() res := testutil.NewBeaconBlock()
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, &res)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, &res))
if res.Block.Slot != uint64(i+1) { if res.Block.Slot != uint64(i+1) {
@@ -119,7 +119,7 @@ func TestRecentBeaconBlocks_RPCRequestSent(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
out := [][32]byte{} var out [][32]byte
assert.NoError(t, p2.Encoding().DecodeWithMaxLength(stream, &out)) assert.NoError(t, p2.Encoding().DecodeWithMaxLength(stream, &out))
assert.DeepEqual(t, expectedRoots, out, "Did not receive expected message") assert.DeepEqual(t, expectedRoots, out, "Did not receive expected message")
response := []*ethpb.SignedBeaconBlock{blockB, blockA} response := []*ethpb.SignedBeaconBlock{blockB, blockA}

View File

@@ -30,7 +30,7 @@ var goodByes = map[uint64]string{
const flushDelay = 50 * time.Millisecond const flushDelay = 50 * time.Millisecond
// goodbyeRPCHandler reads the incoming goodbye rpc message from the peer. // goodbyeRPCHandler reads the incoming goodbye rpc message from the peer.
func (s *Service) goodbyeRPCHandler(ctx context.Context, msg interface{}, stream libp2pcore.Stream) error { func (s *Service) goodbyeRPCHandler(_ context.Context, msg interface{}, stream libp2pcore.Stream) error {
defer func() { defer func() {
if err := stream.Close(); err != nil { if err := stream.Close(); err != nil {
log.WithError(err).Error("Failed to close stream") log.WithError(err).Error("Failed to close stream")

View File

@@ -39,7 +39,7 @@ func TestGoodByeRPCHandler_Disconnects_With_Peer(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
expectResetStream(t, r, stream) expectResetStream(t, stream)
}) })
stream1, err := p1.BHost.NewStream(context.Background(), p2.BHost.ID(), pcl) stream1, err := p1.BHost.NewStream(context.Background(), p2.BHost.ID(), pcl)
require.NoError(t, err) require.NoError(t, err)

View File

@@ -12,7 +12,7 @@ import (
) )
// metaDataHandler reads the incoming metadata rpc request from the peer. // metaDataHandler reads the incoming metadata rpc request from the peer.
func (s *Service) metaDataHandler(ctx context.Context, msg interface{}, stream libp2pcore.Stream) error { func (s *Service) metaDataHandler(_ context.Context, _ interface{}, stream libp2pcore.Stream) error {
defer func() { defer func() {
if err := stream.Close(); err != nil { if err := stream.Close(); err != nil {
log.WithError(err).Debug("Failed to close stream") log.WithError(err).Debug("Failed to close stream")

View File

@@ -47,7 +47,7 @@ func TestMetaDataRPCHandler_ReceivesMetadata(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
expectSuccess(t, r, stream) expectSuccess(t, stream)
out := new(pb.MetaData) out := new(pb.MetaData)
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out))
assert.DeepEqual(t, p1.LocalMetadata, out, "Metadata unequal") assert.DeepEqual(t, p1.LocalMetadata, out, "Metadata unequal")

View File

@@ -15,7 +15,7 @@ import (
) )
// pingHandler reads the incoming ping rpc message from the peer. // pingHandler reads the incoming ping rpc message from the peer.
func (s *Service) pingHandler(ctx context.Context, msg interface{}, stream libp2pcore.Stream) error { func (s *Service) pingHandler(_ context.Context, msg interface{}, stream libp2pcore.Stream) error {
SetRPCStreamDeadlines(stream) SetRPCStreamDeadlines(stream)
m, ok := msg.(*uint64) m, ok := msg.(*uint64)

View File

@@ -53,7 +53,7 @@ func TestPingRPCHandler_ReceivesPing(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
expectSuccess(t, r, stream) expectSuccess(t, stream)
out := new(uint64) out := new(uint64)
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out))
assert.Equal(t, uint64(2), *out) assert.Equal(t, uint64(2), *out)

View File

@@ -60,7 +60,7 @@ func TestStatusRPCHandler_Disconnects_OnForkVersionMismatch(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
expectSuccess(t, r, stream) expectSuccess(t, stream)
out := &pb.Status{} out := &pb.Status{}
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out))
if !bytes.Equal(out.FinalizedRoot, root[:]) { if !bytes.Equal(out.FinalizedRoot, root[:]) {
@@ -126,7 +126,7 @@ func TestStatusRPCHandler_ConnectsOnGenesis(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
expectSuccess(t, r, stream) expectSuccess(t, stream)
out := &pb.Status{} out := &pb.Status{}
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out))
if !bytes.Equal(out.FinalizedRoot, root[:]) { if !bytes.Equal(out.FinalizedRoot, root[:]) {
@@ -206,7 +206,7 @@ func TestStatusRPCHandler_ReturnsHelloMessage(t *testing.T) {
wg.Add(1) wg.Add(1)
p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) { p2.BHost.SetStreamHandler(pcl, func(stream network.Stream) {
defer wg.Done() defer wg.Done()
expectSuccess(t, r, stream) expectSuccess(t, stream)
out := &pb.Status{} out := &pb.Status{}
assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out)) assert.NoError(t, r.p2p.Encoding().DecodeWithMaxLength(stream, out))
expected := &pb.Status{ expected := &pb.Status{

View File

@@ -23,7 +23,7 @@ func init() {
} }
// expectSuccess status code from a stream in regular sync. // expectSuccess status code from a stream in regular sync.
func expectSuccess(t *testing.T, r *Service, stream network.Stream) { func expectSuccess(t *testing.T, stream network.Stream) {
code, errMsg, err := ReadStatusCode(stream, &encoder.SszNetworkEncoder{}) code, errMsg, err := ReadStatusCode(stream, &encoder.SszNetworkEncoder{})
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, uint8(0), code, "Received non-zero response code") require.Equal(t, uint8(0), code, "Received non-zero response code")
@@ -35,12 +35,12 @@ func expectFailure(t *testing.T, expectedCode uint8, expectedErrorMsg string, st
code, errMsg, err := ReadStatusCode(stream, &encoder.SszNetworkEncoder{}) code, errMsg, err := ReadStatusCode(stream, &encoder.SszNetworkEncoder{})
require.NoError(t, err) require.NoError(t, err)
require.NotEqual(t, uint8(0), code, "Expected request to fail but got a 0 response code") require.NotEqual(t, uint8(0), code, "Expected request to fail but got a 0 response code")
require.Equal(t, uint8(expectedCode), code, "Received incorrect response code") require.Equal(t, expectedCode, code, "Received incorrect response code")
require.Equal(t, expectedErrorMsg, errMsg) require.Equal(t, expectedErrorMsg, errMsg)
} }
// expectResetStream status code from a stream in regular sync. // expectResetStream status code from a stream in regular sync.
func expectResetStream(t *testing.T, r *Service, stream network.Stream) { func expectResetStream(t *testing.T, stream network.Stream) {
expectedErr := "stream reset" expectedErr := "stream reset"
_, _, err := ReadStatusCode(stream, &encoder.SszNetworkEncoder{}) _, _, err := ReadStatusCode(stream, &encoder.SszNetworkEncoder{})
require.ErrorContains(t, expectedErr, err) require.ErrorContains(t, expectedErr, err)

View File

@@ -29,7 +29,7 @@ const pubsubMessageTimeout = 30 * time.Second
type subHandler func(context.Context, proto.Message) error type subHandler func(context.Context, proto.Message) error
// noopValidator is a no-op that only decodes the message, but does not check its contents. // noopValidator is a no-op that only decodes the message, but does not check its contents.
func (s *Service) noopValidator(ctx context.Context, _ peer.ID, msg *pubsub.Message) pubsub.ValidationResult { func (s *Service) noopValidator(_ context.Context, _ peer.ID, msg *pubsub.Message) pubsub.ValidationResult {
m, err := s.decodePubsubMessage(msg) m, err := s.decodePubsubMessage(msg)
if err != nil { if err != nil {
log.WithError(err).Debug("Failed to decode message") log.WithError(err).Debug("Failed to decode message")
@@ -91,6 +91,7 @@ func (s *Service) subscribe(topic string, validator pubsub.ValidatorEx, handle s
return s.subscribeWithBase(base, s.addDigestToTopic(topic), validator, handle) return s.subscribeWithBase(base, s.addDigestToTopic(topic), validator, handle)
} }
// TODO(7437): Refactor this method to remove unused arg "base".
func (s *Service) subscribeWithBase(base proto.Message, topic string, validator pubsub.ValidatorEx, handle subHandler) *pubsub.Subscription { func (s *Service) subscribeWithBase(base proto.Message, topic string, validator pubsub.ValidatorEx, handle subHandler) *pubsub.Subscription {
topic += s.p2p.Encoding().ProtocolSuffix() topic += s.p2p.Encoding().ProtocolSuffix()
log := log.WithField("topic", topic) log := log.WithField("topic", topic)

View File

@@ -14,7 +14,7 @@ import (
// beaconAggregateProofSubscriber forwards the incoming validated aggregated attestation and proof to the // beaconAggregateProofSubscriber forwards the incoming validated aggregated attestation and proof to the
// attestation pool for processing. // attestation pool for processing.
func (s *Service) beaconAggregateProofSubscriber(ctx context.Context, msg proto.Message) error { func (s *Service) beaconAggregateProofSubscriber(_ context.Context, msg proto.Message) error {
a, ok := msg.(*ethpb.SignedAggregateAttestationAndProof) a, ok := msg.(*ethpb.SignedAggregateAttestationAndProof)
if !ok { if !ok {
return fmt.Errorf("message was not type *eth.SignedAggregateAttestationAndProof, type=%T", msg) return fmt.Errorf("message was not type *eth.SignedAggregateAttestationAndProof, type=%T", msg)

View File

@@ -15,7 +15,7 @@ import (
"github.com/prysmaticlabs/prysm/shared/sliceutil" "github.com/prysmaticlabs/prysm/shared/sliceutil"
) )
func (s *Service) committeeIndexBeaconAttestationSubscriber(ctx context.Context, msg proto.Message) error { func (s *Service) committeeIndexBeaconAttestationSubscriber(_ context.Context, msg proto.Message) error {
a, ok := msg.(*eth.Attestation) a, ok := msg.(*eth.Attestation)
if !ok { if !ok {
return fmt.Errorf("message was not type *eth.Attestation, type=%T", msg) return fmt.Errorf("message was not type *eth.Attestation, type=%T", msg)
@@ -53,7 +53,7 @@ func (s *Service) persistentSubnetIndices() []uint64 {
func (s *Service) aggregatorSubnetIndices(currentSlot uint64) []uint64 { func (s *Service) aggregatorSubnetIndices(currentSlot uint64) []uint64 {
endEpoch := helpers.SlotToEpoch(currentSlot) + 1 endEpoch := helpers.SlotToEpoch(currentSlot) + 1
endSlot := endEpoch * params.BeaconConfig().SlotsPerEpoch endSlot := endEpoch * params.BeaconConfig().SlotsPerEpoch
commIds := []uint64{} var commIds []uint64
for i := currentSlot; i <= endSlot; i++ { for i := currentSlot; i <= endSlot; i++ {
commIds = append(commIds, cache.SubnetIDs.GetAggregatorSubnetIDs(i)...) commIds = append(commIds, cache.SubnetIDs.GetAggregatorSubnetIDs(i)...)
} }
@@ -63,7 +63,7 @@ func (s *Service) aggregatorSubnetIndices(currentSlot uint64) []uint64 {
func (s *Service) attesterSubnetIndices(currentSlot uint64) []uint64 { func (s *Service) attesterSubnetIndices(currentSlot uint64) []uint64 {
endEpoch := helpers.SlotToEpoch(currentSlot) + 1 endEpoch := helpers.SlotToEpoch(currentSlot) + 1
endSlot := endEpoch * params.BeaconConfig().SlotsPerEpoch endSlot := endEpoch * params.BeaconConfig().SlotsPerEpoch
commIds := []uint64{} var commIds []uint64
for i := currentSlot; i <= endSlot; i++ { for i := currentSlot; i <= endSlot; i++ {
commIds = append(commIds, cache.SubnetIDs.GetAttesterSubnetIDs(i)...) commIds = append(commIds, cache.SubnetIDs.GetAttesterSubnetIDs(i)...)
} }

View File

@@ -12,8 +12,8 @@ import (
func TestSortedObj_SortBlocksRoots(t *testing.T) { func TestSortedObj_SortBlocksRoots(t *testing.T) {
source := rand.NewSource(33) source := rand.NewSource(33)
randGen := rand.New(source) randGen := rand.New(source)
blks := []*ethpb.SignedBeaconBlock{} var blks []*ethpb.SignedBeaconBlock
roots := [][32]byte{} var roots [][32]byte
randFunc := func() int64 { randFunc := func() int64 {
return randGen.Int63n(50) return randGen.Int63n(50)
} }
@@ -45,8 +45,8 @@ func TestSortedObj_SortBlocksRoots(t *testing.T) {
func TestSortedObj_NoDuplicates(t *testing.T) { func TestSortedObj_NoDuplicates(t *testing.T) {
source := rand.NewSource(33) source := rand.NewSource(33)
randGen := rand.New(source) randGen := rand.New(source)
blks := []*ethpb.SignedBeaconBlock{} var blks []*ethpb.SignedBeaconBlock
roots := [][32]byte{} var roots [][32]byte
randFunc := func() int64 { randFunc := func() int64 {
return randGen.Int63n(50) return randGen.Int63n(50)
} }

View File

@@ -29,7 +29,7 @@ const depositGasLimit = 4000000
// StartValidatorClients starts the configured amount of validators, also sending and mining their validator deposits. // StartValidatorClients starts the configured amount of validators, also sending and mining their validator deposits.
// Should only be used on initialization. // Should only be used on initialization.
func StartValidatorClients(t *testing.T, config *types.E2EConfig, keystorePath string) { func StartValidatorClients(t *testing.T, config *types.E2EConfig) {
// Always using genesis count since using anything else would be difficult to test for. // Always using genesis count since using anything else would be difficult to test for.
validatorNum := int(params.BeaconConfig().MinGenesisActiveValidatorCount) validatorNum := int(params.BeaconConfig().MinGenesisActiveValidatorCount)
beaconNodeNum := e2e.TestParams.BeaconNodeCount beaconNodeNum := e2e.TestParams.BeaconNodeCount

View File

@@ -43,7 +43,7 @@ func runEndToEndTest(t *testing.T, config *types.E2EConfig) {
go components.SendAndMineDeposits(t, keystorePath, minGenesisActiveCount, 0) go components.SendAndMineDeposits(t, keystorePath, minGenesisActiveCount, 0)
bootnodeENR := components.StartBootnode(t) bootnodeENR := components.StartBootnode(t)
components.StartBeaconNodes(t, config, bootnodeENR) components.StartBeaconNodes(t, config, bootnodeENR)
components.StartValidatorClients(t, config, keystorePath) components.StartValidatorClients(t, config)
defer helpers.LogOutput(t, config) defer helpers.LogOutput(t, config)
if config.UsePprof { if config.UsePprof {
defer func() { defer func() {

View File

@@ -35,7 +35,7 @@ func afterNthEpoch(afterEpoch uint64) func(uint64) bool {
} }
// All epochs. // All epochs.
func allEpochs(currentEpoch uint64) bool { func allEpochs(_ uint64) bool {
return true return true
} }

View File

@@ -39,9 +39,6 @@ var BootNodeLogFileName = "bootnode.log"
// BeaconNodeLogFileName is the file name used for the beacon chain node logs. // BeaconNodeLogFileName is the file name used for the beacon chain node logs.
var BeaconNodeLogFileName = "beacon-%d.log" var BeaconNodeLogFileName = "beacon-%d.log"
// BeaconNodeCPUProfileFileName is the file name used for the beacon chain cpu profiles.
var BeaconNodeCPUProfileFileName = "beacon-cpu-%d.out"
// SlasherLogFileName is the file name used for the slasher client logs. // SlasherLogFileName is the file name used for the slasher client logs.
var SlasherLogFileName = "slasher-%d.log" var SlasherLogFileName = "slasher-%d.log"

View File

@@ -1,10 +1,6 @@
package fuzz package fuzz
import ( import (
"os"
"strings"
stateTrie "github.com/prysmaticlabs/prysm/beacon-chain/state"
"github.com/prysmaticlabs/prysm/shared/featureconfig" "github.com/prysmaticlabs/prysm/shared/featureconfig"
) )
@@ -13,28 +9,3 @@ func init() {
SkipBLSVerify: true, SkipBLSVerify: true,
}) })
} }
func fail(err error) ([]byte, bool) {
shouldPanic := false
if val, ok := os.LookupEnv("PANIC_ON_ERROR"); ok {
shouldPanic = strings.ToLower(val) == "true"
}
if shouldPanic {
panic(err)
}
return nil, false
}
func success(post *stateTrie.BeaconState) ([]byte, bool) {
if val, ok := os.LookupEnv("RETURN_SSZ_POST_STATE"); ok {
if strings.ToLower(val) != "true" {
return nil, true
}
}
result, err := post.InnerStateUnsafe().MarshalSSZ()
if err != nil {
panic(err)
}
return result, true
}

7
go.mod
View File

@@ -9,7 +9,6 @@ require (
github.com/aws/aws-sdk-go v1.33.15 // indirect github.com/aws/aws-sdk-go v1.33.15 // indirect
github.com/bazelbuild/buildtools v0.0.0-20200528175155-f4e8394f069d github.com/bazelbuild/buildtools v0.0.0-20200528175155-f4e8394f069d
github.com/bazelbuild/rules_go v0.23.2 github.com/bazelbuild/rules_go v0.23.2
github.com/btcsuite/btcd v0.20.1-beta
github.com/cespare/cp v1.1.1 // indirect github.com/cespare/cp v1.1.1 // indirect
github.com/confluentinc/confluent-kafka-go v1.4.2 // indirect github.com/confluentinc/confluent-kafka-go v1.4.2 // indirect
github.com/d4l3k/messagediff v1.2.1 github.com/d4l3k/messagediff v1.2.1
@@ -34,6 +33,7 @@ require (
github.com/golang/protobuf v1.4.2 github.com/golang/protobuf v1.4.2
github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26 github.com/golang/snappy v0.0.2-0.20200707131729-196ae77b8a26
github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa
github.com/google/gopacket v1.1.18 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/google/uuid v1.1.1 github.com/google/uuid v1.1.1
github.com/gorilla/websocket v1.4.2 github.com/gorilla/websocket v1.4.2
@@ -59,9 +59,6 @@ require (
github.com/libp2p/go-libp2p-circuit v0.3.1 github.com/libp2p/go-libp2p-circuit v0.3.1
github.com/libp2p/go-libp2p-core v0.6.1 github.com/libp2p/go-libp2p-core v0.6.1
github.com/libp2p/go-libp2p-crypto v0.1.0 github.com/libp2p/go-libp2p-crypto v0.1.0
github.com/libp2p/go-libp2p-host v0.1.0
github.com/libp2p/go-libp2p-kad-dht v0.8.3
github.com/libp2p/go-libp2p-net v0.1.0
github.com/libp2p/go-libp2p-noise v0.1.1 github.com/libp2p/go-libp2p-noise v0.1.1
github.com/libp2p/go-libp2p-pubsub v0.3.3 github.com/libp2p/go-libp2p-pubsub v0.3.3
github.com/libp2p/go-libp2p-secio v0.2.2 github.com/libp2p/go-libp2p-secio v0.2.2
@@ -69,8 +66,10 @@ require (
github.com/libp2p/go-libp2p-tls v0.1.4-0.20200421131144-8a8ad624a291 // indirect github.com/libp2p/go-libp2p-tls v0.1.4-0.20200421131144-8a8ad624a291 // indirect
github.com/libp2p/go-mplex v0.1.3 // indirect github.com/libp2p/go-mplex v0.1.3 // indirect
github.com/libp2p/go-reuseport-transport v0.0.4 // indirect github.com/libp2p/go-reuseport-transport v0.0.4 // indirect
github.com/libp2p/go-sockaddr v0.1.0 // indirect
github.com/libp2p/go-yamux v1.3.8 // indirect github.com/libp2p/go-yamux v1.3.8 // indirect
github.com/logrusorgru/aurora v2.0.3+incompatible github.com/logrusorgru/aurora v2.0.3+incompatible
github.com/lunixbochs/vtclean v1.0.0 // indirect
github.com/manifoldco/promptui v0.7.0 github.com/manifoldco/promptui v0.7.0
github.com/minio/highwayhash v1.0.0 github.com/minio/highwayhash v1.0.0
github.com/minio/sha256-simd v0.1.1 github.com/minio/sha256-simd v0.1.1

Some files were not shown because too many files have changed in this diff Show More