예제 #1
0
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,
    }
예제 #2
0
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,
        }
예제 #3
0
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,
    }
예제 #4
0
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)
예제 #5
0
파일: console.py 프로젝트: nrryuya/trinity
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)
예제 #6
0
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)
예제 #7
0
파일: db-shell.py 프로젝트: wimel/py-evm
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)))