## Re-mining Patoshi Blocks for Dummies

In my previous article I discussed re-mining with a lot of technical details. A few days ago, a non-technical friend (yes, I have a few of those) asked me what was re-mining all about. I tried hard to find an analogy in the real world that compares to re-mining Bitcoin blocks. My first attempt to explain it was a classical one. Mining is like playing the lottery where there are many winning tickets. It’s played by buying millions of numbered tickets one by one in a predefined sequence until you win (or your competitors do). Re-mining is like imitating a player that already won a prize, following his strategy and playing again the same game, trying to buy the exact same tickets in the same order. During this process, if you follow the exact same sequence of tickets picked, then you don’t expect to find an unclaimed prize before the already given prize, while if you’ve follow a different order to buy the tickets, you may find winning tickets that were unclaimed by the imitated player. The ticket number is like a block nonce. A solved block is like a winning ticket. If can successfully imitate the ticket number scanning strategy of a player, you know it’s a single one, but if you fail to imitate the sequence, then the reason may be that two or more players were colluding, each one following a different sequence, maybe starting from different ticket numbers.
The End.
But still my non-technical friend did not get the idea. I needed something more coloquial: and this is what I came up with:
Imagine a young gardener visits a house every week. The house has a long and narrow backyard, and a dog that usually buries bones, sometimes it buries more than one bone, but the dog never leaves them underground for longer than a day. The gardener’s task is to find the bones and take them out. The gardener is very methodological and he always scans the yard in the same direction (from the left side to the right side or the opposite direction, but nobody knows which). But as soon as the gardener picks a bone, the dog gets crazily angry so the gardener stops and runs, leaving the bone hole visible. And that happens every time.
One day the house owner comes after the gardener has gone and he wants to be able to finish the job. He needs to know if the gardener scanned from the left side to the right or in the opposite direction, so he can finish the job, starting from the hole, but without scanning the whole yard again.
How can he learn the gardener’s scanning direction if the only thing he sees is the hole of the bone in the middle of the yard?
He uses this strategy: he scans all the yard again, trying to uncover all the bones that exist. If he finds another bone, and the bone is on the left side of the hole, then that must mean the gardener started scanning from the right. If he finds a bone on the right, then that means the gardener started scanning from the left. If he finds no other bone, then he must perform a full scan again another week. We’ll call this procedure the “direction test”. But the owner knows that the gardener sometimes mistakenly skips a bone when he gets distracted by looking at his beautiful daughter over the window, so he decides to perform the direction test several weeks in a row, and not just once, to make sure his deduction is reliable. The owner keeps counts on how many times a bone was found on the right and how many times it was found on the left, hoping to find a bias towards one side.
That’s exactly what re-mining is about. The position of the hidden bone is a nonce that solves a block. The visible hole represents the bone that Patoshi found. The yard is the nonce space. What I did is to uncover all the bones, to discover all nonce solutions for every block in the first 18K blocks in order to detect the scanning direction of the algorithm Patoshi used. The result from the test was a clear bias towards one of the sides.
What does the direction of mining has to do with the machine used for mining ?
The importance of the direction test regarding the potential parallelization of mining is that the test won’t give you a clear answer if the yard is scanned not by one gardener, but by 50 gardeners each starting at different points in the yard. The test won’t give the owner of the house any clue of what is happening. The test will randomly give right and left as answers (close to 50/50 if the number of tries is high). That’s why if the direction test gives you a clear consistent answer every time (which one is unimportant) then that means the yard has been scanned by a single gardener, not by 50. Going back from the analogy to the computing world, a single gardener is like using a single thread or a single core to do the work. Because we already knew the yard may have been split into 5 different areas (or ranges), I was able to perform the direction test within each of these areas separately and also in all areas combined. The result shows a much higher bias within each area, so the yard was scanned by 5 different gardeners, in the 5 different areas, all scanning in the same direction. Five gardeners indicate five threads. But the first Bitcoin client did not support multi-threading, even if standard computers had 4 or more cores. Multi-threading was added to the Bitcoin code months later. That’s why we know Patoshi used a more powerful system than the rest. Not because he had a super-computer, but because he used his computer better. And why he didn’t put (or asked Satoshi to put) the multi-threading miner in the Bitcoin code? My opinion is that it would just disincentivize people from running Bitcoin, because it would consume 100% of the CPU for mining, taking valuable CPU time when the bitcoins generated by mining were worth zero. Getting people to understand Bitcoin was far more important than generating coins. Things have changed a lot.