mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-14 22:34:23 +00:00
7d9e1d8607
* Code cosmetics * Aristo+Kvt: Fix api wrappers why: Api setup killed the backend descriptor when backend mapping was disabled. * Aristo: Implement masked profiling entries why: Database backend should be listed but not counted in tally * CoreDb: Simplify backend() methods why: DBMS backend access Was provided very early and over engineered. Now there are only two backend machines, one for `Kvt` and the other one for an `Mpt` available only via new API. * CoreDb: Code cleanup regarding descriptor types * CoreDb: Refactor/redefine `persistent()` methods why: There were `persistent()` methods for any type of caching storage facilities `Kvt`, `Mpt`, `Phk`, and `Acc`. Now there is only a single `persistent()` method storing all facilities in tandem (similar to how transactions work.) For non shared `Kvt` tables, there is now an extra storage method `saveOffSite()`. * CoreDb lingo update: `trie` becomes `column` why: Notion of a `trie` is pretty much hidden by the new `CoreDb` api. Revealed are sort of database columns for accounts an storage data, any of which have an internal state represented by a Keccack hash. So a `trie` or `MPT` becomes a `column` and a `rootHash` becomes a column state. * Aristo: rename backend filed `filters` => `journal` * Update full sync logging details: + Disable eth handler noise while syncing + Log journal depth (if available) * Fix copyright year * Fix cruft and unwanted imports
53 lines
1.9 KiB
Nim
53 lines
1.9 KiB
Nim
# Nimbus
|
|
# Copyright (c) 2021-2024 Status Research & Development GmbH
|
|
# Licensed and distributed under either of
|
|
# * MIT license (license terms in the root directory or at
|
|
# https://opensource.org/licenses/MIT).
|
|
# * Apache v2 license (license terms in the root directory or at
|
|
# https://www.apache.org/licenses/LICENSE-2.0).
|
|
# at your option. This file may not be copied, modified, or distributed
|
|
# except according to those terms.
|
|
|
|
{.push raises:[].}
|
|
|
|
import
|
|
eth/p2p,
|
|
chronos,
|
|
../../db/aristo/aristo_desc,
|
|
../sync_desc,
|
|
../misc/[best_pivot, block_queue, ticker]
|
|
|
|
type
|
|
PivotState* = enum
|
|
PivotStateInitial, ## Initial state
|
|
FirstPivotSeen, ## Starting, first pivot seen
|
|
FirstPivotAccepted, ## Accepted, waiting for second
|
|
FirstPivotUseRegardless ## Force pivot if available
|
|
PivotRunMode ## SNAFU after some magic
|
|
|
|
FullBuddyData* = object
|
|
## Local descriptor data extension
|
|
pivot*: BestPivotWorkerRef ## Local pivot worker descriptor
|
|
bQueue*: BlockQueueWorkerRef ## Block queue worker
|
|
|
|
FullCtxData* = object
|
|
## Globally shared data extension
|
|
rng*: ref HmacDrbgContext ## Random generator, pre-initialised
|
|
pivot*: BestPivotCtxRef ## Global pivot descriptor
|
|
pivotState*: PivotState ## For initial pivot control
|
|
pivotStamp*: Moment ## `PivotState` driven timing control
|
|
bCtx*: BlockQueueCtxRef ## Global block queue descriptor
|
|
suspendAt*: BlockNumber ## Suspend if persistent head is larger
|
|
|
|
enableTicker*: bool ## Advisary, extra level of gossip
|
|
ticker*: TickerRef ## Logger ticker
|
|
journal*: QidSchedRef ## Journal access for logging (if any)
|
|
|
|
FullBuddyRef* = BuddyRef[FullCtxData,FullBuddyData]
|
|
## Extended worker peer descriptor
|
|
|
|
FullCtxRef* = CtxRef[FullCtxData]
|
|
## Extended global descriptor
|
|
|
|
# End
|