nim-eth/eth/trie/trie_defs.nim
Jacek Sieka 6bd6bae86c
Align core types with execution spec (#733)
Since these types were written, we've gained an executable spec:

https://github.com/ethereum/execution-specs

This PR aligns some of the types we use with this spec to simplify
comparisons and cross-referencing.

Using a `distinct` type is a tradeoff between nim ergonomics, type
safety and the ability to work around nim quirks and stdlib weaknesses.

In particular, it allows us to overload common functions such as `hash`
with correct and performant versions as well as maintain control over
string conversions etc at the cost of a little bit of ceremony when
instantiating them.

Apart from distinct byte types, `Hash32`, is introduced in lieu of the
existing `Hash256`, again aligning this commonly used type with the spec
which picks bytes rather than bits in the name.
2024-09-29 10:52:19 +02:00

22 lines
638 B
Nim

import
../common/hashes_rlp
export hashes_rlp
type
TrieError* = object of CatchableError
# A common base type of all Trie errors.
PersistenceFailure* = object of TrieError
# The backing database of the trie was not able to carry out
# the storage or retrieval request.
CorruptedTrieDatabase* = object of Defect
# We consider this a Defect, because the software cannot safely
# operate if its database has been tampered with. A swift crash
# will be a more appropriate response.
const
emptyRlp* = @[128.byte]
emptyRlpHash* = hash32"56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421"