Mining DigiByte will instantly spin your computers graphics card up to 100% utilization, but what is it that it’s actually doing ?
Well, your miner (ccminer, cgminer etc) is instructing your graphics card to run hashes over chunks (blocks) of text, millions of times per second.
This hashing can be done relatively quickly on your graphics card, faster than your CPU would do it. These are commonly referenced:
KH/s – Kilohash – thousand hashes per second
MH/s – Megahash – million hashes per second
GH/s – Gigahash – billion hashes per second
TH/s – Terahash – trillion hashes per second
DigiByte has 5 different hashing algorithms that it uses, SHA256, Scrypt, Qubit, Groestl and Skein. These algorithms are the method of verifying the transactions on the DigiByte network.
Looking at this from the perspective of mining as part of a pool, your mining software is given a chunk of work to do by the pool, it will be told “Using the information of the last valid block, I need you to bundle up these transactions A & B, then find me a hash using the Skein algorithm that starts with X zeroes”. Where transactions A could be Frank sending Roy 5 DigiByte, and B could be Roy sending Sally 3 DigiByte, and it could be required that the hash starts with 5 zeroes.
Your miner then sets about making random attempts at taking the information it’s been told it must hash, and adding a bunch of “fluff” data to the end of it called a “nonce”.
So if it was told to make a SHA256 hash of “Frank sends 5 DGB to Roy”, the SHA256 hash of that would be “e7578ecc02f2ad52b5bd9075b31988ec6962a495107d282ba3cf53cad0282ee0”.
To get that to start with a “0”, we would start padding the end of it with “fluff” data, such as “Frank sends 5 DGB to Roy001”, which would give us the SHA256 hash of “8b5116088b46965f6472d4cd9335b299cc11384f65060ac95be1fbc3c1bf3ad3”.
And your miner starts taking random guesses until it comes up with “Frank sends 5 DGB to Roy024” which hashes with SHA256 to be “03d823d4303ce881cbb29a3014f1cb1adfe222a8070336eaebd78320bec107cb”
Now, imagine that we’ve got to get that to start with 5 zeroes. We’re also going to bundle up all of the transactions since the last verified block, and we’re going to basically start making random attempts, by adding this random “nonce” data to all the information, to try and get it to make us a hash that starts with 5 zeroes, and we’re going to try millions of times per second:
So in this instance, 910MH/s is 910 million hashes per-second, with the Skein algorithm.
Roughly every 15 seconds, a new block will be found, and that block will contain a hash of some information from the previous block (To make sure that people don’t start working on a block 2 or 3 into the future), it will contain the transaction information that has been announced to the DigiByte network, your wallet address (So everybody knows that you did the work, found the block, and your address is to get rewarded with ~890 DigiByte as a result), and it’s also going to contain a bit of “fluff” data (The nonce) to make the hash end up starting with the right amount of zeroes.
Now because you mine as part of a pool, your miner is instructed to put the pools public address in to the block data, and the pool itself will later on split up / divvy up the rewards evenly for finding the block, among everybody who contributed, based upon their hashing power contributed, multiplied by the time they contributed that hashing power for.
Keep in mind that some of the algorithms are faster than others and require “less effort” to do, which is why the Skein algorithm on your GPU may run at, say, 350MH/s, but yet mining on Groestl only performs 50MH/s. This is because the process that your GPU has to go through when performing the Groestl hashes is a lot “tougher” for it to do, and it does it slower. However, because everybody also does it slower, it doesn’t specifically mean that it’s inefficient for you to mine using Groestl at all, it’s simply a different algorithm chosen to ensure that DigiByte is as distributed (With as many people as possible mining) as it can be.