143 lines
5.5 KiB
Nim
143 lines
5.5 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
|
|
|
|
# Annotation helpers
|
|
{.pragma: noRaise, gcsafe, raises: [].}
|
|
|
|
type
|
|
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
|
|
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
|