{"id":19166,"date":"2026-04-10T04:02:37","date_gmt":"2026-04-10T04:02:37","guid":{"rendered":"https:\/\/cryptoted.net\/index.php\/2026\/04\/10\/the-question-of-mining-ethereum-foundation-blog\/"},"modified":"2026-04-10T04:02:37","modified_gmt":"2026-04-10T04:02:37","slug":"the-question-of-mining-ethereum-foundation-blog","status":"publish","type":"post","link":"https:\/\/cryptoted.net\/index.php\/2026\/04\/10\/the-question-of-mining-ethereum-foundation-blog\/","title":{"rendered":"The Question of Mining | Ethereum Foundation Blog"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"\">\n<p class=\"chakra-text css-gi02ar\">There are a lot of interesting changes to the Ethereum protocol that are in the works, which will hopefully improve the power of the system, add further features such as light-client friendliness and a higher degree of extensibility, and make Ethereum contracts easier to code. Theoretically, none of these changes are necessary; the Ethereum protocol is fine as it stands today, and can theoretically be released as is once the clients are further built up somewhat; rather, the changes are there to make Ethereum better. However, there is one design objective of Ethereum where the light at the end of the tunnel is a bit further: mining decentralization. Although we always have the backup option of simply sticking with Dagger, <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/2014\/01\/15\/slasher-a-punitive-proof-of-stake-algorithm\">Slasher<\/a> or SHA3, it is entirely unclear that any of those algorithms can truly remain decentralized and mining pool and ASIC-resistant in the long term (Slasher is guaranteed to be decentralized because it\u2019s proof of stake, but has its own moderately problematic flaws).<\/p>\n<p class=\"chakra-text css-gi02ar\">The basic idea behind the mining algorithm that we want to use is essentially in place; however, as in many cases, the devil is in the details.<\/p>\n<p class=\"chakra-text css-gi02ar\">This version of the Ethereum mining algorithm is a Hashcash-based implementation, similar to Bitcoin\u2019s SHA256 and Litecoin\u2019s scrypt; the idea is for the miner to repeatedly compute a pseudorandom function on a block and a nonce, trying a different nonce each time, until eventually some nonce produces a result which starts with a large number of zeroes. The only room to innovate in this kind of implementation is changing the function; in Ethereum\u2019s case, the rough outline of the function, taking the blockchain state (defined as the header, the current state tree, and all the data of the last 16 blocks), is as follows:<\/p>\n<ol role=\"list\" class=\"css-vgl4zd\">\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">Let <span class=\"chakra-text css-ons8vw\">h[i] = sha3(sha3(block_header) ++ nonce ++ i)<\/span> for <span class=\"chakra-text css-ons8vw\">0 &lt;= i &lt;= 15<\/span><\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">Let <span class=\"chakra-text css-ons8vw\">S<\/span> be the blockchain state 16 blocks ago.<\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">Let <span class=\"chakra-text css-ons8vw\">C[i]<\/span> be the transaction count of the block <span class=\"chakra-text css-ons8vw\">i<\/span> blocks ago. Let <span class=\"chakra-text css-ons8vw\">T[i]<\/span> be the <span class=\"chakra-text css-ons8vw\">(h[i] mod C[i])<\/span>th transaction from the block <span class=\"chakra-text css-ons8vw\">i<\/span> blocks ago.<\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">Apply <span class=\"chakra-text css-ons8vw\">T[0]<\/span>, <span class=\"chakra-text css-ons8vw\">T[1]<\/span> \u2026 <span class=\"chakra-text css-ons8vw\">T[15]<\/span> sequentially to <span class=\"chakra-text css-ons8vw\">S<\/span>. However, every time the transaction leads to processing a contract, (pseudo-)randomly make minor modifications to the code of all contracts affected.<\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">Let <span class=\"chakra-text css-ons8vw\">S&#8217;<\/span> be the resulting state. Let <span class=\"chakra-text css-ons8vw\">r<\/span> be the sha3 of the root of <span class=\"chakra-text css-ons8vw\">S&#8217;<\/span>.<\/p>\n<\/li>\n<\/ol>\n<p class=\"chakra-text css-gi02ar\">If <span class=\"chakra-text css-ons8vw\">r &lt;= 2^256 \/ diff<\/span>, then <span class=\"chakra-text css-ons8vw\">nonce<\/span> is a valid nonce.<\/p>\n<p class=\"chakra-text css-gi02ar\">To summarize in non-programmatic language, the mining algorithm requires the miner to grab a few random transactions from the last 16 blocks, run the computation of applying them to the state 16 blocks ago with a few random modifications, and then take the hash of the result. Every new nonce that the miner tries, the miner would have to repeat this process over again, with a new set of random transactions and modifications each time.<\/p>\n<p class=\"chakra-text css-gi02ar\">The benefits of this are:<\/p>\n<ol role=\"list\" class=\"css-vgl4zd\">\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">It requires the entire blockchain state to mine, essentially requiring every miner to be a full node. This helps with network decentralization, because a larger number of full nodes exist.<\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">Because every miner is now required to be a full node, mining pools become much less useful. In the Bitcoin world, mining pools serve two key purposes. First, pools even out the mining reward; instead of every block providing a miner with a 0.0001% chance of mining a <span class=\"math math-inline\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mn>16<\/mn><mo separator=\"true\">,<\/mo><mn>000<\/mn><mi>b<\/mi><mi>l<\/mi><mi>o<\/mi><mi>c<\/mi><mi>k<\/mi><mo separator=\"true\">,<\/mo><mi>a<\/mi><mi>m<\/mi><mi>i<\/mi><mi>n<\/mi><mi>e<\/mi><mi>r<\/mi><mi>c<\/mi><mi>a<\/mi><mi>n<\/mi><mi>m<\/mi><mi>i<\/mi><mi>n<\/mi><mi>e<\/mi><mi>i<\/mi><mi>n<\/mi><mi>t<\/mi><mi>o<\/mi><mi>t<\/mi><mi>h<\/mi><mi>e<\/mi><mi>p<\/mi><mi>o<\/mi><mi>o<\/mi><mi>l<\/mi><mi>a<\/mi><mi>n<\/mi><mi>d<\/mi><mi>t<\/mi><mi>h<\/mi><mi>e<\/mi><mi>p<\/mi><mi>o<\/mi><mi>o<\/mi><mi>l<\/mi><mi>g<\/mi><mi>i<\/mi><mi>v<\/mi><mi>e<\/mi><mi>s<\/mi><mi>t<\/mi><mi>h<\/mi><mi>e<\/mi><mi>m<\/mi><mi>i<\/mi><mi>n<\/mi><mi>e<\/mi><mi>r<\/mi><mi>a<\/mi><mn>1<\/mn><\/mrow><annotation encoding=\"application\/x-tex\">16,000 block, a miner can mine into the pool and the pool gives the miner a 1% chance of receiving a payout of <\/annotation><\/semantics><\/math><\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8889em;vertical-align:-0.1944em\"\/><span class=\"mord\">16<\/span><span class=\"mpunct\">,<\/span><span class=\"mspace\" style=\"margin-right:0.1667em\"\/><span class=\"mord\">000<\/span><span class=\"mord mathnormal\">b<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.01968em\">l<\/span><span class=\"mord mathnormal\">oc<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.03148em\">k<\/span><span class=\"mpunct\">,<\/span><span class=\"mspace\" style=\"margin-right:0.1667em\"\/><span class=\"mord mathnormal\">amin<\/span><span class=\"mord mathnormal\">erc<\/span><span class=\"mord mathnormal\">anmin<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">in<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mord mathnormal\">o<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">p<\/span><span class=\"mord mathnormal\">oo<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.01968em\">l<\/span><span class=\"mord mathnormal\">an<\/span><span class=\"mord mathnormal\">d<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">p<\/span><span class=\"mord mathnormal\">oo<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.01968em\">l<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.03588em\">g<\/span><span class=\"mord mathnormal\">i<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.03588em\">v<\/span><span class=\"mord mathnormal\">es<\/span><span class=\"mord mathnormal\">t<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mord mathnormal\">e<\/span><span class=\"mord mathnormal\">min<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.02778em\">er<\/span><span class=\"mord mathnormal\">a<\/span><span class=\"mord\">1<\/span><\/span><\/span><\/span><\/span>1.60. Second, however, pools also provide centralized block validation. Instead of having to run a full Bitcoin client themselves, a miner can simply grab block header data from the pool and mine using that data without actually verifying the block for themselves. With this algorithm, the second argument is moot, and the first concern can be adequately met by peer-to-peer pools that do not give control of a significant portion of network hashpower to a centralized service.<\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">It&#8217;s ASIC-resistant almost by definition. Because the EVM language is Turing-complete, any kind of computation that can be done in a normal programming language can be encoded into EVM code. Therefore, an ASIC that can run all of EVM is by necessity an ASIC for generalized computation \u2013 in other words, a CPU. This also has a Primecoin-like social benefit: effort spent toward building EVM ASICs also havs the side benefit of building hardware to make the network faster.<\/p>\n<\/li>\n<li class=\"css-0\">\n<p class=\"chakra-text css-gi02ar\">The algorithm is relatively computationally quick to verify, although there is no \u201cnice\u201d verification formula that can be run inside EVM code.<\/p>\n<\/li>\n<\/ol>\n<p class=\"chakra-text css-gi02ar\">However, there are still several major challenges that remain. First, it is not entirely clear that the system of picking random transactions actually ends up requiring the miner to use the entire blockchain. Ideally, the blockchain accesses would be random; in such a setup, a miner with half the blockchain would succeed only on about 1 in 216 nonces. In reality, however, 95% of all transactions will likely use 5% of the blockchain; in such a system, a node with 5% of the memory will only take a slowdown penalty of about 2x.<\/p>\n<p class=\"chakra-text css-gi02ar\">Second, and more importantly, however, it is difficult to say how much an EVM miner could be optimized. The algorithm definition above asks the miner to \u201crandomly make minor modifications\u201d to the contract. This part is crucial. The reason is this: most transactions have results that are independent of each other; the transactions might be of the form \u201cA sends to B\u201d, \u201cC sends to D\u201d, \u201cE sends to contract F that affects G and H\u201d, etc, with no overlap. Hence, without random modification there would be little need for an EVM miner to actually do much computation; the computation would happen once, and then the miner would just precompute and store the deltas and apply them immediately. The random modifications mean that the miner has to actually make new EVM computations each time the algorithm is run. However, this solution is itself imperfect in two ways. First of all, random modifications can potentially easily result in what would otherwise be very complex and intricate calculations simply ending early, or at least calulations for which the optimizations are very different from the optimizations applied to standard transactions. Second, mining algorithms may deliberately skip complex contracts in favor of simple or easily optimizable ones. There are heuristic tricks for battling both problems, but it is entirely unclear exactly what those heuristics would be.<\/p>\n<p class=\"chakra-text css-gi02ar\">Another interesting point in favor of this kind of mining is that even if optimized hardware miners emerge, the community has the ability to work together to essentially change the mining algorithm by \u201cpoisoning\u201d the transaction pool. Engineers can analyze existing ASICs, determine what their optimizations are, and dump transactions into the blockchain that such optimizations simply do not work with. If 5% of all transactions are effectively poisoned, then ASICs cannot possibly have a speedup of more than 20x. The nice thing is that there is a reason why people would pay the transaction fees to do this: each individual ASIC company has the incentive to poison the well for its competitors.<\/p>\n<p class=\"chakra-text css-gi02ar\">These are all challenges that we will be working on heavily in the next few months.<\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2014\/03\/20\/the-question-of-mining\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are a lot of interesting changes to the Ethereum protocol that are in the works, which will hopefully improve the power of the system, add further features such as light-client friendliness and a higher degree of extensibility, and make Ethereum contracts easier to code. Theoretically, none of these changes are necessary; the Ethereum protocol [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":18498,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[24],"tags":[],"kronos_expire_date":[],"class_list":["post-19166","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ethereum"],"_links":{"self":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/19166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/comments?post=19166"}],"version-history":[{"count":0,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/19166\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media\/18498"}],"wp:attachment":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media?parent=19166"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/categories?post=19166"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/tags?post=19166"},{"taxonomy":"kronos_expire_date","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/kronos_expire_date?post=19166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}