|
| 1 | +# What Is Bitcoin Mining? |
| 2 | +Bitcoin mining is performed by high-powered computers that solve complex computational math problems; these problems are so complex that they cannot be solved by hand and are complicated enough to tax even compelling computers. |
| 3 | + |
| 4 | +## Terminology : |
| 5 | +1. Transaction: An transaction is a transfer of Bitcoin value and is collected in Blocks |
| 6 | + |
| 7 | +2. SHA256: a function that can generate an almost-unique 256-bit (32-byte) signature(Hexa-Decimal) for a text. |
| 8 | + |
| 9 | +3. Block: Blocks are files where data about the Bitcoin network are permanently recorded |
| 10 | + |
| 11 | +4. Nonce: Miners have to guess this number which will reward them BTC. A nonce is an abbreviation for "number only used once," which is a number added to a hashed—or encrypted—block in a blockchain that, when rehashed, meets the difficulty level restrictions. |
| 12 | + |
| 13 | +5. Difficulty Level: Number of prefix Contagious Zeroes |
| 14 | + |
| 15 | + |
| 16 | +## Theory : |
| 17 | +BTC will be rewarded if Nonce gives us a string with Zeroes' prefix the difficulty number of times. Sounds confusing? |
| 18 | +So, Let's take an example : |
| 19 | +1. Let's assume we have a difficulty level = 20 |
| 20 | +2. Now, Let's again assume that we have the previous hash as: 'a5x208fecf9a66be9a2bc7...' |
| 21 | +3. Now we create text as : text = str(block_number) + transactions + previous_hash + str(nonce) |
| 22 | +4. Now, we pass text to SHA256 Function to generate hash |
| 23 | +5. Finally, that hash prefix must be equal to the number of zeroes as difficulty level. |
| 24 | +6. And Boom!! You have mined successfully. |
| 25 | + |
| 26 | +## To Run the script : |
| 27 | +1. Run Command ```BitCoin_Mining.py```. |
| 28 | +2. Now Enter Required Values. |
| 29 | +3. You have Mined succesfully!!. |
| 30 | + |
| 31 | +## Sample Test Case : |
| 32 | +INPUT : Transactions = '''Neeraj->Zara->50,Nandu->Allu->5''', difficulty=2, |
| 33 | + Previous_hash = a7sdxa036944e29568d0cff17edbe038f81208fecf9a66be9a2b8321c6ec7. |
| 34 | +OUTPUT : Successfully mined bitcoins with nonce value:336 end mining. Mining took: 12.207852363586426 seconds |
| 35 | +006f74cef9d071afa15c58b38198be14f9b4aabb4cd6f7a44afffd9f6968efcd. |
| 36 | + |
| 37 | +## Draw Backs: |
| 38 | +The script has no drawbacks, but due to the increase in miners, the difficulty level increases, and hence we'd require the best hardware as the fastest wins. |
| 39 | + |
| 40 | +# Refrences |
| 41 | +[Investopedia](https://www.investopedia.com/terms/b/bitcoin.asp) |
| 42 | + |
| 43 | +[Computerphile Video](https://www.youtube.com/watch?v=wTC31ZI6QM4) |
| 44 | + |
| 45 | +[Codebasics Video](https://www.youtube.com/watch?v=ZhnJ1bkIWWk&t=143s) |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | + |
0 commit comments