What is Merkle Tree in Blockchain?

In my article ‘Blockchain in a Nutshell’, I have mentioned Merkle tree as one of the metadata in a block of the blockchain. What actually is the Merkle tree? 

In computer science, the Merkle tree is a branching data structure that is used to store hashes of individual data in a large dataset. The purpose is to make the verification of the dataset efficient and fast. It is an anti-tamper mechanism to ensure that the large dataset has not been tampered with. 

In blockchain,  the Merkle tree(also known as the hash tree) encodes the blockchain data in an efficient and secure manner. Every transaction occurring on the blockchain network is subjected to a hashing algorithm to produce a hash, as shown in the figure below. Therefore, every transaction has a hash associated with it.

As there are thousands of transactions stored on a particular block, it will be very time consuming if every node has to deal with hundreds of thousands of transaction across the blockchain, synchronization and mining will take a long time. To solve this issue, all the transactions hashes in the block are also hashed. As illustrated in the following figure, two hashes are hashed into a single hash.

These hashes are not stored in a sequential order on the block, rather in the form of a tree-like structure such that each hash is linked to its parent following a parent-child tree-like relation. The hashing will go on until it produces a singular hash,  the Merkle root. This Merkle root is the hash of the block and it is stored on the header of the block. The process is illustrated in the following diagram:

The Merkle Tree structure will enable the quick verification of blockchain data and quick movement of large amounts of data from one computer node to the other on the peer-to-peer blockchain network.

How to achieve Proof of Work?

