BlockChain and Cryptocurrencies; Fundamentals and Applications