mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-02-21 16:28:25 +00:00
* Fix missing branch checks in transcoder why: Symmetry problem. `Blobify()` allowed for encoding degenerate branch vertices while `Deblobify()` rejected decoding wrongly encoded data. * Update memory backend so that it rejects storing bogus vertices. why: Error behaviour made similar to the rocks DB backend. * Make sure that leaf vertex IDs are not repurposed why: This makes it easier to record leaf node changes * Update error return code for next()/right() traversal why: Returning offending vertex ID (besides error code) helps debugging * Update Merkle hasher for deleted nodes why: Not implemented, yet also: Provide cache & backend consistency check functions. This was partly re-implemented from `hashifyCheck()` * Simplify some unit tests * Fix delete function why: Was conceptually wrong
187 lines
4.5 KiB
Nim
187 lines
4.5 KiB
Nim
# nimbus-eth1
|
|
# Copyright (c) 2021 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
|
|
RlpBranchLinkExpected
|
|
RlpExtPathEncoding
|
|
RlpNonEmptyBlobExpected
|
|
RlpEmptyBlobExpected
|
|
RlpRlpException
|
|
RlpOtherException
|
|
|
|
# Data record transcoders, `deblobify()` and `blobify()`
|
|
BlobifyBranchMissingRefs
|
|
BlobifyExtMissingRefs
|
|
BlobifyExtPathOverflow
|
|
BlobifyLeafPathOverflow
|
|
|
|
DeblobNilArgument
|
|
DeblobUnknown
|
|
DeblobTooShort
|
|
DeblobBranchTooShort
|
|
DeblobBranchSizeGarbled
|
|
DeblobBranchInxOutOfRange
|
|
DeblobExtTooShort
|
|
DeblobExtSizeGarbled
|
|
DeblobExtGotLeafPrefix
|
|
DeblobLeafSizeGarbled
|
|
DeblobLeafGotExtPrefix
|
|
DeblobSizeGarbled
|
|
DeblobWrongType
|
|
|
|
# Converter `asNode()`, currenly for unit tests only
|
|
CacheMissingNodekeys
|
|
|
|
# Path function `hikeUp()`
|
|
HikeRootMissing
|
|
HikeLeafTooEarly
|
|
HikeBranchTailEmpty
|
|
HikeBranchBlindEdge
|
|
HikeExtTailEmpty
|
|
HikeExtTailMismatch
|
|
|
|
# Path/nibble/key conversions in `aisto_path.nim`
|
|
PathExpected64Nibbles
|
|
PathExpectedLeaf
|
|
|
|
# Merge leaf `merge()`
|
|
MergeBrLinkLeafGarbled
|
|
MergeBrLinkVtxPfxTooShort
|
|
MergeBranchGarbledNibble
|
|
MergeBranchGarbledTail
|
|
MergeBranchLinkLockedKey
|
|
MergeBranchLinkProofModeLock
|
|
MergeBranchProofModeLock
|
|
MergeBranchRootExpected
|
|
MergeLeafGarbledHike
|
|
MergeLeafPathCachedAlready
|
|
MergeNonBranchProofModeLock
|
|
MergeRootBranchLinkBusy
|
|
MergeAssemblyFailed # Ooops, internal error
|
|
|
|
MergeHashKeyInvalid
|
|
MergeRootVidInvalid
|
|
MergeRootKeyInvalid
|
|
MergeRevVidMustHaveBeenCached
|
|
MergeHashKeyCachedAlready
|
|
MergeHashKeyDiffersFromCached
|
|
MergeNodeVtxDiffersFromExisting
|
|
MergeRootKeyDiffersForVid
|
|
|
|
# Update `Merkle` hashes `hashify()`
|
|
HashifyCannotComplete
|
|
HashifyCannotHashRoot
|
|
HashifyExistingHashMismatch
|
|
HashifyLeafToRootAllFailed
|
|
HashifyRootHashMismatch
|
|
HashifyRootVidMismatch
|
|
HashifyVidCircularDependence
|
|
HashifyVtxMissing
|
|
|
|
# Cache checker `checkCache()`
|
|
CheckStkVtxIncomplete
|
|
CheckStkVtxKeyMissing
|
|
CheckStkVtxKeyMismatch
|
|
CheckStkRevKeyMissing
|
|
CheckStkRevKeyMismatch
|
|
CheckStkVtxCountMismatch
|
|
|
|
CheckRlxVidVtxMismatch
|
|
CheckRlxVtxIncomplete
|
|
CheckRlxVtxKeyMissing
|
|
CheckRlxVtxKeyMismatch
|
|
CheckRlxRevKeyMissing
|
|
CheckRlxRevKeyMismatch
|
|
CheckRlxVidVtxBeMissing
|
|
CheckRlxVtxEmptyKeyMissing
|
|
CheckRlxVtxEmptyKeyExpected
|
|
|
|
CheckAnyRevVtxMissing
|
|
CheckAnyRevVtxDup
|
|
CheckAnyRevCountMismatch
|
|
CheckAnyVtxLockWithoutKey
|
|
|
|
# Backend structural check `checkBE()`
|
|
CheckBeVtxInvalid
|
|
CheckBeKeyInvalid
|
|
CheckBeVtxMissing
|
|
CheckBeKeyMissing
|
|
CheckBeKeyCantCompile
|
|
CheckBeKeyMismatch
|
|
CheckBeGarbledVGen
|
|
|
|
CheckBeCacheKeyMissing
|
|
CheckBeCacheKeyNonEmpty
|
|
CheckBeCacheVidUnsynced
|
|
CheckBeCacheKeyDangling
|
|
CheckBeCacheVtxDangling
|
|
CheckBeCacheKeyCantCompile
|
|
CheckBeCacheKeyMismatch
|
|
CheckBeCacheGarbledVGen
|
|
|
|
# Neighbour vertex, tree traversal `nearbyRight()` and `nearbyLeft()`
|
|
NearbyBeyondRange
|
|
NearbyBranchError
|
|
NearbyDanglingLink
|
|
NearbyEmptyHike
|
|
NearbyExtensionError
|
|
NearbyFailed
|
|
NearbyBranchExpected
|
|
NearbyLeafExpected
|
|
NearbyNestingTooDeep
|
|
NearbyPathTailUnexpected
|
|
NearbyPathTailInxOverflow
|
|
NearbyUnexpectedVtx
|
|
NearbyVidInvalid
|
|
|
|
# Deletion of vertices, `delete()`
|
|
DelPathTagError
|
|
DelLeafExpexted
|
|
DelLeafLocked
|
|
DelLeafUnexpected
|
|
DelBranchExpexted
|
|
DelBranchLocked
|
|
DelBranchWithoutRefs
|
|
DelExtLocked
|
|
DelVidStaleVtx
|
|
|
|
# Save permanently, `save()`
|
|
SaveBackendMissing
|
|
SaveLeafVidRepurposed
|
|
|
|
# Get functions form `aristo_get.nim`
|
|
GetLeafNotFound
|
|
|
|
# All backend and get functions form `aristo_get.nim`
|
|
GetVtxNotFound
|
|
GetKeyNotFound
|
|
|
|
# RocksDB backend
|
|
RdbBeCantCreateDataDir
|
|
RdbBeCantCreateBackupDir
|
|
RdbBeCantCreateTmpDir
|
|
RdbBeDriverInitError
|
|
RdbBeDriverGetError
|
|
RdbBeDriverDelError
|
|
RdbBeCreateSstWriter
|
|
RdbBeOpenSstWriter
|
|
RdbBeAddSstWriter
|
|
RdbBeFinishSstWriter
|
|
RdbBeIngestSstWriter
|
|
|
|
# End
|