According to Wikipedia(2019), A Proof-of-Work (PoWsystem is an economic measure to deter denial of service attacks and other service abuses such as spam on a network by requiring some work from the service requester, usually meaning processing time by a computer. This protocol is adopted by the Bitcoin to enhance the security of the Bitcoin network.

In order to hack the Bitcoin network, the attacker needs to take over 51% of the nodes. However, it is almost impossible to achieve this task as it requires a tremendous amount of computational power and astronomical cost. Proof of work is attained via an activity called mining in Bitcoin and other cryptocurrencies.

Mining involves the process of producing a hash whose value is less than the target value. When this hash has been found, it is called a valid hash and hence proof of work is achieved.

The mining algorithm uses a counter known as the nonce to generate the hash using the SHA256 cryptographic function. A hash algorithm always produces the same arbitrary length data given the same inputs. It is impossible to compute the same hash with two different inputs. It is also impossible to predict the output of any given data in advance. The other important value in proof-of-work is difficulty. Difficulty is a measure of how difficult it is to find a hash below a given target. 

The value of nonce is initialized to 0. Mining is finding the nonce, the only input that changes every time we run the hash function. The goal is to find a value for the nonce that will result in the hash lower than the current target. The formula to compute the current target is

Current target= maximum target ÷ difficulty

Therefore, the mining node might need to try billions or trillions of nonce values before it gets a valid hash. As you can see, mining is like playing the slot machine, there is no way to predict when can you strike a jackpot.

It is very easy to prove that the nonce found indeed produces a valid hash. All the information are available, everyone in the network can run the hash function and confirm if the hash is valid or not. Because it is also impossible to predict what the nonce will be, it also acts as a proof that the miner has indeed achieved Proof-of-Work.

Calculation of the Valid Hash

(The numbers are based on block #540909)

The formula to calculate the current target of the block is

Current target= maximum target ÷ difficulty

Maximum target is set to 

0x00000000FFFF0000000000000000000000000000000000000000000000000000

This is a hexadecimal number. After conversion to a decimal number 

Maximum target= 

26959946667150639794667015087019630673637144422540572481103610249215

Difficulty is (as given in the block)

7019199231177.17

Therefore,
Current target=

(26959946667150639794667015087019630673637144422540572481103610249215)÷7019199231177.17

3.84089×1054

The hash of the block is

00000000000000000000ef17668e407e78c5a247f731b1138ad16f5bf79f1c0d

After converted to a decimal number, the value is as follows:

89454716205495239548871016846060264708718561584946189

The hash value is approximately   8.95×1051

Clearly, the hash value is less than the current target, therefore it is a valid hash.

You can view mining simulation by clicking the following link:

http://javascript-tutor.net/jSample/mining.html

Technical Explanation of Mining

In this article, let’s examine the technical aspects of crypto mining. In the blockchain, every block has a previous block except the very first block or the genesis block. Miners are competing to validate a new block by solving a complex mathematical puzzle. To explain in details, let’s take a look at the latest bitcoin mined block, block #540909 at the time of writing this article.

Notice that the block height is 540909, which means there are 540909 blocks in the bitcoin blockchain.

Let’s call the successful miner for this block Mr.John. Before John successfully mines block #540909, he was actually competing with other miners in mining the previous block #540908. However, he lost in the contest and block #540908 was mined by a fellow miner. As soon as block #540908 was mined, he needs to quickly update his blockchain and starts mining for a new unvalidated block, known as the candidate block.

In actual fact, while John’s computer(also known as a node)  was searching for the Proof of Work for the previous block, it was also searching for new transactions. Those new transactions are added to the memory pool or transaction pool.  The memory pool is a node’s temporary storage area for transaction data. This is where transactions wait until they can be included in a new block and validated.

In constructing the candidate block, John’s node starts gathering the transactions in the transaction pool. It removes the transactions already present in the previous block if there are any. The block is called a candidate block because it doesn’t have a valid Proof of Work yet.

As you can see that block #540909 has 1696  transactions inside it. This was the number of transactions present in John’s transaction pool when he created his candidate block. The mining process can be illustrated in the following figure.

In the mining process, John’s node is creating a coinbase transaction. This transaction is to create some bitcoins and deposit them into John’s wallet as a reward for finding a valid Proof of Work. This transaction is different from the other ones because the bitcoins in the reward are created out of nothing. They do not come from someone’s wallet. Besides that, John’s node also calculates the transaction fees in the block.

John reward by mining this block is as follows;

Total Reward =  Reward for mining block + transactions fee

                    = 12.5 BTC+0.15289664 BTC

                   = 12.65289664 BTC

The details of the transaction is as follows:


You can see the No Inputs (Newly Generated Coins) statement. It is because coinbase transactions do not come from anyone’s wallet, so they cannot have any inputs. You only have the winning miner’s wallet address here

What is Mining in Blockchain?

The Purpose of Mining

Generally, people conceive mining in blockchain as a way to obtain bitcoins or other cryptocurrencies. Well, it is partially true but this is not the main purpose of mining. In actual fact, the main objective of mining is to ensure the perpetuity and security of the decentralized network. The network comprises nodes that store the distributed ledgers in the form of the blockchain.

Bitcoins or other cryptocurrencies are awarded to the miners for their effort in maintaining the integrity of the blockchain by validating the transactions in the blockchain. Because of the reward system, miners (nodes) will stay on in the network and help to prevent network downtime. Just imagine if there is no reward, nobody will want to connect to the network and it will just cease to exist.

How does Mining work?

The mining process starts when miners are trying to validate new transactions and record them on the blockchain. The miners are competing to solve a difficult mathematical puzzle based on a cryptographic hash algorithm. The solution found is called the Proof-Of-Work. When a block is ‘solved’, all the transactions contained in the candidate block are considered validated, and the new block is confirmed. This new block will be appended to the blockchain. The time taken to confirm a new block is approximately 10 minutes for bitcoin, for other coins it is much faster. So, if you send or receive some bitcoin, it will take approximately 10 minutes for the transaction to be confirmed.

Miners receive a reward when they solve the complex mathematical problem. There are two types of rewards: new bitcoins and transaction fees. The amount of bitcoins created decreases every 4 years or  every 210,000 blocks to be precise. Today, a newly created block creates 12.5 bitcoins. This number will keep going down until no more bitcoin will be issued. This will happen around 2140, when 1 millions bitcoins will have been created. After this date, no more bitcoin will be issued.

Miners can also receive rewards in the form of transaction fees. The winning miner can collect all the transaction fees in the block. As the amount of bitcoin created with each block diminishes, the transactions fees received by the miner will increase. After 2140, the winning miner will only receive transaction fees as his reward.

Blockchain in a Nutshell

What is Blockchain?

A blockchain is a distributed digital ledger that can be used to record transactions and other data across a decentralized peer-to-peer network made up of a cluster of computing devices. We can also define a blockchain as a distributed encrypted database like a spreadsheet that is duplicated thousands of times across a network of computers. This network is designed to regularly update this spreadsheet. It is a subset of distributed ledger technologies.

The Blockchain Network

The blockchain network is a peer-to-peer decentralized Network.  The peers, also known as nodes, are connected to this network in a synchronous way. The node can be a desktop, a laptop, a mobile phone, mining rig, servers or any other electronic devices. These nodes form the foundation of the blockchain network. They provide computing resources such as disk storage space to keep the network alive and to maintain its integrity and security, and they do it voluntarily.

The main feature of the blockchain is decentralization. To understand what decentralization is, first we need to understand the traditional centralized operation mode. For example, if you go to the supermarket to buy something, you pay with a credit card when you check out. This process requires the approval of a third party, the bank. The transaction is completed after the bank approved it. However, if you use the blockchain platform to perform a transaction, you do not need a third party. The buyer and the seller can trade directly and seamlessly in a transparent and secure blockchain ecosystem.

Another feature of the blockchain is that all participants in the network do not need to establish any trust relationships to perform transactions. It relies on a cryptographic authentication technology, a decentralized network, and a consensus mechanism to ensure the security and integrity of funds and information. Therefore, the information of the blockchain is highly transparent and not easily falsified. Thus, the blockchain system is particularly suitable for a financial industry.

Decentralized Network Vs Centralized Network

Let’s examine the diagrams below to see the difference between a centralized network and a decentralized network. A centralized network has an authoritative central point of control. All the clients are connected to this single point and all their data are stored in the central server. The client has not much control over how the central authority will use his or her data.   

A good example is your bank account, the bank keeps your money and manages your account and they record all your transactions. They can also lend your money to other clients. Although this system has been quite reliable, it is prone to the vulnerability of a single point of failure. For example, if a bank’s central server is hacked by a hacker, all the accounts will be compromised.

On the other hand, in the peer-to-peer decentralized network, all the peers work together to upkeep the network via a consensus mechanism. The peers have 100% control of their data and how the data could be used. In addition, they don’t need a third party or a middle entity to perform transactions.

More importantly, it eliminates the vulnerability of a single point of failure. If a node is being hacked, only the data belong to that particular node would be compromised while all other nodes still keep a copy of the ledger. moreover, the cryptographic hashing algorithm makes it extremely difficult to hack the blockchain.

To ensure the nodes are motivated to maintain the network, blockchain incentivizes the nodes through a mechanism known as mining. By engaging in mining activities the successful miners will be rewarded with some cryptocurrencies such as Bitcoin, Ethereum or other coins. I shall explain mining in another article.

Centralized Network
Decentralized Network

The Composition of Blockchain

A blockchain comprises a chronological chain of blocks. The first block is known as the genesis block. A block refers to a set of transactions that are bundled together and appended to the blockchain.  The second block is appended to the genesis block, the third block is appended to the second block and so forth, as shown in the following diagram:

blockchain

Every node in the network stores a copy of the distributed ledgers, or the blockchain, as shown in the figure below.

The Blockchain Network

The Block Structure

A block consists mainly of the block header containing metadata and a list of transactions appended to the block header. The blockchain metadata are as shown in the following figure:

Moreover, there is other information in the block, such as rewards, transaction fees and so on. I will explain them one by one in future articles. If you want to find out the latest Bitcoin block information, you can browse the following link:

https://www.blockchain.com/explorer

The following figure shows the real data of Bitcoin block #546717:

Block #546717

Block Height

The block height of a particular block is defined as the number of blocks preceding it in the blockchain(Investopedia). It is calculated as the length of the blockchain minus one. Genesis block has a block height of zero as it does not have preceding blocks. For example, the height of block 546717 is 546717 (refer to the figure above).

Nonce

A nonce is a random number the miners used to solve a mathematical puzzle in the mining process, which is also known as proof of work.  The nonce in the bitcoin block is a 32-bit (4-byte) field whose value is adjusted by the miner to make the hash of the block smaller than or equal to the current target of the network. The concept of proof of work is explained in the following section.

What is Proof of work?

On the Bitcoin blockchain network, the miner nodes bundle unconfirmed and valid transactions into a block. Each block contains a given number of transactions. In the Bitcoin network, every miner must solve a cryptographic puzzle to propose the next block. This process is known as ‘proof of work’.  Proof-of-work is a mechanism that existed before the first blockchain was created. It prevents abuses by requiring a certain amount of computing work. That amount of work is key to prevent spamming and tampering. Spamming is no longer worth it if it requires a lot of computing power.

Difficulty

Difficulty is a value that measures the degree of difficulty to find a hash value for a given target, which represents the difficulty of mining. The value of difficulty will be changed once every 2016 blocks, the value will usually increase.

What is Timestamping?

According to Wikipedia, a timestamp is a sequence of characters or encoded information identifying when a certain event occurred, usually giving date and time of day. In the olden days,  the term derives from rubber stamps used in offices to stamp the current date, and sometimes time, in ink on paper documents, to record when the document was received, as shown in the diagram below:

Image adapted from Wikipedia

In this digital age, the term has been expanded to refer to the date and time information attached to digital data. For example, computer files contain timestamps that tell when the file was created and when was it last updated. Digital cameras add timestamps to the pictures by recording the date and time the pictures were taken.

The Unix timestamp is the number of seconds passed since midnight on January 1, 1970 (UTC / GMT), ignoring of leap seconds. When I wrote this article, the Unix timestamp is 1540130658.  You can check the current timestamp from the links below:

https://www.unixtimestamp.com/

Timestamping is an important feature of blockchain technology. Each block is timestamped, with each new block referring to the previous block using the cryptographic hash. Combined with cryptographic hashes, this timestamped chain of blocks provides an immutable record of all transactions in the blockchain, as shown in the figure below:

What is Hash?

A hash or hash value is the result of a hash function. A hash function takes an input of any length, perform some algorithmic transformation, and produces an alphanumeric value of a predetermined length. The input could be a spreadsheet file, a music file, video file, image file, financial statement, invoice, contract etc.

A hash value comprises  a 256 bits(64 characters) random letters and numbers , as follows: “4373c7fb1437035365d9228c77eca2cfd240523e274163e78c1eba11effd8b38”.

You can generate a hash online using the following link:

https://passwordsgenerator.net/sha256-hash-generator/

A hash has the following properties

  • A given input has a precisely predictable output of a specified length, usually, but not necessarily much shorter than the input.
  • Even if the input is only slightly changed, the output differs dramatically.
  • If the hash function is of the cryptographic variety, it is very difficult, if not practically impossible, to infer the original input, given only the output. The degree of difficulty/impossibility depends on the strength of the encryption used.

 Every transaction occurring on the blockchain network is encoded with a hashing algorithm to produce a hash that is impossible to decrypt. Hashes are used to represent the current state of the blockchain. It means all the transactions that have taken place so far have been hashed, and the resulting output hash represents the current state of the blockchain. The hash is used for all parties to agree that the state is the same.

Hash is for validation purpose. Data on the blockchain is “hashed” in each block. Each block is linked with the previous block via the hash value. If someone tampers with a block, everyone will know the block is corrupted. Therefore. It preserves the integrity and immutability of the blockchain.

What is a Digital Signature?

According to Wikipedia, 

” A digital signature is a mathematical scheme for presenting the authenticity of digital messages or documents. A valid digital signature gives a recipient reason to believe that the message was created by a known sender (authentication), that the sender cannot deny having sent the message (non-repudiation), and that the message was not altered in transit (integrity).

A digital signature is generated using asymmetric  cryptography, which is more secure than handwritten signatures that can be easily forged. It is used as a way to prove that a message originates from a specific individual and not from someone else.

Asymmetric cryptography, also known as public key cryptography (PKI), uses public and private keys to encrypt and decrypt data.  In the asymmetric encryption system, a user generates the key pair, which comprises a public key and a private key using some known algorithm. The public key and private key are associated with each other via some mathematical relationship.

The public key is meant to be distributed publicly to serve as an address to receive messages (including cryptocurrencies) from other users, like your Bitcoin or Ethereum address. The private key is meant to be kept secret and is used by the sender to send digitally signed messages to other users. The signature is included in the message so that the recipient can verify using the sender’s public key. This way, the recipient can be sure that only the sender could have sent this message key pair, which is a public key and a private key using some known algorithm. For examle, every transaction on the blockchain is digitally signed by the sender using their private key. This signature ensures that only the owner of the account can move money out of the account.  

The steps can be explained below:

Signing the message with the private key

To create a digital signature, the user can use a signing software to create a one-way hash of the electronic data. The private key is then used to encrypt the hash. The encrypted hash, along with other information,  is the digital signature. The process of creating a digital signature is illustrated in the following figure:

Creating Digital Signature

Verifying the message with the public key

To verify the message, the receiver uses the sender’s public key to decrypt the hash. If this decrypted hash matches a second computed hash of the same data, it proves that the data has not changed since it was signed. If the two hashes do not match, the data has either been tampered with in some way or the signature was created with a private key that does not correspond to the public key presented by the sender. The verification process is illustrated in the following figure:

To sum it all together, blockchain could not exist without hashing and digital signatures. Hashing provides a way for everyone on the blockchain to agree on the current world state, while digital signatures provide a way to ensure that all transactions are only made by the rightful owners. We rely on these two properties to ensure that the blockchain has not been corrupted or compromised.