import {IChainForkConfig} from "@lodestar/config"; import {allForks, phase0, Root, isBlindedBeaconBlock} from "@lodestar/types"; export function blindedOrFullBlockHashTreeRoot( config: IChainForkConfig, blindedOrFull: allForks.FullOrBlindedBeaconBlock ): Root { return isBlindedBeaconBlock(blindedOrFull) ? // Blinded config.getBlindedForkTypes(blindedOrFull.slot).BeaconBlock.hashTreeRoot(blindedOrFull) : // Full config.getForkTypes(blindedOrFull.slot).BeaconBlock.hashTreeRoot(blindedOrFull); } export function blindedOrFullBlockToHeader( config: IChainForkConfig, blindedOrFull: allForks.FullOrBlindedBeaconBlock ): phase0.BeaconBlockHeader { const bodyRoot = isBlindedBeaconBlock(blindedOrFull) ? // Blinded config.getBlindedForkTypes(blindedOrFull.slot).BeaconBlockBody.hashTreeRoot(blindedOrFull.body) : // Full config.getForkTypes(blindedOrFull.slot).BeaconBlockBody.hashTreeRoot(blindedOrFull.body); return { slot: blindedOrFull.slot, proposerIndex: blindedOrFull.proposerIndex, parentRoot: blindedOrFull.parentRoot, stateRoot: blindedOrFull.stateRoot, bodyRoot, }; }