コード例 #1
0
ファイル: plugin.py プロジェクト: teknomise/trinity
    def do_start(self) -> None:

        trinity_config = self.boot_info.trinity_config

        if trinity_config.has_app_config(Eth1AppConfig):
            db_manager = create_db_consumer_manager(
                trinity_config.database_ipc_path)
            server = self.make_eth1_request_server(
                trinity_config.get_app_config(Eth1AppConfig),
                db_manager,
            )
        elif trinity_config.has_app_config(BeaconAppConfig):
            db_manager = create_beacon_db_consumer_manager(
                trinity_config.database_ipc_path)
            server = self.make_beacon_request_server(
                trinity_config.get_app_config(BeaconAppConfig),
                db_manager,
            )
        else:
            raise Exception(
                "Trinity config must have either eth1 or beacon chain config")

        asyncio.ensure_future(
            exit_with_endpoint_and_services(self.event_bus, server))
        asyncio.ensure_future(server.run())
コード例 #2
0
 def do_start(self) -> None:
     discovery_bootstrap = DiscoveryBootstrapService(
         self.boot_info.args.disable_discovery, self.event_bus,
         self.boot_info.trinity_config)
     asyncio.ensure_future(
         exit_with_endpoint_and_services(self.event_bus,
                                         discovery_bootstrap))
     asyncio.ensure_future(discovery_bootstrap.run())
コード例 #3
0
    def do_start(self) -> None:

        trinity_config = self.boot_info.trinity_config
        NodeClass = trinity_config.get_app_config(Eth1AppConfig).node_class
        node = NodeClass(self.event_bus, trinity_config)

        asyncio.ensure_future(self.launch_sync(node))

        asyncio.ensure_future(
            exit_with_endpoint_and_services(self.event_bus, node))
        asyncio.ensure_future(node.run())
コード例 #4
0
ファイル: plugin.py プロジェクト: teknomise/trinity
 def do_start(self) -> None:
     try:
         tracker_services = self._get_services()
     except BadDatabaseError as err:
         self.logger.exception(
             f"Unrecoverable error in Network Plugin: {err}")
     else:
         asyncio.ensure_future(
             exit_with_endpoint_and_services(self.event_bus,
                                             *tracker_services))
         for service in tracker_services:
             asyncio.ensure_future(service.run())
コード例 #5
0
ファイル: plugin.py プロジェクト: Flamboy78/trinity
    def do_start(self) -> None:

        if self.boot_info.args.disable_blacklistdb:
            # Allow this plugin to be disabled for extreme cases such as the
            # user swapping in an equivalent experimental version.
            self.logger.warning("Blacklist Database disabled via CLI flag")
            return
        else:
            service = self._get_blacklist_service()
            asyncio.ensure_future(
                exit_with_endpoint_and_services(self.event_bus, service))
            asyncio.ensure_future(service.run())
コード例 #6
0
def run_service(ready_to_kill_event):
    loop = asyncio.get_event_loop()

    endpoint = TrinityEventBusEndpoint()
    service = SimpleService(ready_to_kill_event, loop=loop)

    asyncio.ensure_future(exit_with_endpoint_and_services(endpoint, service))
    asyncio.ensure_future(service.run())

    loop.run_forever()
    loop.close()

    assert service.is_cancelled
    assert endpoint._running is False
コード例 #7
0
    def do_start(self) -> None:
        service = EthstatsService(
            self.boot_info,
            self.event_bus,
            self.server_url,
            self.server_secret,
            self.node_id,
            self.node_contact,
            self.stats_interval,
        )

        asyncio.ensure_future(
            exit_with_endpoint_and_services(self.event_bus, service))
        asyncio.ensure_future(service.run())
