What you will learn from reading Blockchain Basics:
– Understand how blockchains work from the ground up.
– How asymmetric cyrptography works.
– How ownership actually works and why ledgers are important.
Blockchain Basics Book Summary:
Blockchain Basics is the perfect way to build up a first principles understanding of how bitcoin works. Taking you from understanding systems into hashing and cryptography this book is the perfect guide to understanding what cryptocurrencies are all about.
Layering Systems:
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).
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 save.
Systems can be analyzed by separating them into:
Application and implementation layer Functional and nonfunctional aspects The application layer focuses on the user’s needs, while the implementation layer focuses on making things happen.
Functional aspects focus on what is done, while nonfunctional aspects focus on how things are done.
Most users are concerned with the functional aspects of the application layer of a system, while nonfunctional aspects of a system, in particular those of the implementation layer, are less visible to users.
Systems and Integrity:
Integrity is an important nonfunctional aspect of any software system. It has three major components?
Data integrity: The data used and maintained by the system are complete, correct, and free of contradictions.
Behavioral integrity: The system behaves as intended and it is free of logical errors.
Security: The system is able to restrict access to its data and functionality to authorized users only.
Most software failures, such as losses of data, illogical behavior, or strangers accessing one’s private data, are the result of violated system integrity.
The purpose of the blockchain is to achieve and maintain integrity in distributed systems.
Trust and integrity are two sides of the same coin. In the context of software systems, integrity is a nonfunctional aspect of a system to be safe, complete, consistent, correct, and free of corruption and errors. Trust is also the firm belief of humans in the reliability, truth, or ability of someone or something without evidence, proof, or investigation. Trust is given in advance and will increase or decline based on the results of interactions on an ongoing basis.
As a rule of thumb, one can state that as soon as a system has a single component that could bring down the whole system it is not distributed, regardless of how complex its architecture looks.
What is the Blockchain and Why is it Exciting?
The excitement about the blockchain is based on its ability to serve as a tool for achieving and maintaining integrity in purely distributed peer-to-peer systems that have the potential to change whole industries due to disintermediation.
The core problem to be solved by the blockchain is achieving and maintaining integrity in a purely distributed peer-to-peer system that is comprised of an unknown number of peers with unknown reliability and trustworthiness.
The blockchain is a purely distributed peer-to-peer system of ledgers that utilizes a software unit that consist of an algorithm, which negotiates the informational content of ordered and connected blocks of data together with cryptographic and security technologies in order to achieve and maintain its integrity.
How to distinguish ownership:
Taking the findings of the previous section to a more abstract level, one can state that proving ownership involves three elements:
An identification of the owner.
An identification of the object being owned.
A mapping of the owner to the object
Managing and clarifying ownership is the most prominent application case of the blockchain but is not the only one.
The importance of Ledgers:
The importance of having an up-to-date and orderly managed register has led to the development of special institutions in many societies.
The more valuable certain kinds of objects are, the higher the chance for the existence of a government-regulated ledger that documents the ownership of those objects. Most of these ledgers are open to everyone in order to make it easy to verify ownership and provide easy access to clarify ownership. You may do some research on your own to identify some of these ledgers in your country and to what they testify.
I found ledgers for documenting ownership of real estate, patents, ships, airplanes, and companies. I even found registers for marriages, births, and deaths.
Understanding Security:
Three major security related concepts that need to be explained in more detail, as their meaning in the context of software systems might be a bit different from their common usage:
Identification
Authentication
Authorization
Identification just means to claim to be someone by stating a name or anything else that could be used as an identifier.’ In the liquor shop example, one could claim to be a certain person by stating a name.
The purpose of authentication is to prevent someone from claiming to be someone else. Authentication means verifying or proving that you really are who you claim to be’. This proof can be provided by something you have or something you know that can serve as proof that you really are who you claim to be (e.g., an ID card, a driver’s license, or some details of the life of the person you claim to be). It is important that the proof of your claimed identity is uniquely connected to you (e.g., a photograph of your face, a fingerprint, or something else that identifies you uniquely).
Authorization means granting access to specific resources or services due to the characteristics or properties of one’s identity’. Authorization is the consequence of both a successful authentication and evaluation of one’s characteristics or rights.
In Summary:
Identification means claiming to be someone.
Authentication means proving that you really are who you claimed to be.
Authorization means getting access to something due to the previously authenticated identity.
The blockchain uses asymmetric cryptography in order to achieve two goals:
Identifying accounts: User accounts are public cryptographic keys.
Authorizing transactions: The owner of the account who hands off ownership creates a piece of cypher text with the corresponding private key. This piece of cypher text can be verified by using the corresponding public key, which happens to be the number of the account that hands off ownership.
The history of a transaction is made immutable by utilizing two ideas:
Storing the transaction data in the change-sensitive blockchain-data-structure, which when being changed requires rewriting the data structure starting at the point that causes the change until the head of the whole chain.
Requiring the solution of a hash puzzle for writing, rewriting, or adding every single block header in the blockchain-data-structure.
The Blockchain Algorithm:
The blockchain-algorithm is a series of rules and instructions that governs the way in which transaction data are processed and added to the system.
The major idea of the blockchain-algorithm is to allow all nodes of the system to act as supervisors of their peers and reward them for adding valid and authorized transactions and for finding errors in the work of others.
The rules of the competition establish a two-step rhythm that governs the work of every node in the network.At any given point in time, all nodes of the system are in either of the two phases:
Evaluating a new block that was created by others.
Trying hard to be the next node that creates a new block that has to be evaluated by all others