mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-24 11:11:59 +00:00
657379f484
* Register paths for added leafs because of trie re-balancing why: While the payload would not change, the prefix in the leaf vertex would. So it needs to be flagged for hash recompilation for the `hashify()` module. also: Make sure that `Hike` paths which might have vertex links into the backend filter are replaced by vertex copies before manipulating. Otherwise the vertices on the immutable filter might be involuntarily changed. * Also check for paths where the leaf vertex is on the backend, already why: A a path can have dome vertices on the top layer cache with the `Leaf` vertex on the backend. * Re-define a void `HashLabel` type. why: A `HashLabel` type is a pair `(root-vertex-ID, Keccak-hash)`. Previously, a valid `HashLabel` consisted of a non-empty hash and a non-zero vertex ID. This definition leads to a non-unique representation of a void `HashLabel` with either root-ID or has void. This has been changed to the unique void `HashLabel` exactly if the hash entry is void. * Update consistency checkers * Re-org `hashify()` procedure why: Syncing against block chain showed serious deficiencies which produced wrong hashes or simply bailed out with error. So all fringe cases (mainly due to deleted entries) could be integrated into the labelling schedule rather than handling separate fringe cases.
270 lines
6.4 KiB
Nim
270 lines
6.4 KiB
Nim
# nimbus-eth1
|
|
# Copyright (c) 2023 Status Research & Development GmbH
|
|
# Licensed under either of
|
|
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
# http://www.apache.org/licenses/LICENSE-2.0)
|
|
# * MIT license ([LICENSE-MIT](LICENSE-MIT) or
|
|
# http://opensource.org/licenses/MIT)
|
|
# at your option. This file may not be copied, modified, or distributed
|
|
# except according to those terms.
|
|
|
|
type
|
|
AristoError* = enum
|
|
NothingSerious = 0
|
|
GenericError
|
|
|
|
# Rlp decoder, `read()`
|
|
Rlp2Or17ListEntries
|
|
RlpBlobExpected
|
|
RlpBranchHashKeyExpected
|
|
RlpEmptyBlobExpected
|
|
RlpExtHashKeyExpected
|
|
RlpHashKeyExpected
|
|
RlpNonEmptyBlobExpected
|
|
RlpOtherException
|
|
RlpRlpException
|
|
|
|
# Serialise decoder
|
|
SerCantResolveStorageRoot
|
|
|
|
# Data record transcoders, `deblobify()` and `blobify()`
|
|
BlobifyNilFilter
|
|
BlobifyNilVertex
|
|
BlobifyBranchMissingRefs
|
|
BlobifyExtMissingRefs
|
|
BlobifyExtPathOverflow
|
|
BlobifyLeafPathOverflow
|
|
BlobifyFilterRecordOverflow
|
|
|
|
DeblobNilArgument
|
|
DeblobUnknown
|
|
DeblobVtxTooShort
|
|
DeblobHashKeyExpected
|
|
DeblobBranchTooShort
|
|
DeblobBranchSizeGarbled
|
|
DeblobBranchInxOutOfRange
|
|
DeblobExtTooShort
|
|
DeblobExtSizeGarbled
|
|
DeblobExtGotLeafPrefix
|
|
DeblobLeafSizeGarbled
|
|
DeblobLeafGotExtPrefix
|
|
DeblobSizeGarbled
|
|
DeblobWrongType
|
|
DeblobPayloadTooShortInt64
|
|
DeblobPayloadTooShortInt256
|
|
DeblobNonceLenUnsupported
|
|
DeblobBalanceLenUnsupported
|
|
DeblobStorageLenUnsupported
|
|
DeblobCodeLenUnsupported
|
|
DeblobFilterTooShort
|
|
DeblobFilterGenTooShort
|
|
DeblobFilterTrpTooShort
|
|
DeblobFilterTrpVtxSizeGarbled
|
|
DeblobFilterSizeGarbled
|
|
|
|
# Converter `asNode()`, currenly for unit tests only
|
|
CacheMissingNodekeys
|
|
|
|
# Path function `hikeUp()`
|
|
HikeRootMissing
|
|
HikeEmptyPath
|
|
HikeLeafTooEarly
|
|
HikeBranchTailEmpty
|
|
HikeBranchBlindEdge
|
|
HikeExtTailEmpty
|
|
HikeExtTailMismatch
|
|
|
|
# Path/nibble/key conversions in `aisto_path.nim`
|
|
PathExpected64Nibbles
|
|
PathAtMost64Nibbles
|
|
PathExpectedLeaf
|
|
|
|
# Merge leaf `merge()`
|
|
MergeBranchLinkLeafGarbled
|
|
MergeBranchLinkVtxPfxTooShort
|
|
MergeBranchGarbledNibble
|
|
MergeBranchGarbledTail
|
|
MergeBranchLinkLockedKey
|
|
MergeBranchLinkProofModeLock
|
|
MergeBranchProofModeLock
|
|
MergeBranchRootExpected
|
|
MergeLeafGarbledHike
|
|
MergeLeafPathCachedAlready
|
|
MergeLeafPathOnBackendAlready
|
|
MergeNonBranchProofModeLock
|
|
MergeRootBranchLinkBusy
|
|
MergeAssemblyFailed # Ooops, internal error
|
|
|
|
MergeHashKeyInvalid
|
|
MergeHashKeyCachedAlready
|
|
MergeHashKeyDiffersFromCached
|
|
MergeHashKeyRevLookUpGarbled
|
|
MergeRootVidInvalid
|
|
MergeRootKeyInvalid
|
|
MergeRevVidMustHaveBeenCached
|
|
MergeNodeVtxDiffersFromExisting
|
|
MergeRootKeyDiffersForVid
|
|
MergeNodeVtxDuplicates
|
|
|
|
# Update `Merkle` hashes `hashify()`
|
|
HashifyEmptyHike
|
|
HashifyExistingHashMismatch
|
|
HashifyNodeUnresolved
|
|
HashifyRootHashMismatch
|
|
HashifyRootNodeUnresolved
|
|
|
|
# Cache checker `checkCache()`
|
|
CheckStkVtxIncomplete
|
|
CheckStkVtxKeyMissing
|
|
CheckStkVtxKeyMismatch
|
|
CheckStkRevKeyMissing
|
|
CheckStkRevKeyMismatch
|
|
CheckStkVtxCountMismatch
|
|
|
|
CheckRlxVidVtxMismatch
|
|
CheckRlxVtxIncomplete
|
|
CheckRlxVtxKeyMissing
|
|
CheckRlxVtxKeyMismatch
|
|
CheckRlxRevKeyMissing
|
|
CheckRlxRevKeyMismatch
|
|
|
|
CheckAnyLeafUnregistered
|
|
CheckAnyLeafVidDangling
|
|
CheckAnyVidVtxMissing
|
|
CheckAnyVtxEmptyKeyMissing
|
|
CheckAnyVtxEmptyKeyExpected
|
|
CheckAnyVtxEmptyKeyMismatch
|
|
CheckAnyVtxBranchLinksMissing
|
|
CheckAnyVtxExtPfxMissing
|
|
CheckAnyVtxLockWithoutKey
|
|
CheckAnyRevVtxMissing
|
|
CheckAnyRevVtxDup
|
|
CheckAnyRevCountMismatch
|
|
|
|
# Backend structural check `checkBE()`
|
|
CheckBeVtxInvalid
|
|
CheckBeVtxMissing
|
|
CheckBeVtxBranchLinksMissing
|
|
CheckBeVtxExtPfxMissing
|
|
CheckBeKeyInvalid
|
|
CheckBeKeyMissing
|
|
CheckBeKeyCantCompile
|
|
CheckBeKeyMismatch
|
|
CheckBeGarbledVGen
|
|
|
|
CheckBeCacheIsDirty
|
|
CheckBeCacheKeyMissing
|
|
CheckBeCacheKeyNonEmpty
|
|
CheckBeCacheVidUnsynced
|
|
CheckBeCacheKeyDangling
|
|
CheckBeCacheVtxDangling
|
|
CheckBeCacheKeyCantCompile
|
|
CheckBeCacheKeyMismatch
|
|
CheckBeCacheGarbledVGen
|
|
|
|
CheckBeFifoSrcTrgMismatch
|
|
CheckBeFifoTrgNotStateRoot
|
|
|
|
# Neighbour vertex, tree traversal `nearbyRight()` and `nearbyLeft()`
|
|
NearbyBeyondRange
|
|
NearbyBranchError
|
|
NearbyDanglingLink
|
|
NearbyEmptyHike
|
|
NearbyExtensionError
|
|
NearbyFailed
|
|
NearbyBranchExpected
|
|
NearbyLeafExpected
|
|
NearbyNestingTooDeep
|
|
NearbyPathTailUnexpected
|
|
NearbyUnexpectedVtx
|
|
NearbyVidInvalid
|
|
|
|
# Deletion of vertices, `delete()`
|
|
DelPathTagError
|
|
DelLeafExpexted
|
|
DelLeafLocked
|
|
DelLeafUnexpected
|
|
DelBranchExpexted
|
|
DelBranchLocked
|
|
DelBranchWithoutRefs
|
|
DelExtLocked
|
|
DelVidStaleVtx
|
|
|
|
# Functions from `aristo_filter.nim`
|
|
FilBackendMissing
|
|
FilBackendRoMode
|
|
FilBackStepsExpected
|
|
FilDudeFilterUpdateError
|
|
FilExecDublicateSave
|
|
FilExecHoldExpected
|
|
FilExecOops
|
|
FilExecSaveMissing
|
|
FilExecStackUnderflow
|
|
FilFilterInvalid
|
|
FilFilterNotFound
|
|
FilInxByQidFailed
|
|
FilNegativeEpisode
|
|
FilNilFilterRejected
|
|
FilNoMatchOnFifo
|
|
FilPrettyPointlessLayer
|
|
FilQidByLeFidFailed
|
|
FilQuSchedDisabled
|
|
FilStateRootMismatch
|
|
FilStateRootMissing
|
|
FilTrgSrcMismatch
|
|
FilTrgTopSrcMismatch
|
|
FilSiblingsCommitUnfinshed
|
|
|
|
# Get functions from `aristo_get.nim`
|
|
GetLeafNotFound
|
|
GetVtxNotFound
|
|
GetKeyNotFound
|
|
GetKeyTempLocked
|
|
GetFilNotFound
|
|
GetIdgNotFound
|
|
GetFqsNotFound
|
|
|
|
# Fetch functions from `aristo_fetch.nim`
|
|
FetchPathNotFound
|
|
|
|
# RocksDB backend
|
|
RdbBeCantCreateDataDir
|
|
RdbBeCantCreateBackupDir
|
|
RdbBeCantCreateTmpDir
|
|
RdbBeDriverInitError
|
|
RdbBeDriverGetError
|
|
RdbBeDriverDelError
|
|
RdbBeCreateSstWriter
|
|
RdbBeOpenSstWriter
|
|
RdbBeAddSstWriter
|
|
RdbBeFinishSstWriter
|
|
RdbBeIngestSstWriter
|
|
RdbHashKeyExpected
|
|
|
|
# Transaction wrappers
|
|
TxArgStaleTx
|
|
TxBackendNotWritable
|
|
TxNoPendingTx
|
|
TxPendingTx
|
|
TxNotTopTx
|
|
TxStackGarbled
|
|
TxStackUnderflow
|
|
TxGarbledSpan
|
|
|
|
# Functions from `aristo_desc`
|
|
MustBeOnCentre
|
|
NotAllowedOnCentre
|
|
|
|
# Miscelaneous handy helpers
|
|
PayloadTypeUnsupported
|
|
LeafKeyInvalid
|
|
AccountRootUnacceptable
|
|
AccountRootCannotCreate
|
|
AccountRlpDecodingError
|
|
AccountStorageKeyMissing
|
|
AccountVtxUnsupported
|
|
AccountNodeUnsupported
|
|
NotImplemented
|
|
|
|
# End
|