コード例 #8
0
    def do_start(self) -> None:

        trinity_config = self.boot_info.trinity_config

        if trinity_config.has_app_config(Eth1AppConfig):
            modules = self.setup_eth1_modules(trinity_config)
        elif trinity_config.has_app_config(BeaconAppConfig):
            modules = self.setup_beacon_modules()
        else:
            raise Exception("Unsupported Node Type")

        rpc = RPCServer(modules, self.event_bus)
        ipc_server = IPCServer(rpc, self.boot_info.trinity_config.jsonrpc_ipc_path)

        asyncio.ensure_future(exit_with_endpoint_and_services(self.event_bus, ipc_server))
        asyncio.ensure_future(ipc_server.run())
コード例 #9
0
ファイル: plugin.py プロジェクト: Flamboy78/trinity
    def do_start(self) -> None:
        trinity_config = self.boot_info.trinity_config
        beacon_app_config = trinity_config.get_app_config(BeaconAppConfig)
        db_manager = create_db_consumer_manager(
            trinity_config.database_ipc_path)
        base_db = db_manager.get_db()  # type: ignore
        chain_db = db_manager.get_chaindb()  # type: ignore
        chain_config = beacon_app_config.get_chain_config()
        chain = chain_config.beacon_chain_class(base_db,
                                                chain_config.eth2_config)

        if self.boot_info.args.beacon_nodekey:
            privkey = PrivateKey(
                bytes.fromhex(self.boot_info.args.beacon_nodekey))
        else:
            privkey = ecies.generate_privkey()

        server = BCCServer(
            privkey=privkey,
            port=self.boot_info.args.port,
            chain=chain,
            chaindb=chain_db,
            headerdb=None,
            base_db=base_db,
            network_id=trinity_config.network_id,
            max_peers=DEFAULT_MAX_PEERS,
            bootstrap_nodes=None,
            preferred_nodes=None,
            event_bus=self.event_bus,
            token=None,
        )

        syncer = BeaconChainSyncer(
            chain_db,
            server.peer_pool,
            SyncBlockImporter(chain),
            server.cancel_token,
        )

        state_machine = chain.get_state_machine()
        state = state_machine.state
        registry_pubkeys = [
            v_record.pubkey for v_record in state.validator_registry
        ]

        validator_privkeys = {}
        validator_keymap = chain_config.genesis_data.validator_keymap
        for pubkey in validator_keymap:
            validator_index = cast(ValidatorIndex,
                                   registry_pubkeys.index(pubkey))
            validator_privkeys[validator_index] = validator_keymap[pubkey]

        validator = Validator(
            chain=chain,
            peer_pool=server.peer_pool,
            validator_privkeys=validator_privkeys,
            event_bus=self.event_bus,
            token=server.cancel_token,
            genesis_epoch=state_machine.config.GENESIS_EPOCH,
            slots_per_epoch=state_machine.config.SLOTS_PER_EPOCH,
        )

        slot_ticker = SlotTicker(
            genesis_slot=state_machine.config.GENESIS_SLOT,
            genesis_time=chain_config.genesis_data.genesis_time,
            seconds_per_slot=state_machine.config.SECONDS_PER_SLOT,
            event_bus=self.event_bus,
            token=server.cancel_token,
        )

        asyncio.ensure_future(
            exit_with_endpoint_and_services(self.event_bus, server))
        asyncio.ensure_future(server.run())
        asyncio.ensure_future(syncer.run())
        asyncio.ensure_future(slot_ticker.run())
        asyncio.ensure_future(validator.run())
コード例 #10
0
 def do_start(self) -> None:
     service = PeerCountReporter(self.event_bus)
     asyncio.ensure_future(
         exit_with_endpoint_and_services(self.event_bus, service))
     asyncio.ensure_future(service.run())
コード例 #11
0
 def do_start(self) -> None:
     port = self.boot_info.trinity_config.port
     self.upnp_service = UPnPService(port)
     asyncio.ensure_future(exit_with_endpoint_and_services(self.event_bus, self.upnp_service))
     asyncio.ensure_future(self.upnp_service.run())