mirror of
https://github.com/status-im/nim-eth.git
synced 2025-02-22 18:58:13 +00:00
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.
22 lines
638 B
Nim
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"
|