Maurice Herlihy has published a book and numerous papers on distributed systems, and in particular concurrency, so he is in a very good position to judge blockchains. He has written here an excellent tutorial on blockchains from the point of view of distributed systems theory. He gradually builds on the concepts of blockchain systems, starting from a simple ledger and adding more functionality until they become full blockchain systems, at each step justifying the need for the extra complexity. Proof-of-work puzzles and contracts are logically justified, and their descriptions clearly show how they contribute to the power of this distributed architecture. The real-life examples illustrate very nicely why blockchain systems are needed.
By relating blockchain concepts to distributed systems theory, it is possible to get a more conceptual understanding of this technology. Blockchains were introduced without an underlying model; as a result, their use in practice has had some serious pitfalls that have resulted in significant loss of money. Ellervee et al. provide a nice description of the architecture itself without getting into concurrency concepts [1], which complements this tutorial from a totally different point of view. I recommend reading these two papers together to get a complete perspective of the possibilities and modus operandi of this intriguing technology.