1414 eth/ trie/ ordered_trie,
1515 eth/ common/ [hashes, headers_rlp, blocks_rlp, receipts_rlp, transactions_rlp],
1616 eth/ p2p/ discoveryv5/ [protocol, enr],
17+ beacon_chain/ spec/ presets,
1718 ../../ common/ common_types,
1819 ../../ database/ content_db,
1920 ../../ network_metadata,
@@ -27,7 +28,7 @@ from eth/common/accounts import EMPTY_ROOT_HASH
2728logScope:
2829 topics = " portal_hist"
2930
30- export blocks_rlp
31+ export blocks_rlp, presets
3132
3233const pingExtensionCapabilities = {CapabilitiesType , HistoryRadiusType }
3334
3637 portalProtocol* : PortalProtocol
3738 contentDB* : ContentDB
3839 contentQueue* : AsyncQueue [(Opt [NodeId ], ContentKeysList , seq [seq [byte ]])]
39- accumulator * : FinishedHistoricalHashesAccumulator
40- historicalRoots * : HistoricalRoots
40+ cfg * : RuntimeConfig
41+ accumulators * : HistoryAccumulators
4142 processContentLoop: Future [void ]
4243 statusLogLoop: Future [void ]
4344 contentRequestRetries: int
@@ -146,7 +147,9 @@ proc getVerifiedBlockHeader*(
146147 debug " Failed fetching block header with proof from the network"
147148 return Opt .none (Header )
148149
149- header = validateCanonicalHeaderBytes (headerContent.content, id, n.accumulator).valueOr:
150+ header = validateCanonicalHeaderBytes (
151+ headerContent.content, id, n.accumulators, n.cfg
152+ ).valueOr:
150153 n.portalProtocol.banNode (
151154 headerContent.receivedFrom.id, NodeBanDurationContentLookupFailedValidation
152155 )
@@ -304,7 +307,7 @@ proc validateContent(
304307 case contentKey.contentType
305308 of blockHeader:
306309 let _ = validateCanonicalHeaderBytes (
307- content, contentKey.blockHeaderKey.blockHash, n.accumulator
310+ content, contentKey.blockHeaderKey.blockHash, n.accumulators, n.cfg
308311 ).valueOr:
309312 return err (" Failed validating block header: " & error)
310313
@@ -327,7 +330,7 @@ proc validateContent(
327330 ok ()
328331 of blockNumber:
329332 let _ = validateCanonicalHeaderBytes (
330- content, contentKey.blockNumberKey.blockNumber, n.accumulator
333+ content, contentKey.blockNumberKey.blockNumber, n.accumulators, n.cfg
331334 ).valueOr:
332335 return err (" Failed validating block header: " & error)
333336
@@ -341,7 +344,8 @@ proc new*(
341344 baseProtocol: protocol.Protocol ,
342345 contentDB: ContentDB ,
343346 streamManager: StreamManager ,
344- accumulator: FinishedHistoricalHashesAccumulator ,
347+ cfg: RuntimeConfig ,
348+ accumulator: FinishedHistoricalHashesAccumulator = loadAccumulator (),
345349 historicalRoots: HistoricalRoots = loadHistoricalRoots (),
346350 bootstrapRecords: openArray [Record ] = [],
347351 portalConfig: PortalProtocolConfig = defaultPortalProtocolConfig,
@@ -370,8 +374,10 @@ proc new*(
370374 portalProtocol: portalProtocol,
371375 contentDB: contentDB,
372376 contentQueue: contentQueue,
373- accumulator: accumulator,
374- historicalRoots: historicalRoots,
377+ cfg: cfg,
378+ accumulators: HistoryAccumulators (
379+ historicalHashes: accumulator, historicalRoots: historicalRoots
380+ ),
375381 contentRequestRetries: contentRequestRetries,
376382 )
377383
@@ -432,7 +438,8 @@ proc statusLogLoop(n: HistoryNetwork) {.async: (raises: []).} =
432438proc start * (n: HistoryNetwork ) =
433439 info " Starting Portal execution history network" ,
434440 protocolId = n.portalProtocol.protocolId,
435- accumulatorRoot = hash_tree_root (n.accumulator)
441+ historicalHashesAccumulatorRoot = hash_tree_root (n.accumulators.historicalHashes),
442+ historiricalRootsRoot = hash_tree_root (n.accumulators.historicalRoots)
436443
437444 n.portalProtocol.start ()
438445
0 commit comments