Table of Contents
What is blockchain ?
Blockchain is a decentralized and immutable database technology best known as the foundation for cryptocurrencies like Bitcoin. What sets blockchain apart is its ability to securely and transparently store information without the need for a central governing body. Information is recorded into blocks, and each block is cryptographically linked to the next, forming a chain. Every new block must be verified by a network of participating computers, making the data significantly resistant to alteration or hacking.
Blockchain technology is not limited to cryptocurrencies but is also applied in various other fields such as supply chain management, electronic voting, and even smart contracts, which allow for the execution of automated agreements without intermediaries.
Think of blockchain simply as a public ledger. In this ledger, all information is stored and transmitted in a transparent, integral, and unchangeable manner, free from any possibility of tampering or fraud. This is a new technology that significantly improves many limitations of traditional information storage and exchange methods. For this reason, blockchain is increasingly applied in a wide range of fields: finance, education, agriculture, industry, entertainment, healthcare, and more.
The History of Blockchain ?
The idea behind blockchain technology dates back to 1991 when researchers Stuart Haber and W. Scott Stornetta proposed a practical computational solution for time-stamping digital documents to prevent backdating or tampering. Their system utilized a chain of cryptographically secured blocks to store the time-stamped documents.
In 1992, Merkle trees were incorporated into the design, enhancing efficiency by allowing a single block to gather several documents. However, this technology went unused, and the patent expired in 2004, four years before Bitcoin was introduced.
In 2004, computer scientist and cryptographer Hal Finney (Harold Thomas Finney II) introduced a system called RPoW, Reusable Proof Of Work. This system functioned by receiving an immutable or non-expendable token based on the Hashcash proof of work, and in return, it created an RSA-signed token that could be transferred directly from one person to another.
RPoW addressed the double-spending problem by maintaining ownership of the registered tokens on a trusted server; this server was designed to allow users worldwide to verify its correctness and integrity in real-time. RPoW can be seen as an early experiment and significant first step in the history of cryptocurrency.
At the end of 2008, a white paper introducing a decentralized peer-to-peer electronic cash system called Bitcoin was posted to a cryptography mailing list by an individual or group using the pseudonym Satoshi Nakamoto. Based on the Hashcash proof of work algorithm, unlike RPoW that used a hardware-based calculation function, Bitcoin’s double-spending protection was provided by a peer-to-peer network protocol to track and verify transactions. In essence, miners “mine” Bitcoin by using the proof-of-work mechanism and then verify it using decentralized nodes in the network. On January 3, 2009, Bitcoin was born when Satoshi Nakamoto mined the first Bitcoin block, earning a reward of 50 bitcoins. The first recipient of Bitcoin was Hal Finney, who received 10 bitcoins from Satoshi Nakamoto in the world’s first Bitcoin transaction on January 12, 2009.
The Principles of Blockchain Operation
Principles of Encryption
In reality, the ledger is maintained by computers in a peer-to-peer network that are connected to each other. This results in several key differences:
In traditional banking systems, individuals only have access to their own transactions and account balances. In contrast, Bitcoin’s blockchain allows you to see the transactions of all users. The Bitcoin network is a decentralized system that does not require a third party to act as an intermediary in transaction processing. The blockchain system is designed not to require trust among its users. Trust is instead established through the use of special cryptographic functions.
To engage in transactions on the blockchain, you need a piece of software that allows you to store and exchange your Bitcoins, known as a cryptocurrency wallet. This wallet is secured using a unique method of encryption involving a pair of security keys: a private key and a public key.
If a message is encrypted with a specific public key, only the owner of the corresponding private key can decrypt and read the message. Encrypting a transaction request with your private key essentially creates a digital signature. This signature, a text string that combines your transaction request with your private key, is used by computers in the blockchain network to verify the sender and the authenticity of the transaction.
If even a single character in the transaction message is altered, the digital signature changes as well. This makes it very difficult for hackers to alter your transaction request or the amount of Bitcoin you are sending.
To send Bitcoin (BTC), you must prove that you own the private key of a specific cryptocurrency wallet by using it to encrypt the transaction request message. Once your message has been sent and encrypted, there is no need to reveal your private key anymore. This method ensures that your private key, which is critical for the security of your assets, remains confidential and protected from unauthorized access.
Rules of the Ledger
Every node in the blockchain maintains a copy of the ledger. Therefore, each node knows the balance of your account. The blockchain system records each transaction requested but does not track your account balance directly.
To know the balance on your cryptocurrency wallet, you need to validate and confirm all the transactions that have occurred on the network involving your wallet.
The verification of the “balance” in blockchain transactions is achieved through calculations that reference previous transactions. In the given example, to send 10 BTC to John, Mary needs to create a transaction request that includes links to previous transactions that collectively have a balance equaling or exceeding 10 BTC.
These links serve as the input values. The nodes in the network verify whether the total amount of these transactions meets or exceeds 10 BTC. All of this is automated in Mary’s cryptocurrency wallet and checked by nodes on the Bitcoin network. Mary then sends a transaction of 10 bitcoins to John’s wallet using John’s public key. This process ensures the security and accuracy of transactions by requiring proof of sufficient funds through a chain of transaction histories.
So, how can the system trust these incoming transactions and verify their validity ?
In practice, nodes will verify all transactions related to the cryptocurrency wallet you previously used to send Bitcoin (BTC) by referencing transaction histories. A record will store the unspent BTC amount, held by network nodes, simplifying and speeding up the verification process. Thus, cryptocurrency wallets avoid the double-spending issue.
=> “So owning Bitcoin means having transactions recorded in a ledger linked to your wallet address that haven’t been used as input transactions.”
The Bitcoin network source code is open-source, meaning anyone with an internet-connected computer can join the network and perform transactions.
However, if there’s any error in the source code used to broadcast transaction requests, then the associated Bitcoins will be permanently lost.
Block Creation Principle
Transaction upon being sent over the blockchain network are grouped into blocks, and transactions within the same block are considered to have occurred simultaneously. Transactions not yet executed within a block are deemed unconfirmed.
Each node can group transactions into a block and broadcast it to the network as a proposal for subsequent blocks to append to.
Any node can create a new block. So, the question arises: which block will the system reach consensus on? Which block will be the next one?
To be added to the blockchain, each block must contain a piece of code acting as an answer to a complex mathematical problem generated by a non-reversible hash function.
The only way to solve such a mathematical problem is to guess random numbers, numbers that, when combined with the content of the previous block, produce a result predetermined by the system. This sometimes can take about a year for a typical computer with a basic configuration to correctly guess the answer to this mathematical problem.
The network dictates that each block is created every 10 minutes because there are always a large number of computers in the network concentrating on guessing this number sequence. The node that solves such a mathematical problem is entitled to append the next block to the chain and broadcast it to the entire network.
So what happens if two nodes solve the same problem at the same time and broadcast their resulting blocks simultaneously to the network? In this case, both blocks are sent to the network, and each node will build subsequent blocks on the block it received first.
However, the blockchain system always requires each node to build on the longest block chain it receives. Therefore, if there’s uncertainty about which block is the latest, as soon as the next block is resolved, each node will adopt the longest chain.
Due to the low probability of simultaneous block creation, there are hardly any instances where multiple blocks are resolved at the same time, leading to different branching blocks. Therefore, the entire blockchain will quickly stabilize and converge as all nodes reach consensus.
Blockchain Security Algorithms
If there’s any disagreement about the final representative block of the chain, it leads to the possibility of fraud. If a transaction occurs in a block belonging to a shorter fork, when the next block is resolved, that transaction will revert to being unconfirmed because all other transactions are grouped into the other block.
Each block contains a reference to the previous block, and that reference is part of the mathematical problem that needs to be solved to propagate the subsequent block to the network. Therefore, it’s very difficult to precalculate a series of blocks because it requires generating a large number of random numbers needed to solve a block and place it on the blockchain.
Transactions in the Bitcoin blockchain network are protected by a race of computational mathematics: with any attacker wanting to compete with the entire network.
Thus, transactions become increasingly secure over time. And blocks that have been added to the chain in the past are always safer than newly added blocks. Because a block is added to the chain on average every 10 minutes, within about an hour of a transaction being grouped into its first block, there’s a fairly high probability that the transaction has been processed and cannot be reversed.
Prominent Advantages of Blockchain
Why Blockchain Technology Has Become the Leading Trend Today:
Transparency and Immutability: It can be said that this is one of the most prominent features. Every piece of information stored, transmitted, and processed in the blockchain system is transparent, clear, and immutable. Therefore, if you want to access information about your or others’ transactions (including date, time, transaction details, etc.), you will never have to worry about the accuracy of the data.
Anonymity: The focus on protecting the privacy of blockchain users is the ability to remain anonymous. This feature allows you to transact safely and securely without worrying about others knowing your identity. Along with transparency, immutability, and anonymity, blockchain creates a great deal of trust for users, making you feel more secure when participating in the blockchain.
Time-saving and Cost-saving: In traditional transactions, where a third party is required for verification, trust, and transparency, you will incur an additional cost for this third party. However, when you apply blockchain to your transactions, with smart contracts, you and your partner will directly conduct the transaction, and the blockchain system will confirm it for you without any additional costs, even saving time in the transaction process.
Wide Range of Applications: Blockchain technology can be widely applied in various aspects of life today. For example, blockchain applications in agriculture and food, education management, digital voting, etc., and most notably, blockchain technology is applied in financial transactions.
Types in the Blockchain System
In the Blockchain system, there are three main types:
- Public: This is a blockchain system where anyone has the right to read and write data on the Blockchain. The process of verifying transactions on this Blockchain requires thousands or even tens of thousands of nodes to participate. Therefore, attacking this Blockchain system is practically impossible due to the very high cost. Examples of public blockchains include Bitcoin, Ethereum, etc.
- Private: This is a blockchain system that allows users only to read data, with no writing privileges, as this belongs to an absolute trusted third party. This third party may or may not allow users to read data in some cases. The third party has full authority to decide on any changes to the Blockchain. Since this is a Private Blockchain, the transaction confirmation time is relatively fast because only a small number of devices participate in transaction verification. For example, Ripple is a type of Private Blockchain, where the system allows for 20% of nodes to be dishonest, and only 80% of the remaining nodes need to operate stably.
- Permissioned: Also known as Consortium, this is a type of Private Blockchain that adds certain features, combining the “trust” when participating in the Public and the “absolute trust” when participating in the Private. For example, banks or financial consortia will use Blockchain for their own purposes.
Consensus Mechanisms in Blockchain
Consensus Mechanisms in Blockchain can be understood as the way participants in the blockchain system can agree on a transaction occurring within the system. Below are the common types of consensus mechanisms in blockchain:
Proof of Work (PoW): This is the most common consensus mechanism used in Bitcoin, Ethereum, Litecoin, Dogecoin, and most cryptocurrencies. It is a computationally intensive consensus mechanism.
Proof of Stake (PoS): This consensus mechanism is common in Decred, Peercoin, and future implementations in Ethereum and many other cryptocurrencies. It is a more hierarchical consensus mechanism, consuming less energy and less susceptible to threats.
Delegated Proof-of-Stake (DPoS): This consensus mechanism is popular in Steemit, EOS, and BitShares. It has low transaction costs, scalability, and high energy efficiency but tends to be somewhat centralized as it selects trusted individuals for delegation.
Proof of Authority (PoA): This consensus mechanism is commonly seen in POA.Network, Ethereum Kovan testnet. It has high performance and good scalability.
Proof-of-Weight: This consensus mechanism is common in Algorand and Filecoin. It is customizable and has good scalability, although the process of incentivizing participation poses a significant challenge.
Byzantine Fault Tolerance (BFT): This consensus mechanism is common in Hyperledger, Stellar, Dispatch, and Ripple. It has high throughput, low cost, and scalability, but full trust is still not completely achievable.
The Role of a Blockchain Developer
Creating, testing, and deploying new blockchain products.
Updating existing products.
Researching new technologies to apply to projects… are common tasks for a blockchain developer.
Employers seeking blockchain programmers and engineers are quite diverse, ranging from technology companies, media companies, blockchain solution providers to companies, banks, and financial institutions in need of building systems on blockchain platforms. This also explains why blockchain-related jobs always come with high and desirable salaries.
Some Reference Jobs for Blockchain Programming
Programming for Blockchain: C++ / Go
Skills: web application development, Android / iOS mobile application development, object-oriented programming, knowledge of C/C++, Java/C#, Bitcoin Core, Blockchain applications, understanding of Bitcoin, altcoins, blockchain.
Programming for Ethereum: Solidity
Skills: experience in blockchain development, ICO, Ethereum DApps, wallets, smart contracts, new cryptocurrencies, and cryptocurrency exchanges.
Building smart contracts for ICOs
Skills: experience in smart contract development, Bitcoin and Ethereum-based programs with tracking and use of cryptocurrencies. Proficiency in language and Ethereum for writing smart contracts, and developing Ethereum structures. Skills in DApps (decentralized applications). Additionally, this job also requires experience in web programming with JavaScript and Python…
In addition to the technical requirements, positions for Blockchain Developers often require candidates to have good English proficiency, readiness to learn new technologies, and proactiveness in their work…
Current Blockchain Platforms
What is the Ethereum Network?
Why Ethereum Network and Not Bitcoin?
Many people might wonder why Ethereum, not Bitcoin, the world’s first blockchain? The answer is simple: while Bitcoin was created solely for digital currency (Bitcoin), Ethereum was designed not only for digital currency (Ether – ETH) but also for developers to participate in and utilize Ethereum’s blockchain for various purposes: programming on it (smart contracts), storing data on it, issuing new tokens for ICOs…
Because of these characteristics, the Ethereum network is much more complex. Transactions now involve not only the transfer of funds between users but also the execution of operations within smart contracts. As a result, there are two types of accounts on the Ethereum network: external owned accounts (which are users) and contract accounts.
What is a Smart Contract?
Despite its intimidating name, a smart contract is essentially just like a class in object-oriented programming (OOP). It contains variables, functions, and events to serve the needs of its creator.
However, a Smart Contract is not just written arbitrarily; it often adheres to standards like ERC20 (there’s also ERC223). According to these standards, a smart contract typically includes methods such as totalSupply, balanceOf, transfer, transferFrom, etc. For example, in an Initial Coin Offering (ICO) with a token named Test, the totalSupply function is responsible for returning the total balance (token) of all those who have purchased Test tokens.
When a Smart Contract is deployed onto the network, it needs to be initialized (similar to initializing a class). Once initialized, it will be assigned an address (similar to memory allocation) and exist on the network as a regular account. However, unlike regular accounts, Smart Contracts cannot initiate transactions on their own; they can only receive transactions, process them, and then pass them on.
Smart contracts are inherently public and immutable once deployed. Therefore, if there are bugs in the code, the only option is to fix them by adding intermediary smart contracts or migrating the smart contract. In practice, smart contracts rarely operate alone but rather run in a chain to process and coordinate with each other.
Programming Language for Smart Contracts
The most common programming languages used for writing smart contracts are Solidity and Vyper.
Solidity
: This is the most popular programming language for developing smart contracts on the Ethereum platform. Solidity is designed to be easily understandable and usable, while supporting important features such as inheritance, libraries, and user-defined types.Vyper:
Vyper is another programming language for smart contracts, also supported by Ethereum. It is designed to focus on safety and simplicity, helping programmers avoid many common errors in smart contracts. However, Vyper is not as widely used as Solidity and is still in development.
Both languages support writing smart contracts on the Ethereum platform, but Solidity is the most popular language and widely used in the blockchain development community.
What are the Limitations of Blockchain?
While blockchain technology offers many benefits, it also has several limitations:
- Scalability: One of the most significant limitations of blockchain is scalability. As the number of transactions increases, the network can become slower and more congested, leading to delays and higher transaction fees. This scalability issue is particularly evident in public blockchains like Bitcoin and Ethereum.
- Energy Consumption: Many blockchain networks, especially those that use proof-of-work consensus mechanisms like Bitcoin, require a significant amount of computational power and energy to validate transactions and secure the network. This high energy consumption has raised concerns about the environmental impact of blockchain technology.
- Storage Requirements: The size of the blockchain grows continuously as new transactions are added, leading to significant storage requirements for nodes participating in the network. Storing the entire blockchain can become impractical for individual users or smaller organizations, limiting participation in the network.
- Privacy Concerns: While blockchain provides transparency and immutability, it also raises privacy concerns. Transactions recorded on the blockchain are visible to all participants, potentially exposing sensitive information about individuals or organizations. While some blockchain platforms offer privacy features, achieving a balance between transparency and privacy remains a challenge.
- Regulatory Uncertainty: The regulatory landscape surrounding blockchain and cryptocurrencies is still evolving, leading to uncertainty and inconsistency in legal frameworks across different jurisdictions. Regulatory challenges can hinder adoption and investment in blockchain technology, particularly for businesses operating in heavily regulated industries.
- Interoperability: There are numerous blockchain platforms and protocols, each with its own standards and specifications. Lack of interoperability between different blockchain networks can create siloed ecosystems, limiting the seamless transfer of data and assets between different platforms.
- Smart Contract Vulnerabilities: Smart contracts, while powerful, are susceptible to bugs and vulnerabilities in their code. Exploiting these vulnerabilities can lead to security breaches and financial losses. Ensuring the security and robustness of smart contracts requires rigorous testing and auditing processes.
Most countries require financial service providers to collect information about their customers when they open trading accounts. This is completely contrary to Blockchain, where everyone has access to financial accounts and can carry out transactions without being traced. Therefore, many criminal organizations have relied on this mechanism to carry out illegal activities such as money laundering and drug trafficking.
According to statistics, illegal activities accounted for 0.24% of total cryptocurrency transactions in 2022.
Addressing these limitations is essential for the widespread adoption and long-term success of blockchain technology. Researchers and developers are actively working on solutions to overcome these challenges and unlock the full potential of blockchain in various industries.