|Hashing is the key to understanding bitcoin.|
Terms to know
Let's talk about humans for a second. What are their inputs. It's their senses. Sight, hearing, feeling, taste, smell. These are the inputs to your brain.
The outputs are voice, muscle movement, walk, run, jump, force, avoidance, writing a book, making music.
Inputs go into a system and the system produces output by a set of rules. This set of rules also go by the names algorithm, function, program, recipe, subroutine.
The function performs actions, calculations on the input and produces an output. Some functions have a known method of producing the output and some are unknown.
Questions to answer
A hash is a function that takes an input of text and produces a unique output. It's one-directional. If you have the input and the hash function, it's easy to produce the output
But it's hard to take an output from a hash function and produce the input.
Warning! ! ! Don't enter your real keys here.
The best way to learn about hashes or anything is to use one webpage. This has a name and it's called SHA256 Secure Hash Algorithm 256 bits.
Note that a bit is the smallest unit in a binary number (base 2) and it can be a zero or a one.
An example input: adsjjgjjssshssssssssssssssssssss
run through the SHA256 returns fd4b594532a4470476263530db4557c005d22a4140817242fb4d055f83cd36f0
The hash bitcoin uses takes any length of text and converts it to a 64 character string containing the numbers from 0-9 and the letters a-f.
Note that the asterisk "*" denotes multiplication.
This output is a hexadecimal number also known as base 16. The numbers we use are decimal or base 10, because we have 10 fingers. So the number 1,234 is one thousand two hundred and thirty four. It is also 1 * 1000 + 2 * 100 + 3 * 10 + 4 * 1. Each digit is written as 10n or 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100. This can also be represented as 1000 + 200 + 30 + 4.
We can use exponents as a shorthand if you want to write 10 * 10 * 10 * 10 * 10 you could write 105 or 10 to the 5th power.
A hexadecimal number aka hex used base 16. The digits are 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f. The letters a thru f represent the numbers 10 - 15.
So the hex number 1234 = 1 * 164 + 2 * 163 + 3 * 162 + 4 * 161.
But for the purposes of this chapter, it's just a bunch of characters that are unique.
Video link (This is just a placeholder for now)
It's an algorithm that takes any input and returns a fixed-size output that's uniquely based on the input.
It's irreversible. If you know the hash you don't know the input. The same input will always produce the same output as long as you use the same hash algorithm.
If you know the input sometimes called a key or password, you can put it through the hash algorithm and get the output.
But if you know the output there's no way of determining the input than by just guessing. Since there are 2256 possibilities it's very hard to guess it.
It's used in bitcoin for:
Types of Hash Algorithm's
Other usage of a Hash algorithm.
Mining and the Math problem
You may have heard the term mining and that it uses a math problem.
Go back to the Hash webpage and try to enter an input in the top to produce a has that starts with one zero, then two, three and four. This is what is basic of mining for a bitcoin.
The act of mining creates bitcoins out of thin air and at the time of this you get 6.25 BTC for each block that's mined.
The process of mining gold is to find a place that has gold, dig and remove the gold from the rock. This is an expensive process and hard to do.
To mine bit coins, you do the following step