DAG stands for Directed Acyclic Graph. In Ethereum, a DAG is created every epoch using a version of the Dagger-Hashimoto Algorithm combining Vitalik Buterin's Dagger algorithm and Thaddeus Dryja's Hashimoto algorithm.
There are quite a few places where the DAG is defined in the docs and literature. These are collated below:
From the yellow paper:
The DAG started at 1 GB at the time of the Frontier launch, and increases by approximately 0.73x per year. That puts the current size at roughly 1.35 GB as of mid-January 2016 (feel free to comment with an exact link if anyone has one).
Following the same crude approximation:
The 2GB limit will be hit around mid-December 2016
The 3GB limit will be hit ...
Ethereum uses Ethash (Proof of Work system).
Ethash PoW is memory hard, making it basically ASIC resistant. This basically means that calculating the PoW requires choosing subsets of a fixed resource dependent on the nonce and block header. This resource (a few gigabyte size data) is called a DAG. Sourced from here.
DAG stands for Dagger Hashimoto
It is a proposed spec for the mining algorithm for Ethereum 1.0.
Dagger Hashimoto aims to simultaneously satisfy two goals:
ASIC-resistance: the benefit from creating specialized hardware for the algorithm should be as small as possible, ideally to the point
that even in an economy where ASICs have been ...
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 ...
The Ethash DAG is not related to merkle trees (the word "merkle" does not appear on either wiki page). The Ethash DAG only serves as a big dataset (i.e. too big to fit in memory) for making Ethash mining be "memory-hard".
Ethereum's merkle tree is what keeps track of the state of all accounts and contracts. The state of all accounts is not directly related ...
I see that no one mentioned what the DAG really is. As from the description of what the DAG file contains you can see that DAG stands for directed acyclic graph. This is represented in the file as a matrix.
The DAG size is actually calculated by a fixed formula. You can find more details here. The function that does the calculation is:
sz = DATASET_BYTES_INIT + DATASET_BYTES_GROWTH * (block_number // EPOCH_LENGTH)
sz -= MIX_BYTES
while not isprime(sz / MIX_BYTES):
sz -= 2 * MIX_BYTES
To make ...
You can check it yourself on your miner:
$ ls -l ~/.ethash/
-rw-rw-r-- 1 richard richard 1073739912 Mar 10 20:36 full-R23-0000000000000000
(If you're running a standalone miner, then the file is generated locally, not downloaded from somewhere.)
It seems the HD6950 is limited to a 512MB allocation even with much more RAM onboard.
C:\Program Files\Ethereum 0.9.41\Release>ethminer --list-devices
Listing OpenCL devices.
FORMAT: [deviceID] deviceName
No. You don't have to sync to the blockchain if you are mining on a pool.
The pool will provide your miner with the appropriate information for your miner to generate the DAG file required for it's mining computation.
The pool will be running an Ethereum node, normally geth (see https://www.ethernodes.org/network/1).
Your miner will call the ...
Setting the --autodag option to false doesn't seem to work. I typed this command in the JS console and it worked:
I0708 11:01:29.112749 eth/backend.go:498] Automatic pregeneration of ethash DAG OFF (ethash dir: ~/.ethash)
ethminer.exe -G --list-devices
It will list openCL compatible devices.
You have to check that both MEMORY and MAX_ALLOC sizes are bigger than the current DAG (a bit more than 1.4 Gb at the moment).
On an Intel card it wouldn't surprise me that the MAX_ALLOC is too low even if the memory is ok.
A nice alternative is Goldminer which will ...
I think you may be confusing the DAG with the other chain data. The DAG is only used for mining and will only take up about 2GB. What is taking up the space is the whole blockchain, which you are currently downloading (that's what "syncing" is. 40 GB is about right, and until light clients become available, that's just something you'll have to deal with. The ...
Every Merkle is a directed acyclic graph (DAG) because each node is accessed by its name. Each branch of Merkle is the hash of its local data, because its fast to access instead of accessing by its original content. This will helps to prevents cycles (lets assuming there are no hash collisions), because one cannot link the first created node to the last node ...
There seems to be an open bug related to the issue-issue-3056
The present solution which works for me , I run folowing command before mining again
geth makedag <blocknumber> <ethash dir path>
then start mining again.
Just to add to the accepted answer...
The --autodag flag doesn't take a value, so it can't be set to false.
The DAG will always be pregenerated if mining is enabled from the CLI using the --mine flag. What the --autodag flag allows you to do is pregenerate the DAG even if mining is not enabled.
The pertinent part of the code is in flags.go:
Perhaps it depends on the mining software but with ethminer using a pool you don't have to sync at all. The pool does the sync and send you the data to compute. You only have to prepare it and share it on your GPUs.
Unfortunately, it might be impossible because of 2GB of RAM. Although current DAG is 1.4 GB in size and should fit the OpenCL implementation might not allow such big allocation for this GPU.
You might try the following:
Try running from console without starting graphical desktop environment (if on Linux).
Try benchmark ethminer -G -M that will use 1 GB DAG....
The solution I found was to parse my wallet's page on dwarfpool looking for the string "DAG corrupted" in its content with a little Node.JS script. It should work with any pool.
Obviously if you do not write code it's not that easy. GoldMiner does check DAG corruption and automatically restarts mining, it has a cool interface, great for non-coders imho.
Scaling proposals can be put into 2 categories: off-chain and on-chain.
Off-chain proposals generally involve netting small transactions between 2 or more parties outside the blockchain. After a certain time the involved parties will settle the net amount on the blockchain, if they agree with each other.
On-chain proposals involve a more efficient way to ...
what is the difference between blockchain size and dag file size?
These are two different things.
The 670 GB in your explanation is the blockchain (state) data, which includes all the blocks and their headers. Depending on which client you're using, and which pruning mode, this will vary in size.
What are the Ethereum disk space needs?
What is the ...
I'm assuming you're on develop :)
That DAG is not the big mining DAG, but a tiny (1MB) one used for verifying blocks. We did an optimization that handles these verification caches better, and maintains 3 instead of only 1 as previously. The log you are seeing is when all three goes stale and the oldest is replaced with a new one. It's just a debug log, that ...
Okay found the answer on another forum. It just means the next phase of the DAG is happening soon, apparently this takes place every 30,000 blocks. It becomes bigger.
At the time of writing this question the block didn't exist yet as it was still in the 1070000's - just one minute ago it happened.
If your miner sent bad shares, there is a high chance that you have a corrupted DAG file.
You need delete it and restart miner:
DAG files in OSX and Linux are here: ~/.ethash
DAG files in Windows are here: C:\Users\___\AppData\Local\Ethash
See the pool FAQ.