{"id":18365,"date":"2026-03-17T00:25:06","date_gmt":"2026-03-17T00:25:06","guid":{"rendered":"https:\/\/cryptoted.net\/index.php\/2026\/03\/17\/validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat\/"},"modified":"2026-03-17T00:25:06","modified_gmt":"2026-03-17T00:25:06","slug":"validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat","status":"publish","type":"post","link":"https:\/\/cryptoted.net\/index.php\/2026\/03\/17\/validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat\/","title":{"rendered":"Validated, staking on eth2: #2 &#8211; Two ghosts in a trench coat"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"\">\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Special thanks to Sacha Yves Saint-Leger &amp; Danny Ryan for review.<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">In this installment, we&#8217;ll discuss the consensus mechanisms behind eth2. Eth2 has a novel approach to deciding which block is the head of the chain, along with which blocks <em class=\"chakra-text css-0\">are<\/em> and <em class=\"chakra-text css-0\">are not<\/em> a part of the chain.<\/p>\n<p class=\"chakra-text css-gi02ar\">By using a hybrid between the two mechanisms, eth2 aims to have a consensus which, in addition to being rapid and safe when the network is behaving normally, remains safe even when it\u2019s being attacked.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"a-trilemma\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"a trilemma permalink\" href=\"#a-trilemma\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>A Trilemma<\/h2>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/groups.csail.mit.edu\/tds\/papers\/Lynch\/jacm85.pdf\">FLP impossibility<\/a> is a core result in the field of distributed computation which states that in a distributed system it is not possible to <strong>simultaneously<\/strong> have safety, liveness, and full asynchrony unless some unreasonable assumptions can be made about your system.<\/p>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Safety<\/em> is the idea that decisions cannot be unmade whereas <em class=\"chakra-text css-0\">liveness<\/em> captures the notion that new things can be decided. A protocol is <em class=\"chakra-text css-0\">asynchronus<\/em> if there is no bound on how long a message may take to get delivered.<\/p>\n<p class=\"chakra-text css-gi02ar\"><img decoding=\"async\" alt=\"FLP Trilemma\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/upload_01a6db9261c1dbb5bcf81da3ae34ffee.png\" class=\"chakra-image css-hw6q2r\"\/><\/p>\n<p class=\"chakra-text css-gi02ar\">If nodes could communicate reliably, always follow the protocol honestly and never crash, then consensus would be easy, but that is not how the world works. When these assumption don&#8217;t hold, FLP Impossibility is the proof that at least one of: safety, liveness, or full asynchrony must be compromised.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"ghosts-and-their-opinions-on-forks\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"ghosts and their opinions on forks permalink\" href=\"#ghosts-and-their-opinions-on-forks\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>GHOSTs and their opinions on forks<\/h2>\n<p class=\"chakra-text css-gi02ar\">Eth2 uses <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eprint.iacr.org\/2013\/881.pdf\">Greedy Heaviest Observed Subtree (GHOST)<\/a> as its fork-choice rule. GHOST selects the head of the chain by choosing the fork which has the most votes (it does this by considering all of the votes for each fork block and their respective child blocks).<\/p>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/vitalik.ca\/general\/2018\/12\/05\/cbc_casper.html\">Put another way<\/a>, each time there is a fork, GHOST chooses the side where more of the latest messages support that block\u2019s subtree (i.e. more of the latest messages support either that block or one of its descendants). The algorithm does this until it reaches a block with no children.<\/p>\n<p class=\"chakra-text css-gi02ar\">GHOST has the benefit of reducing the efficacy of attacks during times of high network latency as well as minimizing the depth of chain reorgs when compared to the longest-chain rule. This is because while an attacker can keep building blocks efficiently on their own chain thereby making it the longest, GHOST would choose the other fork as there are more votes for it in total.<\/p>\n<p class=\"chakra-text css-gi02ar\">In particular, eth2 uses a variation of GHOST which has been adapted to a PoS context called Latest Message Driven GHOST (LMD-GHOST). The idea behind LMD-GHOST is that when calculating the head of the chain, one only considers the <em class=\"chakra-text css-0\">latest<\/em> vote made by each validator, and not any of the votes made in the past. This dramatically decreases the computation required when running GHOST, since the number of forks that need to be considered to execute the fork choice cannot be greater than the number of validators (<span class=\"math math-inline\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mi>O<\/mi><mo stretchy=\"false\">(<\/mo><mi>v<\/mi><mo stretchy=\"false\">)<\/mo><\/mrow><annotation encoding=\"application\/x-tex\">O(v)<\/annotation><\/semantics><\/math><\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1em;vertical-align:-0.25em\"\/><span class=\"mord mathnormal\" style=\"margin-right:0.02778em\">O<\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\" style=\"margin-right:0.03588em\">v<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span><\/span> in Big O notation).<\/p>\n<p class=\"chakra-text css-gi02ar\">Under the rules of GHOST, validators\/miners can always try to add a new block to the blockchain (liveness), and they can do this at any point in the chain\u2019s history (asynchronous). Since it is live and fully asynchronous, thanks to our friend FLP, we know it can\u2019t be safe.<\/p>\n<p class=\"chakra-text css-gi02ar\"><img decoding=\"async\" alt=\"GHOST Favours liveness over safety\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/upload_fb52a9383b8a39ae63929bb4b1c9436e.png\" class=\"chakra-image css-hw6q2r\"\/><\/p>\n<p class=\"chakra-text css-gi02ar\">The lack of safety presents itself in the form of reorgs where a chain can suddenly switch between forks of arbitrary depth. Obviously this is undesirable and eth1 deals with this by having users make assumptions about how long miners&#8217; blocks will take to be communicated with the rest of the network, this takes the form of waiting for <span class=\"math math-inline\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mi>x<\/mi><\/mrow><annotation encoding=\"application\/x-tex\">x<\/annotation><\/semantics><\/math><\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.4306em\"\/><span class=\"mord mathnormal\">x<\/span><\/span><\/span><\/span><\/span> confirmations. Eth2, by contrast, makes no such assumptions.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"the-friendly-finality-gadget\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"the friendly finality gadget permalink\" href=\"#the-friendly-finality-gadget\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>The friendly finality gadget<\/h3>\n<p class=\"chakra-text css-gi02ar\">A blockchain without any notion of safety is useless because no decisions could be reached and users could not agree on the state of the chain. Enter <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/arxiv.org\/pdf\/1710.09437.pdf\">Casper the Friendly Finality Gadget (Casper FFG)<\/a>. Casper FFG is a mechanism which favours safety over liveness when making decisions. This means that while the decisions it makes are final, under poor network conditions, it may not be able to decide on anything.<\/p>\n<p class=\"chakra-text css-gi02ar\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/upload_84ad2520a6a3370e4e841a969a5f1f62.png\" class=\"chakra-image css-hw6q2r\"\/><\/p>\n<p class=\"chakra-text css-gi02ar\">FFG is a crypto-economic adaption of the classic <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/pmg.csail.mit.edu\/papers\/osdi99.pdf\">Practical Byzantine Fault Tolerent (PBFT)<\/a> which has phases where nodes first indicate that they&#8217;d like to agree on something (<em class=\"chakra-text css-0\">justification<\/em>) and then agree that they&#8217;ve seen each other agreeing (<em class=\"chakra-text css-0\">finalisation<\/em>).<\/p>\n<p class=\"chakra-text css-gi02ar\">Eth2 does not try to justify and finalise every slot (the time when a block is expected to be produced), but instead only every 32 slots. Collectively, 32 slots is called an <em class=\"chakra-text css-0\">epoch<\/em>. First, validators sign that they agree with all 32 blocks in an epoch. Then, if <span class=\"math math-inline\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mo>\u2265<\/mo><mfrac><mn>2<\/mn><mn>3<\/mn><\/mfrac><\/mrow><annotation encoding=\"application\/x-tex\">\\geq \\frac{2}{3}<\/annotation><\/semantics><\/math><\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.7719em;vertical-align:-0.136em\"\/><span class=\"mrel\">\u2265<\/span><span class=\"mspace\" style=\"margin-right:0.2778em\"\/><\/span><span class=\"base\"><span class=\"strut\" style=\"height:1.1901em;vertical-align:-0.345em\"\/><span class=\"mord\"><span class=\"mopen nulldelimiter\"\/><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8451em\"><span style=\"top:-2.655em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">3<\/span><\/span><\/span><\/span><span style=\"top:-3.23em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"frac-line\" style=\"border-bottom-width:0.04em\"\/><\/span><span style=\"top:-3.394em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">2<\/span><\/span><\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.345em\"><span\/><\/span><\/span><\/span><\/span><span class=\"mclose nulldelimiter\"\/><\/span><\/span><\/span><\/span><\/span> do so, the block is justified. In a later epoch, validators get another chance to vote to indicate that they have seen the earlier justified epoch and if <span class=\"math math-inline\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mo>\u2265<\/mo><mfrac><mn>2<\/mn><mn>3<\/mn><\/mfrac><\/mrow><annotation encoding=\"application\/x-tex\">\\geq \\frac{2}{3}<\/annotation><\/semantics><\/math><\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.7719em;vertical-align:-0.136em\"\/><span class=\"mrel\">\u2265<\/span><span class=\"mspace\" style=\"margin-right:0.2778em\"\/><\/span><span class=\"base\"><span class=\"strut\" style=\"height:1.1901em;vertical-align:-0.345em\"\/><span class=\"mord\"><span class=\"mopen nulldelimiter\"\/><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8451em\"><span style=\"top:-2.655em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">3<\/span><\/span><\/span><\/span><span style=\"top:-3.23em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"frac-line\" style=\"border-bottom-width:0.04em\"\/><\/span><span style=\"top:-3.394em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">2<\/span><\/span><\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.345em\"><span\/><\/span><\/span><\/span><\/span><span class=\"mclose nulldelimiter\"\/><\/span><\/span><\/span><\/span><\/span> do this, the epoch is finalised and is forever a part of the eth2 chain.<\/p>\n<p class=\"chakra-text css-gi02ar\">FFG employs a clever trick. Votes actually consist of two sub-votes, one for the epoch that is attempting to be justified and another for an earlier epoch that is to become finalised. This saves a lot of extra communication between nodes and helps to achieve the goal of scaling to millions of validators.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"two-ghosts-in-a-trench-coat\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"two ghosts in a trench coat permalink\" href=\"#two-ghosts-in-a-trench-coat\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Two ghosts in a trench coat<\/h2>\n<p class=\"chakra-text css-gi02ar\">Consensus within eth2 relies on both LMD-GHOST \u2013 which adds new blocks and decides what the head of the chain is \u2013 and Casper FFG which makes the final decision on which blocks <em class=\"chakra-text css-0\">are<\/em> and <em class=\"chakra-text css-0\">are not<\/em> a part of the chain. GHOST\u2019s favourable liveness properties allow new blocks to quickly and efficiently be added to the chain, while FFG follows behind to provide safety by finalising epochs.<\/p>\n<p class=\"chakra-text css-gi02ar\">\n   <img decoding=\"async\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/upload_84663daf63bd4ea84dc8dacce31625d0.png\" class=\"chakra-image css-hw6q2r\"\/>\n<\/p>\n<p class=\"chakra-text css-gi02ar\">The two protocols are merged by running GHOST from the last finalised block as decided upon by FFG. By construction, the last finalised block is always a part of the chain which means GHOST doesn&#8217;t need to consider earlier blocks.<\/p>\n<p class=\"chakra-text css-gi02ar\">In the normal case when blocks are being produced and <span class=\"math math-inline\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http:\/\/www.w3.org\/1998\/Math\/MathML\"><semantics><mrow><mo>\u2265<\/mo><mfrac><mn>2<\/mn><mn>3<\/mn><\/mfrac><\/mrow><annotation encoding=\"application\/x-tex\">\\geq \\frac{2}{3}<\/annotation><\/semantics><\/math><\/span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.7719em;vertical-align:-0.136em\"\/><span class=\"mrel\">\u2265<\/span><span class=\"mspace\" style=\"margin-right:0.2778em\"\/><\/span><span class=\"base\"><span class=\"strut\" style=\"height:1.1901em;vertical-align:-0.345em\"\/><span class=\"mord\"><span class=\"mopen nulldelimiter\"\/><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8451em\"><span style=\"top:-2.655em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">3<\/span><\/span><\/span><\/span><span style=\"top:-3.23em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"frac-line\" style=\"border-bottom-width:0.04em\"\/><\/span><span style=\"top:-3.394em\"><span class=\"pstrut\" style=\"height:3em\"\/><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">2<\/span><\/span><\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.345em\"><span\/><\/span><\/span><\/span><\/span><span class=\"mclose nulldelimiter\"\/><\/span><\/span><\/span><\/span><\/span> validators are voting on them, these blocks are added to the head of the chain by GHOST, and not long after justified and finalised by FFG (which considers the last few epochs).<\/p>\n<p class=\"chakra-text css-gi02ar\">If there is an attack on the network and\/or a large proportion of validators go offline, then GHOST continues adding new blocks. However, since GHOST is live, but not safe, it may change its mind about the head of the chain \u2013 this is because new blocks are continually added to the chain, which means nodes keep learning new information. FFG on the other hand, favours safety over liveness meaning that it stops finalising blocks until the network is stable enough for validators to vote consistently again.<\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2020\/02\/12\/validated-staking-on-eth2-2-two-ghosts-in-a-trench-coat\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Special thanks to Sacha Yves Saint-Leger &amp; Danny Ryan for review. In this installment, we&#8217;ll discuss the consensus mechanisms behind eth2. Eth2 has a novel approach to deciding which block is the head of the chain, along with which blocks are and are not a part of the chain. By using a hybrid between the [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":18273,"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-18365","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\/18365","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=18365"}],"version-history":[{"count":0,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18365\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media\/18273"}],"wp:attachment":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media?parent=18365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/categories?post=18365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/tags?post=18365"},{"taxonomy":"kronos_expire_date","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/kronos_expire_date?post=18365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}