def get_eth1_shell_context(database_dir: Path, trinity_config: TrinityConfig) -> Dict[str, Any]: app_config = trinity_config.get_app_config(Eth1AppConfig) ipc_path = trinity_config.database_ipc_path trinity_already_running = ipc_path.exists() if trinity_already_running: db_manager = eth1.manager.create_db_consumer_manager( ipc_path) # type: ignore db = db_manager.get_db() else: db = LevelDB(database_dir) chaindb = ChainDB(db) head = chaindb.get_canonical_head() chain_config = app_config.get_chain_config() chain = chain_config.full_chain_class(db) return { 'db': db, 'chaindb': chaindb, 'trinity_config': trinity_config, 'chain_config': chain_config, 'chain': chain, 'block_number': head.block_number, 'hex_hash': head.hex_hash, 'state_root_hex': encode_hex(head.state_root), 'trinity_already_running': trinity_already_running, }
def get_eth1_shell_context( database_dir: Path, trinity_config: TrinityConfig) -> Iterator[Dict[str, Any]]: app_config = trinity_config.get_app_config(Eth1AppConfig) ipc_path = trinity_config.database_ipc_path trinity_already_running = ipc_path.exists() with _get_base_db(database_dir, ipc_path) as db: chaindb = ChainDB(db) head = chaindb.get_canonical_head() chain_config = app_config.get_chain_config() chain = chain_config.full_chain_class(db) mining_chain_class = MiningChain.configure( __name__=chain_config.full_chain_class.__name__, vm_configuration=chain.vm_configuration, consensus_context_class=chain.consensus_context_class, chain_id=chain.chain_id, ) mining_chain = mining_chain_class(db) yield { 'db': db, 'chaindb': chaindb, 'trinity_config': trinity_config, 'chain_config': chain_config, 'chain': chain, 'mining_chain': mining_chain, 'block_number': head.block_number, 'hex_hash': head.hex_hash, 'state_root_hex': encode_hex(head.state_root), 'trinity_already_running': trinity_already_running, }
def get_eth1_shell_context(database_dir: Path, trinity_config: TrinityConfig) -> Dict[str, Any]: app_config = trinity_config.get_app_config(Eth1AppConfig) ipc_path = trinity_config.database_ipc_path db: DatabaseAPI trinity_already_running = ipc_path.exists() if trinity_already_running: db = DBClient.connect(ipc_path) else: db = LevelDB(database_dir) chaindb = ChainDB(db) head = chaindb.get_canonical_head() chain_config = app_config.get_chain_config() chain = chain_config.full_chain_class(db) mining_chain_class = MiningChain.configure( __name__=chain_config.full_chain_class.__name__, vm_configuration=chain.vm_configuration, chain_id=chain.chain_id, ) mining_chain = mining_chain_class(db) return { 'db': db, 'chaindb': chaindb, 'trinity_config': trinity_config, 'chain_config': chain_config, 'chain': chain, 'mining_chain': mining_chain, 'block_number': head.block_number, 'hex_hash': head.hex_hash, 'state_root_hex': encode_hex(head.state_root), 'trinity_already_running': trinity_already_running, }
def db_shell(use_ipython: bool, database_dir: Path, trinity_config: TrinityConfig) -> None: db = LevelDB(database_dir) chaindb = ChainDB(db) head = chaindb.get_canonical_head() chain_config = trinity_config.get_chain_config() chain = chain_config.full_chain_class(db) greeter = f""" Head: #{head.block_number} Hash: {head.hex_hash} State Root: {encode_hex(head.state_root)} Available Context Variables: - `db`: base database object - `chaindb`: `ChainDB` instance - `trinity_config`: `TrinityConfig` instance - `chain_config`: `ChainConfig` instance - `chain`: `Chain` instance """ namespace = { 'db': db, 'chaindb': chaindb, 'trinity_config': trinity_config, 'chain_config': chain_config, 'chain': chain, } shell(use_ipython, namespace, DB_SHELL_BANNER + greeter)
def db_shell(use_ipython: bool, database_dir: Path) -> None: chaindb = ChainDB(LevelDB(database_dir)) head = chaindb.get_canonical_head() greeter = f""" Head: #{head.block_number} Hash: {head.hex_hash} State Root: {encode_hex(head.state_root)} """ shell(use_ipython, {'chaindb': chaindb}, DB_SHELL_BANNER + greeter)
def db_shell(use_ipython: bool, database_dir: Path, trinity_config: TrinityConfig) -> None: db_ipc_path = trinity_config.database_ipc_path trinity_already_running = db_ipc_path.exists() if trinity_already_running: db_manager = create_db_consumer_manager(db_ipc_path) db = db_manager.get_db() # type: ignore else: db = LevelDB(database_dir) chaindb = ChainDB(db) head = chaindb.get_canonical_head() app_config = trinity_config.get_app_config(Eth1AppConfig) chain_config = app_config.get_chain_config() chain = chain_config.full_chain_class(db) greeter = f""" Head: #{head.block_number} Hash: {head.hex_hash} State Root: {encode_hex(head.state_root)} Inspecting active Trinity? {trinity_already_running} Available Context Variables: - `db`: base database object - `chaindb`: `ChainDB` instance - `trinity_config`: `TrinityConfig` instance - `chain_config`: `ChainConfig` instance - `chain`: `Chain` instance """ namespace = { 'db': db, 'chaindb': chaindb, 'trinity_config': trinity_config, 'chain_config': chain_config, 'chain': chain, } shell(use_ipython, namespace, DB_SHELL_BANNER + greeter)
import argparse from eth_utils import encode_hex from eth.chains.mainnet import MAINNET_NETWORK_ID from eth.chains.ropsten import ROPSTEN_NETWORK_ID from eth.db.chain import ChainDB from eth.db.backends.level import LevelDB from trinity.config import ChainConfig from trinity.constants import SYNC_FULL, SYNC_LIGHT if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-ropsten', action='store_true') parser.add_argument('-light', action='store_true') args = parser.parse_args() network_id = MAINNET_NETWORK_ID if args.ropsten: network_id = ROPSTEN_NETWORK_ID sync_mode = SYNC_FULL if args.light: sync_mode = SYNC_LIGHT cfg = ChainConfig(network_id, sync_mode=sync_mode) chaindb = ChainDB(LevelDB(cfg.database_dir)) head = chaindb.get_canonical_head() print("Head #%d; hash: %s, state_root: %s" % (head.block_number, head.hex_hash, encode_hex(head.state_root)))