mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-10 13:01:21 +00:00
37da9ec1e3
instead of converting from ssz -> struct -> ssz, it may be better to just stay as ssz, then use methods to read the data. this pr explores this concept, while maintaining compatiblity with the existing codebase.
41 lines
1.6 KiB
Go
41 lines
1.6 KiB
Go
package caplin1
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/Giulio2002/bls"
|
|
"github.com/ledgerwatch/erigon-lib/gointerfaces/sentinel"
|
|
"github.com/ledgerwatch/erigon/cl/clparams"
|
|
"github.com/ledgerwatch/erigon/cl/cltypes"
|
|
"github.com/ledgerwatch/erigon/cl/rpc"
|
|
"github.com/ledgerwatch/erigon/cmd/erigon-cl/core/state"
|
|
"github.com/ledgerwatch/erigon/cmd/erigon-cl/execution_client"
|
|
"github.com/ledgerwatch/erigon/cmd/erigon-cl/forkchoice"
|
|
"github.com/ledgerwatch/erigon/cmd/erigon-cl/network"
|
|
"github.com/ledgerwatch/erigon/cmd/erigon-cl/stages"
|
|
"github.com/ledgerwatch/log/v3"
|
|
|
|
"github.com/ledgerwatch/erigon/eth/stagedsync"
|
|
)
|
|
|
|
func RunCaplinPhase1(ctx context.Context, sentinel sentinel.SentinelClient, beaconConfig *clparams.BeaconChainConfig, genesisConfig *clparams.GenesisConfig, engine execution_client.ExecutionEngine, state *state.BeaconState) error {
|
|
beaconRpc := rpc.NewBeaconRpcP2P(ctx, sentinel, beaconConfig, genesisConfig)
|
|
downloader := network.NewForwardBeaconDownloader(ctx, beaconRpc)
|
|
|
|
forkChoice, err := forkchoice.NewForkChoiceStore(state, engine, true)
|
|
if err != nil {
|
|
log.Error("Could not create forkchoice", "err", err)
|
|
return err
|
|
}
|
|
bls.SetEnabledCaching(true)
|
|
state.ForEachValidator(func(v *cltypes.Validator, idx, total int) bool {
|
|
pk := v.PublicKey()
|
|
if err := bls.LoadPublicKeyIntoCache(pk[:], false); err != nil {
|
|
panic(err)
|
|
}
|
|
return true
|
|
})
|
|
gossipManager := network.NewGossipReceiver(ctx, sentinel, forkChoice, beaconConfig, genesisConfig)
|
|
return stages.SpawnStageForkChoice(stages.StageForkChoice(nil, downloader, genesisConfig, beaconConfig, state, nil, gossipManager, forkChoice), &stagedsync.StageState{ID: "Caplin"}, nil, ctx)
|
|
}
|