Good question! Luckily it's mostly about technology, and not astrophysics or alchemy. Also, you don't have to do it like this anymore!
Mining cryptocurrency can in broad terms be broken down into theory and practice. This page consist of a lot of practically useful information, since most of you visitors are probably more interested in that, but also some theoretical and expanded pieces. Read on!
When mining, the speed at which you acquire crypto currency depend on a number of things, most of them rely on
- foremost you being patient
- and secondly your hardware
- and thirdly what currency you mine
You can expect better results if you have high performance hardware, but you also need to read up on what that means in terms of mining crypto currency. A good site for statistics on certain hardware is Cryptocompare's mining section, where you'll get some insight into what to expect, depending on the hardware.
Now, that said, you also need to understand that different coins use different algorithms. The algorithms used in cryptocurrency is centered on highly advanced mathematical computations. This means that even if, say, a GPU can perform 2000 million calculations a second, it may only yield 2 million hashes for a crypto currency. One thing that you need to be aware of is that there are certain currencies that are so called "ASICS resistant", such as Monero (XMR). ASICS are specially built hardware platforms that are only meant to produce high amounts of hashes to mine coins, but they only work for certain coins, such as BitCoin (BTC). But even with ASICS, the difficulty level in most cases, make it unprofitable to mine.
You can decide for yourself whether you have the performance enough to find blocks on your own, or if you want to be part of a bigger group of miners, who share the proceedings.
Solo mining dramatically increases the requirements on your hardware, because you need to be able to calculate hashes that compete against large groups of miners. If you instead were to mine in a pool, you can have a very low performing system and still be able to catch coins through your efforts. They will however be low on a low end system, because you don't have the power to produce as much work as others with high power rigs.
Solo mining can be explained with the following diagram
There are three important steps in this sequence
- Block generation - This is where a number of transactions are grouped up into a block
- Mining - This is where miners turn their Proof of Work (PoW, or mining) into a chance to get a reward
- Reward handout - When a miner has found a block, a reward is handed out
What's really important to note about solo mining is if your miner is NOT the one that finds the block, then you will get nothing. Only when YOUR miner finds the block, you get a reward, and then you get the whole reward.
With this in mind, solo mine only if
- You have serious hardware (we're talking the top rigs of the world) or want to invest in getting it. Be ready to spend a big pile of cash to acquire such hardware though.
- You want to mine a coin that doesn't have high difficulty and is easily mineable.
Pool mining can be explained with the following diagram
As with solo mining, there are still three steps in the sequence, but they differ in execution
- Block generation - This is where a number of transactions are grouped up into a block
- Mining - This is where miners turn their Proof of Work (PoW, or mining) into a chance to get a reward. The big difference here; instead of trying to find a block on their own, the miners commit much smaller pieces of Proofs of Work, called "shares". These shares are then used to calculate how big a reward each miner gets, when a block is found.
- Reward handout - When a miner has found a block, a reward is handed out to all miners who have committed good shares. The reward is proportional to the number of shares commited.
What's really important about pool mining is that you will only get as big a reward that is proportional to the number of shares your miners commit, in relation to all miners in the pool. In order for you to get the whole reward would be if you were the only one mining the coin in the pool!
Pool mine if
- You have hardware that you're using at home, or are starting up a few mining rigs.
- You want to mine a coin that has high difficulty, but that you still want to be able to get a very small share of.
There are a number of pools to choose from, that provide their own sets of services, tools, fees, coins that can be mined, etc. You will have to do a bit of research into which pool you deem worthy of your time. One resource that is available for reading through is Bitcoinwiki's comparison of mining pools. This page, in addition to their list of pools, also have an index of terms being used in mining related operations that is well worth a read through.
You want to keep an eye out on the kinds of fees that are applied to your mining efforts, as these can have a significant effect on your final total. Also, decide on whether the coin you want to mine is connected to an exchange that you want to do business with. Coins can be tied to only a few select exchanges and you want to choose an exchange and mining pool that you feel confident in.
Some pools offer certain technology or possible financial advantages, such as merged mining (which means you can mine multiple coins without or very little performance hit), lower fees, in-house developed tools, etc. These also play a role in deciding where you want to spend your time.
When you've made your choice of where to spend your hard earned CPU/GPU cycles, now comes the deep dive into mining tools. There are a number of different tools for mining coins, and they are either divided into specific coins, coin algorithms, pool centric tools, etc. Check the pool to determine if they recommend anything, but also keep track of ongoing discussions on Bitcointalk's Mining software (miners) forum threads. Very clever people come up with more optimised alternatives to mine coins, that can improve your chances of increasing your mining performance.
Mining is all about squeezing as much performance out of your hardware as possible, so that the efforts will count for more coins. There are two core terms for measuring the work; hashes and sols. They both mean the same; The number of coin algorithm calculations your hardware is currently pushing. The more, the better.
You can affect the number of hashes/sols you push to the network by switching out hardware or switching tools. But, there are other factors that play a role, that you have much less control over; difficulty and algorithm. The difficulty is tied to how much combined work has already been put into the coin in terms of mining. It starts low and adjusts over time, making it more and more difficult to mine, and as a result, lessens the reward when mining. The algorithm also plays a part in the amount of hashes you'll be able to reach, but these can't be compared between eachother. One coin using CryptoNight algorithm can't be compared to Dagger Hashimoto, because they have different implementations. Compare the hashes you generate based on what algorithm each coin uses, to get proper measurements.
Here's a list of tools that you can choose between for mining. They will state a few details to help you make an informed decision on what you want to use
|Nicehash Zcash miner||zcash||CPU, CUDA (nVidia)||Windows, Linux|
|SilentArmy Zcash miner||zcash||CPU, CUDA (nvidia), AMD, Intel||Linux|
|Claymore Zcash AMD miner||zcash||AMD||Windows, Linux|
|Etherium miner||ethash||CPU, CUDA (nVidia), AMD||Windows, Linux, Mac|
|Genoil's ethminer||ethash||CPU, CUDA (nVidia), AMD||Windows, Linux|
|Claymore's Cryptonote miner||cryptonight||AMD||Windows|
|Claymore's Cryptonote CPU miner||cryptonight||CPU||Windows|
|ccminer-cryptonight||cryptonight||CUDA (nVidia)||Windows, Linux|
|XMR-Stak||cryptonight||CPU, CUDA (nVidia), AMD||Windows, Linux|
Most if not all pools support multiple mining/workers to connect to it. This means that you can have one box mining ZEC, another one merge mining XMR and FCN, a third one mining ETH, and all of them connected to the same pool. It is usually possible to see how many workers in total are connected, at the pool you point your workers to.
GUI tools are often very well presented when comparing to other options, such as console applications, and very seldom require spending a lot of time to get to work. Minergate has a GUI that is very intuitive and easy to use.
There are an abundance of console tools, when comparing to GUI equivalents. The main reason is that it's hard to create a GUI for every single function and option you want your users to gain access to, without making it confusing. Console tools are usually more complex, especially when trying to understand what commands you need to provide, but in the mining world they tend to be more efficient, less error prone and more flexible.
Consoles look mostly the same in every operating system; a black window with white text. You type commands into it, and the console responds depending on the result from the command. You can in most cases reach the console in the following way
Press Windows-flag + R -> Type "cmd", press Enter
Press cmd + Space -> Type "terminal", press Enter
- Linux (Debian and the likes):
Press Ctrl + Alt + T
When mining, the most important thing to know is how to reach the help section of an application. This means you need to know how to navigate, and execute commands. Changing directory is done by
cd [the folder you want to navigate to], followed by pressing Enter. If you want to back up in the directory structure you in Windows type
cd.. and in Linux/Mac
cd .., followed by pressing Enter. If you want to see the contents of the directory you are in, in Windows you type
dir, while in Linux/Mac you type
ls, and press Enter. This should be enough for you to get started with navigating the console.
So what about reaching the help section of a program? Well, it mostly works by
- Navigating to the folder where the program is
[application] --help, and pressing Enter
The [application] part is the file/name of the miner program you want to run. In the case of MinerGate CLI, the application name is minergate-cli. XMR Stak AMD is xmr-stak-amd. Depending on the miner you want to run, the application you need to run will have its own name.
This is just a very tiny introduction to console mining, as the tools vary depending on what you want to mine. Check the "Mining" menu option for more specific miner applications.
It's possible to mine with multiple GPU's, also very often it's possible to mine with multiple GPU's that are not of the same model. However, this requires testing and can't be guaranteed. We wouldn't recommend extra complicated setups, such as 1x nVidia 970, 1x GTX 1080 and 2x R9 390, because mixing both GPU manufacturers and models can introduce potential problems, probably unnecessarily. However, you can always try and see if it works.
- To mine Ethereum you need to have a GPU that can fit the DAG (see explanations below on what the DAG means).
- Check the "Blockchain size" on the landing page to determine if your GPU is a candidate for mining Ethereum.
- Miners such as geth or Minergate, etc, can sync the DAG fast, which means you can start mining quicker.
Ethereum make use of the ethash algorithm. As such, it's different in comparison to cryptonight coins (BCN, XMR, XDN, FCN, etc...) or BTC.
The biggest difference is the DAG (Directed Acyclic Graph). As explained on StackExchange, the DAG is memory hard (needs to be available in memory) and requires a minimum amount of VRAM to be mined.
The DAG needs to be generated before it can be mined. It can be generated in full or as a smaller variant. Most miners want/strive to use the smaller variant, as it means that computers with less resources are able to mine the blockchain.
Synchronizing the DAG through the official Ethereum wallet is much slower in comparison to e.g. geth, because it syncs the entire blockchain, which takes much more space, and typically take multiple hours.
The DAG is (re)generated every 30000 blocks. When this happens, the DAG enters a new so called "epoch".
Mining contains a lot, and we mean a lot (seriously... A LOT) of generic, specific, weird, obtuse, clear, unclear, and generally confusing terminology. We won't be able to cover it all, because it also changes, but let's name things that are fairly common, in alphabetical order. Also, use the search function, the titles will not be enough for all the terms, because we group them based on topic.
tl;dr Blocks are a number of collected coin transactions (buys, sells, transfers, etc.), that need to be validated by miners for it to be permanently recorded in the blockchain. When a block is verified (it's called that "a block has been found", because miners need to find an answer to a difficult-to-solve mathematical puzzle) all miners who have commited good shares, get their rewards.
Over a certain period of time (for Bitcoin it's 10 minutes), coin transactions will be collected. After 10 minutes have passed, all the transactions within that time period will be grouped into a block, and sent out for verification. Miners will then compete to try to validate these transactions by solving complex coded problems. When a miner has solved these problems, and validated the block, it will get a reward.
When you are mining in a pool, you and several other miners share the work of validating a block. This means that you or any other miner may be the one who finds a block. Finding a block in a pool means rewards for that block will be handed out to all miners who have contributed verified work, e.g. accepted shares.
According to this StackExchange answer and this StackExchange answer, in terms of Bitcoin, difficulty burns down to the network striving to have an average block solution of 10 minutes. This means that the network will allow itself to automatically adjust the difficulty in order to secure the average solution time of 10 minutes.
The difficulty is directly related to the amount of work all connected miners can produce, as more miners mean more hashing power, which means it will be faster at reaching a solution. As such, if there was to be a prolonged and substantial shortage of miners in the network, the difficulty would decrease, to keep the solution time consistent.
tl;dr The higher the hashrate you can reach, the higher your part of the reward becomes when mining in a pool.
If you are solo mining, a higher hashrate means you will have a higher chance to solve the block. If your miner solves the block when solo mining, you get to keep the entire reward. But as said, only if you solo mine.
Hashes per second (h/s) is a measurement on how much work, how many hashes/solutions, your rig can contribute to the blockchain (coin) you are currently mining.
When mining a blockchain, your miner gets informed that a new block is available in the blockchain network, and then starts to perform calculations on highly advanced and hard to solve math problems. The problem the miner is aiming to solve is one that verifies the entire block (this is called that a block has been found). When that happens the miner(s) will get their reward for their work. The size of the reward is highly depending on
Since the problems are really difficult to solve, and it's impossible for the miner to know which solution is the right one until it has sent it in and the answer has been checked, a lot of attempts to find the solution is needed by your miner. The higher the hashrate, the better the chances are that the block will be found by your miner, because you will send in more possible solutions.
Your hashrate mainly depends on two things
- Your hardware (CPU/GPU)
- The algorithm the coin use (different algorithms means different hashrates)
Hashes are measured in hashes/second, which is a comparable number when discussing how powerful your rig is. There are displayed and talked about in different quantities, such as h/s (hashes per second), kh/s (kilo hashes per second), mh/s (mega hashes/second), and so on. There is another metric called sol/h, but these mean the exact same as hashes, it just uses another term.
Rewards come in the shape of coins, typically the coin you are mining. What decides when you get a reward is generally
- What reward scheme you choose.
- How many hashes the pool generates.
The reward scheme (could be PPS, PPLNS or other types if the pool provides it), decides what shares you will be rewarded for, and when you will get the reward.
The hashes the pool generates is important, especially when it comes to PPLNS. PPLNS rewards are tied to when a block is found by the pool.
Here's a table for you listing some common types that also tries to explain how the reward type works
|Reward type||Explanation||Why choose this?|
PPS (Pay Per Share)
According to this bitcoin wiki, each submitted (accepted) good share is worth a certain amount of coins. The value of the share is, on average, the block reward (set by the coin you mine) minus any pool fees, divided by the difficulty.
For example, with a block reward of 50 BTC, 2% fee and difficulty of 2'400'000, each share submitted will give on average, 0.000204 BTC.
You'll get a reward every time your miner commits a good share for the coin you're mining, and have to pay a fee for every share, which is more frequently than PPLNS.
PPLNS (Pay Per Last N Shares)
Give Me Coins has an excellent explanation on this. When you mine using the PPLNS reward scheme, your accepted shares are divided into rounds. Also, the number N in PPLNS is currently for all blockchains twice its own difficulty.
Each round has an arbitrary number based on sheer luck. With PPLNS, a fairly constant number of N shares is considered for calculating rewards. The number N only changes when the difficulty changes.
Each round has a different length compared to the previous one. No matter how long a round is, the reward scheme will always consider the last difficulty * 2 accepted shares as eligible for a reward when a block is found.
If a round is shorter than difficulty * 2, then your previous round's accepted shares are included when you get your reward. This means parts of your shares have a chance of being counted twice.
On the other hand, if the round is longer than difficulty * 2, your accepted shares that are older than that, will silently get dropped. This means parts of your shares run a risk of being discarded.
You'll get a reward every time a block is found in the pool for the coin you're mining, and have to pay a fee every time that happens, which is less frequently than PPS.
Your final reward when mining, in terms of the amount and how much time it takes depend on a number of factors, most notably
- The coin's difficulty - The higher the difficulty, the higher the hashrate you will need to be able to keep the same reward amount
- The coin's reward amount - When a reward is handed out to miners, the total reward amount might have changed since the last time you got a reward.
- The total number of miners - The more people mining a coin, the more the total reward amount will have to be split up between miners.
- The reward method you choose - As explained in the table above, the reward method (PPS, PPLNS, etc), will also affect your final reward amount.
- If you have chosen to mine with PPLNS as your reward scheme, you will have to wait until a block is found until you receive it. When a block is found is directly related to the factors mentioned in the bullets listed above.
tl;dr Shares are used as an accounting method to ensure the miners are honest and the pool hands out rewards fairly. They act as a score keeping for your miners submitted work in trying to find a block.
The more good shares you submit, the bigger your reward will be between the blocks that are found. Your goal is for your miners to submit as many good shares as possible over time.
You don't get penalised for bad shares, but should look into your miner, network, internet, pool issues to see what the problem may be, if you're submitting a lot of them.
If your miners submit invalid shares, you can and probably will get banned.
A share is often a solution that is not quite "good enough" to solve/find the actual block being mined, but still valid as a proof that your miner has contributed good and valid work. When you mine in a pool, the pool will receive the new block to be mined, and then hand this out to the miners connected to the pool, with an important difference; The pool will hand not hand you the actual block at the current difficulty. It will hand you a block with much lower difficulty, that is easier to find a solution for.
What this means is that your miner will send in valid solutions to the lower difficulty block handed to you by the pool, and get rewards proportional to how many solutions (shares) your miner sends in over time. The pool keeps track on how many valid solutions your miner sends in, so that you get the reward your miner produced shares for.
At some point, after having mined long enough, your miner will likely find a solution that solves the actual block being mined. When mining in a pool, this means very little, because you and all other miners in the pool will only be rewarded for the shares they have produced since the last block was found.
- Shares only work as score card keeping when mining in pools. They do not mean anything to a blockchain itself.
- Shares are turned into rewards. Most pools allow you to choose what reward scheme you want to use.
- Shares are solutions to blocks with a much lower difficulty than the actual block being mined.
- When a block is found while mining in a pool, the payout/reward will always be proportional to the amount of shares commited, since the last block was found by the pool. No single miner will get the entire reward when mining in a pool if there are more than one miner.
Shares are being submitted in different states, such as
Accepted/Good shares are what you want yout miner to submit. The more of good shares submitted, the bigger the reward will be between the blocks that are found.
Submitting bad shares is inevitable.
There can be a number of reasons for why bad shares are commited; The miner you use, the miner configuration, the pool you use, lag in the network, etc.
Invalid shares are very important as they can become a real problem. A high number of invalid shares over a short period of time can make your miner run the risk of getting temporarily or permanently banned.
The more good shares your miner contributes, the higher the reward will be when a block is found.
Most importantly, when mining in a pool
- The block gets validated faster
- You share the block validation reward with all other miners
One of your miners may eventually be the one that finds the block. This only means the block is validated through one of your miner's work. The reward is still split up between all other miners if you're mining in a pool.
Your goal is to provide as many good shares as possible over time.
Wallets are mostly used for two purposes
Choosing a wallet for trading is much more straight forward than for safekeeping. The reason for this is that exchanges have their own separate wallets, that you have to use in order to be able to do trades.
Choosing a wallet for safekeeping coins is much more difficult, because you need to consider
- What coin to store
- Will you store multiple coins?
- Cloud based or desktop based
- If desktop based, what operating system?
- Open source or closed source?
The list is long, and you will have to figure out what wallet to choose based on your specific needs.