- uses the key derivation/hash algorithm from qash-qkdc
- this notebook is a demonstration of how blockchain and quantum hashing can integrate in a hybrid enviornment
- JAX is used for hardware acceleration
- tested on python v3.11
- use of random nonce for each block in chain
- improved chain security
- pseudo-random numbers are fed into non-deterministic quantum circuit
- better randomness can be generated since non-deterministic circuit is used
- new device support
- ibm/qiskit
- google/cirq
- deterministic and non-determinstic circuit modes
- non-deterministic:
- allows truly random output (when NOT on simulator)
- shots=None or shots=0
- nonce is generated using this mode
- deterministic
- hashes are generated using this mode
- shots >= 1
- non-deterministic:
- this is a basic, publicly accessible implementation and may not cover all aspects of blockchain creation and deployment
- does not handle consensus algorithm
- does not have permission system
- no smart contracts currently
- this blockchain can be adapted to a centralized or decentralized system
- adapt for other hardware (trapped-ion, neutral atom, etc)
- implement configurable permission system
- implement consensus algorithm (private and public modes)
- add smart contracts feature
- Any donation, no matter how small, is greatly appreciated!!
- click here to donate
- please cite this project/repo if using it in research and/or development (USE IN RESEARCH/DEVELOPMENT IS ENCOURAGED)
-
quantum libraries provided by PennyLane:
-
Ville Bergholm et al. PennyLane: Automatic differentiation of hybrid quantum-classical computations. 2018. arXiv:1811.04968
-
-
accerlation through JAX library:
jax2018github, author = {James Bradbury and Roy Frostig and Peter Hawkins and Matthew James Johnson and Chris Leary and Dougal Maclaurin and George Necula and Adam Paszke and Jake Vander{P}las and Skye Wanderman-{M}ilne and Qiao Zhang}, title = {{JAX}: composable transformations of {P}ython+{N}um{P}y programs}, url = {http://github.com/google/jax}, version = {0.3.13}, year = {2018},