1"use strict";(globalThis.webpackChunkpublic_docs=globalThis.webpackChunkpublic_docs||[]).push([[4498],{9155(e,t,o){o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>p,frontMatter:()=>a,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"tooling/forky","title":"Forky","description":"<ToolHeroBanner","source":"@site/docs/tooling/forky.md","sourceDirName":"tooling","slug":"/tooling/forky","permalink":"/docs/tooling/forky","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3,"title":"Forky","hide_title":true},"sidebar":"docs","previous":{"title":"Dora","permalink":"/docs/tooling/dora"},"next":{"title":"The Lab","permalink":"/docs/tooling/lab"}}');var i=o(74848),r=o(28453),s=o(59951);const a={sidebar_position:3,title:"Forky",hide_title:!0},c=void 0,l={},d=[];function h(e){const t={p:"p",...(0,r.R)(),...e.components},{RelatedLinks:o}=t;return o||function(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("RelatedLinks",!0),(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.A,{title:"Forky",description:"An Ethereum beacon chain fork choice visualizer that helps operators and developers understand the state of the beacon chain in real-time.",imagePath:"/img/tools/forky.jpg"}),"\n",(0,i.jsx)(o,{githubRepo:"ethpandaops/forky"}),"\n",(0,i.jsx)(t.p,{children:"Forky provides a visual representation of the Ethereum beacon chain's fork choice, which is the algorithm that determines which chain of blocks the network follows. This visualization makes it easier to identify and understand forks, reorganizations, and other consensus-related events on the Ethereum network."})]})}function p(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453(e,t,o){o.d(t,{R:()=>s,x:()=>a});var n=o(96540);const i={},r=n.createContext(i);function s(e){const t=n.useContext(r);return n.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(r.Provider,{value:t},e.children)}},59951(e,t,o){o.d(t,{A:()=>l});o(96540);const n="heroBanner_p5AC",i="overlay_Ob9f",r="content_XlV_",s="title_v07c",a="description_nfNL";var c=o(74848);function l({title:e,description:t,imagePath:o}){return(0,c.jsxs)("div",{className:n,style:{backgroundImage:`url(${o})`},children:[(0,c.jsx)("div",{className:i}),(0,c.jsxs)("div",{className:r,children:[(0,c.jsx)("h1",{className:s,children:e}),(0,c.jsx)("p",{className:a,children:t})]})]})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.