Build Blocks in Parallel Permanently (#13008)

This commit is contained in:
Nishant Das 2023-10-05 21:45:11 +08:00 committed by GitHub
parent f9a40ef111
commit ffaef83634
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 84 deletions

View File

@ -20,7 +20,6 @@ import (
"github.com/prysmaticlabs/prysm/v4/beacon-chain/core/transition"
"github.com/prysmaticlabs/prysm/v4/beacon-chain/db/kv"
"github.com/prysmaticlabs/prysm/v4/beacon-chain/state"
"github.com/prysmaticlabs/prysm/v4/config/features"
fieldparams "github.com/prysmaticlabs/prysm/v4/config/fieldparams"
"github.com/prysmaticlabs/prysm/v4/config/params"
"github.com/prysmaticlabs/prysm/v4/consensus-types/blocks"
@ -109,70 +108,9 @@ func (vs *Server) GetBeaconBlock(ctx context.Context, req *ethpb.BlockRequest) (
var blobBundle *enginev1.BlobsBundle
var blindBlobBundle *enginev1.BlindedBlobsBundle
if features.Get().BuildBlockParallel {
blindBlobBundle, blobBundle, err = vs.BuildBlockParallel(ctx, sBlk, head, req.SkipMevBoost)
if err != nil {
return nil, errors.Wrap(err, "could not build block in parallel")
}
} else {
// Set eth1 data.
eth1Data, err := vs.eth1DataMajorityVote(ctx, head)
if err != nil {
eth1Data = &ethpb.Eth1Data{DepositRoot: params.BeaconConfig().ZeroHash[:], BlockHash: params.BeaconConfig().ZeroHash[:]}
log.WithError(err).Error("Could not get eth1data")
}
sBlk.SetEth1Data(eth1Data)
// Set deposit and attestation.
deposits, atts, err := vs.packDepositsAndAttestations(ctx, head, eth1Data) // TODO: split attestations and deposits
if err != nil {
sBlk.SetDeposits([]*ethpb.Deposit{})
sBlk.SetAttestations([]*ethpb.Attestation{})
log.WithError(err).Error("Could not pack deposits and attestations")
} else {
sBlk.SetDeposits(deposits)
sBlk.SetAttestations(atts)
}
// Set slashings.
validProposerSlashings, validAttSlashings := vs.getSlashings(ctx, head)
sBlk.SetProposerSlashings(validProposerSlashings)
sBlk.SetAttesterSlashings(validAttSlashings)
// Set exits.
sBlk.SetVoluntaryExits(vs.getExits(head, req.Slot))
// Set sync aggregate. New in Altair.
vs.setSyncAggregate(ctx, sBlk)
// Get local and builder (if enabled) payloads. Set execution data. New in Bellatrix.
var overrideBuilder bool
var localPayload interfaces.ExecutionData
localPayload, blobBundle, overrideBuilder, err = vs.getLocalPayloadAndBlobs(ctx, sBlk.Block(), head)
if err != nil {
return nil, status.Errorf(codes.Internal, "Could not get local payload: %v", err)
}
// There's no reason to try to get a builder bid if local override is true.
var builderPayload interfaces.ExecutionData
overrideBuilder = req.SkipMevBoost || overrideBuilder // Skip using mev-boost if requested by the caller.
if !overrideBuilder {
builderPayload, blindBlobBundle, err = vs.getBuilderPayloadAndBlobs(ctx, sBlk.Block().Slot(), sBlk.Block().ProposerIndex())
if err != nil {
builderGetPayloadMissCount.Inc()
log.WithError(err).Error("Could not get builder payload")
}
}
if err := setExecutionData(ctx, sBlk, localPayload, builderPayload); err != nil {
return nil, status.Errorf(codes.Internal, "Could not set execution data: %v", err)
}
// Set bls to execution change. New in Capella.
vs.setBlsToExecData(sBlk, head)
if err := setKzgCommitments(sBlk, blobBundle, blindBlobBundle); err != nil {
return nil, status.Errorf(codes.Internal, "Could not set kzg commitment: %v", err)
}
blindBlobBundle, blobBundle, err = vs.BuildBlockParallel(ctx, sBlk, head, req.SkipMevBoost)
if err != nil {
return nil, errors.Wrap(err, "could not build block in parallel")
}
sr, err := vs.computeStateRoot(ctx, sBlk)

View File

@ -69,8 +69,7 @@ type Flags struct {
PrepareAllPayloads bool // PrepareAllPayloads informs the engine to prepare a block on every slot.
BuildBlockParallel bool // BuildBlockParallel builds beacon block for proposer in parallel.
AggregateParallel bool // AggregateParallel aggregates attestations in parallel.
AggregateParallel bool // AggregateParallel aggregates attestations in parallel.
// KeystoreImportDebounceInterval specifies the time duration the validator waits to reload new keys if they have
// changed on disk. This feature is for advanced use cases only.
@ -237,11 +236,6 @@ func ConfigureBeaconChain(ctx *cli.Context) error {
logEnabled(prepareAllPayloads)
cfg.PrepareAllPayloads = true
}
cfg.BuildBlockParallel = true
if ctx.IsSet(disableBuildBlockParallel.Name) {
logEnabled(disableBuildBlockParallel)
cfg.BuildBlockParallel = false
}
cfg.AggregateParallel = true
if ctx.IsSet(disableAggregateParallel.Name) {
logEnabled(disableAggregateParallel)

View File

@ -48,6 +48,11 @@ var (
Usage: deprecatedUsage,
Hidden: true,
}
deprecatedDisableBuildBlockParallel = &cli.BoolFlag{
Name: "disable-build-block-parallel",
Usage: deprecatedUsage,
Hidden: true,
}
)
// Deprecated flags for both the beacon node and validator client.
@ -60,6 +65,7 @@ var deprecatedFlags = []cli.Flag{
deprecatedEnableRegistrationCache,
deprecatedAggregateParallel,
deprecatedEnableOptionalEngineMethods,
deprecatedDisableBuildBlockParallel,
}
// deprecatedBeaconFlags contains flags that are still used by other components

View File

@ -140,10 +140,6 @@ var (
Name: "prepare-all-payloads",
Usage: "Informs the engine to prepare all local payloads. Useful for relayers and builders",
}
disableBuildBlockParallel = &cli.BoolFlag{
Name: "disable-build-block-parallel",
Usage: "Disables building a beacon block in parallel for consensus and execution",
}
enableEIP4881 = &cli.BoolFlag{
Name: "enable-eip-4881",
Usage: "Enables the deposit tree specified in EIP4881",
@ -211,7 +207,6 @@ var BeaconChainFlags = append(deprecatedBeaconFlags, append(deprecatedFlags, []c
enableVerboseSigVerification,
disableOptionalEngineMethods,
prepareAllPayloads,
disableBuildBlockParallel,
aggregateFirstInterval,
aggregateSecondInterval,
aggregateThirdInterval,

View File

@ -7,12 +7,13 @@
package eth
import (
_ "github.com/prysmaticlabs/prysm/v4/proto/eth/ext"
github_com_prysmaticlabs_prysm_v4_consensus_types_primitives "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
github_com_prysmaticlabs_prysm_v4_consensus_types_primitives "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
_ "github.com/prysmaticlabs/prysm/v4/proto/eth/ext"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)
const (

View File

@ -1,3 +0,0 @@
// +build ignore
package ignore