Blockchain Basics: A Non-Technical Introduction in 25 Steps by Daniel Drescher [Apress]

Notes on Blockchain Basics: A Non-Technical Introduction in 25 Steps (Part 1: Introduction)


This document is intended to serve as a summary of the book titled Blockchain Basics: A Non-Technical Introduction in 25 Steps, by Daniel Drescher.

Introduction

The introduction answers the most important question that every author has to answer: Why should anyone read this book? Continue reading and you will learn why this book was written, what you can expect from this book, what you cannot expect from this book and for whom the book was written.

Why Another Book About the Blockchain?

Blockchain technology has a lot of hype and attention focused on it. Consequentially, a proliferation of literature (books and articles) exists on the subject. However, the technical details are often presented all too briefly or from a high level, which can leave one feeling somewhat lost.

"This book fills the gap that exists between purely technical books about the blockchain, on the one hand, and the literature that is mostly concerned with specific applications or discussions about its expected economic impact or visions about its future, on the other hand.

"This book was written because a conceptual understanding of the technical foundations of the blockchain is necessary in order to understand specific blockchain applications, evaluate business cases of blockchain startups, or follow the discussion about its expected economic impacts. Without an appreciation of the underlying concepts, it will be impossible to assess the value or the potential impact of the blockchain in general or understand the added value of specific blockchain applications. This book focuses on the underlying concepts of the blockchain, since a lack of understanding of a new technology can lead to being carried away with the hype and being disappointed later on because of unrealistic [and] unsubstantiated expectations."

What You Cannot Expect from the Book

"The book is deliberately agnostic to the application of the blockchain. While cryptocurrencies in general and Bitcoin in particular are prominent applications of the blockchain, this book explains the blockchain as a general technology. This approach has been chosen in order to highlight generic concepts and technical patterns of the blockchain instead of focusing on a specific and narrow application case. Hence, this book is:

  • Not a text specifically about Bitcoin or any other cryptocurrency
  • Not a text solely about one specific blockchain application
  • Not a text about proofing the mathematical foundations of the blockchain
  • Not a text about programming a blockchain
  • Not a text about the legal consequences and implications of the blockchain
  • Not a text about the social, economic, or ethical impacts of the blockchain on our society or humankind in general.

"However, some of these points are addressed to some extent at appropriate points in this book.

What You Can Expect from the Book

"This book explains the technical concepts of the blockchain such as ­ transactions, hash values, cryptography, data structures, peer-to-peer systems, distributed systems, system integrity, and distributed consensus in a­ non-technical fashion."

How the Book is Organized

"This book consists of 25 steps grouped into five major stages that all together form a learning path, which incrementally builds your knowledge of the blockchain. These steps cover some fundamentals of software engineering, explain the required terminology, point out the reasons why the blockchain is needed, explain the individual concepts that make up the blockchain as well as their interactions, consider applications of the blockchain, and mention areas of active development and research."

Stage 1: Terminology and Technical Applications

"This stage explains major concepts of software engineering [...] This learning stage also introduces the concepts of software architecture and integrity and how they relate to the blockchain."

Step 1: Thinking in Layers and Aspects

"This step explains how you can analyze a software system and why it is important to consider a software system as a composition of ­layers. Furthermore, this step illustrates what you can gain from considering ­different layers in a system and how this approach helps us to understand the ­blockchain."

Layers of a Software System

"The following two ways of partitioning a system are used throughout this book:

  • Application vs. implementation
  • Functional vs. nonfunctional aspects
Application vs. Implementation

"Mentally separating the user’s needs from the technical internals of a system leads to a separation of the application layer from the implementation layer. Everything that belongs to the application layer is concerned with the user’s needs (e.g., listening to music, taking photos, or booking hotel rooms). Everything that belongs to the implementation layer is concerned with making these things happen (e.g., converting digital information into acoustic signals, recognizing the color of a pixel in a digital camera, or sending messages over the Internet to a booking system). Elements of the implementation layer are technical by nature and are considered a means to an end."

Functional vs. Nonfunctional Aspects

"Distinguishing between what a system does and how it does what it does leads to the separation of functional and nonfunctional aspects. Examples of functional aspects are sending data over a network, playing music, taking photos, and manipulating individual pixels of a picture. Examples of nonfunctional aspects are a beautiful graphical user interface, fast-running software, and an ability to keep user data private and safe. Other important nonfunctional aspects of a system are security and integrity. Integrity means that a system behaves as intended, and it involves many aspects such as security and correctness. There is a nice way to remember the difference between functional and nonfunctional aspects of a system by referring to grammar usage in the English language: Verbs describe actions or what is done, while adverbs describe how an action is done. As a rule of thumb, one can say that functional aspects are similar to verbs, while nonfunctional aspects are similar to adverbs.
"[...]
"Functional aspects of the application layer are the most obvious elements of a system, because they serve obvious needs of the users. These elements are typically the ones users learn about. On the other hand, the nonfunctional aspects of the implementation layer are rarely seen as major elements of the system. They are typically taken for granted.

"Integrity is an important nonfunctional aspect of any ­software system and it has three major elements:

  • Data integrity
  • Behavioral integrity
  • Security

Most software failures, such as losses of data, illogical behavior, or strangers accessing one’s private data, are the result of violated system integrity."

How do you rate this article?

26


Great White Snark
Great White Snark

I'm currently seeking fixed employment as a S/W & Web developer (C# & ASP .NET MVC, PHP 8+, Python 3), hoping to stash the farmed fiat and go full Crypto, quit the 07:30-18:00 grind. Unsigned music producer; snarky; white; balding; smashes Patriarchy.


Cryptographic Anarchy: (Mis)Adventures in Crypto
Cryptographic Anarchy: (Mis)Adventures in Crypto

The content of this blog is exclusively to do with online privacy/security, cryptography and cryptocurrency: Understanding it, investing in it, mining it (in groups/crowds), developing/programming it, the social problems it aims to solve and the various ways to make more of it (or not, as various losses and failures happen). Let's get away from banksters, Capitalists and fiat, to an unbanked anarcho-syndicalist commune. || Banner image: Blogger's own.

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.