def main(): network = Network.get_instance() nodes = ['Alice', 'Bob', 'Eve'] network.delay = 0.2 network.start(nodes) host_alice = Host('Alice') host_bob = Host('Bob') host_eve = Host('Eve') host_alice.add_connection('Bob') host_bob.add_connection('Alice') host_bob.add_connection('Eve') host_eve.add_connection('Bob') host_alice.start() host_bob.start() host_eve.start() network.add_host(host_alice) network.add_host(host_bob) network.add_host(host_eve) q = Qubit(host_alice) print(q.id) q.X() host_alice.send_epr('Eve', await_ack=True) print('done') host_alice.send_teleport('Eve', q, await_ack=True) q_eve = host_eve.get_data_qubit(host_alice.host_id, q.id, wait=5) assert q_eve is not None print(q.id) print('Eve measures: %d' % q_eve.measure()) network.stop(True)
def main(): network = Network.get_instance() nodes = ["Alice", "Bob", "Eve", "Dean"] network.start(nodes) network.delay = 0.1 host_alice = Host('Alice') host_alice.add_connection('Bob') host_alice.start() host_bob = Host('Bob') host_bob.add_connection('Alice') host_bob.add_connection('Eve') host_bob.start() host_eve = Host('Eve') host_eve.add_connection('Bob') host_eve.add_connection('Dean') host_eve.start() host_dean = Host('Dean') host_dean.add_connection('Eve') host_dean.start() network.add_host(host_alice) network.add_host(host_bob) network.add_host(host_eve) network.add_host(host_dean) q_id1, _ = host_alice.send_epr('Dean', await_ack=True) q1 = host_alice.get_epr('Dean', q_id1) q2 = host_dean.get_epr('Alice', q_id1) if q1 is not None and q2 is not None: m1 = q1.measure() m2 = q2.measure() print("Results of the measurements for the entangled pair are %d %d" % (m1, m2)) else: if q1 is None: print('q1 is none') if q2 is None: print('q2 is none') network.stop(True) exit()
def main(): network = Network.get_instance() backend = ProjectQBackend() # backend = EQSNBackend() nodes = ['A', 'B', 'C'] network.delay = 0.1 network.start(nodes, backend) host_A = Host('A', backend) host_A.add_c_connection('C') host_A.delay = 0 host_A.start() host_B = Host('B', backend) host_B.add_c_connection('C') host_B.delay = 0 host_B.start() host_C = Host('C', backend) host_C.add_c_connections(['A', 'B']) host_C.delay = 0 host_C.start() network.add_host(host_C) # To generate entanglement host_A.add_connection('B') host_B.add_connection('A') network.add_host(host_A) network.add_host(host_B) # strategy = 'CLASSICAL' strategy = 'QUANTUM' host_A.delay = 0.0 host_B.delay = 0.0 host_C.delay = 0.0 print('Starting game. Strategy: %s' % strategy) if strategy == 'QUANTUM': print('Generating initial entanglement...') for i in range(PLAYS): host_A.send_epr('B', await_ack=True) print('created %d EPR pairs' % (i + 1)) print('Done generating initial entanglement') else: network.delay = 0.0 # Remove the connection from Alice and Bob host_A.remove_connection('B') host_B.remove_connection('A') network.update_host(host_A) network.update_host(host_B) # Play the game classically if strategy == 'CLASSICAL': host_A.run_protocol(alice_classical, (host_C.host_id, )) host_B.run_protocol( bob_classical, (host_C.host_id, ), ) # Play the game quantumly if strategy == 'QUANTUM': host_A.run_protocol(alice_quantum, (host_C.host_id, host_B.host_id)) host_B.run_protocol(bob_quantum, (host_C.host_id, host_A.host_id)) host_C.run_protocol(referee, (host_A.host_id, host_B.host_id), blocking=True) network.stop(True)