5 stars based on
The word mining originates in the context of the gold analogy for crypto currencies. Gold or precious metals are scarce, so are digital tokens, and the only way to increase the total volume is through mining. This is appropriate to the extent that in Ethereum too, the only mode of issuance post launch is via mining.
Unlike these examples however, mining is also the way to secure the network by creating, verifying, publishing and propagating blocks in the blockchain. Ethereum, like all blockchain technologies, uses an incentive-driven model of security. Consensus is based on choosing the block with the highest total difficulty. Miners produce blocks which the others check for validity.
Among other well-formedness criteria, a block is only valid if it contains proof of work PoW of a given difficulty. Note that in the Ethereum Serenity milestone, this is likely going to be replaced by a see proof of stake model.
The Ethereum blockchain is in many ways similar to the Bitcoin blockchain, although it does have some differences. The main difference between Ethereum and Bitcoin with regard to the blockchain architecture is that, unlike Bitcoin, Ethereum blocks contain a copy of both the transaction list and the most recent state the root hash of the merkle patricia trie encoding the state to be more precise. Aside from that, two other values, the block number and the difficulty, are also stored in the block.
The proof of work algorithm used is called Ethash a modified version of the Dagger-Hashimoto algorithm and involves finding a nonce input to the algorithm so that the result is below a certain difficulty threshold. The point in PoW algorithms is that there is no better strategy to find such a nonce than enumerating the possibilities, while verification of a solution is trivial and cheap.
Since outputs have a uniform distribution as they are the result of the application of a hash functionwe can guarantee that, on average, the time needed to find such a nonce depends on the difficulty threshold. This makes it possible to control the time of finding a new block just by manipulating the difficulty. As dictated by the protocol, the difficulty dynamically adjusts in such a way that on average one block is produced by the entire network 6 ethereum classic mining pools worth checking outthe merkle 15 seconds.
We say that the network produces a blockchain with a 15 second block time. Any node participating in the network can be a miner and their expected revenue from mining will be directly proportional to their relative mining power or hashratei. Memory hardness is achieved with a proof of work algorithm that 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.
The DAG 6 ethereum classic mining pools worth checking outthe merkle totally different every blocks, a hour window called epoch roughly 5. Since the DAG only depends on block height, it can be pregenerated but if its not, the client needs to wait until the end of this process to produce a block. If clients do not pregenerate and cache DAGs ahead of time the network may experience massive block delay on each epoch transition.
As a special case, when you start up your node from scratch, mining will only start once the DAG is built for the current epoch. All the gas consumed by the execution of all the transactions in the block submitted by the winning miner is paid by the senders of each transaction. Over time, it is expected these will dwarf the static block reward. Uncles are stale blocks i. Valid uncles are rewarded in order to neutralise the effect of network lag on the dispersion of mining rewards, thereby increasing security this is called the GHOST protocol.
A maximum of 2 uncles are allowed per block. Mining success depends on 6 ethereum classic mining pools worth checking outthe merkle set block difficulty. Block difficulty dynamically adjusts each block in order to regulate the network hashing power to produce a 12 second blocktime.
Your chances of finding a block therefore follows from your hashrate relative to difficulty. Ethash uses a DAG directed acyclic graph for the proof of work algorithm, this is generated for each epochi.
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 the block number, so it can and should be calculated in advance to avoid long wait times at each epoch transition. Both geth and ethminer implement 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 off in all but one instance.
It is designed to 6 ethereum classic mining pools worth checking outthe merkle a fast verifiability time within a slow CPU-only environment, yet provide vast speed-ups 6 ethereum classic mining pools worth checking outthe merkle mining 6 ethereum classic mining pools worth checking outthe merkle provided with a large amount of memory with high-bandwidth. The large memory requirements mean that large-scale miners get comparatively little super-linear benefit.
The high bandwidth requirement means that a speed-up from piling on many super-fast processing units sharing the same memory gives little benefit over a single unit. This is important in that pool mining have no benefit for nodes doing verification, thus discourageing centralisation.
In order to mine you need a fully synced Ethereum client that is enabled for mining and at least one ethereum account. This account is used to send the mining rewards to and is often referred to as coinbase or etherbase. Ensure your blockchain is fully synchronised with the main chain before starting to mine, otherwise you will not be mining on the main chain. This is no longer profitable, since GPU miners are roughly two orders of magnitude more efficient.
However, you can use CPU mining to mine on the Morden testnet or a private chain for the purposes of creating the ether you need to test contracts and transactions without spending your real ether on the live network.
The testnet ether has no value other than using it for testing purposes see Test Networks. When you start up your ethereum node with geth it is not mining by default. To start it in CPU mining mode, you use the --mine command line option.
The -minerthreads parameter can be used to set the number parallel mining threads defaulting to the total number of processor cores. You can also start and stop CPU mining at runtime using the console. Note that mining for real ether only makes sense if you are in sync with the network since you mine on top of the consensus block.
In order to earn ether you must have your etherbase or coinbase address set. This etherbase defaults to your primary account. Note that your etherbase does not need to be an address of a local account, just an existing one. There is an option to add extra Data 32 bytes only to your mined blocks.
By convention this is interpreted as a unicode string, so you can set your short vanity tag. You can check your hashrate with miner. After you successfully mined some blocks, you can check the ether balance of your etherbase account. Now assuming your etherbase is a local account:. You can check which blocks are mined by a particular miner address with the following code snippet on the console:.
Note that it will happen often that you find a block yet it never makes it to the canonical chain. This means when you locally include your mined block, the current state will show the mining reward credited to your account, however, after a 6 ethereum classic mining pools worth checking outthe merkle, the better chain is discovered and we switch to a chain in which your block is not included and therefore no mining reward is credited.
Therefore it is quite possible that as a miner monitoring their coinbase balance will find that it may fluctuate quite a bit. If you get Error GPU mining. To get openCL for your chipset and platform, try:. Unfortunately, for some of you this will not work due to a known bug in Ubuntu Whatever you do, if you are on You can change this by giving the --rpcport option to geth.
Ethminer will find geth on any port. Note that you need to set the CORS header with --rpccorsdomain localhost. You can also set port on ethminer with -F http: Setting the ports is necessary if you want several instances mining on the same computer, although this is somewhat pointless.
If you are testing on a private chain, we recommend you use CPU mining instead. If the default for ethminer does not work try to specify the OpenCL device with: When running ethminer with -M benchmarkyou should see something like:.
Check your hashrate with ethminerminer. In order to mine on a single GPU all that needs to be done is to run eth with the following arguments:. Ensure that an eth node is running with your coinbase address properly set:. Notice that we also added the -j argument so that the client can have the JSON-RPC server enabled to communicate with the ethminer instances.
Additionally we removed the mining related arguments since ethminer will now do the mining for us. For each of your GPUs execute a different ethminer instance:. In order to easily get a list of OpenCL devices you can execute ethminer --list-devices which will provide a list of all devices OpenCL can detect, with also some additional information per device. Mining power tends to scale with memory bandwidth.
To benchmark a single-device setup you can use ethminer in benchmarking mode through the -M option:. To start mining on Windows, first download the geth windows binary. As soon as you enter this, the Ethereum blockchain will start downloading.
Sometimes your firewall may block the synchronisation process it will prompt you when doing so. At this point some problems may appear. Mining pools are cooperatives that aim to smooth out expected revenue by pooling the mining power of participating miners. The mining pool submits blocks with proof of work from a central account and redistributes the reward to participants in proportion to their contributed mining power.
Most mining pools involve third party, central components which means they are not 6 ethereum classic mining pools worth checking outthe merkle. In other words, pool operators can run away with your earnings. There are a number of trustless, decentralised 6 ethereum classic mining pools worth checking outthe merkle with open 6 ethereum classic mining pools worth checking outthe merkle codebase.
Mining pools only outsource proof of work calculation, they do not validate blocks or run the VM to check state transitions brought about by executing the transactions.