Skip to content
This repository was archived by the owner on Sep 8, 2025. It is now read-only.

Commit bee2080

Browse files
Bhargavasomucburgdorf
authored andcommitted
Run LevelDB Benchmarks
1 parent c2d3623 commit bee2080

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

scripts/benchmark/utils/chain_plumbing.py

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
from pathlib import (
2+
Path,
3+
)
4+
import tempfile
5+
16
from typing import (
27
Any,
38
Dict,
9+
Generator,
410
Iterable,
511
Tuple,
612
Type,
@@ -25,8 +31,11 @@
2531
from eth.chains.base import (
2632
MiningChain,
2733
)
34+
from eth.db.backends.level import (
35+
LevelDB,
36+
)
2837
from eth.vm.base import (
29-
BaseVM
38+
BaseVM,
3039
)
3140
from eth.chains.mainnet import (
3241
BaseMainnetChain,
@@ -81,19 +90,21 @@
8190
GenesisState = Iterable[Tuple[Address, Dict[str, Any]]]
8291

8392

84-
def get_chain(vm: Type[BaseVM], genesis_state: GenesisState) -> MiningChain:
85-
86-
chain = build(
87-
MiningChain,
88-
fork_at(vm, constants.GENESIS_BLOCK_NUMBER),
89-
disable_pow_check(),
90-
genesis(params=GENESIS_PARAMS, state=genesis_state)
91-
)
93+
def get_chain(vm: Type[BaseVM], genesis_state: GenesisState) -> Generator[MiningChain, None, None]:
9294

93-
return chain
95+
# Chain uses LevelDB
96+
with tempfile.TemporaryDirectory() as temp_dir:
97+
level_db_obj = LevelDB(Path(temp_dir))
98+
level_db_chain = build(
99+
MiningChain,
100+
fork_at(vm, constants.GENESIS_BLOCK_NUMBER),
101+
disable_pow_check(),
102+
genesis(db=level_db_obj, params=GENESIS_PARAMS, state=genesis_state)
103+
)
104+
yield level_db_chain
94105

95106

96107
def get_all_chains(genesis_state: GenesisState=DEFAULT_GENESIS_STATE) -> Iterable[MiningChain]:
97108
for vm in ALL_VM:
98109
chain = get_chain(vm, genesis_state)
99-
yield chain
110+
yield next(chain)

0 commit comments

Comments
 (0)