In [1]:
from play import *

In [2]:
n = 4
# (s, key) = generateEntangledMoney(1000, n)
(s, key) = generateRegularMoney(1000, n)

print("Planning on counterfeiting key: |{0}>, #{1}.".format("".join(key), s))


Planning on counterfeiting key: |1--1>, #0.

Let's now forge using the scheme of Nagaj and Sattath.


In [3]:
(forged, original) = nsCounterfeit( (s, listToState(key)) )

(sf, _) = validate(forged)
(so, _) = validate(original)

if so and sf:
    print("Success! We forged a {0:d}-qubit key!".format(n))
else:
    print("We died.")


Success! We forged a 4-qubit key!

Let's forge naively, by measuring each qubit and hoping for the best.


In [4]:
(forged, original) = naivelyCounterfeit( (s, listToState(key)) )

(sf, state) = validate(forged)
(so, state) = validate(original)

if sf and so:
    print("We were able to naively forge the key!")
else:
    print("We died.")


We died.

In [ ]: