2023-05-23 17:33:13 +00:00
|
|
|
package deneb
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/prysmaticlabs/prysm/v4/beacon-chain/core/time"
|
|
|
|
"github.com/prysmaticlabs/prysm/v4/beacon-chain/state"
|
|
|
|
state_native "github.com/prysmaticlabs/prysm/v4/beacon-chain/state/state-native"
|
|
|
|
"github.com/prysmaticlabs/prysm/v4/config/params"
|
|
|
|
enginev1 "github.com/prysmaticlabs/prysm/v4/proto/engine/v1"
|
|
|
|
ethpb "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
|
|
|
)
|
|
|
|
|
|
|
|
// UpgradeToDeneb updates inputs a generic state to return the version Deneb state.
|
|
|
|
func UpgradeToDeneb(state state.BeaconState) (state.BeaconState, error) {
|
|
|
|
epoch := time.CurrentEpoch(state)
|
|
|
|
|
|
|
|
currentSyncCommittee, err := state.CurrentSyncCommittee()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
nextSyncCommittee, err := state.NextSyncCommittee()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
prevEpochParticipation, err := state.PreviousEpochParticipation()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
currentEpochParticipation, err := state.CurrentEpochParticipation()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
inactivityScores, err := state.InactivityScores()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
payloadHeader, err := state.LatestExecutionPayloadHeader()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
txRoot, err := payloadHeader.TransactionsRoot()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
wdRoot, err := payloadHeader.WithdrawalsRoot()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
wi, err := state.NextWithdrawalIndex()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
vi, err := state.NextWithdrawalValidatorIndex()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
summaries, err := state.HistoricalSummaries()
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
|
|
|
s := ðpb.BeaconStateDeneb{
|
|
|
|
GenesisTime: state.GenesisTime(),
|
|
|
|
GenesisValidatorsRoot: state.GenesisValidatorsRoot(),
|
|
|
|
Slot: state.Slot(),
|
|
|
|
Fork: ðpb.Fork{
|
|
|
|
PreviousVersion: state.Fork().CurrentVersion,
|
|
|
|
CurrentVersion: params.BeaconConfig().DenebForkVersion,
|
|
|
|
Epoch: epoch,
|
|
|
|
},
|
|
|
|
LatestBlockHeader: state.LatestBlockHeader(),
|
|
|
|
BlockRoots: state.BlockRoots(),
|
|
|
|
StateRoots: state.StateRoots(),
|
|
|
|
HistoricalRoots: [][]byte{},
|
|
|
|
Eth1Data: state.Eth1Data(),
|
|
|
|
Eth1DataVotes: state.Eth1DataVotes(),
|
|
|
|
Eth1DepositIndex: state.Eth1DepositIndex(),
|
|
|
|
Validators: state.Validators(),
|
|
|
|
Balances: state.Balances(),
|
|
|
|
RandaoMixes: state.RandaoMixes(),
|
|
|
|
Slashings: state.Slashings(),
|
|
|
|
PreviousEpochParticipation: prevEpochParticipation,
|
|
|
|
CurrentEpochParticipation: currentEpochParticipation,
|
|
|
|
JustificationBits: state.JustificationBits(),
|
|
|
|
PreviousJustifiedCheckpoint: state.PreviousJustifiedCheckpoint(),
|
|
|
|
CurrentJustifiedCheckpoint: state.CurrentJustifiedCheckpoint(),
|
|
|
|
FinalizedCheckpoint: state.FinalizedCheckpoint(),
|
|
|
|
InactivityScores: inactivityScores,
|
|
|
|
CurrentSyncCommittee: currentSyncCommittee,
|
|
|
|
NextSyncCommittee: nextSyncCommittee,
|
|
|
|
LatestExecutionPayloadHeader: &enginev1.ExecutionPayloadHeaderDeneb{
|
|
|
|
ParentHash: payloadHeader.ParentHash(),
|
|
|
|
FeeRecipient: payloadHeader.FeeRecipient(),
|
|
|
|
StateRoot: payloadHeader.StateRoot(),
|
|
|
|
ReceiptsRoot: payloadHeader.ReceiptsRoot(),
|
|
|
|
LogsBloom: payloadHeader.LogsBloom(),
|
|
|
|
PrevRandao: payloadHeader.PrevRandao(),
|
|
|
|
BlockNumber: payloadHeader.BlockNumber(),
|
|
|
|
GasLimit: payloadHeader.GasLimit(),
|
|
|
|
GasUsed: payloadHeader.GasUsed(),
|
|
|
|
Timestamp: payloadHeader.Timestamp(),
|
|
|
|
ExtraData: payloadHeader.ExtraData(),
|
|
|
|
BaseFeePerGas: payloadHeader.BaseFeePerGas(),
|
|
|
|
BlockHash: payloadHeader.BlockHash(),
|
2023-07-31 15:02:42 +00:00
|
|
|
ExcessBlobGas: 0,
|
|
|
|
BlobGasUsed: 0,
|
2023-05-23 17:33:13 +00:00
|
|
|
TransactionsRoot: txRoot,
|
|
|
|
WithdrawalsRoot: wdRoot,
|
|
|
|
},
|
|
|
|
NextWithdrawalIndex: wi,
|
|
|
|
NextWithdrawalValidatorIndex: vi,
|
|
|
|
HistoricalSummaries: summaries,
|
|
|
|
}
|
|
|
|
|
|
|
|
return state_native.InitializeFromProtoUnsafeDeneb(s)
|
|
|
|
}
|