Bitcoin and cryptocurrency mining were explained with the Byzantine Generals problem. We use this to explain the essence of cryptocurrency mining. The Byzantine generals' problem was introduced in a computer science paper published in 1982.
The problem discussed in the paper is that computer systems must be able to function effectively in the presence of faulty components that can send conflicting information to different parts of the system... This issue becomes even more acute when we talk about decentralized computer networks.
Imagine the following thought experiment: The Byzantine army has surrounded an enemy city. The army is organized into several units. Each unit is commanded by a general and all of them are required to come up with a coordinated plan of action. However, they are located far away from each other and the only means of communicating with each other is through messages. To make things more complicated, one or more generals are presumed to be traitors. The presence of disorganized generals means that misleading messages can be sent to disrupt any coordinated plan, be it an attack or retreat. To find a successful solution to this puzzle, the Byzantine army needs to find its way to coordinated action, one way or another. To achieve this, the Byzantine army needs an algorithm working effectively toward a coordinated outcome, where loyal generals follow and do not defect. Now that you are familiar with the problem, let's look at its solution. This is called the Byzantine defect tolerance algorithm. Over the years, there have been many proposed theoretical solutions involving game theory and mathematics. The first practical implementation of the Byzantine defect tolerance algorithm came with bitcoin's proof-of-work In this case, "generals" are nodes on the bitcoin network, also known as "miners". A network node is a connection point that can receive, create, store, and send data to a network. In other words, nodes are connected dots that make up a network. To simplify, think of it the following way. In the image we traditionally use to depict a blockchain, each computer is a separate node. They are all interconnected and can receive, create, store, and send data to each other. In the context of the Byzantine defect tolerance algorithm, the important concept to understand is that these mining nodes start with the assumption that no one else on the network can be trusted. Proof of work secures the consent of the network even in the presence of non-compliant nodes. That is, even if some Byzantine generals are not acting in the best interests of the military, coordinated action can be taken. Let us see how this mechanism works in bitcoin. As we all know by now, bitcoin is a peer-to-peer network, where all activities are performed by its users through appropriate software and hardware. These activities include conducting transactions, receiving transactions, and verifying and transmitting transactions. Now, this is where we need to introduce the concept of "mining", which many of you have probably known. Mining is an activity, carried out by network participants, which includes proof-of-work and is the result of generating new coins in the form of new coins for Miner, who has previously done this proof-of-work for each new block. Did the work successfully. Proof-of-work requires an enormous number of computer-made calculations aimed at solving cryptographic hash puzzles. These are the previously described puzzles, which enable the network to function and continue to exchange transactional messages with other network participants. Let's get into the nuts and bolts of this mechanism to find out how it works. First, let's take a look at how miners create new blocks. Mining nodes collect and collect new transaction data.
Even after collecting and arranging verified transactions in a candidate block, the miner must construct a block header, which contains some key components: - Summary of all transactions data in the candidate block; A link to the previous block in the chain also called the parent block; Timestamp showing the time of block creation; And Valid Proof Off-Work - The functions included in a given block are summarized through hash functions, which process the data in a way that results in a standardized specific identity code. This identification code is also known as a digital fingerprint. In this way, the system has a unique identifier for each block of transactions.
Some examples of block headers seen in blockexplorer.com and blockchain.info are: As you can see at the top, just below the block number is a long alphanumeric string, called a block hash or just hash. Alphanumeric means that it contains both letters and numbers. It is a type of encoding data and is the output result of processing the bottom block header data via bitcoin's cryptographic hash function. You may have heard the name of this function - SHA 256, which stands for a secure hash algorithm. You probably remember that we briefly mentioned and explained the hash function in the section about cryptography. We are discussing them again here because they play such an important role in the work of proof. As we learned, a hash function can digest any type of data of any size, into a fixed-length string of characters that can serve as a unique digital fingerprint or identifier. Furthermore, these cryptographic hash functions only work in one direction. Once we have the output, we cannot just reverse the function, plug in the output, and receive input data at the other end.
To illustrate what it means to invert a function, consider four basic mathematical functions: - Addition and subtraction are inverse functions of each other - Multiplication and division are inversely proportional functions of each other. One can always construct equations with these functions to find;
Example: 3 * X = 15; X = 15/3 = 5M Mathematical functions can be inverted in a similar way; however, this is not the case with cryptographic hash functions. The only possible way to have a unique random variable can be found in the input data set of the cryptographic function that is trying different values for the unknown, one by one, all the other known parameters, which works. to find out. This is potentially a brute force approach of trying all possible combinations. And this is the element of "work" as used in proof-of-work. This task requires all iterative computing computers to find a solution to the cryptographic puzzle.



0 Comments