nimbus-eth1/nimbus/db/ledger/base/base_desc.nim

151 lines
5.8 KiB
Nim

# Nimbus
# Copyright (c) 2023-2024 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.
{.push raises: [].}
import
eth/common,
../../core_db,
../../../../stateless/multi_keys,
../../aristo/aristo_profile
# Annotation helpers
{.pragma: noRaise, gcsafe, raises: [].}
type
LedgerProfListRef* = AristoDbProfListRef
## Borrowed from `aristo_profile`, only used in profiling mode
LedgerProfData* = AristoDbProfData
## Borrowed from `aristo_profile`, only used in profiling mode
LedgerType* = enum
Ooops = 0
LegacyAccountsCache,
LedgerCache
LedgerSpRef* = ref object of RootRef
## Object for check point or save point
LedgerRef* = ref object of RootRef
## Root object with closures
ldgType*: LedgerType ## For debugging
trackApi*: bool ## For debugging
profTab*: LedgerProfListRef ## Profiling data (if any)
extras*: LedgerExtras ## Support might go away
methods*: LedgerFns
RawRootHashFn* = proc(): Hash256 {.noRaise.}
GetMptFn* = proc(): CoreDbMptRef {.noRaise.}
LedgerExtras* = object
getMptFn*: GetMptFn
rawRootHashFn*: RawRootHashFn
AccessListFn* = proc(eAddr: EthAddress) {.noRaise.}
AccessList2Fn* = proc(eAddr: EthAddress, slot: UInt256) {.noRaise.}
AccountExistsFn* = proc(eAddr: EthAddress): bool {.noRaise.}
AddBalanceFn* = proc(eAddr: EthAddress, delta: UInt256) {.noRaise.}
AddLogEntryFn* = proc(log: Log) {.noRaise.}
BeginSavepointFn* = proc(): LedgerSpRef {.noRaise.}
ClearStorageFn* = proc(eAddr: EthAddress) {.noRaise.}
ClearTransientStorageFn* = proc() {.noRaise.}
CollectWitnessDataFn* = proc() {.noRaise.}
CommitFn* = proc(sp: LedgerSpRef) {.noRaise.}
DeleteAccountFn* = proc(eAddr: EthAddress) {.noRaise.}
DisposeFn* = proc(sp: LedgerSpRef) {.noRaise.}
GetAndClearLogEntriesFn* = proc(): seq[Log] {.noRaise.}
GetBalanceFn* = proc(eAddr: EthAddress): UInt256 {.noRaise.}
GetCodeFn* = proc(eAddr: EthAddress): Blob {.noRaise.}
GetCodeHashFn* = proc(eAddr: EthAddress): Hash256 {.noRaise.}
GetCodeSizeFn* = proc(eAddr: EthAddress): int {.noRaise.}
GetCommittedStorageFn* =
proc(eAddr: EthAddress, slot: UInt256): UInt256 {.noRaise.}
GetNonceFn* = proc(eAddr: EthAddress): AccountNonce {.noRaise.}
GetStorageFn* = proc(eAddr: EthAddress, slot: UInt256): UInt256 {.noRaise.}
GetStorageRootFn* = proc(eAddr: EthAddress): Hash256 {.noRaise.}
GetTransientStorageFn* =
proc(eAddr: EthAddress, slot: UInt256): UInt256 {.noRaise.}
HasCodeOrNonceFn* = proc(eAddr: EthAddress): bool {.noRaise.}
InAccessListFn* = proc(eAddr: EthAddress): bool {.noRaise.}
InAccessList2Fn* = proc(eAddr: EthAddress, slot: UInt256): bool {.noRaise.}
IncNonceFn* = proc(eAddr: EthAddress) {.noRaise.}
IsDeadAccountFn* = proc(eAddr: EthAddress): bool {.noRaise.}
IsEmptyAccountFn* = proc(eAddr: EthAddress): bool {.noRaise.}
IsTopLevelCleanFn* = proc(): bool {.noRaise.}
LogEntriesFn* = proc(): seq[Log] {.noRaise.}
MakeMultiKeysFn* = proc(): MultiKeysRef {.noRaise.}
PersistFn* = proc(clearEmptyAccount: bool, clearCache: bool) {.noRaise.}
RipemdSpecialFn* = proc() {.noRaise.}
RollbackFn* = proc(sp: LedgerSpRef) {.noRaise.}
RootHashFn* = proc(): Hash256 {.noRaise.}
SafeDisposeFn* = proc(sp: LedgerSpRef) {.noRaise.}
SelfDestructFn* = proc(eAddr: EthAddress) {.noRaise.}
SelfDestruct6780Fn* = proc(eAddr: EthAddress) {.noRaise.}
SelfDestructLenFn* = proc(): int {.noRaise.}
SetBalanceFn* = proc(eAddr: EthAddress, balance: UInt256) {.noRaise.}
SetCodeFn* = proc(eAddr: EthAddress, code: Blob) {.noRaise.}
SetNonceFn* = proc(eAddr: EthAddress, nonce: AccountNonce) {.noRaise.}
SetStorageFn* = proc(eAddr: EthAddress, slot, value: UInt256) {.noRaise.}
SetTransientStorageFn* =
proc(eAddr: EthAddress, slot, val: UInt256) {.noRaise.}
SubBalanceFn* = proc(eAddr: EthAddress, delta: UInt256) {.noRaise.}
GetAccessListFn* = proc(): AccessList {.noRaise.}
LedgerFns* = object
accessListFn*: AccessListFn
accessList2Fn*: AccessList2Fn
accountExistsFn*: AccountExistsFn
addBalanceFn*: AddBalanceFn
addLogEntryFn*: AddLogEntryFn
beginSavepointFn*: BeginSavepointFn
clearStorageFn*: ClearStorageFn
clearTransientStorageFn*: ClearTransientStorageFn
collectWitnessDataFn*: CollectWitnessDataFn
commitFn*: CommitFn
deleteAccountFn*: DeleteAccountFn
disposeFn*: DisposeFn
getAndClearLogEntriesFn*: GetAndClearLogEntriesFn
getBalanceFn*: GetBalanceFn
getCodeFn*: GetCodeFn
getCodeHashFn*: GetCodeHashFn
getCodeSizeFn*: GetCodeSizeFn
getCommittedStorageFn*: GetCommittedStorageFn
getNonceFn*: GetNonceFn
getStorageFn*: GetStorageFn
getStorageRootFn*: GetStorageRootFn
getTransientStorageFn*: GetTransientStorageFn
hasCodeOrNonceFn*: HasCodeOrNonceFn
inAccessListFn*: InAccessListFn
inAccessList2Fn*: InAccessList2Fn
incNonceFn*: IncNonceFn
isDeadAccountFn*: IsDeadAccountFn
isEmptyAccountFn*: IsEmptyAccountFn
isTopLevelCleanFn*: IsTopLevelCleanFn
logEntriesFn*: LogEntriesFn
makeMultiKeysFn*: MakeMultiKeysFn
persistFn*: PersistFn
ripemdSpecialFn*: RipemdSpecialFn
rollbackFn*: RollbackFn
rootHashFn*: RootHashFn
safeDisposeFn*: SafeDisposeFn
selfDestruct6780Fn*: SelfDestruct6780Fn
selfDestructFn*: SelfDestructFn
selfDestructLenFn*: SelfDestructLenFn
setBalanceFn*: SetBalanceFn
setCodeFn*: SetCodeFn
setNonceFn*: SetNonceFn
setStorageFn*: SetStorageFn
setTransientStorageFn*: SetTransientStorageFn
subBalanceFn*: SubBalanceFn
getAccessListFn*: GetAccessListFn
# End