fix missing backfill when restarting node
When node is restarted before backfill has started but after some blocks have finalized with forward sync, we would not start the backfill. * also clean up one last `SomeSome`
This commit is contained in:
parent
1760f4d7a7
commit
40fe8f5336
|
@ -69,7 +69,7 @@ func init*(T: type BlockRef, root: Eth2Digest, blck: SomeForkyBeaconBlock):
|
||||||
BlockRef =
|
BlockRef =
|
||||||
BlockRef.init(root, blck.slot)
|
BlockRef.init(root, blck.slot)
|
||||||
|
|
||||||
func toBlockId*(blck: SomeSomeSignedBeaconBlock): BlockId =
|
func toBlockId*(blck: SomeForkySignedBeaconBlock): BlockId =
|
||||||
BlockId(root: blck.root, slot: blck.message.slot)
|
BlockId(root: blck.root, slot: blck.message.slot)
|
||||||
|
|
||||||
func toBlockId*(blck: ForkedSignedBeaconBlock): BlockId =
|
func toBlockId*(blck: ForkedSignedBeaconBlock): BlockId =
|
||||||
|
|
|
@ -487,7 +487,7 @@ proc init*(T: type ChainDAGRef, cfg: RuntimeConfig, db: BeaconChainDB,
|
||||||
|
|
||||||
var
|
var
|
||||||
backfillBlocks = newSeq[Eth2Digest](tailRef.slot.int)
|
backfillBlocks = newSeq[Eth2Digest](tailRef.slot.int)
|
||||||
backfill = BeaconBlockSummary(slot: GENESIS_SLOT)
|
backfill = withBlck(tailBlock): blck.message.toBeaconBlockSummary()
|
||||||
midRef: BlockRef
|
midRef: BlockRef
|
||||||
backRoot: Option[Eth2Digest]
|
backRoot: Option[Eth2Digest]
|
||||||
startTick = Moment.now()
|
startTick = Moment.now()
|
||||||
|
@ -540,9 +540,6 @@ proc init*(T: type ChainDAGRef, cfg: RuntimeConfig, db: BeaconChainDB,
|
||||||
if backRoot.isNone():
|
if backRoot.isNone():
|
||||||
backfill = blck.summary
|
backfill = blck.summary
|
||||||
elif blck.summary.slot == tailRef.slot:
|
elif blck.summary.slot == tailRef.slot:
|
||||||
if backRoot.isNone():
|
|
||||||
backfill = blck.summary
|
|
||||||
|
|
||||||
if curRef == nil:
|
if curRef == nil:
|
||||||
curRef = tailRef
|
curRef = tailRef
|
||||||
headRef = tailRef
|
headRef = tailRef
|
||||||
|
|
|
@ -314,15 +314,6 @@ type
|
||||||
SomeBeaconBlock* = BeaconBlock | SigVerifiedBeaconBlock | TrustedBeaconBlock
|
SomeBeaconBlock* = BeaconBlock | SigVerifiedBeaconBlock | TrustedBeaconBlock
|
||||||
SomeBeaconBlockBody* = BeaconBlockBody | SigVerifiedBeaconBlockBody | TrustedBeaconBlockBody
|
SomeBeaconBlockBody* = BeaconBlockBody | SigVerifiedBeaconBlockBody | TrustedBeaconBlockBody
|
||||||
|
|
||||||
# TODO see above, re why does it fail
|
|
||||||
SomeSomeBeaconBlockBody* =
|
|
||||||
BeaconBlockBody | SigVerifiedBeaconBlockBody | TrustedBeaconBlockBody |
|
|
||||||
altair.BeaconBlockBody | altair.SigVerifiedBeaconBlockBody | altair.TrustedBeaconBlockBody |
|
|
||||||
phase0.BeaconBlockBody | phase0.SigVerifiedBeaconBlockBody | phase0.TrustedBeaconBlockBody
|
|
||||||
#SomeSomeBeaconBlockBody* = SomeBeaconBlockBody | phase0.SomeBeaconBlockBody
|
|
||||||
|
|
||||||
SomeSomeSignedBeaconBlock* = SomeSignedBeaconBlock | altair.SomeSignedBeaconBlock | phase0.SomeSignedBeaconBlock
|
|
||||||
|
|
||||||
BlockParams = object
|
BlockParams = object
|
||||||
parentHash*: string
|
parentHash*: string
|
||||||
timestamp*: string
|
timestamp*: string
|
||||||
|
|
|
@ -61,6 +61,26 @@ type
|
||||||
Altair
|
Altair
|
||||||
Bellatrix
|
Bellatrix
|
||||||
|
|
||||||
|
ForkyBeaconBlockBody* =
|
||||||
|
phase0.BeaconBlockBody |
|
||||||
|
altair.BeaconBlockBody |
|
||||||
|
bellatrix.BeaconBlockBody
|
||||||
|
|
||||||
|
ForkySigVerifiedBeaconBlockBody* =
|
||||||
|
phase0.SigVerifiedBeaconBlockBody |
|
||||||
|
altair.SigVerifiedBeaconBlockBody |
|
||||||
|
bellatrix.SigVerifiedBeaconBlockBody
|
||||||
|
|
||||||
|
ForkyTrustedBeaconBlockBody* =
|
||||||
|
phase0.TrustedBeaconBlockBody |
|
||||||
|
altair.TrustedBeaconBlockBody |
|
||||||
|
bellatrix.TrustedBeaconBlockBody
|
||||||
|
|
||||||
|
SomeForkyBeaconBlockBody* =
|
||||||
|
ForkyBeaconBlockBody |
|
||||||
|
ForkySigVerifiedBeaconBlockBody |
|
||||||
|
ForkyTrustedBeaconBlockBody
|
||||||
|
|
||||||
ForkyBeaconBlock* =
|
ForkyBeaconBlock* =
|
||||||
phase0.BeaconBlock |
|
phase0.BeaconBlock |
|
||||||
altair.BeaconBlock |
|
altair.BeaconBlock |
|
||||||
|
|
|
@ -73,7 +73,7 @@ func `xor`[T: array](a, b: T): T =
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.9/specs/phase0/beacon-chain.md#randao
|
# https://github.com/ethereum/consensus-specs/blob/v1.1.9/specs/phase0/beacon-chain.md#randao
|
||||||
proc process_randao(
|
proc process_randao(
|
||||||
state: var ForkyBeaconState, body: SomeSomeBeaconBlockBody, flags: UpdateFlags,
|
state: var ForkyBeaconState, body: SomeForkyBeaconBlockBody, flags: UpdateFlags,
|
||||||
cache: var StateCache): Result[void, cstring] =
|
cache: var StateCache): Result[void, cstring] =
|
||||||
let
|
let
|
||||||
proposer_index = get_beacon_proposer_index(state, cache)
|
proposer_index = get_beacon_proposer_index(state, cache)
|
||||||
|
@ -105,7 +105,7 @@ proc process_randao(
|
||||||
ok()
|
ok()
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.9/specs/phase0/beacon-chain.md#eth1-data
|
# https://github.com/ethereum/consensus-specs/blob/v1.1.9/specs/phase0/beacon-chain.md#eth1-data
|
||||||
func process_eth1_data(state: var ForkyBeaconState, body: SomeSomeBeaconBlockBody): Result[void, cstring]=
|
func process_eth1_data(state: var ForkyBeaconState, body: SomeForkyBeaconBlockBody): Result[void, cstring]=
|
||||||
if not state.eth1_data_votes.add body.eth1_data:
|
if not state.eth1_data_votes.add body.eth1_data:
|
||||||
# Count is reset in process_final_updates, so this should never happen
|
# Count is reset in process_final_updates, so this should never happen
|
||||||
return err("process_eth1_data: no more room for eth1 data")
|
return err("process_eth1_data: no more room for eth1 data")
|
||||||
|
@ -398,7 +398,7 @@ proc process_voluntary_exit*(
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.1.9/specs/phase0/beacon-chain.md#operations
|
# https://github.com/ethereum/consensus-specs/blob/v1.1.9/specs/phase0/beacon-chain.md#operations
|
||||||
proc process_operations(cfg: RuntimeConfig,
|
proc process_operations(cfg: RuntimeConfig,
|
||||||
state: var ForkyBeaconState,
|
state: var ForkyBeaconState,
|
||||||
body: SomeSomeBeaconBlockBody,
|
body: SomeForkyBeaconBlockBody,
|
||||||
base_reward_per_increment: Gwei,
|
base_reward_per_increment: Gwei,
|
||||||
flags: UpdateFlags,
|
flags: UpdateFlags,
|
||||||
cache: var StateCache): Result[void, cstring] =
|
cache: var StateCache): Result[void, cstring] =
|
||||||
|
|
Loading…
Reference in New Issue