In this blog post we will build on top of the knowledge acquired in the last two blog posts about Blockchain and cryptocurrencies. We will explore bitcoin mining, joint accounts and smart contracts.
Remember The Gold Rush? When people were flocking to mine for gold? Today, Bitcoin can also be mined. How? Let’s find out.
Bitcoin mining is a process in which a complicated mathematical puzzle needs to be solved, and solving this puzzle requires a lot of computational power. Typically, this would take ordinary computers years to find the solution, and thus, it needs a lot of electricity. Whoever solves that puzzle first is rewarded with Bitcoins, and these new Bitcoins are minted and added to the total Bitcoins supply in circulation. Hence, the term “mining” was coined. But why would we waste electricity? To prevent double-spending.
Transactions created in the Bitcoin network are collected by miners who then try to solve the puzzle. Every 10 minutes or so someone can solve the puzzle and thus gets the right to put all his/her collected transactions in a Block, making it a part of the Blockchain.
Once the transaction becomes part of the Blockchain and a few more blocks are added, it becomes computationally costly to maliciously modify the Blockchain to double-spend the Bitcoin, which is already part of an existing transaction.
This mining algorithm is called “Proof of Work”, and it’s an exquisite way to keep the Blockchain system safe and consistent without the need for an intermediary.
Since mining requires a lot of computational power to solve the mathematical puzzle, some companies own one or more computer data centers. These data centers are called Mining Farms, and they have hundreds and thousands of special purpose computers explicitly built to solve these mathematical puzzles.
Today, multiple mining farms owned by different companies compete to solve the puzzle for claiming the Bitcoin reward.
As more miners join the network and more powerful computers are introduced, the mathematical puzzle gets harder and harder for miners to solve, so on average, it should take around ten minutes to solve, no matter how powerful the computers get.
Joint accounts are prevalent in the real world. For example, we have joint accounts with our spouses, business partners, etc. In joint accounts, a designated number of participants are needed to authorize a transaction. Is it possible to enable joint accounts in the Bitcoin system? Are we out of luck? Is that a missing feature?
The good news is that the Bitcoin system is robust and supports joint account features, making it even more powerful and flexible.
To understand how the Bitcoin system provides this feature, we first have to understand the technology which makes it possible.
In the world of Bitcoin, a special purpose program called P2SH (Pay to Script Hash) enables multiple signature support. Think of it as a virtual person sitting inside the computer to ensure the minimum required valid signatures are present before releasing any payment(s) or other funds. The P2SH program is also assigned a Bitcoin Address where anyone can send Bitcoins. However, multiple digital signatures are required to use the Bitcoins received at the address.
The number of digital signatures required to unlock Bitcoins is pre-programmed in the script. So, in essence, P2SH scripts act as a governing entity.
If the P2SH script can govern access to Bitcoins via multi-signatures, is there any way we can administer arbitrary contracts on Blockchain? The answer is YES! However, the Bitcoin system is designed to transfer value, so it cannot carry out complex contract logic involving the transfer of assets.
This takes us to another world built on top of Blockchain infrastructure and utilizing the same concepts we have learned so far.
Ethereum and Smart Contracts:
Ethereum was built on Blockchain and introduced the concept of Smart Contracts. Smart Contracts are special-purpose programs run on an Ethereum network and provide the governing capability.
Smart Contracts are powerful enough to build complex logic like Deeds Enforcements, Assets Exchanges, Supply Chains Tracking, Property Contracts Executions, etc.
Like a computer application, these Smart Contracts must be programmed to implement special use cases.