Пример #1
0
    def __init__(
        self,
        key_pair: KeyPair,
        peer_id: PeerID,
        peer_updater: PeerUpdater,
        status_provider: StatusProvider,
        finalized_root_provider: Callable[[Epoch], Root],
        block_provider_by_slot: BlockProviderBySlot,
        block_provider_by_root: BlockProviderByRoot,
        metadata_provider: MetadataProvider,
        fork_digest_provider: ForkDigestProvider,
        eth2_config: Eth2Config,
    ) -> None:
        peer_store = PeerStore()
        peer_store.add_key_pair(peer_id, key_pair)

        muxer_transports_by_protocol = {MPLEX_PROTOCOL_ID: Mplex}
        noise_key = ed25519.create_new_key_pair()
        security_transports_by_protocol = {
            TProtocol(secio.ID):
            secio.Transport(key_pair),
            TProtocol(noise.PROTOCOL_ID):
            noise.Transport(key_pair, noise_key.private_key)
        }
        upgrader = TransportUpgrader(security_transports_by_protocol,
                                     muxer_transports_by_protocol)

        transport = TCP()

        swarm = Swarm(peer_id, peer_store, upgrader, transport)
        BasicHost.__init__(self, swarm)

        self._peer_updater = peer_updater
        self._status_provider = status_provider
        self._finalized_root_provider_by_epoch = finalized_root_provider
        self._block_provider_by_slot = block_provider_by_slot
        self._block_provider_by_root = block_provider_by_root
        self._metadata_provider = metadata_provider

        self._request_responder = RequestResponder(
            self._peer_updater,
            self._status_provider,
            self._block_provider_by_slot,
            self._block_provider_by_root,
            self._metadata_provider,
        )
        self._install_req_resp_protocols()

        self._gossiper = Gossiper(fork_digest_provider, self)

        self._peers: Set[PeerID] = set()
Пример #2
0
def initialize_peerstore_with_our_keypair(self_id: ID,
                                          key_pair: KeyPair) -> PeerStore:
    peer_store = PeerStore()
    peer_store.add_key_pair(self_id, key_pair)
    return peer_store