2023-05-14 17:43:01 +00:00
|
|
|
# nimbus-eth1
|
2024-02-01 21:27:48 +00:00
|
|
|
# Copyright (c) 2023-2024 Status Research & Development GmbH
|
2023-05-14 17:43:01 +00:00
|
|
|
# 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.
|
|
|
|
|
|
|
|
{.push raises: [].}
|
|
|
|
|
|
|
|
import
|
2023-11-08 12:18:32 +00:00
|
|
|
std/sets,
|
2023-06-12 13:48:47 +00:00
|
|
|
eth/[common, trie/nibbles],
|
2023-08-25 22:53:59 +00:00
|
|
|
./aristo_desc/desc_identifiers
|
2023-05-14 17:43:01 +00:00
|
|
|
|
|
|
|
const
|
|
|
|
EmptyBlob* = seq[byte].default
|
|
|
|
## Useful shortcut (borrowed from `sync/snap/constants.nim`)
|
|
|
|
|
|
|
|
EmptyNibbleSeq* = EmptyBlob.initNibbleRange
|
|
|
|
## Useful shortcut (borrowed from `sync/snap/constants.nim`)
|
|
|
|
|
2023-06-22 11:13:24 +00:00
|
|
|
EmptyVidSeq* = seq[VertexID].default
|
|
|
|
## Useful shortcut
|
|
|
|
|
2023-11-08 12:18:32 +00:00
|
|
|
EmptyVidSet* = EmptyVidSeq.toHashSet
|
2023-08-22 18:44:54 +00:00
|
|
|
## Useful shortcut
|
|
|
|
|
2023-07-05 20:27:48 +00:00
|
|
|
VOID_CODE_HASH* = EMPTY_CODE_HASH
|
2024-02-22 08:24:58 +00:00
|
|
|
## Equivalent of `nil` for `Account` object code hash field
|
2023-06-12 13:48:47 +00:00
|
|
|
|
2023-11-08 12:18:32 +00:00
|
|
|
VOID_HASH_KEY* = HashKey()
|
2023-07-12 23:03:14 +00:00
|
|
|
## Void equivalent for Merkle hash value
|
2023-06-12 18:16:03 +00:00
|
|
|
|
2024-02-01 21:27:48 +00:00
|
|
|
VOID_PATH_ID* = PathID()
|
|
|
|
## Void equivalent for Merkle hash value
|
|
|
|
|
|
|
|
LEAST_FREE_VID* = 100
|
|
|
|
## Vids smaller are used as known state roots and cannot be recycled. Only
|
|
|
|
## the `VertexID(1)` state root is used by the `Aristo` methods. The other
|
|
|
|
## numbers smaller than `LEAST_FREE_VID` may be used by application
|
|
|
|
## functions with fixed assignments of the type of a state root (e.g. for
|
|
|
|
## a receipt or a transaction root.)
|
|
|
|
|
2024-02-12 19:37:00 +00:00
|
|
|
LOOSE_STORAGE_TRIE_COUPLING* = true
|
|
|
|
## Enabling the `LOOSE_STORAGE_TRIE_COUPLING` flag a sub-trie is considered
|
|
|
|
## empty if the root vertex ID is zero or at least `LEAST_FREE_VID` and
|
|
|
|
## there is no vertex available. If the vertex ID is not zero and should
|
|
|
|
## be considered as such will affect calculating the Merkel hash node key
|
|
|
|
## for an accou.t leaf of payload type `AccountData`.
|
|
|
|
##
|
|
|
|
## Setting this flag `true` might be helpful for running an API supporting
|
|
|
|
## both, a legacy and# the `Aristo` database backend.
|
|
|
|
##
|
|
|
|
|
2024-02-01 21:27:48 +00:00
|
|
|
static:
|
|
|
|
doAssert 1 < LEAST_FREE_VID # must stay away from `VertexID(1)`
|
|
|
|
|
2023-05-14 17:43:01 +00:00
|
|
|
# End
|