What Makes for a Good Mining Algorithm?

What Makes for a Good Mining Algorithm?

Many newcomers to Bitcoin seem drawn to the both the process of mining, and how they "can fix it". But a good mining algorthim needs to have a number of ...


Party time! Party time! What's up party people? Chris DeRose here, Community Director of the Counterparty Foundation. And in this video, I wanted to address the question, what makes for a good mining algorithm? So, mining algorithms are obviously something that people really are fascinated with. I don't know why people want to see mining algorithms be something it's not, but you see this so often in Bitcoin. People don't like wasting energy, I think, at least in their minds and they see the work algorithms as a waste of energy, which it is not, and we'll get to that in a second. People want to see the energy that's being used for mining for something that solves their personal problem, or at least in their mind, something that is a more egalitarian use, perhaps, but that's never a really good idea. In fact, it's probably, or certainly, an impossible idea.

Jeff Garzik talks about this a lot, it's the kind of thing that's been tackled over, and over, and over again, and when people are new to Bitcoin, it's one of the first things that they really seem to wanna address at some level. And I think that's what important to understand here is, first off, mining has to be wasteful in order to be useful. You need a couple of properties in a mining algorithm in order for it to be a reliable, and repeatable, and usable source of anchor or stake in a system. First and foremost, mining needs to be a short calculation of which every permutation takes about the same amount of time. So if you solve it for a seed value of one, or a seed value of a million, or whatever it is, whatever number you guess, whatever notch you guess, it takes the same amount of time. That's not something that's terribly compatible with most things, like protein folding, for example.

In protein folding, some proteins take more and less time than others. So that's one property that you really need in a mining algorithm in order for it to be useful. Say, "Who is that guy?" Who is that guy? Say . . . Who is this guy? "Who, what?" Who what? Say, "Who, what, where did he come from?" Who, what, is he from? That's fine, thank you.

So the other problem that you have, typically, with mining, is that the state of any given calculation, the solution for a block, needs to be contingent upon the last solution prior. This keeps people from solving in advance. So you don't necessarily have that with something like protein folding, where you have a protein that needs to be solved, say, but is not contingent upon the last protein folding. And that in and of itself makes tons of calculation off the table. Typically, the only solution you would have to something like that is to make it a centralized source of authority as to what protein needs to be folded next, or something like that. And in addition to that, what also gets into the nature of these calculations is, what is the economic value of those calculations? If there's an economic value to actually folding the proteins outside of your system, now you've perverted the incentives, and now you don't necessarily have as much control over the inputs that go into the actual pressing of a coin, or the mining of a coin.

You have all these other ancillary things. What if, perhaps, folding proteins is really useful now, but then it ends up being not that useful. Well, all of these economic systems that are incidental to the actual mining itself end up affecting the system itself. You end up affecting the price of Bitcoin, because maybe protein folding is no longer something we need to do. And then, too, there's these sort of notions of like, okay, so let's say you start folding proteins, or something like that, and when you started folding proteins, well, there's only one right answer to the block. When you meanwhile had 99% of the network doing this work or something like that, and they have to either throw out their results or if they don't throw out their results, then there is certainly some level of waste, in terms of what they've been doing concurrently with other people.

It may not be a very parallelizable calculation. So I understand where people are coming from with this calculation. They really want to see mining be something it's not. I don't think that that's a very productive use. I love what FoldingCoin is doing, though. FoldingCoin is a very great example of what we can do, using blockchain technology for solving problems.

So, Robert, I love what you're doing with your project. You don't need to be mining your own coin, of course. You use Counterparty, because Counterparty does everything that you need, and it solves your problems. Trying to fix the mining out of Bitcoin is a really bad idea, and if you don't understand some basic concepts . . .

that's this really very obviously expressed to the people who have been using Bitcoin, when they see these projects that they're trying to use it for, things like CureCoin, maybe, or some of these other kinds of projects where they try to be a social benefit. It typically reeks of somebody who doesn't know what they're doing in Bitcoin, and in blockchain. But that's it, maybe, I don't know. Did I miss something? Is there's some other mining application that you can think of that you like for this process, that is not following these rules? Add your comment below. Why don't you start a dialogue? Or if you have some questions about any kind of mining algorithm that you particularly like, why don't you ask me? My handle on Twitter is @derosetech, and I'd love to hear from you guys. Later, party people.