Пример #1
0
    async def dial(self, maddr, self_id, options=None):
        """
        dial a transport to peer listening on multiaddr
        :param maddr: multiaddr of peer
        :param self_id: peer_id of the dialer (to send to receiver)
        :param options: optional object
        :return: True if successful
        """
        host = maddr.value_for_protocol('ip4')
        port = int(maddr.value_for_protocol('tcp'))

        reader, writer = await asyncio.open_connection(host, port)

        # First: send our peer ID so receiver knows it
        writer.write(id_b58_encode(self_id).encode())
        await writer.drain()

        # Await ack for peer id
        expected_ack_str = "received peer id"
        ack = (await reader.read(len(expected_ack_str))).decode()

        if ack != expected_ack_str:
            raise Exception("Receiver did not receive peer id")

        return RawConnection(host, port, reader, writer, True)
Пример #2
0
def test_id_b58_encode():
    random_id_string = ''
    for _ in range(10):
        random_id_string += random.SystemRandom().choice(ALPHABETS)
    expected = base58.b58encode(random_id_string).decode()
    actual = id_b58_encode(ID(random_id_string))

    assert actual == expected