{"id":10624,"date":"2025-04-03T22:32:25","date_gmt":"2025-04-03T20:32:25","guid":{"rendered":"https:\/\/wsj-crypto.com\/?p=10624"},"modified":"2025-04-03T22:32:25","modified_gmt":"2025-04-03T20:32:25","slug":"achieving-a-12-second-block-interval","status":"publish","type":"post","link":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/","title":{"rendered":"Achieving a 12-Second Block Interval"},"content":{"rendered":"<p> &#8220;`html<br \/>\n<\/p>\n<div id=\"\">\n<p class=\"chakra-text css-gi02ar\">One of the frustrations of the blockchain as a decentralized system is the considerable duration of delay before a transaction gets completed. A single confirmation in the Bitcoin network takes an average of ten minutes, but in practice, because of statistical phenomena, when one initiates a transaction, a confirmation can only be anticipated within ten minutes approximately 63.2% of the time; 36.8% of the time it will require more than ten minutes, 13.5% of the time longer than twenty minutes, and 0.25% of the time longer than an hour. Due to intricate technical aspects related to <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/bitcointalk.org\/index.php?topic=3441.msg48384#msg48384\">Finney attacks<!-- --><\/a> and <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/bitcoil.co.il\/Doublespend.pdf\">sub-50% double spends<!-- --><\/a>, for numerous applications, even a single confirmation is inadequate; gambling platforms and exchanges frequently have to wait for three to six blocks to emerge, often exceeding an hour, before a deposit gets verified. In the period before a transaction is included in a block, security is nearly negligible; although many miners decline to propagate transactions that conflict with previously sent ones, there is no financial incentive for them to do so (in fact, quite the opposite), and some do not, making it possible to reverse an unconfirmed transaction with about a 10-20% success rate.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In numerous situations, this is acceptable; if you purchase a laptop online and manage to retract the funds five minutes later, the seller can simply cancel the shipment; online subscription services function in a similar manner. However, in the scenario of certain face-to-face transactions and virtual goods purchases, it is quite inconvenient. Specifically, in the context of Ethereum, the inconvenience is heightened; we aim to be not merely a currency, but a comprehensive platform for decentralized applications, and especially regarding non-financial applications, users typically expect a significantly quicker response time. Therefore, for our aims, having a blockchain that operates faster than 10 minutes is crucial. The inquiry then is, how low can we go, and if we decrease it too much, does that cause any destabilization?<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"overview-of-mining\">Summary of Mining<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To begin with, let\u2019s provide a brief overview of how mining operates. The Bitcoin blockchain consists of a series of blocks, with each one linking to (i.e., containing the hash of) its predecessor. Each miner in the network endeavors to generate blocks by first gathering the required data (previous block, transactions, time, etc.), constructing the block header, and then repeatedly adjusting a value known as the nonce until the nonce fulfills a condition referred to as &#8220;proof of work&#8221; (or &#8220;mining algorithm&#8221;). This algorithm is stochastic and generally fails; on average, in Bitcoin, the network must collectively make approximately 10<!-- --><sup>20<!-- --><\/sup> attempts before discovering a valid block. Once a random miner discovers a block that is valid (i.e., it references a legitimate prior block, its transactions and metadata are accurate, and its nonce meets the PoW condition), then that block is disseminated across the network and the process restarts. As compensation, the miner of that block receives a certain quantity of coins (25 BTC in Bitcoin) as a reward.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The &#8220;score&#8221; of a block is defined in a simplified manner as the total number of blocks in the chain leading back to the genesis (formally, it\u2019s the cumulative mining difficulty, meaning that if the difficulty of the proof of work condition escalates, blocks generated under this new more rigorous condition count for more). The block with the highest score is regarded as &#8220;truth.&#8221; A subtle, yet significant, detail is that in this model, the motivation for miners is consistently to mine on the block with the highest score, because the block with the highest score is what users ultimately prioritize, and there are never any considerations that make a lower-score block preferable. If we alter the scoring model, then if we&#8217;re not vigilant this might change; but more on this later.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">We can represent this kind of network as follows:<!-- --><\/p>\n<p><!-- --><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">However, complications emerge when we consider that network propagation is not instantaneous. According to a <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/www.tik.ee.ethz.ch\/file\/49318d3f56c1d525aabf7fda78b23fc0\/P2P2013_041.pdf\">2013 study<!-- --><\/a> by Decker and Wattenhofer in Zurich, once a miner generates a block, on average it takes 6.5 seconds for the block to reach 50% of nodes, 40 seconds for it to reach 95% of nodes, with a mean delay of 12.6 seconds. Consequently, a more precise model might be:<!-- --><\/p>\n<p><!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/07\/minernet2.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This gives rise to the subsequent issue: if, at time T = 500, miner M mines a block <!-- --><span class=\"chakra-text css-ons8vw\">B&#8217;<\/span> on top of <!-- --><span class=\"chakra-text css-ons8vw\">B<\/span> (where &#8220;on top of&#8221; indicates &#8220;pointing to as the previous block in the chain&#8221;), then miner N may not learn about the block until time T = 510, thus until T = 510 miner N will continue mining on B. If miner B produces a block in that timeframe, the rest of the network will reject miner B&#8217;s block because they have already observed miner M&#8217;s block which has an equivalent score:<!-- --><\/p>\n<p><!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/07\/minernet3.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"stales-efficiency-and-centralization\">Stales, Efficiency, and Centralization<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">So what are the issues with this? In reality, there are two concerns. Firstly, it undermines the absolute strength of the network in defense against attacks. At a block time of 600 seconds, as in Bitcoin, this isn&#8217;t a problem; 12 seconds is quite a brief period, and Decker and Wattenhofer estimate the total stale rate to be around 1.7%. Therefore, an attacker does not necessarily require 50.001% of the network to execute a 51% assault; if the attacker is a single node, they would need only <!-- --><span class=\"chakra-text css-ons8vw\">0.983 \/ 1 + 0.983<\/span> = 49.5%. We can evaluate this through a mathematical expression: if transit time is 12 seconds, then after a block is produced, the network will generate stales for 12 seconds prior to the block propagating, so we can presume an average of <!-- --><span class=\"chakra-text css-ons8vw\">12 \/ 600 = 0.02<\/span> stales per valid block or a stale rate of 1.97%. However, with 60 seconds per block, we encounter <!-- --><span class=\"chakra-text css-ons8vw\">12 \/ 60 = 0.2<\/span> stales per valid block or a stale rate of 16.67%. At 12 seconds per block, we discover <!-- --><span class=\"chakra-text css-ons8vw\">12 \/ 12 = 1<\/span> stale per valid block, indicating a stale rate of 50%. Hence, we can observe the network becoming substantially weaker against attacks.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Nevertheless, there is also an additional unfavorable effect of stale rates. One of the more urgent challenges within the mining ecosystem is the <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/06\/19\/mining\">issue of mining centralization<!-- --><\/a>. Presently, the majority of the Bitcoin network is divided into a small number of &#8220;mining pools&#8221;, centralized entities where miners collaborate resources to receive a more even reward, and the largest of these pools has been fluctuating between 33% and 51% of the network hash power for several months. In the future, even individual miners<br \/>\n&#8220;`may demonstrate hazardous; at present, 25% of all new bitcoin mining apparatus are emerging from a singular plant in Shenzhen, and if the unfavorable interpretation of <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/2014\/06\/19\/mining\">my economic evaluation<!-- --><\/a> is accurate, it might ultimately transform into 25% of all Bitcoin miners being confined to one factory in Shenzhen.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">How do stale rates influence centralization? The response is quite astute. Imagine having a network of 7000 pools each with 0.01% hashpower, alongside a single pool holding 30% hashpower. 70% of the time, the last block is generated by one of these miners, which the network acknowledges in 12 seconds, reflecting some inefficiency but ultimately maintaining fairness. However, 30% of the time, it is the mining pool with 30% hashpower that creates the last block; consequently, it &#8220;receives&#8221; the notification of the block immediately, resulting in a 0% stale rate, while all others continue to sustain their complete stale rate.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Due to the simplicity of our model, we can still engage in some calculations using an approximation in a closed form. With a transit time of 12 seconds and a block duration of 60 seconds, we ascertain a stale rate of 16.67% as elucidated earlier. The mining pool holding 30% will have a 0% stale rate for 30% of the time, resulting in an efficiency multiplier of <!-- --><span class=\"chakra-text css-ons8vw\">0.833 * 0.7 + 1 * 0.3 = 0.8831<\/span>, while the rest will have an efficiency multiplier of 0.833; this translates to a 5.7% efficiency improvement, which is rather economically notable, especially for mining pools where the fee disparity is merely a fraction of a percent in either direction. Therefore, to achieve a 60-second block time, a more effective strategy is essential.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"ghost\">GHOST<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The inception of a more effective method arises from a document titled &#8220;<!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/eprint.iacr.org\/2013\/881.pdf\">Fast Money Grows on Trees, not Chains<!-- --><\/a>&#8220;, published by Aviv Zohar and Yonatan Sompolinsky in December 2013. The concept posits that although stale blocks are not presently considered part of the total weight of the chain, they could be; hence they advocate for a blockchain scoring framework that incorporates stale blocks even if they are not part of the main chain. Consequently, even if the primary chain is only 50% effective or even 5% efficient, an assailant attempting a 51% attack would still need to surpass the weight of the complete network. This, in theory, addresses the efficiency dilemma down to 1-second block times. However, a challenge arises: the protocol, as delineated, only factors stales into the blockchain scoring; it does not allocate stales a block reward. Thus, it does nothing to rectify the centralization issue; indeed, with a 1-second block time, the most probable outcome would entail the 30% mining pool simply generating <!-- --><em class=\"chakra-text css-0\">every<!-- --><\/em> block. Naturally, the 30% mining pool producing every block <!-- --><em class=\"chakra-text css-0\">on the main chain<!-- --><\/em> is acceptable, but only if the blocks off chain are also equitably compensated, ensuring the 30% mining pool does not accumulate significantly more than 30% of the revenue. However, for that, rewarding stales will be necessary.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Currently, we can&#8217;t reward all stales perpetually; that would result in a bookkeeping catastrophe (the algorithm would need to meticulously verify that a newly included uncle had never been incorporated previously, thus necessitating an &#8220;uncle tree&#8221; alongside the transaction tree and state tree in each block) and, more critically, it would render double-spending costless. Therefore, let\u2019s formulate our initial protocol, single-level GHOST, which executes the minimum requirement and accounts for uncles only up to one level (this is the methodology employed in Ethereum to date):<!-- --><\/p>\n<p><!-- --><\/p>\n<ol role=\"list\" class=\"css-13a5a39\">\n<li class=\"css-cvpopp\">Each block must reference a parent (i.e., the previous block) and may also include zero or more uncles. An &#8220;uncle&#8221; is defined as a block with a valid header (the block itself need not be legitimate, as we primarily care about its proof-of-work) which is a descendant of the grandparent block, but not the parent (i.e., the traditional lineage definition of &#8220;uncle&#8221; that you learned at age four).<!-- --><\/li>\n<li class=\"css-cvpopp\">A block on the main chain receives a reward of 1. When a block encompasses an uncle, the uncle earns a reward of 7\/8, and the block containing the uncle receives a reward of 1\/16.<!-- --><\/li>\n<li class=\"css-cvpopp\">The score of a block is nil for the genesis block; otherwise, it is the score of the parent added to the difficulty of the block multiplied by one plus the number of included uncles.<!-- --><\/li>\n<\/ol>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Thus, in the illustrated blockchain example provided earlier, we will have something resembling this:<!-- --><\/p>\n<p><!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/07\/minernet4.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Here, the calculations become more intricate, prompting us to make some intuitive assertions and subsequently take a more relaxed approach by simulating the entire scenario. The fundamental intuitive assertion is this: in the basic mining protocol, for the reasons previously explained, the stale rate is approximately <!-- --><span class=\"chakra-text css-ons8vw\">t\/(T+t)<\/span> where <!-- --><span class=\"chakra-text css-ons8vw\">t<\/span> signifies the transit time and <!-- --><span class=\"chakra-text css-ons8vw\">T<\/span> represents the block interval, as <!-- --><span class=\"chakra-text css-ons8vw\">t\/T<\/span> of the time miners are mining on outdated information. With single-level GHOST, the failure threshold shifts from mining one stale to mining two stales in succession (as uncles can be included but relatives with a divergence of two or higher cannot), thus the stale rate should be <!-- --><span class=\"chakra-text css-ons8vw\">(t\/T)^2<\/span>, approximately 2.7% instead of 16.7%. Now, let us utilize a <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/ethereum\/economic-modeling\/blob\/master\/ghost.py\">Python script<!-- --><\/a> to verify that hypothesis:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span class=\"token\" style=\"color:rgb(99, 119, 119);font-style:italic\">### PRINTING RESULTS ###<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1.0<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10.2268527074<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25.3904084273<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5<!-- --><\/span><span> <!-- -->```html\n<\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">4.93500893242<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">15<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">14.5675475882<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>Total blocks generated:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">16687<!-- --><\/span><span>\n<!-- --><\/span><span>Total blocks <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">in<!-- --><\/span><span> chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">16350<!-- --><\/span><span>\n<!-- --><\/span><span>Effectiveness:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.979804638341<!-- --><\/span><span>\n<!-- --><\/span><span>Average uncles:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.1584242596<!-- --><\/span><span>\n<!-- --><\/span><span>Chain length:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">14114<!-- --><\/span><span>\n<!-- --><\/span><span>Block interval:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">70.8516366728<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The findings can be interpreted as such. The top five figures serve as a centralization metric; in this instance, it indicates that a miner with 25% hash power receives 25.39 times the reward of a miner with 1% hash power. The effectiveness is 0.9798, implying that 2.02% of all blocks are completely excluded, resulting in an average of 0.158 uncles per block; consequently, our assumptions regarding a ~16% stale ratio without uncle consideration and 2.7% with uncle consideration are nearly verified. It&#8217;s noteworthy that the actual block interval stands at 70.85 seconds because, despite a valid proof of work solution existing every 60 seconds, 2% of those are lost while 14% enter the subsequent block as an uncle instead of the primary chain.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">At this point, an issue arises. The initial authors of the GHOST document omitted uncle\/stale rewards, and although I think deviating from their guidance is warranted for the reasons outlined previously, they chose to forgo this for a specific rationale: it complicates the economic analysis. Specifically, when only the primary chain receives rewards, there exists a clear justification for consistently mining on the head rather than a previous block, primarily due to the fact that the sole differentiating factor between any two blocks is their score, with higher scores evidently being preferable to lower ones. However, once uncle rewards are introduced, additional factors complicate the scenario.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To illustrate, let\u2019s consider when the main chain has its latest block <!-- --><span class=\"chakra-text css-ons8vw\">M<\/span> (score 502) with parent <!-- --><span class=\"chakra-text css-ons8vw\">L<\/span> (score 501) and further parent <!-- --><span class=\"chakra-text css-ons8vw\">K<\/span> (score 500). Assume also that <!-- --><span class=\"chakra-text css-ons8vw\">K<\/span> has two stale offsprings, both of which were created after <!-- --><span class=\"chakra-text css-ons8vw\">M<\/span>, thus there was no possibility for them to be included in <!-- --><span class=\"chakra-text css-ons8vw\">M<\/span> as uncles. By mining on <!-- --><span class=\"chakra-text css-ons8vw\">M<\/span>, you would generate a block with a score of <!-- --><span class=\"chakra-text css-ons8vw\">502 + 1 = 503<\/span> and a reward of 1. Conversely, by mining on <!-- --><span class=\"chakra-text css-ons8vw\">L<\/span>, you could incorporate <!-- --><span class=\"chakra-text css-ons8vw\">K<\/span>&#8216;s children, yielding a block with a score of <!-- --><span class=\"chakra-text css-ons8vw\">501 + 1 + 2 = 504<\/span> and a reward of <!-- --><span class=\"chakra-text css-ons8vw\">1 + 0.0625 * 2 = 1.125<\/span>.<!-- --><\/p>\n<p><!-- --><img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/2014\/07\/minernet51.png\" class=\"chakra-image css-hw6q2r\"\/><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Furthermore, there exists a <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"http:\/\/bitcoinmagazine.com\/7953\/selfish-mining-a-25-attack-against-the-bitcoin-network\/\">selfish-mining<!-- --><\/a>-like assault against single-level GHOST. The premise is as such: if a mining pool possessing 25% hash power were to exclude any other blocks, in the short run, it would be detrimental to itself as it would miss out on the 1\/16x nephew reward, but it would inflict greater harm upon others. Since mining is essentially a zero-sum endeavor over the long haul, as the block interval averages to maintain stable issuance, this suggests that the exclusion of uncles might, in fact, represent a dominant strategy, thus centralization worries are not entirely alleviated (specifically, they still persist 30% of the time). Moreover, if we pursue increasing the speed further, targeting a 12-second block time, the single-level model simply does not suffice. Here&#8217;s a result incorporating those metrics:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span class=\"token\" style=\"color:rgb(99, 119, 119);font-style:italic\">### DISPLAYING RESULTS ###<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1.0<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10.4567533177<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">15<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">16.3077390517<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5.0859101624<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">29.6409432377<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>Total blocks generated:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">83315<!-- --><\/span><span>\n<!-- --><\/span><span>Total blocks <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">in<!-- --><\/span><span> chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">66866<!-- --><\/span><span>\n<!-- --><\/span><span>Effectiveness:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.802568565084<!-- --><\/span><span>\n<!-- --><\/span><span>Average uncles:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.491246459555<!-- --><\/span><span>\n<!-- --><\/span><span>Chain length:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">44839<!-- --><\/span><span>\n<!-- --><\/span><span>Block interval:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">22.3020138719<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">18% centralization<br \/>\n&#8220;`gain. Hence, we require a different approach.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"a-new-strategy\">A Fresh Approach<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The initial concept I experimented with around a week prior was mandating that every block includes five uncles; this would, in a way, further decentralize the creation of each block, guaranteeing that no miner held a distinct edge in generating the next block. Given that the calculations for this are quite frustratingly complex (well, if you devote considerable time to it, perhaps you could devise something utilizing nested Poisson processes and combinatorial generating functions, but I&#8217;d prefer not to), here\u2019s <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/ethereum\/economic-modeling\/blob\/master\/multi_uncle_ghost.py\">the simulation script<!-- --><\/a>. Take note that there are in fact two methods to implement the algorithm: require the parent to be the lowest-hash child of the grandparent, or mandate that the parent be the highest-score child of the grandparent. The initial method (to implement this independently, adjust line 56 to <!-- --><span class=\"chakra-text css-ons8vw\">if newblock[&#8220;id&#8221;] &gt; self.blocks[self.head][&#8220;id&#8221;]:<\/span>, we obtain this:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span class=\"token\" style=\"color:rgb(99, 119, 119);font-style:italic\">### PRINTING RESULTS ###<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1.0<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">9.59485744106<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">24.366668248<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">4.82484937616<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">15<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">14.0160823568<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>Total blocks produced:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">8033<!-- --><\/span><span>\n<!-- --><\/span><span>Total blocks <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">in<!-- --><\/span><span> chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">2312<!-- --><\/span><span>\n<!-- --><\/span><span>Efficiency:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.287812772314<!-- --><\/span><span>\n<!-- --><\/span><span>Average uncles:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">385.333333333<!-- --><\/span><span>\n<!-- --><\/span><span>Length of chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">6<!-- --><\/span><span>\n<!-- --><\/span><span>Block time:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">13333.3333333<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Whoops! Let\u2019s attempt the highest-score model instead:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span class=\"token\" style=\"color:rgb(99, 119, 119);font-style:italic\">### PRINTING RESULTS ###<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1.0<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">9.76531271652<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">15<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">14.1038046954<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5.00654546181<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">23.9234131003<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>Total blocks produced:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">7989<!-- --><\/span><span>\n<!-- --><\/span><span>Total blocks <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">in<!-- --><\/span><span> chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">6543<!-- --><\/span><span>\n<!-- --><\/span><span>Efficiency:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.819001126549<!-- --><\/span><span>\n<!-- --><\/span><span>Average uncles:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">9.06232686981<!-- --><\/span><span>\n<!-- --><\/span><span>Length of chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">722<!-- --><\/span><span>\n<!-- --><\/span><span>Block time:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">110.8033241<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Here we observe a surprisingly counterintuitive outcome: the mining pool with 25% hash power yields merely 24 times the reward in comparison to a 1% hash power pool. Economic sublinearity remains a cryptoeconomic elusive goal, however, it also behaves somewhat like a perpetual motion machine; unless one depends on a specific resource that individuals possess a finite amount of (for instance, domestic heating demand, idle CPU capacity), there lacks a method to circumvent the reality that even if you devise some innovative sublinear arrangement, an entity with 25 times the input power can at minimum masquerade as 25 distinct entities and thereby claim a 1x reward. Consequently, we present clear (alright, fine, with 99 point something percent confidence) empirical evidence that the 25x miners are functioning suboptimally, indicating that the best approach in this context is not to consistently mine the block.with the utmost score.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The rationale here is the following: if you mine on a block that possesses the utmost score, then there exists a possibility that another entity might unearth a new uncle from one level back, subsequently mining a block atop that, thereby generating a new block at the same tier as your block but with a marginally superior score, leaving you in a disadvantaged position. However, if you attempt to be one of those uncles, the block with the highest score at the subsequent level will undoubtedly seek to include you, thus granting you the uncle reward. The emergence of one unorthodox strategy strongly implies the presence of additional, more exploitative, unconventional strategies, hence we will not pursue this path. Nevertheless, I opted to incorporate it into the blog entry to illustrate an instance of the inherent dangers.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">So what is the optimal path ahead? It turns out that it is quite straightforward. Revert to single level GHOST, but permit uncles to originate from as far back as 5 blocks. Consequently, the child of a parent of a parent (hereinafter referred to as the -2,+1-ancestor) is a valid uncle, as is a -3,+1-ancestor, a -4,+1-ancestor, and a -5,+1-ancestor, while a -6,+1-ancestor or a -4,+2-ancestor (for example, <!-- --><span class=\"chakra-text css-ons8vw\">c(c(P(P(P(P(P(head))))))<\/span> where no simplification is feasible) is not. Additionally, we enhance the uncle reward to 15\/16 and reduce the nephew reward to 1\/32. First, let&#8217;s ensure that it operates correctly under conventional strategies. In the GHOST simulation script, set <!-- --><span class=\"chakra-text css-ons8vw\">UNCLE_DEPTH<\/span> to 4, <!-- --><span class=\"chakra-text css-ons8vw\">POW_SOLUTION_TIME<\/span> to 12, <!-- --><span class=\"chakra-text css-ons8vw\">TRANSIT_TIME<\/span> to 12, <!-- --><span class=\"chakra-text css-ons8vw\">UNCLE_REWARD_COEFF<\/span> to 15\/16 and <!-- --><span class=\"chakra-text css-ons8vw\">NEPHEW_REWARD_COEFF<\/span> to 1\/32 and observe the results:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span class=\"token\" style=\"color:rgb(99, 119, 119);font-style:italic\">### PRINTING RESULTS ###<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">1.0<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">10.1329810896<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">25.6107014231<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">5<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">4.96386947539<!-- --><\/span><span>\n<!-- --><\/span><span\/><span class=\"token\" style=\"color:rgb(247, 140, 108)\">15<!-- --><\/span><span> <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">15.0251826297<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>Total blocks created:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">83426<!-- --><\/span><span>\n<!-- --><\/span><span>Total blocks <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">in<!-- --><\/span><span> chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">77306<!-- --><\/span><span>\n<!-- --><\/span><span>Efficiency:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.926641574569<!-- --><\/span><span>\n<!-- --><\/span><span>Average uncles:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">0.693116362601<!-- --><\/span><span>\n<!-- --><\/span><span>Length of chain:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">45659<!-- --><\/span><span>\n<!-- --><\/span><span>Block duration:  <!-- --><\/span><span class=\"token\" style=\"color:rgb(247, 140, 108)\">21.901487111<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Entirely reasonable all around, although it should be noted that the actual block duration is 21 seconds due to inefficiency and uncles rather than the target of 12 seconds we aimed for. Now, let&#8217;s perform a few more experiments for enlightenment and amusement:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">UNCLE_REWARD_COEFF = 0.998<\/span>, <!-- --><span class=\"chakra-text css-ons8vw\">NEPHEW_REWARD_COEFF = 0.001<\/span> resulted in the 25% mining pool attaining approximately a 25.3x return, while establishing <!-- --><span class=\"chakra-text css-ons8vw\">UNCLE_REWARD_COEFF = 7\/8<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">NEPHEW_REWARD_COEFF = 1\/16<\/span> yields the 25% mining pool a 26.26% return. Clearly, setting the <!-- --><span class=\"chakra-text css-ons8vw\">UNCLE_REWARD_COEFF<\/span> to zero would entirely eliminate the benefit, thus it is beneficial to maintain it as close to one as feasible, but if it approaches one too closely, there will be no motivation to include uncles. <!-- --><span class=\"chakra-text css-ons8vw\">UNCLE_REWARD_COEFF = 15\/16<\/span> appears to be a reasonable compromise, allowing the 25% miner a 2.5% centralization advantage.<!-- --><\/li>\n<li class=\"css-cvpopp\">Permitting uncles to reach back 50 blocks surprisingly results in minimal substantive efficiency improvements. The rationale is that the primary weakness of -5,+1 GHOST is its +1, rather than the -5; thus, stale <!-- --><span class=\"chakra-text css-ons8vw\">c(c(P(P(..P(head)..))))<\/span> blocks pose the issue. In terms of centralization, with 0.998\/0.001 rewards, this reduces the 25% mining pool&#8217;s reward essentially to 25.0x. With rewards of 15\/16 and 1\/32, there is no significant advantage compared to the -4,+1 approach.<!-- --><\/li>\n<li class=\"css-cvpopp\">Allowing -4,+3 descendants enhances efficiency to effectively 100%, while bringing centralization nearly to zero, assuming 0.998\/0.001 rewards, and provides negligible advantage when assuming 15\/16 and 1\/32 rewards.<!-- --><\/li>\n<li class=\"css-cvpopp\">If we decrease the target block time to 3 seconds, efficiency falls to 66%, and the 25% miner receives a 31.5x return (that is a 26% centralization increase). If this is coupled with a -50,+1 condition, the effect remains negligible (25% -&gt; 31.3x), but applying a -4,+3 rule increases efficiency to 83%, and the 25% miner achieves only a 27.5x return (the way to implement this in the simulation script is by adding after line 65 <!-- --><span class=\"chakra-text css-ons8vw\">for c2 in self.children.get(c, {}): u[c2] = True<\/span> for a -n,+2 condition, and then similarly nest down one more level for -n,+3). Additionally, the actual block time in all three of these scenarios hovers around 10 seconds.<!-- --><\/li>\n<li class=\"css-cvpopp\">If we lower the target block time to 6 seconds, we observe an actual block duration of 15 seconds, with efficiency recorded at 82%, and the 25% miner achieving 26.8x even without any enhancements. <!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Now, let\u2019s examine the other two dangers associated with limited GHOST that we previously mentioned: the non-head dominant strategy and the selfish-mining assault. It is important to note that there are indeed two non-head strategies: attempting to acquire more uncles,and strive to act as an uncle. Attempting to incorporate more uncles proved advantageous in the -2,+1 scenario, and endeavoring to act as an uncle was beneficial in the circumstance of my unsuccessful mandatory-5-uncles concept. Trying to be an uncle isn&#8217;t particularly beneficial when not many uncles are necessary, since the reason that alternative approach worked in the mandatory-5-uncle situation is due to a new block being ineffective for continued mining without siblings. Therefore, the only potentially troublesome strategy is attempting to add uncles. In the single-block instance, it was an issue, but here it isn\u2019t, because the majority of uncles that can be added after <!-- --><span class=\"chakra-text css-ons8vw\">n<\/span> blocks can also be appended after <!-- --><span class=\"chakra-text css-ons8vw\">n+1<\/span> blocks, so the practical impact of this will be minimal.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The selfish-mining assault also ceases to function for a comparable rationale. If you neglect to include uncles, the individual following you will. There are four opportunities for an uncle to be accepted, thus not including uncles turns into a 4-player prisoner&#8217;s dilemma among unidentified participants \u2013 a game that is fated to conclude unfavorably for all involved (except, of course, the uncles themselves). Additionally, there is one final issue with this strategy: we observed that recompensing all uncles renders 51% attacks devoid of cost, so are they devoid of cost here? Beyond a single block, the response is no; while the first block of a fork attempt will be accepted as an uncle and obtain its 15\/16x reward, the second, third, and all subsequent ones will not, thus beginning from two confirmations, attacks still impose nearly the same costs on miners as they did previously.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"twelve-seconds-really\">Twelve seconds, honestly?<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The most unexpected revelation regarding Decker and Wattenhofer&#8217;s findings is the astonishing amount of time it takes for blocks to propagate \u2013 an incredibly sluggish 12 seconds. In Decker and Wattenhofer&#8217;s evaluation, the 12-second interval is primarily due to the necessity to download and verify the blocks themselves; in other words, the procedure that Bitcoin clients adhere to is:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>def on_receive_block<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>    <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> not verify_pow_and_header<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(255, 203, 139)\">return<!-- --><\/span><span>\n<!-- --><\/span><span>    <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> not verify_transactions<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(255, 203, 139)\">return<!-- --><\/span><span>\n<!-- --><\/span><span>    accept<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><span>    start_broadcasting<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Nevertheless, Decker and Wattenhofer did recommend a more effective strategy that resembles the following:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>def on_receive_header<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>h<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>    <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> not verify_pow_and_header<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>h<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(255, 203, 139)\">return<!-- --><\/span><span>\n<!-- --><\/span><span>    ask_for_full_block<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>h, callback<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span>\n<!-- --><span>    start_broadcasting<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>h<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><span>    def callback<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>        start_broadcasting<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><span>        <!-- --><\/span><span class=\"token\" style=\"color:rgb(127, 219, 202)\">if<!-- --><\/span><span> not verify_transactions<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>:\n<!-- --><\/span><span>            stop_broadcasting<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><span>            <!-- --><\/span><span class=\"token\" style=\"color:rgb(255, 203, 139)\">return<!-- --><\/span><span>\n<!-- --><\/span><span>        accept<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">(<!-- --><\/span><span>b<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">)<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This permits all procedures to occur concurrently; headers can be broadcast initially, followed by blocks, and the verifications do not need to be executed sequentially. Although Decker and Wattenhofer do not offer their personal assessment, intuitively it appears that this could enhance propagation speed by 25-50%. The algorithm remains unexploitable because to generate an invalid block that clears the first verification, a miner would still need to create a valid proof of work, so there is nothing a miner could profit from. Another observation made in the paper is that the transmission time, past a certain threshold, scales with block size; hence, reducing block size by 50% will likely diminish transmission time to around 25-40%; the portion of transmission time that doesn&#8217;t scale is roughly 2 seconds. Thus, a target block time of 3 seconds (and an actual block time of 5 seconds) may indeed be quite feasible. As always, we will proceed cautiously at the outset and not push boundaries too far, but achieving a block time of 12 seconds does seem highly attainable.<!-- --><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2014\/07\/11\/toward-a-12-second-block-time\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;`html One of the frustrations of the blockchain as a decentralized system is the considerable duration of delay before a transaction gets completed. A single confirmation in the Bitcoin network takes an average of ten minutes, but in practice, because of statistical phenomena, when one initiates a transaction, a confirmation can only be anticipated within<\/p>\n","protected":false},"author":3,"featured_media":8282,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[1974],"class_list":{"0":"post-10624","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ethereum","8":"tag-return-a-list-of-comma-separated-tags-from-this-title-toward-a-12-second-block-time"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Achieving a 12-Second Block Interval - WSJ-Crypto<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Achieving a 12-Second Block Interval - WSJ-Crypto\" \/>\n<meta property=\"og:description\" content=\"&#8220;`html One of the frustrations of the blockchain as a decentralized system is the considerable duration of delay before a transaction gets completed. A single confirmation in the Bitcoin network takes an average of ten minutes, but in practice, because of statistical phenomena, when one initiates a transaction, a confirmation can only be anticipated within\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/\" \/>\n<meta property=\"og:site_name\" content=\"WSJ-Crypto\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-03T20:32:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2100\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"wsjcrypto\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"wsjcrypto\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/\",\"url\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/\",\"name\":\"Achieving a 12-Second Block Interval - WSJ-Crypto\",\"isPartOf\":{\"@id\":\"https:\/\/wsj-crypto.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\",\"datePublished\":\"2025-04-03T20:32:25+00:00\",\"author\":{\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#primaryimage\",\"url\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\",\"contentUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg\",\"width\":2100,\"height\":900},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wsj-crypto.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Achieving a 12-Second Block Interval\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wsj-crypto.com\/#website\",\"url\":\"https:\/\/wsj-crypto.com\/\",\"name\":\"WSJ-Crypto\",\"description\":\"Just Another Crypto News Website\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wsj-crypto.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\",\"name\":\"wsjcrypto\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g\",\"caption\":\"wsjcrypto\"},\"url\":\"https:\/\/wsj-crypto.com\/index.php\/author\/wsjcrypto\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Achieving a 12-Second Block Interval - WSJ-Crypto","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/","og_locale":"it_IT","og_type":"article","og_title":"Achieving a 12-Second Block Interval - WSJ-Crypto","og_description":"&#8220;`html One of the frustrations of the blockchain as a decentralized system is the considerable duration of delay before a transaction gets completed. A single confirmation in the Bitcoin network takes an average of ten minutes, but in practice, because of statistical phenomena, when one initiates a transaction, a confirmation can only be anticipated within","og_url":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/","og_site_name":"WSJ-Crypto","article_published_time":"2025-04-03T20:32:25+00:00","og_image":[{"width":2100,"height":900,"url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","type":"image\/jpeg"}],"author":"wsjcrypto","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"wsjcrypto","Tempo di lettura stimato":"20 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/","url":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/","name":"Achieving a 12-Second Block Interval - WSJ-Crypto","isPartOf":{"@id":"https:\/\/wsj-crypto.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#primaryimage"},"image":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#primaryimage"},"thumbnailUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","datePublished":"2025-04-03T20:32:25+00:00","author":{"@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7"},"breadcrumb":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#primaryimage","url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","contentUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/02\/eth-org.jpeg","width":2100,"height":900},{"@type":"BreadcrumbList","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/04\/03\/achieving-a-12-second-block-interval\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wsj-crypto.com\/"},{"@type":"ListItem","position":2,"name":"Achieving a 12-Second Block Interval"}]},{"@type":"WebSite","@id":"https:\/\/wsj-crypto.com\/#website","url":"https:\/\/wsj-crypto.com\/","name":"WSJ-Crypto","description":"Just Another Crypto News Website","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wsj-crypto.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7","name":"wsjcrypto","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g","caption":"wsjcrypto"},"url":"https:\/\/wsj-crypto.com\/index.php\/author\/wsjcrypto\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/10624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/comments?post=10624"}],"version-history":[{"count":2,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/10624\/revisions"}],"predecessor-version":[{"id":10630,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/10624\/revisions\/10630"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media\/8282"}],"wp:attachment":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media?parent=10624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/categories?post=10624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/tags?post=10624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}