BitCoin Basics
What we know till now?
● It’s a digital currency.
● No government issues it.
● No banking intervention.
What bitcoin actually is?
How bitcoin actually works?
So we will understand and evolve this concept through the concept and understanding of simple ledger. Then we will find what the problems might be with the given ledger and how it can be rectified and we will rectify it to the point where we will be able to create the crypto currency of our own.
So basically, this ledger trust + Cryptography = Cryptocurrency.
So bitcoin is the first implementation of the concept and idea of the cryptocurrencies.
So first let’s say we maintain a simple communal ledger where we just write all the transactions. So, it might work as follows:
A pays B Rs.100.
B pays C Rs. 200.
A pays D Rs. 50….
The ledger described above is accessible by everyone, may be through a website or an app. So anyone can add a statement and after every week, the net calculations are done. For example, at the end of a particular week the answer may look as follows:
A owes Rs. 1000 to B.
A owes Rs. 500 to C.
D owes Rs. 700 to C.
So basically the amount was settled up by looking at the transactions at the ledger.
So protocol for the above system might look as follows:
● Each of the participant can add new ledger statements.
● Settling up with the cash or the real money at the end of each week.
But the problem with this kind of protocol is anyone can add the new statements, and A my randomly write the following statement:
B pays A Rs. 100.
Without the approval of B.
So the question of trust and legitimacy of the statements come into being and that’s when we use the tools available to us through the cryptography.
The tool available to us regarding the same is Digital Signatures:
So, like handwritten signatures, each statement needs to be verified using digital signatures by the payee, which would mean the payee has seen the statement and approved the statement. The crux lies behind the idea that this verification should not be feasible or very hard to copy if someone wants to forge it.
Idea in itself might seem impossible at first, because the binary can be copied and pasted by multiple people in a traditional sense.
So we overcome this problem by generating a set of public and the private key pair. These keys look like the string of bits. The private key is popularly known as secret key in the field of cryptography. So, the secret key might be abbreviated with sk and public key by pk. Secret key is like your atm pin and you should always keep it to yourself.
What’s the difference between a handwritten signature and digital signature then?
The handwritten signature always look the same no matter where we put it.
But a digital signature is very strong and is different for different messages. Basically, it is a string of 1s and 0s and is commonly 256 bits. Slight alterations to these messages, even slightly, would lead to change in the signature as a whole and it would be perceived different by the machines, hence invalid. So, the production of this signature uses a function dependant on both the message and the private key, so it might look something like:
signature= Sig(Message, sk). So, the private key ensures that only the person having that private key can produce that signature for that particular message. The dependence on message makes it virtually impossible to just copy and paste the signature and forge it on other documents. There is another function which verifies the signature using the message, signature and pk. So, basically answer would be a binary, either true or false and it might look as follows:
Binary= Verify(Message, Signature, sk)
So basically, to get a valid signature for a particular message one would need to adhere to the method of hit and trial which is not very feasible. It is because there are 2^(256) number of signatures for the specified length. So, for all practical purposes, the only way you can produce a signature is through sk.
So now, let’s get back to our example with the ledger. Now, we have signed each transaction but we come across another problem. Suppose the first statement of the ledger now looks as follows:
A pays B Rs. 100 111001001……
Now B, can forge the above message n number of times as the message- signature combination remains valid throughout. We can simply overcome this problem using the idea of associating a unique id with every statement so every message would look different. Example is as follows:
● 1. A pays B Rs. 100 111001011……
● 2. A pays B Rs. 100 111000111……
So we add the following statement to the protocol:
“Only the statements with the signature would be considered valid.”
But if we follow this procedure, we follow a system completely based on trust where we assume that each person who owes money to another one would settle up in cash at the end of the month and would not default. But suppose a participant in this ledger racks up lakhs of rupees of debt and just vanishes. What happens then?
The best way to tackle this problem would come when we get the idea that we should never settle up in cash as long as the people are given a limit on how much they can spend. What may be done now is you get everyone to add a certain sum of money in the ledger. So ledger may read as follows:
A gets Rs. 10000.
B gets Rs. 10000.
C gets Rs. 10000.
D gets Rs. 10000.
So deleting the point 2 from the protocol and just add “No overspending” clause to the protocol. So, our protocol would look as follows:
● Each of the participant can add new ledger statements.
● Only the statements with the signature would be considered valid.
● Overspending is not allowed.
So any statement exceeding a limit of a particular participant would be rendered invalid by default as if it never existed. So, a record of transactions and the history of the same needs to be maintained and it is a very important requirement for cryptocurrencies.
But now, a new concept can be introduced here. In the next step, we would remove the direct connection between the ledger and actual INR. So theoretically, we would eliminate the need of actual currencies issued by various governments and could write and maintain records on this ledger. So now, instead of INR, let’s call this currency as Ledger Currency(the “LC”). It’s now analogous to exchange the real currency with other currencies or commodities. It has now become an independent thing of its own. So practically, all these cryptocurrencies are nothing but the ledger because this new currency= history of transactions.
But still our ledger system is, at the core, really different from the other crypto currencies which exist in this world. Ours is a centralized system but these cryptocurrencies are decentralized. This principle forms the core of cryptocurrencies.
Right now, this ledger is on a public website or an application which must be having a database on a particular server. But the very fact this website and the app is maintained by the very specific third party makes it a centralized system. So to remove this last bit of trust, we give a copy of ledger to everyone. This leads to the dissemination of the need for website or a central database as such. So, now the statements can just be broadcasted and all the people will be able to record the statements on their own private ledger. The introduction of this new system leads to many shortcomings. For instance: How can everyone agree about what the right ledger is?
So, if B broadcasts: A pays B 1000 LC, how can he be sure that everyone heard this statement which was made by him? So, if say he wanted to pay C 500LC, he might not be able to do so because C might not have recorded that statement. It is very difficult to determine if all the transactions are being recorded by everyone in the same order. So, the issue is we have to come up with a protocol so that everyone is accepting or rejecting the particular transactions in a particular order. The fact of the matter is, how to make every ledger look identical? So this problem was overcome in the original bitcoin paper by Satoshi Nakamoto, whose real identity is still a mystery.
This paper introduced a new term known as computational work, and whichever ledger has the most computational work put into it might prevail. The main cryptographic tool which would be used here is Cryptographic hash functions. Using this method, the fraud would be practically impossible because of computational infeasibility. In layman’s term, this idea would lead to the the new concept of ‘proof of work’ which would be discussed later in this article.
So first we need to understand what the hash functions really are? A message or file acts as input in this function and returns a string of binaries (1s and 0s) of a fixed length, which generally is 256 bit long. The output is called the hash.
So basically,
Hashfunc (message/ file)= 11000100…..(256 bit long)-> Hash
The intent of this function lies in the fact that the output generated is random in nature. Though the output is not random practically, as the same output is given for the same input in all the cases. But if the input is even slightly tempered with, the resulting hash would completely change. As it is based on the concepts of cryptography, it is really infeasible to compute the input if the output is known. The only way you can do is through hit and trial method. The probability of your answer being correct is 1/(2^(256)-n) where n is one less than the number of guesses used previously. This function can not be reverse engineered, explanation of which is out of the scope of this article. We just need to know that most of the modern security is based on the principle discussed above, i.e. cryptographic hash functions. The most common example of the function is SHA256.
But now, we need to determine how the Hashfunc can help us determine the proof of work or computational effort.
Now, we go back to our ledger example:
Suppose we have a set of statements. And through those statements, a special number is determined and when we put that number at the end of the statements in the ledger and pass it through some hash function, the first 40 bits of the output will all be zeroes. But just how hard can it be for an individual to determine that number? So the probability that a hash starts with 40 zeros is 1/(2^(40)), chances of which are lesser than one in 1000 billion. As it is based on the concepts of cryptography, the only way to find one is through hit and trial.
Below I have illustrated this concept.
{
A owes 1000 LC to B.
A owes 500 LC to C.
D owes 700 LC to C.
82636648(Generated number/ proof of work)
}
So if the above ledger is passed through some hash function, lets say it would generate an output which starts with 40 zeros.
000…(40 times)101100101….–256 bits
So basically, the whole idea works on guessing and checking for that number. And basically, in the example above, ideally a person had to go through 1000 billion numbers to get a special one. And counting zeroes is relatively easy job. So, we can say that the person who found that number did a large amount of work and we did not have to go through that kind of effort. This is known as proof of work. This work, is totally dependent on the statements. So even if the statements are tempered with, even slightly, whole hash becomes different and changed. So, technically, you would have to go through another 1000 billion guesses to find the reqd. Number, i.e. new proof of work so that the hash, inclusive of the new number, starts with 40 zeros.
Now we go back to our ledger.
Using the methods discussed above, we will get the participants in the ledger to agree about what the correct ledger is. Basically, the ledger which has the most work put in is the real ledger.
So, I would like to illustrate the methodology through the example below:
So, we divide the statements in various blocks and each block would have the proof of work at the end. So, we would determine the condition such that the hash for each block would start with a bunch of 0s. So let’s just say it has to start with 60 zeros. So, the statement must be signed by the sender, the block is valid only if it has the proof of work. To make the blocks ordered, we make the block such that the block consists of the hash of previous block, say at the top or header.
So our block now look something like below:
{
Prev Hash
Statements
Proof of work
}
So if we change the statement is changed for a particular block, or swaps the order of blocks, it would be a domino effect as all the blocks after the one tampered with will practically changed for the reasons discussed in this article( the ‘prev hash’ and ‘proof of work’ of the next block would change). That would require doing the work all over again and finding the new proof of work for each subsequent block. So basically and practically, we see that blocks are connected to each other and it is not a single page/ ledger. Basically, it is therefore referred to as ‘block chain’. So we introduce one more statement in our protocol: “Anyone is allowed to become a block creator”. So, these people will listen to all the statements which will be broadcasted, collect them in a block and do work to generate the proof of work so that the hash of this block starts with say 60 zeros. Once they find it, they broadcast the block that they found and which is accepted by the participants of the ledger, now considered as the blockchain. This block creators are popularly known as miners. So, when the block is created, the block creator gets to add a very special statement at the top, ex. Block Creator gets 10 LC. And this is the reward for miners and popularly known as block reward. This statement does not come from anyone and hence does not need to be signed as such. And it basically adds to the supply of Ledger Currency in our economy. Basically, it is analogous to printing cash. Now it makes sense why this whole process is known as mining and the people who do that are known as miners.
So, from the perspective of miners, it block reward is analogous to a lottery, they hit the right number, they get the relevant reward.So as users, instead of listening to the transactions, users now just listen for the blocks which is far easier and secure.
But what happens when you hear two different block chains with two conflicting histories, say the prev hash is different, we always opt for the longest one.
So the new addition to the protocol is: Accept the longest block chain and reject the shorter ones.( It is because the longest ones have the most work put into it)
In case of ties, just wait until a new one is heard making a particular chain to be longer.
So now, new principal/ policy is being made and replacing the existing one, i.e., instead of trusting the central authorities, trust the computational work. Although this new currency is decentralized, everyone can agree on a particular set of transactions.
It would be very hard for someone to fool this system. We will take it at face value as the explanation for the same would exceed the scope of paper.
Now, the bitcoin has some different protocols. The bitcoin periodically change the number of zeroes, in the context mentioned above so that the average time it takes 10 minutes to find a new block inclusive of proof of work. As more miners are added to the process, the challenge gets harder and harder, and this is analogous to lottery where the miners have the chance to win lottery every 10 minutes. Money comes from block reward with regards to cryptocurrencies.
Jan 2009- Nov 2012: 50 btc
Nov 2012- July 2016: 25btc
July 2016- Feb 2020: 12.5btc
Feb 2020- Sep 2023: 6.25btc
Blockexplorer.com
After every 210,000 blocks, approximately four years, the reward is halved. So basically it is an infinite gp with with multiplier less than 1, therefore it would have the finite sum.
From geometric progression and mathematics:
Max bitcoins= 210,000(50+25+12.5+…..)= 21 million
100 million satoshi= 1btc
Also, miners can always be incentivised. If the maximum no. is reached, miners can still earn money through transaction fees. When you make a payment, we have an option to include a transaction fees. It will go to the miner of whichever block includes the payment. So, miner would be more keen to broadcast your transaction in the next block, and it would happen because each block is limited to 2400 transactions=> 2400 every 10 minutes. Other modes like Visa= 1700/ sec, max>24000/ sec.
CROSS BORDER TRANSACTIONS: CRYPTOCURRENCY AND FOREIGN EXCHANGE MANAGEMENT ACT (FEMA)
Cross Border Transfer of cryptocurrency is a significant aspect of its being as cryptocurrencies are traded through online platforms and these platforms facilitate the exchange of cryptocurrency into another currency including a fiat currency. This raises questions under India’s foreign exchange control law, i.e., the Foreign Exchange Management Act (FEMA). This article intends to analyze the possible categorization of cryptocurrencies under FEMA and the legal implications to follow.
Applicability of FEMA on Cryptocurrencies in India
Applicability of FEMA on Cryptocurrencies in India The risk relating to FEMA has been highlighted by the RBI ample number of times. In P2P transfers, while the exchange provides a portal to match the orders of a seller and buyer, the consideration would flow directly...
Applicability of Commodities Laws on CryptoCurrency Exchanges in India
Applicability of Commodity Laws on Crypto Exchanges in India If the Cryptocurrencies are classified as ‘commodities,’ the exchanges which facilitate the trading of cryptocurrencies might be governed as the ‘commodity’ exchanges, which can have implications under...
Applicability of Securities and Investment Laws on Cryptocurrency Exchanges in India
Applicability of Securities and Investment Laws on Cryptocurrency Exchanges in India Based on the Report of the Committee to propose specific actions to be taken in relation to Virtual Currencies [1], the cryptocurrencies like Bitcoin or Ether are unlikely to be...
Recent Comments