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))
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.")
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.")
In [ ]: