Anyone with an rente te bitcoin will have heard the phrase ‘cryptographic hash function’ at some time or other. But what exactly does it mean, and how is it connected to cryptocurrency?
Hash functions are an essential part of, not only of the bitcoin protocol, but of information security spil a entire.
Te the following article wij’ll take a look at some elementary examples of how they work, with a ordinary demonstration, too.
What’s a hash function?
Ter the abstract, a hash function is a mathematical process that takes input gegevens of any size, performs an operation on it, and comes back output gegevens of a motionless size.
Ter a more concrete example, this can be used to take a sequence of letters of any length spil input – what wij call a string – and come back a sequence of letters of a immovable length. Whether the input string is a single letterteken, a word, a sentence, or an entire novel, the output – called the digest – will always be the same length.
A common use of this kleintje of hash function is to store passwords.
When you create a user account with any web service which requires a password, the password is run through a hash function, and the hash digest of the message is stored. When you type ter your password to loom te, the same hash function is run on the word you’ve entered, and the server checks whether the result matches the stored digest.
This means that if a hacker is able to access the database containing the stored hashes, they will not be able to instantly compromise all user accounts because there is no effortless way to find the password which produced any given hash.
Plain hash functions ter Python
You can proefneming with hash values using Python, a programming language installed on Mac and Linux operating systems by default. (This tutorial will assume you’re using some version of either OS X or Linux, spil using Python on Windows is more complicated.)
Very first, open a terminal, type python and klapper Come in.
This will waterput you into the Python REPL, an environment where you can attempt out Python instructions directly spil opposed to writing a programme ter a separate opstopping.
Then, type the following, pressing Inject after each line, and Tabulator where marked:
You have now created a function, hash() , which will calculate and print out the hash value for a given string using the MD5 hashing algorithm. To run it, waterput a string ter inbetween the parentheses te quotation marks, eg:
And press Come in to see the hash digest of that string.
You will see that calling the hash function on the same string will always generate the same hash, but adding or switching one character will generate a downright different hash value:
Hash functions ter bitcoin
Te the bitcoin protocol, hash functions are part of the block hashing algorithm which is used to write fresh transactions into the blockchain through the mining process.
Te bitcoin mining, the inputs for the function are all of the most latest, not-yet-confirmed transactions (along with some extra inputs relating to the timestamp and a reference to the previous block).
Ter the code example above, wij’ve already seen that switching a petite part of the input for a hash function results te a fully different output. This property is crucial to the ‘proof of work’ algorithm involved ter mining: to successfully ‘solve’ a block, miners attempt to combine all of the inputs with their own arbitrary lump of input gegevens te such a way that the resulting hash starts with a certain number of zeroes.
Spil a basic demonstration, wij could attempt ‘mining’ with our Python hash function by by hand adding exclamation points after “CoinDesk rocks!” until wij find a hash that starts with a single zero.
Of course, solving the hash for a bitcoin block – which at the time of writing voorwaarde begin with Legal zeros – requires an utterly large amount of computation (and so the combined processing power of all the computers te the network still takes approximately Ten minutes to solve a block).
It’s the need for this large amount of processing power that means fresh bitcoins get mined overheen a long period of time, not all at once.
Te order to earn bitcoins through mining, you need to waterput ter the gigantic amount of work necessary to solve a block – and by earning that prize, you’re locking ter all of the fresh transactions into a block, which is added to the voortdurend record of all previous transactions: the blockchain.
Any crypto basics you’d like explained next? Email: [email protected]
The leader ter blockchain news, CoinDesk is a media outlet that strives for the highest journalistic standards and abides by a stringent set of editorial policies. CoinDesk is an independent operating subsidiary of Digital Currency Group, which invests ter cryptocurrencies and blockchain startups.