2019-08-24 17:51:00 +00:00
|
|
|
package blockchain
|
|
|
|
|
|
|
|
import (
|
2020-04-29 16:57:04 +00:00
|
|
|
"encoding/hex"
|
2020-01-27 21:48:16 +00:00
|
|
|
"fmt"
|
2021-02-15 16:33:38 +00:00
|
|
|
"time"
|
2020-01-27 21:48:16 +00:00
|
|
|
|
2021-09-30 19:00:14 +00:00
|
|
|
coreTime "github.com/prysmaticlabs/prysm/beacon-chain/core/time"
|
2021-09-21 19:59:25 +00:00
|
|
|
"github.com/prysmaticlabs/prysm/config/params"
|
2021-07-21 21:34:07 +00:00
|
|
|
ethpb "github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1"
|
2021-07-28 21:23:44 +00:00
|
|
|
"github.com/prysmaticlabs/prysm/proto/prysm/v1alpha1/block"
|
2021-09-16 09:46:29 +00:00
|
|
|
"github.com/prysmaticlabs/prysm/runtime/version"
|
2021-09-15 00:09:04 +00:00
|
|
|
prysmTime "github.com/prysmaticlabs/prysm/time"
|
2019-08-24 17:51:00 +00:00
|
|
|
"github.com/sirupsen/logrus"
|
|
|
|
)
|
|
|
|
|
|
|
|
var log = logrus.WithField("prefix", "blockchain")
|
|
|
|
|
|
|
|
// logs state transition related data every slot.
|
2021-07-23 20:10:15 +00:00
|
|
|
func logStateTransitionData(b block.BeaconBlock) {
|
2021-08-09 20:05:46 +00:00
|
|
|
log := log.WithField("slot", b.Slot())
|
2021-05-26 16:19:54 +00:00
|
|
|
if len(b.Body().Attestations()) > 0 {
|
|
|
|
log = log.WithField("attestations", len(b.Body().Attestations()))
|
2021-02-18 19:08:27 +00:00
|
|
|
}
|
2021-05-26 16:19:54 +00:00
|
|
|
if len(b.Body().Deposits()) > 0 {
|
|
|
|
log = log.WithField("deposits", len(b.Body().Deposits()))
|
2021-02-18 19:08:27 +00:00
|
|
|
}
|
2021-05-26 16:19:54 +00:00
|
|
|
if len(b.Body().AttesterSlashings()) > 0 {
|
|
|
|
log = log.WithField("attesterSlashings", len(b.Body().AttesterSlashings()))
|
2021-02-18 19:08:27 +00:00
|
|
|
}
|
2021-05-26 16:19:54 +00:00
|
|
|
if len(b.Body().ProposerSlashings()) > 0 {
|
|
|
|
log = log.WithField("proposerSlashings", len(b.Body().ProposerSlashings()))
|
2021-02-18 19:08:27 +00:00
|
|
|
}
|
2021-05-26 16:19:54 +00:00
|
|
|
if len(b.Body().VoluntaryExits()) > 0 {
|
|
|
|
log = log.WithField("voluntaryExits", len(b.Body().VoluntaryExits()))
|
2021-02-18 19:08:27 +00:00
|
|
|
}
|
2021-08-26 05:01:09 +00:00
|
|
|
if b.Version() == version.Altair {
|
|
|
|
agg, err := b.Body().SyncAggregate()
|
|
|
|
if err == nil {
|
|
|
|
log = log.WithField("syncBitsCount", agg.SyncCommitteeBits.Count())
|
|
|
|
}
|
|
|
|
}
|
2021-02-18 19:08:27 +00:00
|
|
|
log.Info("Finished applying state transition")
|
2019-08-24 17:51:00 +00:00
|
|
|
}
|
2020-01-27 21:48:16 +00:00
|
|
|
|
2021-07-23 20:10:15 +00:00
|
|
|
func logBlockSyncStatus(block block.BeaconBlock, blockRoot [32]byte, finalized *ethpb.Checkpoint, receivedTime time.Time, genesisTime uint64) error {
|
2021-09-30 19:00:14 +00:00
|
|
|
startTime, err := coreTime.SlotToTime(genesisTime, block.Slot())
|
2021-02-10 17:24:40 +00:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
2021-02-22 16:32:23 +00:00
|
|
|
log.WithFields(logrus.Fields{
|
2021-05-26 16:19:54 +00:00
|
|
|
"slot": block.Slot(),
|
|
|
|
"slotInEpoch": block.Slot() % params.BeaconConfig().SlotsPerEpoch,
|
2021-02-22 16:32:23 +00:00
|
|
|
"block": fmt.Sprintf("0x%s...", hex.EncodeToString(blockRoot[:])[:8]),
|
2021-09-30 19:00:14 +00:00
|
|
|
"epoch": coreTime.SlotToEpoch(block.Slot()),
|
2021-02-22 16:32:23 +00:00
|
|
|
"finalizedEpoch": finalized.Epoch,
|
|
|
|
"finalizedRoot": fmt.Sprintf("0x%s...", hex.EncodeToString(finalized.Root)[:8]),
|
|
|
|
}).Info("Synced new block")
|
2020-04-29 16:57:04 +00:00
|
|
|
log.WithFields(logrus.Fields{
|
2021-02-15 16:33:38 +00:00
|
|
|
"slot": block.Slot,
|
2021-09-15 00:09:04 +00:00
|
|
|
"sinceSlotStartTime": prysmTime.Now().Sub(startTime),
|
|
|
|
"chainServiceProcessedTime": prysmTime.Now().Sub(receivedTime),
|
2021-02-22 16:32:23 +00:00
|
|
|
}).Debug("Sync new block times")
|
2021-02-10 17:24:40 +00:00
|
|
|
return nil
|
2020-04-29 16:57:04 +00:00
|
|
|
}
|