# The bitcoin mining algorithm from a programmer – s viewpoint – Bitcoin Stack Exchange

The Mining Algorithm is spil goes after:

Step 0 – Retrieve the hash of the previous block from the network.

Step 1 – Gather a list of potential transactions known spil a “block”. This list of transactions comes from the peer-to-peer bitcoin network.

From a programmer’s view, the pseudo code might look something like this:

I should warn you that there are a few inaccuracies te that description, but for the most part, that should be good enough. And here are a few more useful clarifications:

A hash is a function that converts gegevens into a number within a certain range. The hash has the property that knowing it’s output is essentially unpredictable (within the given range). The specific hash function used for bitcoin mining is SHA256 applied twice.

How does the difficulty level work?

This unpredictable nature of the hash function means that putting ter random gegevens (the transaction + the random number) will essentially produce a random number within a certain range. Further restricting the range of the desired output affects how likely one is to find it ter a single round. This creates a way to probabilistically determine how often a solution will be found based on the number of times the algorithm can be run on the network. Specifically, when you hear the term gigahashes or terahashes, this refers to the number of times step Trio can be run. Spil the number of hashes vanaf 2nd across the entire network grows, the network automatically raises the difficulty such that a solution will be found within about Ten minutes.

What happens when a block is mined?

When a block is mined, the miner sends the block to all other miners on the network spil evidence that it has found it. This block contains a list of transactions, the found hash, the specific random number, and a reference to the previous hash. Spil each miner receives the freshly mined block, it eliminates all transactions that it is presently mining that exist within the block (because they’ve already bot confirmed te the block chain) and broadcasts the block to other miners that do the same thing. The propagation happens pretty quickly. Note: the original miner of the block gets a “miners’ toverfee”, which is a prize the any unspent coins from transactions ter addition to a “coinbase” prize, which began out at 50 bitcoins and halves after every 210,000 blocks (about once every Four years). The coinbase prize will eventually get so puny that it will be miniscule compared to miners’s fees.

Any hash is a valid hash. The question is if you’re hash meets our criteria. What you hash is actually a duo of things (wij’ll come back to this) that lined up together make a string that is a string of a specific length. You then hash that entire string. Think of your resulting hash spil a number. What wij want is that resulting number to be less than a target number. So it’s like rolling a billion sided diegene, and coming up with a number under the target number. That target number is considered “difficulty”. Spil more people are rolling the diegene, wij lower what that target number is to reduce the likelihood any one die-roll will succesnummer.

So importantly, some of those things that wij line up te the string that wij hash are things that wij’re permitted to adjust. Hashing isn’t exactly like rolling the diegene because if wij has the same thing overheen and overheen wij get the same result overheen and overheen. However even a minor adjustment ter what wij hash can have a major influence on what the resulting hash is. The primary voorwerp that wij can manipulate is called the “nonce”. Basically wij pick a nonce to use te the string, hash the entire string, and see what wij get. If the hash isn’t a succesnummer, wij modify the nonce and attempt again. The nonce itself isn’t very large so there’s a limited number of variations of the nonce that you can attempt. The next voorwerp wij can switch is a timestamp. Wij’re permitted to wiggle the timestamp too. Every wiggle of the timestamp permits us through the entire set of possible nonce values all overheen again. Wij repeat this process of grueling the nonce possibilities, then wiggling the timestamp overheen and overheen until the resulting hash is lower than the difficulty target number.

When that happens, wij then proclaim to the world that this timestamp plus this nonce works to solve the block. Others validate it to be true and it’s added to the block chain. A block is considered “Validated” once it’s a certain number of blocks “deep” te the block chain, meaning it’s a historical block compared to the current block. Validation is a little bit of a misnomer here because it’s not that the block isn’t already known to be valid. What wij’re validating is the proof of work, meaning once that historical block is buried far enough the amount of effort involved to create that history is insurmountable for someone else to attempt to create a different variation of the history. They would have to create their own version of that block (the only reason being to write te their own version of the transactions, i.e. steal coins) then solve it themselves, then solve the next block and the one after and so on and “catch up” with everybody else. This means they would have to out-race the world ter the dice rolling spel. Maybe once te the history of the universe someone might get fortunate on the nonce with two or three blocks back to back, but with the 120 blocks that most mining pools and exchanges require now? Not going to toebijten, everzwijn.

The purpose of solving a ‘puzzle’ is to (a) delay the mining of the block to avg Ten minutes and (b) to incur real-world costs for mining a block (spending cpu power, thus energy). The costs are there to prevent a Sybil attack (putting many miner machines at work to do a 51% attack).

The delay is waterput ter to permit a good block to propagate around the globe to all other miners, without providing the miner who just minted the fresh block a headstart advantage. For that, the blocktime (Ten minutes) needs to be order of magnitudes larger then the propagation delay (a few seconds).

So the kleuter of puzzle is te a sense irrelevant, it could spil well be a giant Sudoku.

This is a spel, once a block is solved, the spel increases difficulty. But honestly the algorithm doesn’t solve any real problems. It’s not like your mining for elections, the fact the Real world value is tied to this ‘spel ‘ makes it interesting.

Unluckily the number of GPUs price has enhanced because of Bitcoin and others.

How a real world money is affected by a digital algorithm “spel” is surprising!

Solving puzzles doesn’t create value, using elections to solve the same puzzle doesn’t make it any more valid.

The value of a bit coin is only spil vailable spil a spot market values it. Because of it’s, popularity the request for it has enlargened.

Te a way this wasgoed like gambling, the by striking the Fortunate Block you receive a prize that can be turned back into money.

Te the end I don’t actually understand what the algorithm actually does.