1"use strict";(globalThis.webpackChunkpublic_docs=globalThis.webpackChunkpublic_docs||[]).push([[3355],{11536(e){e.exports=JSON.parse('{"permalink":"/data/xatu/networks","source":"@site/data/xatu-data/networks.md","title":"Xatu - Networks","description":"Which networks Xatu collects from: production networks with coverage, and devnets testing upcoming upgrades.","date":"2026-09-30T09:51:02.000Z","tags":[{"inline":true,"label":"xatu","permalink":"/data/tags/xatu"},{"inline":true,"label":"data","permalink":"/data/tags/data"},{"inline":true,"label":"networks","permalink":"/data/tags/networks"},{"inline":true,"label":"devnets","permalink":"/data/tags/devnets"}],"hasTruncateMarker":false,"authors":[],"frontMatter":{"title":"Xatu - Networks","slug":"xatu/networks","description":"Which networks Xatu collects from: production networks with coverage, and devnets testing upcoming upgrades.","image":"/img/blog/xatu-data.jpg","tags":["xatu","data","networks","devnets"]},"unlisted":false,"prevItem":{"title":"Xatu Data","permalink":"/data/xatu"},"nextItem":{"title":"Xatu - Table explorer","permalink":"/data/xatu/tables"}}')},15851(e,t,a){a.d(t,{A:()=>s});const s={container:"container_TtSs",loading:"loading_V4Ac",error:"error_LGEH",forkChip:"forkChip_zRCn",preReleaseBadge:"preReleaseBadge_E1Hm",forkBadge:"forkBadge_gImr",finalBadge:"finalBadge_Qc_I",chipRow:"chipRow_Dldu",networkChip:"networkChip_w0VO",filterRow:"filterRow_oOcQ",filterInput:"filterInput_sfAO",facetSelect:"facetSelect_aP7x",expandAllButton:"expandAllButton_BGaZ",resultCount:"resultCount_ywhl",showMoreButton:"showMoreButton_DaH7",tableList:"tableList_pxyz",tableRow:"tableRow_kRur",tableRowOpen:"tableRowOpen_EpJg",tableRowHeader:"tableRowHeader_ZmjA",rowChevron:"rowChevron_kh0M",rowMain:"rowMain_ihmW",rowNameLine:"rowNameLine_JEAp",rowName:"rowName_yfpN",copyButton:"copyButton_g_t5",rowDescription:"rowDescription_UxRo",rowMeta:"rowMeta_vHbT",rowNetworks:"rowNetworks_L8Rv",rowContext:"rowContext_HILB",tableRowBody:"tableRowBody_tO1Z",bodyHeading:"bodyHeading_Np0i",tableCardDescription:"tableCardDescription_osPH",tableCardStats:"tableCardStats_kGTt",callout:"callout_yzTk",columnSearch:"columnSearch_jWCf",columnList:"columnList__dL1",columnRow:"columnRow_bkzz",columnIdent:"columnIdent_hDJ7",columnName:"columnName_LLkM",columnDescription:"columnDescription_mlQc",metaDivider:"metaDivider_woyS",metaToggle:"metaToggle_DhOX",typeChip:"typeChip_cNCD",type_time:"type_time_hDfn",type_number:"type_number_xn7T",type_string:"type_string_bXIa",type_bool:"type_bool_p1Tz",type_net:"type_net_wHl6",type_complex:"type_complex_y_cj",type_other:"type_other_X3q1",partitionKeyBadge:"partitionKeyBadge_ew3E",timeline:"timeline_M8gO",timelineRow:"timelineRow_LP0U",timelineLabel:"timelineLabel_U2ks",timelineTrack:"timelineTrack_sp5C",timelineBar:"timelineBar_im97",timelineRange:"timelineRange_DgIT",panelSwitch:"panelSwitch_njIV",panelButton:"panelButton_hoep",panelButtonActive:"panelButtonActive_od2h",exampleTabs:"exampleTabs_qBPy",tabButtons:"tabButtons_xPOF",tabButton:"tabButton_am8_",tabButtonActive:"tabButtonActive_DFXN",tableWrap:"tableWrap_GQyH",devnetsTable:"devnetsTable_0gYD",linkCell:"linkCell_udV8",forkCards:"forkCards_i3bN",forkCard:"forkCard_SgZY",experimentalCard:"experimentalCard_zcxA",forkCardHeader:"forkCardHeader_EVPj",forkCardTitle:"forkCardTitle__93e",forkCardStats:"forkCardStats_aVK1",datasetCardDescription:"datasetCardDescription_gVOK",forkMeta:"forkMeta_RfWl",detailsBlock:"detailsBlock_v6yq",heroStats:"heroStats_SiBl",statCard:"statCard_Ezhx",statValue:"statValue_GRFX",statLabel:"statLabel_NcB2",heroSearch:"heroSearch_CQwH",heroSearchInput:"heroSearchInput_We3Q",heroSearchButton:"heroSearchButton_ASho",quickLinks:"quickLinks_s4MC",quickLink:"quickLink_HNmF",freshness:"freshness_e245",statusDot:"statusDot_H9ej"}},19163(e,t,a){a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>d});var s=a(11536),n=a(74848),r=a(28453),l=a(20302);
1const o={title:"Xatu - Networks",slug:"xatu/networks",description:"Which networks Xatu collects from: production networks with coverage, and devnets testing upcoming upgrades.",image:"/img/blog/xatu-data.jpg",tags:["xatu","data","networks","devnets"]},i=void 0,c={authorsImageUrls:[]},d=[];function h(e){return(0,n.jsx)(l.TE,{})}function u(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h()}},20302(e,t,a){a.d(t,{OA:()=>D,Qv:()=>T,TE:()=>L,i8:()=>f,iD:()=>S,nx:()=>N,oz:()=>b,vT:()=>v,yj:()=>A});var s=a(96540),n=a(28774),r=a(88149),l=a(60023),o=a(15851),i=a(74848);const c="https://raw.githubusercontent.com/ethpandaops/xatu-data/master",d="https://data.ethpandaops.io/xatu",h="/data/xatu/forks",u="https://clickhouse.xatu.ethpandaops.io";function m(e){const[t,a]=(0,s.useState)(null),[n,r]=(0,s.useState)(null);return(0,s.useEffect)(()=>{let t=!1;return fetch(e).then(e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return e.json()}).then(e=>{t||a(e)}).catch(e=>{t||r(e.message)}),()=>{t=!0}},[e]),{data:t,error:n}}const p=()=>m(`${c}/catalog/index.json`),x=()=>m(`${c}/experimental.json`);function j({error:e,what:t="catalog"}){return e?(0,i.jsxs)("div",{className:o.A.error,children:["Failed to load the ",t,": ",e]}):(0,i.jsxs)("div",{className:o.A.loading,children:["Loading ",t,"\u2026"]})}function b({children:e,className:t}){const a=(0,s.useMemo)(()=>l.xI.parse(e||""),[e]);return e?(0,i.jsx)("div",{className:t,dangerouslySetInnerHTML:{__html:a}}):null}function k({fork:e}){return(0,i.jsx)("code",{className:o.A.forkChip,children:e})}function f({text:e}
1){const[t,a]=(0,s.useState)(!1);return(0,i.jsx)("button",{type:"button",className:o.A.copyButton,title:`Copy ${e}`,onClick:t=>{t.stopPropagation(),navigator.clipboard?.writeText(e).then(()=>{a(!0),setTimeout(()=>a(!1),1200)})},children:t?(0,i.jsx)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:(0,i.jsx)("path",{d:"M2.5 8.5l3.5 3.5 7-8",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round"})}):(0,i.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",children:[(0,i.jsx)("rect",{x:"5.5",y:"5.5",width:"8",height:"8",rx:"1.5",stroke:"currentColor",strokeWidth:"1.4"}),(0,i.jsx)("path",{d:"M10.5 3.5v-1a1 1 0 00-1-1h-6a1 1 0 00-1 1v6a1 1 0 001 1h1",stroke:"currentColor",strokeWidth:"1.4"})]})})}function g(e){const t=e.replace(/^(Nullable|LowCardinality)\((.*)\)$/,"$2");return/^(DateTime|Date)/.test(t)?"time":/^(UInt|Int|Float|Decimal)/.test(t)?"number":/^(String|FixedString|Enum|UUID)/.test(t)?"string":/^Bool/.test(t)?"bool":/^(IPv4|IPv6)/.test(t)?"net":/^(Array|Map|Tuple|Nested|AggregateFunction)/.test(t)?"complex":"other"}function _({type:e}){return(0,i.jsx)("span",{className:`${o.A.typeChip} ${o.A[`type_${g(e)}`]}`,children:e})}function w({col:e,isPartitionKey:t}){return(0,i.jsxs)("div",{className:o.A.columnRow,children:[(0,i.jsxs)("div",{className:o.A.columnIdent,children:[(0,i.jsx)("span",{className:o.A.columnName,children:e.name}),(0,i.jsx)(_,{type:e.type}),t&&(0,i.jsx)("span",{className:o.A.partitionKeyBadge,title:"Partition key \u2014 always filter on this column",children:"partition key"})]}),(0,i.jsx)("div",{className:o.A.columnDescription,children:e.description})]})}function A({columns:e,partitionColumn:t}){const[a,n]=(0,s.useState)(""),[r,l]=(0,s.useState)(!0),c=a.toLowerCase(),d=e=>!c||e.name.toLowerCase().includes(c)||e.type.toLowerCase().includes(c),h=e.filter(e=>!e.name.startsWith("meta_")&&d(e)),u=e.filter(e=>e.name.startsWith("meta_")&&d(e)),m=r||""!==c;return(0,i.jsxs)("div",{children:[e.length>8&&(0,i.jsx)("input",{type:"search",className:o.A.columnSearch,placeholder:"Search columns\u2026",value:a,onChange:e=>n(e.target.value)}),(0,i.jsxs)("div",{className:o.A.columnList,children:[h.map(e=>(0,i.jsx)(w,{col:e,isPartitionKey:e.name===t},e.name)),u.length>0&&!m&&(0,i.jsxs)("button",{type:"button",className:o.A.metaToggle,onClick:()=>l(!0),children:["\u25b8 Show ",u.length," meta_* columns (sentry/client metadata)"]}),m&&u.length>0&&(0,i.jsx)("div",{className:o.A.metaDivider,children:"meta_* \u2014 sentry/client metadata"}),m&&u.map(e=>(0,i.jsx)(w,{col:e,isPartitionKey:e.name===t},e.name)),m&&u.length>0&&!c&&(0,i.jsx)("button",{type:"button",className:o.A.metaToggle,onClick:()=>l(!1),children:"\u25b4 Hide meta_* columns"})]})]})}function N({networks:e}){const t=Object.entries(e).filter(([,e])=>e&&void 0!==e.from&&void 0!==e.to);if(0===t.length)return null;const a=t.every(([,e])=>isNaN(Number(e.from))),s=e=>a?Date.parse(e):Number(e),n=e=>a?String(e):Number(e).toLocaleString(),r=Math.min(...t.map(([,e])=>s(e.from))),l=Math.max(...t.map(([,e])=>s(e.to)))-r||1;return(0,i.jsx)("div",{className:o.A.timeline,children:t.map(([e,t])=>{const a=(s(t.from)-r)/l*100,c=Math.max((s(t.to)-s(t.from))/l*100,1.5);return(0,i.jsxs)("div",{className:o.A.timelineRow,children:[(0,i.jsx)("span",{className:o.A.timelineLabel,children:e}),(0,i.jsx)("div",{className:o.A.timelineTrack,children:(0,i.jsx)("div",{className:o.A.timelineBar,style:{left:`${a}%`,width:`${c}%`}})}),(0,i.jsxs)("span",{className:o.A.timelineRange,children:[n(t.from)," \u2192 ",n(t.to)]})]},e)})})}function v({table:e,prerelease:t}){const a=t?(e.devnets||[])[0]:e.cbt_table?"mainnet":e.database,n=/[^a-zA-Z0-9_]/.test(a||"")?`\`${a}\``:a,{partitioning:l={}}=e;let c="";if("datetime"===l.type&&l.column)c=`\nWHERE\n ${l.column} >= NOW() - INTERVAL 1 DAY`,e.cbt_table||t||(c+="\n AND meta_network_name = 'mainnet'");else if("integer"===l.type&&l.column){const e=Number(l.interval)||1e3;c=`\nWHERE\n ${l.column} BETWEEN ${50*e} AND ${51*e}`}const h=`SELECT\n *\nFROM ${n}.${e.name}${e.should_use_final?" FINAL":""}${c}\nLIMIT 3`,m=h.replaceAll("`","\\`"),p=[{key:"sql",label:"SQL",language:"sql",code:h},{key:"panda",label:"panda",language:"bash",code:`# ethPandaOps CLI: https://github.com/ethpandaops/panda\npanda clickhouse query ${e.cbt_table?"clickhouse-refined":"clickhouse-raw"} "\n${m}\n"`},{key:"curl",label:"curl",language:"bash",code:`echo """\n${m}\n FORMAT Pretty\n""" | curl "${u}" -u "$CLICKHOUSE_USER:$CLICKHOUSE_PASSWORD" --data-binary @-`}],x=t?null:function(e){const{partitioning:t={},database:a,networks:s={}}=e,n=s.mainnet||{};if(!t.type||e.cbt_table)return null;if("datetime"===t.type){const s="hourly"===t.interval?`${d}/NETWORK/databases/${a}/${e.name}/YYYY/M/D/H.parquet`:`${d}/NETWORK/databases/${a}/${e.name}/YYYY/MM/DD.parquet`,r=(n.to||"2024-04-01").replaceAll("-","/");return{pattern:s,example:"hourly"===t.interval?`${d}/mainnet/databases/${a}/${e.name}/${r}/0.parquet`:`${d}/mainnet/databases/${a}/${e.name}/${r}.parquet`}}if("integer"===t.type){const s=Number(t.interval)||1e3,r=Number(n.from)||50*s,l=Math.floor(r/s);return{pattern:`${d}/NETWORK/databases/${a}/${e.name}/${s}/CHUNK_NUMBER.parquet`,example:`${d}/mainnet/databases/${a}/${e.name}/${s}/${l*s}.parquet`}}return null}(e);x&&p.push({key:"parquet",label:"Parquet",language:"bash",code:`# ${x.pattern}\ndocker run --rm -it clickhouse/clickhouse-server clickhouse local --query="\n SELECT * FROM url('${x.example}
1', 'Parquet') LIMIT 10\n FORMAT Pretty\n"`});const[j,b]=(0,s.useState)(p[0].key),k=p.find(e=>e.key===j)||p[0];return(0,i.jsxs)("div",{className:o.A.exampleTabs,children:[(0,i.jsx)("div",{className:o.A.tabButtons,children:p.map(e=>(0,i.jsx)("button",{type:"button",className:`${o.A.tabButton} ${j===e.key?o.A.tabButtonActive:""}`,onClick:()=>b(e.key),children:e.label},e.key))}),(0,i.jsx)(r.A,{language:k.language,children:k.code})]})}function y(){const{data:e,error:t}=p(),{data:a}=x();if(!e)return(0,i.jsx)(j,{error:t});const s=a?a.forks.reduce((e,t)=>e+t.tables.length,0):null;return(0,i.jsx)("div",{className:o.A.container,children:(0,i.jsxs)("div",{className:o.A.forkCards,children:[e.datasets.map(e=>(0,i.jsxs)(n.A,{to:`/data/xatu/datasets/${e.key}`,className:o.A.forkCard,children:[(0,i.jsx)("div",{className:o.A.forkCardHeader,children:(0,i.jsx)("span",{className:o.A.forkCardTitle,children:e.name})}),(0,i.jsxs)("div",{className:o.A.forkCardStats,children:[(0,i.jsxs)("span",{children:[(0,i.jsx)("strong",{children:e.tables.length})," tables"]}),e.prefix&&(0,i.jsxs)("code",{className:o.A.forkChip,children:[e.prefix,"*"]})]}),(0,i.jsx)("p",{className:o.A.datasetCardDescription,children:e.description})]},e.key)),(0,i.jsxs)(n.A,{to:h,className:`${o.A.forkCard} ${o.A.experimentalCard}`,children:[(0,i.jsx)("div",{className:o.A.forkCardHeader,children:(0,i.jsx)("span",{className:o.A.forkCardTitle,children:"Experimental"})}),(0,i.jsx)("div",{className:o.A.forkCardStats,children:(0,i.jsx)("span",{children:null!==s?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("strong",{children:s})," pre-release tables"]}):"Devnet-only tables"})}),(0,i.jsx)("p",{className:o.A.datasetCardDescription,children:"Data from devnets testing upcoming network upgrades \u2014 tables that don't exist on production networks yet."})]})]})})}function C(e){return e.clickhouse_endpoint||u}function $({data:e,exampleDatabase:t}){return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)("p",{children:["Devnet data lives on the same ClickHouse endpoint as production networks: ",(0,i.jsx)("code",{children:C(e)}),". Each devnet gets its"," ",(0,i.jsx)("strong",{children:"own database"}),", named after the network \u2014 unlike production tables in the ",(0,i.jsx)("code",{children:"default"})," database, there is no"," ",(0,i.jsx)("code",{children:"meta_network_name"})," filter. The database ",(0,i.jsx)("em",{children:"is"})," the network:"]}),(0,i.jsx)(r.A,{language:"sql",children:`SELECT * FROM \`${t}\`.beacon_api_eth_v1_events_block LIMIT 3`}),(0,i.jsx)("div",{className:o.A.callout,children:"Devnets are ephemeral: databases disappear when a devnet is deprovisioned, and schemas drift between devnets. Always check what a devnet actually has before relying on it."})]})}function T(){const{data:e,error:t}=x();if(!e)return(0,i.jsx)(j,{error:t,what:"experimental catalog"});const a=e.networks[0]?.name||"glamsterdam-devnet-6";return(0,i.jsxs)("div",{className:o.A.container,children:[(0,i.jsx)("p",{children:"Xatu also collects data from short-lived devnets that test upcoming network upgrades. Devnets run xatu from a fork branch, so their schema is ahead of the main catalog: they carry tables for the upgrade being tested that don't exist on production networks yet."}),(0,i.jsx)("h2",{children:"Network upgrades"}),(0,i.jsx)("div",{className:o.A.forkCards,children:e.forks.map(e=>(0,i.jsxs)(n.A,{to:`${h}/${e.slug}`,className:o.A.forkCard,children:[(0,i.jsxs)("div",{className:o.A.forkCardHeader,children:[(0,i.jsx)("span",{className:o.A.forkCardTitle,children:e.display_name}),(0,i.jsx)(k,{fork:e.name})]}),(0,i.jsxs)("div",{className:o.A.forkCardStats,children:[(0,i.jsxs)("span",{children:[(0,i.jsx)("strong",{children:e.tables.length})," devnet-only tables"]}),(0,i.jsxs)("span",{children:[(0,i.jsx)("strong",{children:e.merged_tables.length})," in main catalog"]})]}),(0,i.jsx)("div",{className:o.A.chipRow,children:e.networks.map(e=>(0,i.jsx)("span",{className:o.A.networkChip,children:e.name},e.name))})]},e.name))}),(0,i.jsx)("h2",{children:"Active devnets"}),(0,i.jsx)("div",{className:o.A.tableWrap,children:(0,i.jsxs)("table",{className:o.A.devnetsTable,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Network"}),(0,i.jsx)("th",{children:"Upgrade"}),(0,i.jsx)("th",{children:"Fork-specific tables"}),(0,i.jsx)("th",{children:"Links"})]})}),(0,i.jsx)("tbody",{children:e.networks.map(t=>{const a=e.forks.find(e=>e.name===t.fork);return(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)("code",{children:t.name})}),(0,i.jsx)("td",{children:a?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.A,{to:`${h}/${a.slug}`,children:a.display_name})," ",(0,i.jsx)(k,{fork:a.name})]}):"-"}),(0,i.jsx)("td",{children:t.new_tables.length}),(0,i.jsxs)("td",{className:o.A.linkCell,children:[(0,i.jsx)(n.A,{to:`https://github.com/${t.repository}`,children:"GitHub"}),t.dora&&(0,i.jsx)(n.A,{to:t.dora,children:"Dora"})]})]},t.name)}
1)})]})}),(0,i.jsx)("h2",{children:"Querying devnet data"}),(0,i.jsx)($,{data:e,exampleDatabase:a})]})}function S(){const{data:e,error:t}=p(),{data:a}=x(),[n,r]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!e)return;let t=!1;return Promise.all(e.datasets.map(e=>fetch(`${c}/catalog/${e.key}.json`).then(e=>e.ok?e.json():null).catch(()=>null))).then(a=>{if(t)return;const s={};e.datasets.forEach((e,t)=>{a[t]&&(s[e.key]=a[t])}),r(s)}),()=>{t=!0}},[e]);const l=(0,s.useMemo)(()=>{if(!e||!n)return null;const t=[];for(const a of e.datasets){const e=n[a.key];if(e)for(const s of e.tables)t.push({table:s,datasetKey:a.key,datasetName:a.name})}if(a)for(const e of a.forks)for(const a of e.tables)t.push({table:{...a,devnets:a.networks,networks:void 0,partitioning:a.partitioning||{}},datasetKey:"experimental",datasetName:`${e.display_name} (pre-release)`,prerelease:!0,forkInfo:e});return t},[e,n,a]);return{index:e,experimental:a,rows:l,error:t}}function L(){const{experimental:e,rows:t,error:a}=S();if(a)return(0,i.jsx)(j,{error:a});if(!t)return(0,i.jsx)(j,{});const s={};for(const n of t)if(!n.prerelease&&!n.table.cbt_table)for(const[e,t]of Object.entries(n.table.networks||{})){const a=s[e]=s[e]||{tables:0,from:null,to:null};a.tables+=1,t?.from&&isNaN(Number(t.from))&&((!a.from||t.from<a.from)&&(a.from=t.from),(!a.to||t.to>a.to)&&(a.to=t.to))}return(0,i.jsxs)("div",{className:o.A.container,children:[(0,i.jsxs)("p",{children:["Xatu collects from long-lived production networks and from short-lived devnets testing upcoming upgrades. Production data lives in the"," ",(0,i.jsx)("code",{children:"default"})," database (filter with ",(0,i.jsx)("code",{children:"meta_network_name"}),"); each devnet gets its own database on the same endpoint,"," ",(0,i.jsx)("code",{children:u}),"."]}),(0,i.jsx)("h2",{children:"Production networks"}),(0,i.jsx)("div",{className:o.A.tableWrap,children:(0,i.jsxs)("table",{className:o.A.devnetsTable,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Network"}),(0,i.jsx)("th",{children:"Tables"}),(0,i.jsx)("th",{children:"Coverage"}),(0,i.jsx)("th",{children:"Explore"})]})}),(0,i.jsx)("tbody",{children:Object.entries(s).sort(([,e],[,t])=>t.tables-e.tables).map(([e,t])=>(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)("code",{children:e})}),(0,i.jsx)("td",{children:t.tables}),(0,i.jsx)("td",{className:o.A.timelineRange,children:t.from?`${t.from} \u2192 ${t.to}`:"-"}),(0,i.jsx)("td",{children:(0,i.jsxs)(n.A,{to:`/data/xatu/tables?network=${e}`,children:["Tables on ",e]})})]},e))})]})}),(0,i.jsx)("h2",{children:"Devnets"}),e?(0,i.jsx)("div",{className:o.A.tableWrap,children:(0,i.jsxs)("table",{className:o.A.devnetsTable,children:[(0,i.jsx)("thead",{children:(0,i.jsxs)("tr",{children:[(0,i.jsx)("th",{children:"Network"}),(0,i.jsx)("th",{children:"Upgrade"}),(0,i.jsx)("th",{children:"Xatu branch"}),(0,i.jsx)("th",{children:"Tables"}),(0,i.jsx)("th",{children:"Links"})]})}),(0,i.jsx)("tbody",{children:e.networks.map(t=>{const a=e.forks.find(e=>e.name===t.fork);return(0,i.jsxs)("tr",{children:[(0,i.jsx)("td",{children:(0,i.jsx)("code",{children:t.name})}),(0,i.jsx)("td",{children:a?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.A,{to:`${h}/${a.slug}`,children:a.display_name})," ",(0,i.jsx)(k,{fork:a.name})]}):"-"}),(0,i.jsx)("td",{children:t.xatu_branch?(0,i.jsx)(n.A,{to:`https://github.com/ethpandaops/xatu/tree/${t.xatu_branch}`,children:(0,i.jsx)("code",{children:t.xatu_branch})}):"-"}),(0,i.jsxs)("td",{children:[t.tables_total,t.new_tables.length>0&&` (${t.new_tables.length} fork-specific)`]}),(0,i.jsxs)("td",{className:o.A.linkCell,children:[(0,i.jsx)(n.A,{to:`https://github.com/${t.repository}`,children:"GitHub"}),t.dora&&(0,i.jsx)(n.A,{to:t.dora,children:"Dora"})]})]},t.name)})})]})}):(0,i.jsx)(j,{what:"experimental catalog"})]})}function D(){const{data:e}=p(),{data:t}=x(),[a,r]=(0,s.useState)(""),l=e?e.datasets.reduce((e,t)=>e+t.tables.length,0):null,c=t?t.forks.reduce((e,t)=>e+t.tables.length,0):null;return(0,i.jsxs)("div",{className:o.A.container,children:[(0,i.jsxs)("div",{className:o.A.heroStats,children:[(0,i.jsxs)("div",{className:o.A.statCard,children:[(0,i.jsx)("span",{className:o.A.statValue,children:e?e.datasets.length:"\u2026"}),(0,i.jsx)("span",{className:o.A.statLabel,children:"datasets"})]}),(0,i.jsxs)("div",{className:o.A.statCard,children:[(0,i.jsx)("span",{className:o.A.statValue,children:l??"\u2026"}),(0,i.jsx)("span",{className:o.A.statLabel,children:"tables"})]}),(0,i.jsxs)("div",{className:o.A.statCard,children:[(0,i.jsx)("span",{className:o.A.statValue,children:t?t.networks.length:"\u2026"}),(0,i.jsx)("span",{className:o.A.statLabel,children:"active devnets"})]}),(0,i.jsxs)("div",{className:o.A.statCard,children:[(0,i.jsx)("span",{className:o.A.statValue,children:c??"\u2026"}),(0,i.jsx)("span",{className:o.A.statLabel,children:"pre-release tables"})]})]}),(0,i.jsxs)("form",{className:o.A.heroSearch,onSubmit:e=>{e.preventDefault(),window.location.href="/data/xatu/tables"+(a?`?q=${encodeURIComponent(a)}`:"")},children:[(0,i.jsx)("input",{type:"search",className:o.A.heroSearchInput,placeholder:"Search every table \u2014 by name, column, or description\u2026",value:a,onChange:e=>r(e.target.value)}),(0,i.jsx)("button",{type:"submit",className:o.A.heroSearchButton,children:"Search"})]}),(0,i.jsxs)("div",{className:o.A.quickLinks,children:[(0,i.jsx)(n.A,{to:"/data/xatu/tables",className:o.A.quickLink,children:"Table explorer"}),(0,i.jsx)(n.A,{to:"/data/xatu/networks",className:o.A.quickLink,children:"Networks"}),(0,i.jsx)(n.A,{to:"/data/xatu/getting-started",className:o.A.quickLink,children:"Getting started"}),(0,i.jsx)(n.A,{to:"/data/xatu/contribute",className:o.A.quickLink,children:"Contribute data"}),(0,i.jsx)(n.A,{to:"/docs/guides/data-analysts/xatu-stack/clickhouse/intro",className:o.A.quickLink,children:"ClickHouse guide"})]}),(0,i.jsx)("h2",{children:"Datasets"}),(0,i.jsx)(y,{}),t&&t.generated_at&&(0,i.jsxs)("p",{className:o.A.freshness,children:["Catalog generated ",t.generated_at.slice(0,10)," \u2014 data is licensed"," ",(0,i.jsx)(n.A,{to:"https://creativecommons.org/licenses/by/4.0/deed.en",children:"CC BY 4.0"}),", free for everyone via"," ",(0,i.jsx)(n.A,{to:"/data/xatu/getting-started",children:"public parquet files"}),"."]})]})}}}]);
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.