Blockchain, Cryptography and Digital Currencies