qBank
qBank
The most secure way to store and transfer money
Security based on quantum physics rather than on unproved complexity-theoretic conjectures
José Manuel Rodríguez Caballero
Disclaimer: This project is not an an initial coin offering (ICO). The goal is to store and transfer existing money using existing banks, not to create new money.March 22, 2021
Software description of the protocol
Software description of the protocol
A contract between two people is expressed as a statistical correlation. This is related to the idea that spacetime emerges from quantum entanglement.
We assume that a bank stores the money of a community. This money can be justified by gold, dollars, euros, bitcoins or Ethereum’s coins (it is irrelevant the kind of money we store).
In this section we will ignore the hardware difficulties.
1
.Alice and Bob interact with qBank in an uncorrelated way. Each one uses a secure quantum channel (for sharing exactly one Bell pair) and an insecure classical channel.
2
.Bob is interested in sending 400 Canadian dollars to Alice.
3
.Alice and Bob exchange information across a secure classical channel.
4
.The interactions between Alice and qBank, on the one hand, and Bob and qBank, on the other hand, are now correlated.
5
.The qBank transfers money from Bob to Alice.
6
.Once the transfer is complete, Alice and Bob disconnect from the secure classic channel that communicates them.
7
.Alice and Bob interact with qBank in an uncorrelated way, as in the beginning.
In[]:=
Graph[{"Alice""qBank","Alice""qBank","Bob""qBank","Bob""qBank","Alice""Bob"},EdgeStyle{("Alice""qBank"){Dashed,Green},("Bob""qBank"){Dashed,Green},("Alice""Bob"){Dotted,Red}}]
Out[]=
Communication channels:
◼
dashed lines: classical, insecure (1 bit is sent)
◼
solid lines: quantum, secure (1 Bell pair is shared)
◼
dotted line: classical, secure (1 bit is sent)
Proposals for hardware
Proposals for hardware
We assume that Alice and Bob are close to each other, but they are far from the qBank.
Channel: classical, insecure
Channel: classical, insecure
Either:
1
.Internet
2
.Radio waves
Channel: quantum, secure
Channel: quantum, secure
Any device to exchange Bell pairs. This device may be in a tower.
Channel: classical, secure
Channel: classical, secure
A cable, assuming that Alice’s tower and Bob’s tower are in the same town.
Example
Example
Beginning of the experiment. Every 0.01 seconds there is an unintentional transfer.
In[]:=
TaskUnintentionalTransfer=SessionSubmit[ScheduledTask[qCoinFlipping[];eCoinFlipping[];UnintentionalTransfer[],{Quantity[0.01,"Seconds"],Infinity}]]
Out[]=
TaskObject
End of the experiment.
In[]:=
TaskRemove[TaskUnintentionalTransfer]
Out[]=
TaskObject
Disclaimer: In the following examples, all names were generated at random. If some of these names coincide with a real-person name, it is just a coincidence.
Code of the simulation
Code of the simulation
How much money do I have?
How much money do I have?
Suppose that the user Jillian Ranieri wants to know how much money he has. He just write his name and his password in the following function.
In[]:=
MyMoney["Jillian Ranieri","e259ad6080a93fa2efe637286e13cb1ff9ea5293c08b02afd007be1694a7fc45"]
Out[]=
4090
I transfer money to a friend
I transfer money to a friend
In[]:=
Transfer["Jillian Ranieri""Cathern Mcgahey",1000,"e259ad6080a93fa2efe637286e13cb1ff9ea5293c08b02afd007be1694a7fc45"];
Transfer done
In[]:=
MyMoney["Jillian Ranieri","e259ad6080a93fa2efe637286e13cb1ff9ea5293c08b02afd007be1694a7fc45"]
Out[]=
3689
I buy something
I buy something
Jillian Ranieri is selling food
In[]:=
Offer["Jillian Ranieri"]//TableForm
Out[]//TableForm=
food |
food |
food |
food |
food |
Cathern Mcgahey is interested in buying this one
In[]:=
Offer["Jillian Ranieri"][[1]][["food"]]
Out[]=
Cathern Mcgahey buys a product from Jillian Ranieri
In[]:=
Buy["Cathern Mcgahey","Jillian Ranieri",Offer["Jillian Ranieri"][[1]][["food"]],"a1f9e41a3474529a3e80e06a405fbdd8e09042ac1c9b4b8659c0c64b401425b4"]
Transfer done
The product will be delivered to your home in 20 minutes
Global picture
Global picture
Steady state
Steady state
In[]:=
MoneyHistory={MoneyArray};Do[Pause[0.01];MoneyHistory=Append[MoneyHistory,MoneyArray],1000];
In[]:=
Animate[ListPlot[MoneyHistory[[i]],PlotRange{-100,8000}],{i,1,Length[MoneyHistory],1}]
In[]:=
ListPlot[Table[MoneyHistory[[i]][[5]],{i,Length[MoneyHistory]}],PlotRange{-100,8000}]
Out[]=
Transfer
Transfer