Before you jump all over this a duplicate question. I did read things related to DAG like here: What actually is a DAG? But that doesn't answer my question, what does it mean when my mining pool website says that the next DAG is in X (4 in my case) days? How does that affect me as a miner?
-
Every miner need to download DAG file ?both of solo miner and pool miners ? has any effect to hash rate power of graphic card in pool mining ?if yes which model is better ?– AliCommented Aug 19, 2017 at 10:37
-
Hi there. If you have another question, please ask it by clicking the Ask Question button.– Richard HorrocksCommented Aug 19, 2017 at 11:50
4 Answers
I usually avoid copy pasting info from docs, as many here do, but here I think its appropriate:
Ethash uses a DAG (directed acyclic graph) for the proof of work algorithm, this is generated for each epoch, i.e every 30000 blocks (100 hours). The DAG takes a long time to generate. If clients only generate it on demand, you may see a long wait at each epoch transition before the first block of the new epoch is found. However, the DAG only depends on block number, so it CAN and SHOULD be calculated in advance to avoid long wait at each epoch transition. geth implements automatic DAG generation and maintains two DAGS at a time for smooth epoch transitions. Automatic DAG generation is turned on and off when mining is controlled from the console. It is also turned on by default if geth is launched with the --mine option. Note that clients share a DAG resource, so if you are running multiple instances of any client, make sure automatic dag generation is switched on in at most one client. Note that ethash uses ~/.ethash (Mac/Linux) or ~/AppData/Ethash (Windows) for the DAG so that it can shared between clients.
-
1Can you provide a link to the page where this is from? :) Commented Aug 5, 2016 at 13:14
-
1
-
So this still doesn't quite answer the question: how does it affect miners? Obviously most miners asking this question haven't chosen whether or not they have "Automatic DAG generation" switched on or off... Are you saying we should switch it on? Is it on by default?– MGOwenCommented Jul 1, 2017 at 23:29
-
1I think the answers to your questions are in the cited text: Are you saying we should switch it on? "the DAG only depends on block number, so it CAN and SHOULD be calculated in advance to avoid long wait at each epoch transition" Is it on by default? "It is also turned on by default if geth is launched with the --mine option"– dragosbCommented Jul 3, 2017 at 8:44
A miners node needs the DAG to compute the PoW (according to Ethash algorithm) https://github.com/ethereum/wiki/wiki/Dagger-Hashimoto and a new DAG is needed to be computed every epoch (X blocks).
Then since the DAG needs time to be computed, in order to avoid wasting time, a miner can pre-computes the DAG (since it's just dependent on the block height), this is why someone should take care of the time remaining before a new epoch comes.
From your link: What actually is a DAG?
I think it is just a kind dataset, graph or complex shape to be solved for that someone maybe could render if they wanted to, that gets more complex or has more dimensions over the last epoch.
In a way it is what each block is working on. A finished DAG is the end of solve what was to be solved. Makes it harder to mess with the block chain and is part of the PoW
How I Think it effects mining:
- With each new DAG you'd need a bit more GPU VRAM
- During each transiting to the next DAG set to be calculated, there might a delay in mining. The predicted timing of the next DAG epoch minimizes that delay.
I just did a brief rundown on what DAGs are, I hope it can help with your question: https://youtu.be/ezuZcKoQK8k
DAGs are just a way to organize data. Blockchains are sequential and linear; each block follows the one before it in a straight lime and in a single direction/order, and if incorrect data is ever put into even one block, EVERY block that follows it will become invalid. Blockchains, particularly blockchains that use Proof of Work for agreement, use a LOT of resouces... and that's by design.
Graphs are a data model that seeks to solve this problem. DAGs don't have blocks of data... they organize the data into 'nodes' or 'vertices'. Nodes can have relationships with another, that are not linear or sequential... what this means for your ETHEREUM question is: with a DAG you can verify the authenticity of data with only a portion of the data that exists on the entire chain.
Cryptos that use ONLY blockchain data, would require you to load the ENTIRE blockchain on EVERY single node, to establish authenticity of the data. ETH uses DAGs between 'epochs', or time periods, so that past valid transactions can be archived and shared across nodes, without downloading each and every transaction.