<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[ChainSafe]]></title><description><![CDATA[Powering the Decentralized Web]]></description><link>https://blog.chainsafe.io/</link><image><url>https://blog.chainsafe.io/favicon.png</url><title>ChainSafe</title><link>https://blog.chainsafe.io/</link></image><generator>Ghost 5.70</generator><lastBuildDate>Thu, 09 Apr 2026 09:43:13 GMT</lastBuildDate><atom:link href="https://blog.chainsafe.io/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Canton, Meet Ethereum: ERC-20/CIP-56 Middleware is here]]></title><description><![CDATA[ChainSafe's ERC-20/CIP-56 Middleware is a high-fidelity translation layer that lets you deploy to Canton using your existing EVM workflows, MetaMask signatures, and infrastructure.]]></description><link>https://blog.chainsafe.io/erc-20-cip-56-middleware/</link><guid isPermaLink="false">69c3fbcbe7edb42b55b592ac</guid><category><![CDATA[Canton Network]]></category><category><![CDATA[Ethereum]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Wed, 25 Mar 2026 15:25:22 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2026/03/v2-middleware-bp.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2026/03/v2-middleware-bp.png" alt="Canton, Meet Ethereum: ERC-20/CIP-56 Middleware is here"><p><strong>Don&#x2019;t rebuild for Canton. Translate to it.</strong></p><p>Building on Canton Network used to mean a 100% smart contract rewrite in Daml. For Ethereum teams, that&#x2019;s a massive technical tax and months of lost momentum.</p><p>We&#x2019;re ending that bottleneck.</p><p>Introducing the <strong>ChainSafe ERC-20 / CIP-56 Middleware</strong>: A high-fidelity translation layer that lets you deploy to Canton using your existing EVM workflows, MetaMask signatures, and infrastructure.</p><h2 id="canton-meet-ethereum">Canton, meet Ethereum</h2><p>We&#x2019;ve built a high-fidelity interoperability layer that functions as a professional interpreter between the EVM and Canton&#x2019;s privacy-first architecture.</p><p>The middleware consists of two core components designed for institutional reliability:</p><h3 id="the-api-translation-layer">The API Translation Layer</h3><p>This is the &quot;brain&quot; of the operation. It generates the specific data required so that a wallet like MetaMask perceives it is communicating with a standard Ethereum node. When you sign a transaction in your wallet, the middleware translates the EVM command into a native Canton call in real time.</p><h3 id="the-dedicated-relayer-server">The Dedicated Relayer Server</h3><p>To maintain total asset integrity, we deploy a bespoke, white-label bridge for each partner. This server acts as the central authority for your specific token, locking assets 1:1 on Ethereum and mirroring them as CIP-56 standard tokens on Canton.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Let&apos;s discuss your project.</strong></b><br>We are ready to scope your engagement and start building immediately. Skip the rewrite and start integrating today.<br><br>&#x2709;&#xFE0F;&#xA0;<a href="https://infra.chainsafe.io/contact?ref=blog.chainsafe.io" rel="noreferrer">info@chainsafe.io</a></div></div><h2 id="the-problem-the-daml-rewrite">The problem: The Daml rewrite</h2><p>Canton is the premier privacy ledger for the world&#x2019;s largest financial institutions (G-SIBs), but it has been a silo. To tap into the $10 Trillion tokenization wave or settle against JPM Coin, you previously had to:</p><ul><li>Abandon your EVM stack for a total Daml rewrite.</li><li>Spend months on technical debt before even launching.</li><li>Retrain your entire team on a new VM.</li></ul><h2 id="the-solution-high-touch-low-friction-integration">The solution: High-touch, low-friction integration</h2><p>We&#x2019;ve been building custom dapps and complex smart contracts on Ethereum for 8 years. We aren&#x2019;t just handing you a piece of middleware or a sign-in dashboard; we&#x2019;re offering a bespoke co-development partnership to get you to market first.</p><p>ChainSafe holds <strong>supervalidator</strong> status on Canton Network and offers a dedicated infrastructure team that can help you deploy on Canton and navigate the ecosystem&apos;s privacy and security requirements.</p><h3 id="middleware-specs">Middleware specs:</h3><ul><li><strong>ERC-20 / CIP-56 mapping:</strong> Native translation between Ethereum standards and Canton&#x2019;s institutional token standard.</li><li><strong>Supervalidator status:</strong> As a Canton Network Supervalidator, we provide the dedicated infrastructure to help you navigate specific privacy and security requirements.</li><li><strong>MetaMask native:</strong> Sign Canton transactions without switching wallets.</li><li><strong>Institutional rails:</strong> Immediate, native interaction with Canton-resident liquidity, including JPMD and DTCC settlement rails.</li></ul><p>We specialize in high-complexity partnerships. Our goal is to handle the technical heavy lifting so your team can focus on the product, not the plumbing.</p><h2 id="fast-track-stack-middleware-and-daml-autopilot">Fast-track stack: Middleware and Daml Autopilot</h2><p>Most bridging solutions try to help you avoid Daml entirely. We help you master it at 10x speed.</p><p>Because we are a Supervalidator with a specialized AI context (the MCP Server), our middleware isn&apos;t a black box. It is part of a holistic development stack that allows you to write, validate, and translate complex Daml logic that traditional EVM-wrappers simply cannot replicate.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.chainsafe.io/daml-autopilot/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=m-w-launch"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Automate Canton Network Development with Daml Autopilot</div><div class="kg-bookmark-description">ChainSafe&#x2019;s DAML Autopilot features 3,600+ compiler-validated patterns, built-in safety checks, and CI automation to streamline DAML smart contract development.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.chainsafe.io/content/images/size/w256h256/2023/11/Frame-1004-1.png" alt="Canton, Meet Ethereum: ERC-20/CIP-56 Middleware is here"><span class="kg-bookmark-author">ChainSafe</span><span class="kg-bookmark-publisher">Evan Wells</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.chainsafe.io/content/images/2026/03/Frame-1799--3-.png" alt="Canton, Meet Ethereum: ERC-20/CIP-56 Middleware is here"></div></a></figure><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://daml-autopilot.chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=m-w-launch&amp;utm_content=bookmark"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Daml Autopilot</div><div class="kg-bookmark-description">Precision tools for Daml smart contract development</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://daml-autopilot.chainsafe.io/favicon.ico?favicon.0b3bf435.ico" alt="Canton, Meet Ethereum: ERC-20/CIP-56 Middleware is here"></div></div><div class="kg-bookmark-thumbnail"><img src="https://daml-autopilot.chainsafe.io/_next/image?url=%2Fscreenshots%2Fscreenshot-1.png&amp;w=3840&amp;q=75" alt="Canton, Meet Ethereum: ERC-20/CIP-56 Middleware is here"></div></a></figure><p>While Autopilot handles the heavy lifting of writing and validating your custom Daml logic in record time, the middleware provides the production-ready plumbing to connect that logic to the world&apos;s most liquid markets. It&#x2019;s the difference between learning a new language from scratch and having a professional interpreter.</p><h3 id="liquidity-onboarding">Liquidity onboarding</h3><p>This middleware allows institutions to lock standard ERC-20 assets (like USDC, EURC, or tokenized treasuries) on Ethereum and mirror them 1:1 as CIP-56 assets on Canton.</p><h3 id="unified-wallet-workflows">Unified wallet workflows</h3><p>By translating ERC-20 commands to CIP-56, teams can manage Canton-resident assets using MetaMask and existing internal signing tools.</p><h3 id="accelerated-market-entry">Accelerated market entry</h3><p>Deploy your asset onto Canton today using your existing EVM logic and expertise, effectively skipping months of development latency and technical debt.</p><h2 id="claim-your-first-mover-advantage">Claim your first-mover advantage</h2><p>The window to be an early mover on the world&#x2019;s most private institutional ledger is closing. We provide the support your team needs to move assets onto Canton without changing your internal security rules or retraining your staff.</p><p><strong>Let&#x2019;s discuss your project.</strong> We are ready to scope your engagement and start building immediately. Skip the rewrite and start integrating today.</p><p>&#x2709;&#xFE0F;&#xA0;<a href="https://infra.chainsafe.io/contact?ref=blog.chainsafe.io">Contact ChainSafe</a></p>]]></content:encoded></item><item><title><![CDATA[Automate Canton Network Development with Daml Autopilot]]></title><description><![CDATA[ChainSafe's DAML Autopilot features 3,600+ compiler-validated patterns, built-in safety checks, and CI automation to streamline DAML smart contract development.]]></description><link>https://blog.chainsafe.io/daml-autopilot/</link><guid isPermaLink="false">69948033e7edb42b55b58f9d</guid><category><![CDATA[Canton Network]]></category><dc:creator><![CDATA[Evan Wells]]></dc:creator><pubDate>Wed, 18 Mar 2026 13:16:16 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2026/03/Frame-1799--3-.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2026/03/Frame-1799--3-.png" alt="Automate Canton Network Development with Daml Autopilot"><p>Today, we are announcing a complete overhaul of the Canton Network development workflow. </p><p>ChainSafe is proud to launch <strong>Daml Autopilot</strong>, a tool that includes the first Model Context Protocol (MCP) server for the Canton Network, including CI automations to kickstart app development.</p><p>With built-in safety and compliance verification, Daml Autopilot acts as both a safety layer and an automated creation platform for any Daml smart contract project. Our assistant is grounded in 3,600+ verified canonical patterns from Canton Network to ensure your code is sound.</p><div class="kg-card kg-button-card kg-align-center"><a href="https://daml-autopilot.chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=DAML-Autopilot&amp;utm_content=blog-button" class="kg-btn kg-btn-accent">Launch Daml Autopilot</a></div><h2 id="cantons-brand-new-development-workflow">Canton&apos;s brand-new development workflow</h2><p>For developers new to Daml or the Canton ecosystem, the learning curve is steep.</p><p>Canton Network&apos;s environment requires developers to be both code specialists and compliance experts simultaneously, a challenging (and often error-prone) balancing act.</p><p>ChainSafe has designed a dynamic context layer that sits directly between your Daml smart contracts and the Canton Network. LLMs alone are not intelligent by design. They are extremely good at completing patterns, but lack the guardrails to prevent probabilistic guesses from becoming production liabilities.&#xA0;</p><p>Daml Autopilot grounds every suggestion in compiler-validated patterns, not statistical hunches. It handles the complexity and surfaces potential issues early, so your team can focus on core business logic.</p><h2 id="how-the-daml-autopilot-mcp-server-works">How the Daml Autopilot MCP Server works</h2><ul><li>AI-powered Daml development assistant with progressive context building.</li><li>Access 3,600+ verified canonical patterns with semantic similarity search.</li><li>MCP Server for LLM-based authorization model extraction and code analysis.</li></ul><p>Most AI coding assistants rely on probability-based guesses. In financial systems, &#x201C;probably right&#x201D; means &#x201C;definitely vulnerable.&#x201D; Daml Autopilot treats code generation like a manufacturing process. It enforces safety gates that require patterns to compile and contain safety annotations before recommending them to you.</p><p>Daml Autopilot uses an MCP server that connects directly to the Integrated Development Environment (IDE) of your choice (e.g. Cursor, Claude Code, etc). It&#x2019;s grounded in a Daml-safe-by-construction philosophy, unlike generic LLMs. </p><p>Instead of hallucinating syntax, the MCP server leverages a library of <strong>3,600+</strong> compiler-validated patterns sourced directly from official Daml and Canton repositories and documentation.</p><p>Using Daml Autopilot is a seamless, chat-based experience, but under the hood, the MCP Server includes two unique tools that assist in code development: </p><p>Daml Reason &amp; Daml Automator.</p><h3 id="daml-reason">Daml Reason</h3><p>Daml Reason handles all pattern recognition, authorization model analysis, and safety reasoning. Daml Reason has built-in progressive context building, meaning it constantly updates its knowledge base from the latest versions of the Canton and Daml documentation. </p><p>Daml Reason ensures minimal hallucinations. It only analyzes what it actually sees, providing a safety layer that catches authorization errors and compliance issues, helping your developers catch issues before code review.</p><h3 id="daml-automator">Daml Automator</h3><p>Daml Automator guides developers through environments, CI/CD, and builds. Daml Automator is the component that creates and executes the code in local test environments before finalizing and pushing it. </p><p>Client-side orchestration enables developers to monitor code development in progress, keeping them in control of their work. No surprises, just instructions.</p><p>When you ask for help, the server executes a rigorous safety process:&#xA0;</p><ol><li><strong>Pattern Matching:</strong> It searches established patterns for asset swaps, bonds, or options.</li><li><strong>Logic Validation:</strong> It runs <code>validate_daml_business_logic</code> to check your code against compiler-validated structures.</li><li><strong>Security Extraction:</strong> It utilizes <code>debug_authorization_failure</code> to analyze why a transaction failed, providing fixes based on Daml&#x2019;s internal authorization model. It will <em>not</em> rely on random guesses.</li></ol><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F4A1;</div><div class="kg-callout-text">Note: Daml Autopilot is a development assistant, not a substitute for independent review. All generated code must be reviewed and validated by your team before use. <br><br>We do not guarantee the accuracy, reliability, or production-readiness of the code. You are the pilot. This is the Autopilot.</div></div><h2 id="how-ci-automation-works">How CI Automation Works</h2><ul><li>Production-ready GitHub Actions for Daml and Canton CI workflows</li><li>Eliminate manual setup with one-line installations</li><li>Automate testing with Daml Sandbox environments</li></ul><p>As a bonus, we are also providing CI Automations for those of you who work in a standalone capacity.</p><p>CI Automation eliminates the manual labour of installing Daml or Canton SDKs and configuring sandbox nodes for every new contributor. Instead, replace the tedious setup time with GitHub Actions that automatically standardize your pipeline.</p><p><strong>Skip the pain.</strong> Drop these workflows into your repository and get automated Daml testing, builds, and sandbox environments on every push.</p><p>CI Automation does not require the Daml Autopilot MCP server. Together, though, they provide the best Daml development experience possible. Perfect for teams who want fast CI/CD without the steep learning curve.</p><h2 id="pricing">Pricing</h2><p>The Daml Autopilot MCP Server uses x402 micropayments in Canton Coin to cover operational costs (API calls, cloud infrastructure, blockchain transaction fees). You&apos;re paying for the infrastructure that processes your requests, not for code quality, accuracy, or reliability.</p><p>Fund your Canton Coin wallet, connect it when prompted, and you&apos;re ready to go. Each request costs a fraction of a cent, so even heavy usage is affordable.</p><p>The code analysis service is provided <strong>as-is</strong> without warranty. All generated code must be independently reviewed. See our <a href="https://daml-autopilot.chainsafe.io/terms?ref=blog.chainsafe.io" rel="noreferrer">Terms of Service</a> for details.</p><h2 id="become-a-daml-power-user">Become a Daml power-user</h2><p>Upgrade your Canton workflow. Instantly integrate Daml Autopilot to add a context-aware safety layer to your local environment. Accelerate your learning curve, automate your first round of safety checks, and start shipping faster.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.chainsafe.io/content/images/2026/02/DAML-automater-environ-setup-2.png" width="2000" height="1125" loading="lazy" alt="Automate Canton Network Development with Daml Autopilot" srcset="https://blog.chainsafe.io/content/images/size/w600/2026/02/DAML-automater-environ-setup-2.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2026/02/DAML-automater-environ-setup-2.png 1000w, https://blog.chainsafe.io/content/images/size/w1600/2026/02/DAML-automater-environ-setup-2.png 1600w, https://blog.chainsafe.io/content/images/size/w2400/2026/02/DAML-automater-environ-setup-2.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.chainsafe.io/content/images/2026/02/DAML-reason-authpatterns-1.png" width="2000" height="1125" loading="lazy" alt="Automate Canton Network Development with Daml Autopilot" srcset="https://blog.chainsafe.io/content/images/size/w600/2026/02/DAML-reason-authpatterns-1.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2026/02/DAML-reason-authpatterns-1.png 1000w, https://blog.chainsafe.io/content/images/size/w1600/2026/02/DAML-reason-authpatterns-1.png 1600w, https://blog.chainsafe.io/content/images/size/w2400/2026/02/DAML-reason-authpatterns-1.png 2400w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.chainsafe.io/content/images/2026/02/DAML-semantic-search-1.png" width="2000" height="1124" loading="lazy" alt="Automate Canton Network Development with Daml Autopilot" srcset="https://blog.chainsafe.io/content/images/size/w600/2026/02/DAML-semantic-search-1.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2026/02/DAML-semantic-search-1.png 1000w, https://blog.chainsafe.io/content/images/size/w1600/2026/02/DAML-semantic-search-1.png 1600w, https://blog.chainsafe.io/content/images/size/w2400/2026/02/DAML-semantic-search-1.png 2400w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption><p><span style="white-space: pre-wrap;">Daml Autopilot in action. Left to right: Daml automator guiding environment setup; Analyzing authorization patterns; Finding similar patterns with semantic search.</span></p></figcaption></figure><div class="kg-card kg-callout-card kg-callout-card-white"><div class="kg-callout-emoji">&#x2708;&#xFE0F;</div><div class="kg-callout-text"><a href="https://daml-autopilot.chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=DAML-Autopilot" rel="noreferrer">Launch Daml Autopilot</a></div></div><div class="kg-card kg-callout-card kg-callout-card-white"><div class="kg-callout-emoji">&#x1F4C3;</div><div class="kg-callout-text"><a href="https://daml-autopilot.chainsafe.io/terms?ref=blog.chainsafe.io" rel="noreferrer">Terms of Service</a></div></div><div class="kg-card kg-callout-card kg-callout-card-white"><div class="kg-callout-emoji">&#x1F91D;</div><div class="kg-callout-text"><a href="https://join.slack.com/share/enQtMTA4MzgxMzg2Njk5MDUtNTdkZTI0ZmQxMTdmMWU3MGNhMDY0MjUxMDcxMWVmNzMwZGQwMjE2MDRiYzk5ZjBlNjM0MzM0YjhjZDJmMmJkZA?ref=blog.chainsafe.io" rel="noreferrer">Join slack support channel</a></div></div><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2026/02/ChainSafe_Logo_text_right.png" class="kg-image" alt="Automate Canton Network Development with Daml Autopilot" loading="lazy" width="2000" height="576" srcset="https://blog.chainsafe.io/content/images/size/w600/2026/02/ChainSafe_Logo_text_right.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2026/02/ChainSafe_Logo_text_right.png 1000w, https://blog.chainsafe.io/content/images/size/w1600/2026/02/ChainSafe_Logo_text_right.png 1600w, https://blog.chainsafe.io/content/images/2026/02/ChainSafe_Logo_text_right.png 2000w" sizes="(min-width: 720px) 720px"></figure><h2 id="about-chainsafe">About ChainSafe</h2><p>ChainSafe is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development &amp; operations, and co-development.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, and more, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[Defending Lodestar Against NPM Supply Chain Attacks]]></title><description><![CDATA[How Lodestar secures hundreds of thousands of staked ETH with TypeScript.]]></description><link>https://blog.chainsafe.io/defending-lodestar/</link><guid isPermaLink="false">69665eeae7edb42b55b58d58</guid><category><![CDATA[Ethereum]]></category><category><![CDATA[Lodestar]]></category><dc:creator><![CDATA[Phil Ngo]]></dc:creator><pubDate>Wed, 14 Jan 2026 16:51:49 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2026/01/Frame-43.svg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2026/01/Frame-43.svg" alt="Defending Lodestar Against NPM Supply Chain Attacks"><p>It was a concerning metric to know that when&#xA0;<a href="https://collective.flashbots.net/t/a-consensus-layer-client-diversity-snapshot/5431?ref=blog.chainsafe.io" rel="noopener">Flashbots publicized data on how node operators&apos; client diversity changed throughout the year</a>, we felt it was important to reiterate the importance of&#xA0;<strong>staking on multi-node combination setups</strong>&#xA0;or outright&#xA0;<strong>primarily running minority clients</strong>&#xA0;to protect the delegated Ethereum stake of your clients. It has always been a difficult question to answer for us at Lodestar, but if node operators were, in fact, reconfiguring their node infrastructure to select a new primary consensus client,&#xA0;<em>why were they considering further centralizing their stake in majority clients, putting further undue risk on Ethereum?</em></p><p>In addition, throughout our time meeting with large node operators at Devconnect in 2025, it was noted that Lodestar (a TypeScript consensus client currently transitioning to the Zig programming language) was often misconstrued as being unsafe due to the nature of the ecosystem we currently support on mainnet.&#xA0;<strong>We want to reassure those who passively dismiss Lodestar as being an unsafe client to reconsider</strong>&#xA0;and allow us to demonstrate why our client&apos;s priority on safety surpasses the risk of switching to a majority client.</p><p>The JavaScript and TypeScript ecosystem has faced unprecedented supply chain attacks in recent years, raising legitimate concerns about the security of production systems built on NPM dependencies. Lodestar operates critical blockchain infrastructure securing millions of dollars in staked Ethereum today through ChainSafe. This makes the question of supply chain security not just important&#x2014;it&apos;s existential. Yet, despite running on the Node.js runtime and depending on the node package manager ecosystem, Lodestar implements a comprehensive, multi-layered security strategy that makes it remarkably resilient against supply chain attacks.</p><p>This blog post explains why Lodestar is safe for node operators to use in production, even in the face of sophisticated NPM supply chain threats. We&apos;ll examine real-world attacks that have compromised the ecosystem, detail the specific protections Lodestar employs, and demonstrate how our security-first architecture provides robust defense-in-depth against malicious dependencies.</p><h2 id="a-history-of-npm-supply-chain-attacks">A History of NPM Supply Chain Attacks</h2><p>Before diving into Lodestar&apos;s defenses, it&apos;s crucial to understand the threat landscape. The NPM ecosystem has experienced a dramatic escalation in both the frequency and sophistication of supply chain attacks over the past several years. Most recently,&#xA0;<a href="https://unit42.paloaltonetworks.com/NPM-supply-chain-attack/?ref=blog.chainsafe.io" rel="noopener">the &quot;Shai-Hulud&quot; Worm</a>&#xA0;and a&#xA0;<a href="https://www.paloaltonetworks.com/blog/cloud-security/NPM-supply-chain-attack/?ref=blog.chainsafe.io" rel="noopener">phishing campaign against the maintainer &quot;qix&quot;</a>.</p><h3 id="notable-npm-compromises-learning-from-the-past">Notable NPM Compromises: Learning from the Past</h3><p><a href="https://snyk.io/blog/malicious-code-found-in-npm-package-event-stream/?ref=blog.chainsafe.io" rel="noopener"><strong>The event-stream Incident (2018)</strong></a>: Perhaps the most infamous NPM supply chain attack began when the maintainer of event-stream, a popular package with 2 million weekly downloads, transferred ownership to a malicious actor who appeared to be a legitimate contributor. Over 2.5 months, this attacker added a dependency called flatmap-stream, containing obfuscated malicious code specifically targeting the Copay Bitcoin wallet. The attack remained undetected for months, resulting in approximately 8 million downloads of the compromised package before discovery.</p><p>This incident revealed a critical vulnerability: maintainer fatigue and social engineering could compromise even well-established packages. The malicious code was surgically targeted, demonstrating that attackers invest significant resources in understanding their targets.</p><p><a href="https://checkmarx.com/blog/uaparser-js-attack-preparations/?ref=blog.chainsafe.io" rel="noopener"><strong>ua-parser-js Compromise (October 2021)</strong></a>: In October 2021, the widely used ua-parser-js package (7 million weekly downloads) was compromised when attackers hijacked the maintainer&apos;s NPM account. Three malicious versions were published, containing cryptocurrency miners and credential-stealing trojans. The attack was live for approximately&#xA0;<strong>4 hours</strong>&#xA0;before detection, during which the compromised versions were downloaded thousands of times.</p><p>Forensic analysis revealed that threat actors had advertised access to a developer account for an NPM package matching ua-parser-js&apos;s profile on Russian hacking forums for $20,000 two weeks before the attack, suggesting a deliberate targeting of high-value packages.</p><p><a href="https://www.armorcode.com/blog/inside-the-september-2025-NPM-supply-chain-attack?ref=blog.chainsafe.io" rel="noopener"><strong>The September 2025 Phishing Attacks</strong></a>: On September 8, 2025, the JavaScript ecosystem experienced one of its most significant supply chain attacks when sophisticated phishing campaigns compromised multiple maintainer accounts. Attackers registered the domain &quot;NPMjs.help&quot; and sent urgent security notifications claiming 2FA updates were required. Josh Junon, maintainer of critical JavaScript infrastructure packages, described receiving what appeared to be legitimate emails during a stressful morning&#x2014;a perfect example of how social engineering exploits human factors.</p><p>The attack compromised at&#xA0;<a href="https://www.reddit.com/r/programming/comments/1nbqt4d/largest_npm_compromise_in_history_supply_chain/?ref=blog.chainsafe.io" rel="noopener">least 18 widely-used packages</a>,&#xA0;including debug, chalk, and ansi-styles, collectively receiving over 2.6 billion weekly downloads. The malicious code was active for only about&#xA0;<strong>2 hours</strong>&#xA0;before being removed. Still, it targeted cryptocurrency transactions using sophisticated address replacement algorithms that employed the Levenshtein distance to create similar-looking addresses.</p><p><strong>Shai-Hulud: The Self-Replicating Worm (2025)</strong>: Perhaps most concerning is the Shai-Hulud campaign, which represents an evolution in attack methodology. This self-replicating worm specifically harvests NPM publishing credentials to automatically spread itself to other packages. By targeting the pre-install phase, it executes before static scanning tools can analyze the code, and it requires zero human interaction beyond the initial&#xA0;<code>npm install</code>&#xA0;command.</p><p>The Shai-Hulud 2.0 campaign has compromised hundreds of packages, including the widely used @ctrl/tinycolor library, which receives millions of weekly downloads. The automated propagation mechanism means the scope continues to expand, making this an ongoing threat rather than a discrete incident.</p><h3 id="common-attack-patterns-and-vulnerabilities">Common Attack Patterns and Vulnerabilities</h3><p>Analysis of these incidents reveals consistent attack vectors that NPM&apos;s default behavior enables:</p><ol><li><strong>Account compromise through phishing or credential theft</strong>: Attackers increasingly target maintainer accounts rather than exploiting code vulnerabilities</li><li><strong>Abuse of postinstall scripts</strong>: Historically, over 90% of malicious NPM packages used postinstall or other lifecycle scripts to execute code immediately upon installation</li><li><strong>Transitive dependencies</strong>: Malicious code often enters through dependencies-of-dependencies, which developers rarely audit</li><li><strong>Speed as an attack enabler</strong>: The NPM ecosystem&apos;s default &quot;always install latest&quot; behavior means malicious packages propagate to production systems within minutes of publication</li><li><strong>Detection windows</strong>: Most compromised packages are discovered and removed within 1-4 hours, but that&apos;s often enough time for widespread installation</li></ol><h2 id="lodestars-multi-layered-defense-strategy">Lodestar&apos;s Multi-Layered Defense Strategy</h2><p>Understanding these threats, Lodestar has implemented a comprehensive security architecture that goes far beyond simply hoping our dependencies remain secure. Our approach creates multiple independent layers of defense, ensuring that even if one layer fails, others provide protection.</p><p>A&#xA0;<a href="https://devlog.lodestar.casa/mitigating-supply-chain-attacks?ref=blog.chainsafe.io" rel="noopener">TL;DR of some of these mitigations</a>&#xA0;are explained in our new <a href="https://devlog.lodestar.casa/?ref=blog.chainsafe.io" rel="noreferrer">Lodestar Devlog.</a></p><h3 id="layer-1-pnpm-package-manager%E2%80%94not-standard-npm">Layer 1: pNPM Package Manager&#x2014;Not Standard NPM</h3><p>One of the most significant security decisions made recently in Lodestar&apos;s architecture is our&#xA0;<a href="https://github.com/ChainSafe/lodestar/pull/8646?ref=blog.chainsafe.io" rel="noopener">use of&#xA0;<strong>pNPM</strong>&#xA0;rather than standard NPM for dependency management</a>. This isn&apos;t just a preference&#x2014;it&apos;s a fundamental security choice that provides numerous advantages against supply chain attacks.</p><p><strong>Why pNPM Matters for Security</strong>: While NPM and yarn have improved their security features over time, pNPM was&#xA0;<a href="https://pnpm.io/next/supply-chain-security?ref=blog.chainsafe.io" rel="noopener">designed from the ground up with a security-conscious architecture</a>. Its content-addressable storage model and strict dependency resolution provide inherent protections that other package managers lack.</p><p><strong>Automatic Postinstall Script Blocking</strong>: Since pNPM v10, postinstall scripts are&#xA0;<strong>disabled by default</strong>&#xA0;in dependencies. This single feature eliminates approximately 90% of historical NPM supply chain attacks, which relied on automatically executing malicious code during installation.</p><p>When Lodestar does need to allow build scripts for trusted dependencies, we explicitly whitelist them using the&#xA0;<code>allowBuilds</code>&#xA0;configuration. This means if a previously safe dependency is compromised and suddenly adds a postinstall script, it won&apos;t execute, providing immediate protection against precisely the type of attack that compromised ua-parser-js.</p><p><strong>Preventing Lockfile URL Injection Attacks</strong>: Before using pNPM,&#xA0;<a href="https://github.com/ChainSafe/lodestar/pull/6424?ref=blog.chainsafe.io" rel="noopener">Lodestar would use lockfile-lint in our CI build pipeline</a>&#xA0;to detect security issues on our yarn.lock file. Using pNPM architecture now prevents this from happening natively because pNPM does not store the download URL for registry packages in its lockfile by default. With the pnpm-lock.yaml file, there isn&apos;t a URL to point it to a malicious source.</p><p><strong>Content-Addressable Storage with Integrity Verification</strong>: Unlike NPM&apos;s traditional node_modules structure, pNPM uses a content-addressable storage system where packages are stored once globally and hard-linked into projects. Each package is verified against SHA-512 integrity hashes in the lock file, making it virtually impossible for attackers to silently replace package contents.</p><p>If a malicious actor somehow gained access to a package and modified its contents without changing the version number (a sophisticated attack vector), pNPM&apos;s integrity verification would detect the mismatch and refuse installation.</p><h3 id="layer-2-the-minimumreleaseage-protection%E2%80%94a-time-based-defense">Layer 2: The minimumReleaseAge Protection&#x2014;A Time-Based Defense</h3><p>In September 2025, pNPM v10.16 introduced a groundbreaking security feature that&#xA0;<a href="https://codenote.net/en/posts/pnpm-minimumreleaseageexclude-for-emergency-vulnerability-fixes/?ref=blog.chainsafe.io" rel="noopener">directly addresses the speed problem in NPM supply chain attacks</a>:&#xA0;<strong>minimumReleaseAge</strong>.</p><p>This setting defines the minimum number of minutes that must pass after a package version is published before pNPM will install it. The Lodestar team now employs this feature to introduce a deliberate delay between publication and installation.</p><p><strong>How minimumReleaseAge Creates a Protective Buffer</strong>: Looking at the attack timeline data, we see a clear pattern: the September 2025 attack was live for 2 hours, ua-parser-js for 4 hours, and even the most successful attacks are typically discovered within 24 hours. By setting&#xA0;<code>minimumReleaseAge: 2880</code>&#xA0;(48 hours), we create a buffer during which:</p><ol><li>Security researchers and automated scanning tools detect malicious code</li><li>The NPM security team removes compromised versions</li><li>The community raises alerts and creates security advisories</li><li>Lodestar&apos;s dependencies remain on known-safe versions</li></ol><p><strong>Practical Impact</strong>: This simple configuration would have&#xA0;<strong>completely prevented</strong>&#xA0;Lodestar from being affected by the September 2025 attack (2-hour window), the ua-parser-js compromise (4-hour window), and the majority of other supply chain attacks.&#xA0;<a href="https://www.linkedin.com/pulse/pnpms-new-delay-setting-matters-its-just-start-brian-fox-mktne/?ref=blog.chainsafe.io" rel="noopener">As cybersecurity expert Brian Fox noted</a>, even a 24-hour delay &quot;dramatically lowers the chance you&apos;ll ever install a compromised package.&quot;</p><p><strong>Flexibility for Urgent Security Patches</strong>: Critics might argue that delaying updates could prevent timely security patches. pNPM addresses this through&#xA0;<code>minimumReleaseAgeExclude</code>, which allows us to whitelist specific packages that should update immediately. For critical security dependencies or our own ChainSafe-maintained packages, we can bypass the delay while maintaining protection for the broader dependency tree.&#xA0;<strong>Lodestar currently does not whitelist any specific packages, and we&apos;ve rarely found the need to urgently update dependencies, thanks to our conservative dependency tree and lock files, as explained below.</strong></p><h3 id="layer-3-lock-files%E2%80%94immutable-dependency-resolution">Layer 3: Lock Files&#x2014;Immutable Dependency Resolution</h3><p>Lock files are often misunderstood or underutilized, but they represent a critical security boundary in dependency management. Lodestar&apos;s&#xA0;<code>pnpm-lock.yaml</code>&#xA0;file serves as a&#xA0;<strong>cryptographic contract</strong>&#xA0;defining exactly which package versions are installed.</p><p><strong>How Lock Files Prevent Supply Chain Attacks</strong>: When Lodestar&apos;s CI/CD pipeline builds the client, it uses&#xA0;<code>pnpm install --frozen-lockfile</code>, which:</p><ol><li>Installs&#xA0;<strong>only</strong>&#xA0;the exact versions specified in the lock file</li><li>Verifies each package against its SHA-512 integrity hash</li><li>Refuses to proceed if any package hash doesn&apos;t match</li><li>Prevents &quot;unexpected&quot; updates that could introduce malicious code</li></ol><p>This means even if an attacker compromises a dependency and publishes a malicious version, Lodestar won&apos;t install it unless a developer explicitly updates the lock file&#x2014;providing a critical checkpoint for human review.</p><p><strong>Lock Files as Audit Trails</strong>: Beyond security, lock files create a transparent audit trail. Every dependency change generates a diff in version control, allowing reviewers to see exactly what packages changed, when, and in which pull request. This visibility is essential for catching suspicious updates.</p><p><strong>Protecting Against Weak Hash Algorithms</strong>: Older NPM lock files used SHA-1 hashing, which is vulnerable to collision attacks. pNPM&apos;s lock files use SHA-512, a cryptographically strong algorithm that makes it computationally infeasible for attackers to create a malicious package with the same hash as a legitimate one.</p><h3 id="layer-4-lean-dependency-tree-with-conservative-upgrades">Layer 4: Lean Dependency Tree with Conservative Upgrades</h3><p>One of Lodestar&apos;s most important, yet often overlooked, security features is our&#xA0;<strong>intentionally minimal dependency footprint</strong>&#xA0;and&#xA0;<strong>conservative upgrade philosophy</strong>.</p><p><strong>Principle of Minimal Dependencies</strong>: Every dependency is a potential attack vector. Lodestar&apos;s monorepo architecture allows us to share code between packages without creating unnecessary external dependencies. By implementing core functionality ourselves rather than pulling in third-party packages, we dramatically reduce our attack surface.</p><p>This contrasts sharply with the &quot;NPM install all the things&quot; culture that has led to projects with thousands of transitive dependencies&#x2014;each one a potential entry point for malicious code.</p><p><strong>Conservative Update Strategy</strong>: While staying current with security patches is crucial, Lodestar doesn&apos;t chase every minor version bump. Our update philosophy prioritizes stability and thorough review:</p><ol><li><strong>Security updates</strong>&#xA0;are applied promptly after verification</li><li><strong>Minor updates</strong>&#xA0;are batched and tested comprehensively</li><li><strong>Major updates</strong>&#xA0;undergo extensive testing and code review</li><li><strong>Breaking changes</strong>&#xA0;are carefully evaluated before adoption</li></ol><p>This approach means Lodestar doesn&apos;t automatically pull in the &quot;latest and greatest&quot; version of every dependency the moment it&apos;s published&#x2014;providing natural immunity against attacks that target newly-published versions.</p><p><strong>Monorepo Advantages for Dependency Management</strong>: Lodestar&apos;s monorepo structure managed by pNPM workspaces provides additional security benefits:</p><ul><li><strong>Centralized dependency versioning</strong>: All packages use the identical versions of shared dependencies, reducing the complexity of security auditing</li><li><strong>Workspace protocol</strong>: Internal package dependencies use&#xA0;<code>workspace:*</code>, ensuring they resolve to local versions and preventing dependency confusion attacks</li><li><strong>Single point of dependency review</strong>: Changes to dependencies affect the entire project, making them visible and subject to team review</li></ul><h3 id="layer-5-institutional-security-practices">Layer 5: Institutional Security Practices</h3><p>Beyond tooling, Lodestar benefits from ChainSafe&apos;s institutional commitment to security best practices that extend across the entire development lifecycle.</p><p><strong>Continuous Integration Security Checks</strong>: Every pull request to Lodestar triggers automated security scans:</p><ul><li>Dependency vulnerability scanning detects known CVEs</li><li>License compliance checks ensure no malicious license changes</li><li>Automated testing verifies no regression or unexpected behavior</li><li>Code review by experienced protocol engineers on the team</li></ul><p><strong>Production Installation Guidance</strong>: Importantly, Lodestar&apos;s documentation&#xA0;<a href="https://chainsafe.github.io/lodestar/run/getting-started/installation?ref=blog.chainsafe.io#install-from-npm-not-recommended" rel="noopener"><strong>actively discourages</strong>&#xA0;using&#xA0;<code>npm install</code>&#xA0;for production deployments</a>. Instead, we recommend:</p><ol><li><strong>Docker containers</strong>: Pre-built, verified images from Docker Hub</li><li><strong>Build from source</strong>: Clone the repository and build directly</li><li><strong>Official binaries</strong>: Download signed releases from GitHub</li></ol><p>This guidance acknowledges that, despite our defensive measures, eliminating all NPM supply chain risk requires controlling the entire build and distribution pipeline.</p><p><strong>Two-Factor Authentication and Access Controls</strong>: All Lodestar developers with publishing access to NPM packages are required to use two-factor authentication. This directly addresses the attack vector that compromised the September 2025 packages. Additionally, all of our published packages must have reviewer approval, and no developer can accidentally or maliciously push code to main branches.</p><p><strong>Trustless Publishing and Provenance</strong>: Lodestar packages are now published trustlessly to NPM through OpenID Connect (OIDC), as NPM has forced revocation on its classic long-lived access tokens.</p><h3 id="layer-6-community-driven-transparency-and-client-diversity">Layer 6: Community-Driven Transparency and Client Diversity</h3><p>Lodestar&apos;s open-source nature and role in Ethereum&apos;s client diversity strategy provide unique security advantages that proprietary software cannot match.</p><p><strong>Open Source Transparency</strong>: Every line of code, every dependency, and every change to Lodestar is publicly visible on GitHub. This radical transparency means:</p><ul><li>Security researchers can audit our dependency choices</li><li>The community can report suspicious changes</li><li>Malicious modifications would be immediately visible</li><li>Trust is built on verifiability, not blind faith</li></ul><p><strong>Client Diversity as a Security Feature</strong>: Lodestar is one of six production-ready Ethereum consensus clients, and the only one written in TypeScript. This diversity is itself a security feature: if a bug or vulnerability affects one client, the Ethereum network continues operating because validators using other clients remain functional.</p><p>The same principle applies to supply chain attacks. If an NPM supply chain attack specifically targeted Rust or Go dependencies (affecting other clients in different languages), Lodestar would be unaffected. Conversely, if a TypeScript-specific attack occurred, the network&apos;s other clients provide continuity.</p><p><strong>Community Vigilance</strong>: The Ethereum community actively monitors client health and security. With node operators running Lodestar in production, from solo stakers to institutional operators, any anomalous behavior or suspected compromise would be quickly detected and reported.</p><h2 id="why-typescript-on-nodejs-is-actually-an-advantage">Why TypeScript on Node.js is Actually an Advantage</h2><p>Some might argue that using TypeScript on Node.js creates inherent supply chain risks compared to compiled languages like Rust or Go.&#xA0;<strong>However, this perspective overlooks several key advantages that TypeScript offers for blockchain development.</strong></p><p><a href="https://clouddevs.com/typescript/cryptocurrency/?ref=blog.chainsafe.io" rel="noopener"><strong>Type Safety for Critical Infrastructure</strong></a>: TypeScript&apos;s static type system catches entire classes of bugs at compile time that would become runtime errors in JavaScript. For blockchain infrastructure handling real financial value, this additional verification layer is crucial.</p><p>Smart contracts and consensus clients operate in an environment where bugs can be catastrophic, resulting in the loss of funds, breaking consensus, or enabling exploits. TypeScript&apos;s type-checking provides an additional safety net that reduces these risks.</p><p><strong>Accessible Security Auditing</strong>: TypeScript code is significantly more readable and auditable than compiled languages. Security researchers, external auditors, and community contributors can more easily understand and verify Lodestar&apos;s implementation, improving the quality of security reviews.</p><p><strong>Ecosystem Maturity</strong>: The size of the TypeScript/JavaScript ecosystem means that security tools, scanners, and monitoring solutions are extremely mature. Projects like Snyk, Socket Security, and GitHub&apos;s Dependabot provide sophisticated supply chain security specifically for NPM packages.</p><p><strong>Developer Accessibility</strong>: TypeScript is one of GitHub&apos;s most popular languages, making it accessible to a broad developer community. This accessibility means more eyes on the code, more potential contributors for security improvements, and a larger pool of developers who can audit and verify Lodestar&apos;s security.</p><h2 id="practical-recommendations-for-node-operators">Practical Recommendations for Node Operators</h2><p>For node operators considering Lodestar, here are practical steps to maximize security:</p><ol><li><strong>Use Docker, Signed Binaries or Build from Source</strong>: For production deployments, use ChainSafe&apos;s official Docker images, run GitHub-signed binaries or build Lodestar from source rather than using&#xA0;<code>npm install</code>.</li><li><strong>Enable Dependency Scanning</strong>: Use tools like&#xA0;<code>pnpm audit</code>&#xA0;or GitHub Dependabot to monitor for known vulnerabilities in dependencies.</li><li><strong>Review Lock File Changes</strong>: When updating Lodestar, carefully review changes to&#xA0;<code>pnpm-lock.yaml</code>&#xA0;to understand what dependencies changed.</li><li><strong>Follow Our Channels</strong>:&#xA0;<a href="https://x.com/lodestar_eth?ref=blog.chainsafe.io" rel="noopener">Follow Lodestar&apos;s X account</a>&#xA0;and&#xA0;<a href="https://github.com/ChainSafe/lodestar/security/advisories?ref=blog.chainsafe.io" rel="noopener">GitHub security advisories for Lodestar</a>.</li><li><strong>Contribute to Client Diversity</strong>: By choosing Lodestar alongside other clients, you strengthen the entire Ethereum network&apos;s resilience against client-specific bugs and attacks.</li></ol><h2 id="why-typescriptlodestar-isnt-safe-is-irrationally-justified">Why TypeScript/Lodestar Isn&apos;t Safe is Irrationally Justified</h2><p>Supply chain security encompasses a spectrum of risk management strategies, rather than being a binary proposition of <em>safe</em> or <em>unsaf</em>e. While no system can claim absolute immunity from sophisticated attacks, Lodestar&apos;s multi-layered defense architecture demonstrates that a TypeScript/Node.js infrastructure can achieve security postures comparable to or exceeding those of other compiled language alternatives.</p><p>By combining pNPM&apos;s inherent security advantages with time-based protections through minimumReleaseAge, cryptographic integrity verification via lock files, minimal dependencies, conservative upgrade practices, and the transparency of open-source development, Lodestar has constructed a robust defense-in-depth strategy against NPM supply chain attacks.</p><p>The Ethereum network&apos;s security, and the billions of dollars it secures, depends on the resilience of its consensus clients. Lodestar&apos;s security-focused architecture, institutional practices, and community-driven transparency make it a safe, reliable choice for node operators seeking to participate in Ethereum&apos;s consensus&#xA0;<strong>while contributing to critical client diversity.</strong>&#xA0;If you don&apos;t believe us, you can&#xA0;<a href="https://explorer.rated.network/o/ChainSafe%20-%20Lido?network=mainnet&amp;timeWindow=30d&amp;idType=poolShare&amp;ref=blog.chainsafe.io" rel="noopener">check our statistics on Rated.Network</a>&#xA0;as we continue to&#xA0;<a href="https://operators.lido.fi/module/1/26?ref=blog.chainsafe.io" rel="noopener">stake thousands of Ether as a Lido Node Operator</a>&#xA0;with Lodestar architecture.</p><p>The threat of supply chain attacks is real and evolving, but so are our defenses. Through continued vigilance, conservative dependency management, and leveraging the security features of modern tooling, like pNPM, Lodestar demonstrates that a TypeScript consensus client can operate at the highest levels of security, performance and reliability demanded by critical blockchain infrastructure.</p><h2 id="about-chainsafe">About ChainSafe</h2><p>ChainSafe is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development &amp; operations, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, and more, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[The Orbitor Public Gateway]]></title><description><![CDATA[Orbitor is a new IPFS public gateway by ChainSafe, offering region-aware, low-latency access to decentralized content across South America, Europe, and Asia-Pacific. Built for resilience, scale, and openness.]]></description><link>https://blog.chainsafe.io/orbitor-ipfs-announcement/</link><guid isPermaLink="false">6914bcbee7edb42b55b58cc1</guid><category><![CDATA[announcements]]></category><category><![CDATA[Filecoin]]></category><category><![CDATA[Infrastructure]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Tue, 09 Dec 2025 15:24:12 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/11/Frame-42964--3-.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/11/Frame-42964--3-.png" alt="The Orbitor Public Gateway"><p>We&#x2019;re excited to share that ChainSafe is rolling out Orbitor, a new gateway for <a href="https://docs.ipfs.tech/concepts/glossary/?ref=blog.chainsafe.io#mainnet">IPFS Mainnet</a>, the IPFS public network.</p><p>Gateways play a key role in making IPFS accessible. They translate HTTP requests to IPFS, fetch content from the IPFS public network, and return that content back via HTTP. This allows anyone access to the decentralized public IPFS network directly through a standard web browser, with no separate installation required.</p><p><strong>Regional endpoints:</strong></p><ul><li>LATAM: <a href="https://latam.orbitor.dev/?ref=blog.chainsafe.io">https://latam.orbitor.dev</a></li><li>EU: <a href="https://eu.orbitor.dev/?ref=blog.chainsafe.io">https://eu.orbitor.dev</a></li><li>APAC: <a href="https://apac.orbitor.dev/?ref=blog.chainsafe.io">https://apac.orbitor.dev</a></li></ul><p><strong>Global endpoint:</strong></p><p><code>https://ipfs.orbitor.dev/ipfs/<strong>[object CID here]</strong></code></p><h2 id="chainsafe-infrastructure">ChainSafe Infrastructure</h2><p>Through our continued work in open decentralized infrastructure, such as building and maintaining client implementations including <a href="https://forest.chainsafe.io/?ref=blog.chainsafe.io">Forest</a> (Filecoin), <a href="https://lodestar.chainsafe.io/?ref=blog.chainsafe.io">Lodestar</a> (Ethereum), and  <a href="https://gossamer.chainsafe.io/?ref=blog.chainsafe.io">Gossamer</a> (Polkadot) while also operating production-grade Filecoin bootstrap nodes, Ethereum validators, and infrastructure spanning multiple decentralized networks, we&#x2019;ve seen firsthand how geographic diversity significantly enhances both performance and resilience in public systems.</p><p>We&#x2019;re excited to support the IPFS network in its goal of accessible, decentralized content distribution by operating a new IPFS public gateway designed to deliver region-aware, low-latency access to IPFS.</p><h2 id="the-orbitor-gateway">The Orbitor Gateway</h2><p>Orbitor will operate across three regional endpoints: South America, Europe, and Asia-Pacific.&#xA0;</p><p>These endpoints are backed by highly available IPFS nodes and monitored for reliability, speed, and abuse protection. This approach reduces latency by serving content closer to users and increases robustness against regional network disruptions or DDoS events.</p><p>With fully integrated monitoring, scheduled GC-aware caching on upstream Kubo nodes, and abuse mitigation coordination with trusted ecosystem partners, the gateway is built to be a reliable and transparent participant in the broader IPFS network.</p><p>If we want IPFS to be accessible to everyday users, gateways can&#x2019;t be bottlenecks. They need to be open on-ramps built for scale, resilience, and public good.</p><p>Learn more about <a href="https://about.orbitor.dev/?ref=blog.chainsafe.io">Orbitor</a><br>Explore our <a href="https://chainsafe.grafana.net/public-dashboards/c86db279b53b49c49d29ec539b3b32a2?ref=blog.chainsafe.io">Observability Dashboards</a>
</p><h2 id="gateways-as-a-transition-tool">Gateways as a Transition Tool</h2><p>While gateways serve as an important bridge today, they&apos;re designed as a transition tool. IPFS is actively investing in browser-native approaches that eliminate the need for gateways or additional installs. With the recent launch of <a href="https://github.com/ipfs/service-worker-gateway?tab=readme-ov-file&amp;ref=blog.chainsafe.io#about">Helia&apos;s service worker support</a>, developers can now bundle IPFS directly into web applications, enabling peer-to-peer content access from any standard browser.</p><p>In the coming year, ChainSafe will be collaborating with the IPFS Foundation and community to determine the future role of gateways as these browser-native approaches mature.</p><h2 id="about-chainsafe">About ChainSafe</h2><p>ChainSafe is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development &amp; operations, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, and more, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a> | <a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a> | <a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a> | <a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a> | <a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[Lodestar's Proposal for Ethereum’s Glamsterdam Upgrade (EIP-7732 & FOCIL)]]></title><description><![CDATA[Ethereum has a unique property unlike any other Layer 1 blockchain. The community and the technological structure of Ethereum's protocol are meant to ensure we preserve its permissionlessness and decentralization ethos.]]></description><link>https://blog.chainsafe.io/lodestar-glamsterdam-upgrade-proposal/</link><guid isPermaLink="false">691394c5e7edb42b55b58cad</guid><dc:creator><![CDATA[Phil Ngo]]></dc:creator><pubDate>Thu, 13 Nov 2025 11:58:56 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/11/Frame-40.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/11/Frame-40.png" alt="Lodestar&apos;s Proposal for Ethereum&#x2019;s Glamsterdam Upgrade (EIP-7732 &amp; FOCIL)"><p>As the Fusaka hard fork nears deployment on mainnet, the Lodestar team continues to push towards their <a href="https://blog.chainsafe.io/lodestar-zig-and-javascript/">Zig transition</a> alongside participating in scoping the Glamsterdam hard fork. We made it clear that <a href="https://blog.chainsafe.io/lodestars-glamsterdam-headliner-vision/">Glamsterdam was an important upgrade in optimizing Ethereum&apos;s slot restructuring via EIP-7732</a> and the focus now shifts towards additional EIPs for inclusion.</p><h2 id="tldr">TL;DR</h2><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2025/11/glamsterdam-eip-rankings--1-.png" class="kg-image" alt="Lodestar&apos;s Proposal for Ethereum&#x2019;s Glamsterdam Upgrade (EIP-7732 &amp; FOCIL)" loading="lazy" width="1440" height="624" srcset="https://blog.chainsafe.io/content/images/size/w600/2025/11/glamsterdam-eip-rankings--1-.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2025/11/glamsterdam-eip-rankings--1-.png 1000w, https://blog.chainsafe.io/content/images/2025/11/glamsterdam-eip-rankings--1-.png 1440w" sizes="(min-width: 720px) 720px"></figure><ul><li><strong>EIP-7805:</strong> We strongly believe that censorship resistance needs to be included with Glamsterdam. We believe delaying Glamsterdam and/or simplifying ePBS so we can include a censorship resistant mechanism with ePBS is important for the protocol. We currently estimate an additional engineering effort of ~2 weeks for implementation of rebasing <a href="https://github.com/ethereum/consensus-specs/pull/4714?ref=blog.chainsafe.io">FOCIL on top of ePBS</a> for our client only</li><li><strong>EIP-7688:</strong> We support inclusion of compatible consensus data structures for reducing maintenance churn for important staking ecosystems relying on beacon data in smart contracts</li><li><strong>EIP-8045:</strong> We support inclusion of excluding slashed validators from proposing for chain health in non-finality situations, as demonstrated by the Holesky rescue</li><li><strong>EIP-8071:</strong> is overall a low priority as it doesn&apos;t create a security issue for the chain, even though it is a design flaw in how consolidations are used. It is however, a simple fix to an unintended consequence if we choose to include it</li><li>We overall do not support the following maintenance EIPs and would prefer to see a more thorough Meta-EIP to fix flaws in Heka:<ul><li><strong>EIP-8061:</strong> We do not support increasing churn limits until more research has been completed on tradeoffs and more consensus is formed by other parts of the community affected by changing staker dynamics. We believe in a security-first approach over staking UX and the better question to primarily ask is <em>&quot;what is a safe weak subjectivity period?&quot;</em> However, we would be open to having a separate churn limit for consolidation because its purpose is different from entry/exit queues</li><li><strong>EIP-8062:</strong> This is overall a low priority and has bad optics on burning/charging fees on the consensus layer, which has no precedence. In addition, there is no clear data to show that this will be impactful for 0x02 migration and consolidations are potentially lagging in adoption due to downstream governance delays from staking entities</li><li><strong>EIP-8068:</strong> We do not support neutral effective balance design because the proposed thresolds feel overly complex, the severity of the issue is unclear without data on its gamification and we would much prefer a broader plan for how to deal with consolidations rather than band-aid solutions such as this</li></ul></li></ul><h2 id="the-importance-of-censorship-resistance-why-focil-matters-now">The importance of censorship resistance: Why FOCIL matters now. </h2><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.chainsafe.io/censorship-resistance/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Understanding Censorship Resistance on Ethereum</div><div class="kg-bookmark-description">Censorship resistance ensures Ethereum remains open and permissionless. This blog explores what censorship resistance is, why it matters, and the ongoing efforts to keep Ethereum decentralized.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.chainsafe.io/content/images/size/w256h256/2023/11/Frame-1004-1.png" alt="Lodestar&apos;s Proposal for Ethereum&#x2019;s Glamsterdam Upgrade (EIP-7732 &amp; FOCIL)"><span class="kg-bookmark-author">ChainSafe</span><span class="kg-bookmark-publisher">Phil Ngo</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.chainsafe.io/content/images/2025/02/Frame-39--4-.png" alt="Lodestar&apos;s Proposal for Ethereum&#x2019;s Glamsterdam Upgrade (EIP-7732 &amp; FOCIL)"></div></a></figure><p>Ethereum has a unique property unlike any other Layer 1 blockchain. The community and the technological structure of Ethereum&apos;s protocol are meant to ensure we preserve its permissionlessness and decentralization ethos.</p><p>Block production is an important function of the blockchain but is naturally, a centralizing mechanism that is ripe for capture. Whether it&apos;s the lack of diverse builders, relays or stakers, it is clear that a &quot;winner take most/all&quot; is inherently incentivized within the protocol for maximum rewards. Off-protocol block production such as MEV-Boost generally capture a consistent ~90% of blocks on mainnet because of its larger rewards for stakers, which also birthed the concept of smoothing pools for sharing these rewards. This also means that builders who can build the most valuable blocks, generally squeeze out the competition and capture the ability to dictate what makes it into a block and what doesn&apos;t, hence, censorship.</p><p>As we work towards enshrined proposer-builder separation (ePBS) via EIP-7732, we confirm what we&apos;ve tried so hard to avoid: Admitting that <em>local block building is not viable long-term on Ethereum.</em> In the early designs of Ethereum&apos;s proof of stake system, we hoped that block production and block validation would be run by a diverse group of individuals alongside professional node operators. That diversification is what gives Ethereum its edge in remaining the world&apos;s &quot;hardest&quot; (irrevocable and irreversable) global settlement layer for digital assets. Over time, fewer solo node operators have emerged than originally hoped for. Secondly, we need to counteract builder centralization urgently.</p><p>This is why <strong>we feel it is important for us to include EIP-7805: Fork-Choice enforced Inclusion Lists (FOCIL) as part of Glamsterdam.</strong> Delaying this EIP induces uncertainty with its inclusion at all as we keep having to rebase it on other changes such as six second slots (anticipated headliner of the Heka hard fork). This is a huge risk and the engineering effort is worth the additional time required to ship Glamsterdam. We currently estimate the additional time at ~two weeks <a href="https://github.com/ethereum/consensus-specs/pull/4714?ref=blog.chainsafe.io">based on the specification details</a> for implementation on top of ePBS.</p><p>In addition, the benefits of FOCIL accrue to other layers of the protocol such as Layer 2s which would <a href="https://notes.ethereum.org/@rudolf/interop-16?ref=blog.chainsafe.io">allow for optimistic rollups to reduce their challenge window</a>. This creates another desirable effect, making finality faster on Layer 2s where a lot user-based activities live.</p><p>We generally believe that FOCIL implementation is worth an additional delay in shipping Glamsterdam.</p><h2 id="other-eips-for-inclusion-consideration">Other EIPs for Inclusion Consideration</h2><h3 id="eip-7688-forward-compatible-consensus-data-structures"><a href="https://eips.ethereum.org/EIPS/eip-7688?ref=blog.chainsafe.io" rel="noopener">EIP-7688: Forward compatible consensus data structures</a></h3><p>We are <strong>in favor of including</strong> EIP-7688, which has now been rebased on top of Gloas. This EIP introduces generalized indices across forks, reducing the maintenance churn (involving security councils) for builders that consume beacon data in their smart contracts, and is mostly benefiting staking pools (e.g., Rocket Pool, Diva, Lido) and our ethos of trustlessness.</p><h3 id="eip-8045-exclude-slashed-validators-from-proposing"><a href="https://eips.ethereum.org/EIPS/eip-8045?ref=blog.chainsafe.io" rel="noopener">EIP 8045: Exclude slashed validators from proposing</a></h3><p>We are <strong>in favor of including</strong> EIP-8045. This is a straight forward change that will improve chain liveness should there be unforeseen events such as a mass slashing. We want to maximize including any EIPs which will positively impact chain performance, especially during periods of instability. Every block proposed on an unstable chain is valuable and we want to minimize opportunities for missed slots because a validator scheduled to propose has already been slashed.</p><h3 id="eip-8071-prevent-using-consolidations-as-withdrawals"><a href="https://eips.ethereum.org/EIPS/eip-8071?ref=blog.chainsafe.io" rel="noopener">EIP 8071: Prevent using consolidations as withdrawals</a></h3><p>We are <strong>weakly in favor of including</strong> EIP-8071. This simple fix in the protocol is an oversight and the unintended consequence is that the consolidation queue is being used for a purpose it was not designed for to circumvent the withdrawal queue. Although, we believe that it makes sense for us to correct this, this is not a priority as it does not pose a threat to security.</p><h2 id="other-eips-for-exclusion-or-deferral">Other EIPs for Exclusion or Deferral</h2><h3 id="eip-8061-increase-churn-limits"><a href="https://eips.ethereum.org/EIPS/eip-8061?ref=blog.chainsafe.io" rel="noopener">EIP 8061: Increase churn limits</a></h3><p>We believe that this EIP <strong>requires more research to identify additional unintentional or predictable consequences downstream to the protocol before inclusion.</strong> This change introduces tradeoffs in chain security for staking experience with no additional benefit to Ethereum ethos, such as decentralization. Entering or exiting the protocol should be constrained by the volume of those looking to enter or exit the validator set for the preservation of chain security. Native staking should always been seen as a long-term commitment and not a predictable mechanism to make capital as efficient as possible. There are offchain markets (e.g. liquid staking tokens, CEXs) which serve and also take the risk of offering faster churn whilst the protocol itself remains as secure as possible.</p><p>This EIP also prematurely sets parameters that require additional time to investigate. We need to thoroughly understand all/most of the risks of reducing the weak subjectivity period and finding a minimum period required which balances staking experience and security of the chain. Then, we can derive optimal limit sizes for queues. We need to answer, <em>&quot;what is the right duration for the weak subjectivity period&quot;</em> first.</p><p>In addition, this EIP will also affect the incentives related to staking issuance and rewards which require additional scrutiny from its changing staking dynamics. We currently do not have any data, feedback and opinions from other parts of the community to justify the large scope of this change. It is not a purely technical decision to change these queues.</p><p>A research discussion was also raised about potentially investigating a priority-fee mechanism for faster withdrawals. There is currently no proposed design or research to cite. However, there may be future options in the near future to debate how to solve for faster queues without sacrificing chain security.</p><h3 id="eip-8062-add-sweep-withdrawal-fee-for-0x01-validators"><a href="https://eips.ethereum.org/EIPS/eip-8062?ref=blog.chainsafe.io" rel="noopener">EIP 8062: Add sweep withdrawal fee for 0x01 validators</a></h3><p>We are <strong>not in favor</strong> of including EIP-8062. Although we believe that migrating to a smaller active validator set is important for Ethereum&apos;s roadmap, we do not think there is definitive proof that this EIP would force migration to 0x02 and this would create precedence for adding fees on the consensus layer for regular operations, which is optically negative.</p><h3 id="eip-8068-neutral-effective-balance-design"><a href="https://eips.ethereum.org/EIPS/eip-8068?ref=blog.chainsafe.io" rel="noopener">EIP 8068: Neutral effective balance design</a></h3><p>We are <strong>not in favor</strong> of including EIP-8068. The gamification identified by this EIP needs to be supported with more data that this is occurring. The proposed thresolds feel overly complex and without the data, the severity of this issue is unknown. We would much prefer to see a plan to overhaul the consolidation process with a simpler design, which includes addressing issues such as this for Heka.</p>]]></content:encoded></item><item><title><![CDATA[Memory Analysis in Rust]]></title><description><![CDATA[A practical rundown of tools and techniques for tracking down memory use in Rust, drawn from profiling the Forest Filecoin node. From heaptrack and gperftools/pprof to dhat and valgrind, here’s what worked, what didn’t, and how to spot OOM risks.]]></description><link>https://blog.chainsafe.io/memory-analysis-in-rust-2/</link><guid isPermaLink="false">689e33d3f1b47d005173469c</guid><category><![CDATA[Forest]]></category><category><![CDATA[Filecoin]]></category><dc:creator><![CDATA[Hubert Bugaj]]></dc:creator><pubDate>Mon, 25 Aug 2025 14:20:29 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/08/Frame-42951--1-.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">This is not a comprehensive guide to memory analysis in Rust, but rather a collection of tools and techniques I found helpful during a witch-hunt for memory issues in&#xA0;<a href="https://github.com/ChainSafe/forest/?ref=blog.chainsafe.io">Forest</a>. Most tools have documentation, likely dedicated guides and even entire books!</div></div><h2 id="the-problem">The problem</h2><h3 id="my-chrome-tab-is-using-so-much-memory">My Chrome tab is using so much memory!</h3><img src="https://blog.chainsafe.io/content/images/2025/08/Frame-42951--1-.png" alt="Memory Analysis in Rust"><p>You might be complaining about your Chrome tab using 2 GiB of memory, but have you ever tried running a Filecoin node? The minimum for mainnet starts at 8 GiB, and the more features you want to use, the more memory you will need. Some examples:</p><ul><li>Network upgrade for NV22&#xA0;<em>Smaug</em>&#xA0;required&#xA0;<a href="https://github.com/ChainSafe/forest/discussions/4043?ref=blog.chainsafe.io">at minimum 64 GiB</a>; both&#xA0;<a href="https://github.com/ChainSafe/forest/?ref=blog.chainsafe.io">Forest</a>&#xA0;and&#xA0;<a href="https://github.com/filecoin-project/lotus?ref=blog.chainsafe.io">Lotus</a>. For the curious, it was due to a relatively complex state tree migration.</li><li>Snapshot export in Forest requires ~16 GiB of memory. In Go implementations, it is significantly more. I don&#x2019;t have the exact numbers because I don&#x2019;t have enough RAM to test it. Sufficient to say, it&#x2019;s substantially more than 64 GiB.</li><li>Some niche JSON-RPC calls require&#xA0;<em>a lot</em>&#xA0;of memory, like&#xA0;<code>Filecoin.StateMarketDeals</code>&#xA0;- given the API is not paginated, it will try to load all deals into memory, which can easily go over 64 GiB. There are some efforts to make the API more usable, see this&#xA0;<a href="https://github.com/ChainSafe/forest/pull/5907?ref=blog.chainsafe.io">experimental API PR</a></li></ul><p>With all this in mind, it is essential to account for every single gigabyte of memory the node uses. After all, it&#x2019;s one of the selling points of Forest: run a Filecoin node with fewer resources. Hell,&#xA0;<a href="https://x.com/joshdougall/status/1937542522387026383?ref=blog.chainsafe.io">run it on a Raspberry Pi</a>! This is where memory analysis comes in handy.</p><h3 id="but-rust-prevents-memory-leaks-right">But Rust prevents memory leaks, right?</h3><p>Yes, Rust prevents memory leaks in the sense that it will not allow you to allocate memory and then forget about it, unless you use&#xA0;<a href="https://doc.rust-lang.org/std/boxed/struct.Box.html?ref=blog.chainsafe.io#method.leak">Box::leak</a>,&#xA0;<a href="https://doc.rust-lang.org/std/mem/fn.forget.html?ref=blog.chainsafe.io">std::mem::forget</a>&#xA0;or depend on faulty crates. For the latter, you might want to use&#xA0;<a href="https://github.com/geiger-rs/cargo-geiger?ref=blog.chainsafe.io">cargo-geiger</a>. However, Rust will not prevent you from creating a data structure and keep appending to it indefinitely, eventually leading to a beautiful OOM. A typical case in a long-running application that performs non-trivial operations is that you have a cache and keep adding to it. If it&#x2019;s unbounded, you&#xA0;<em>will</em>&#xA0;have an OOM, sooner or later.</p><h3 id="setup">Setup</h3><p>You need to compile your program with debug symbols to get the most out of every tool. It makes sense to create a custom profile for this, e.g.,&#xA0;<code>profiling</code>, in your&#xA0;<code>Cargo.toml</code>:</p><pre><code class="language-TOML">[profile.profiling]
inherits = &quot;dev&quot;
opt-level = 1
debug = true
</code></pre><p>This helps if your custom profile isn&#x2019;t exactly the same as&#xA0;<code>dev</code>. For example, you need some optimisations so that the program runs fast enough to be useful, but you still want debug symbols.</p><p>Another thing to keep in mind is that some tools might work better with the system allocator rather than Rust&#x2019;s default or your custom one, like&#xA0;<code>jemalloc</code>&#xA0;(the actual default on some platforms) or&#xA0;<code>mimalloc</code>. You can introduce a feature flag for this, e.g.,&#xA0;<code>system-allocator</code>, and then use it in the code:</p><pre><code class="language-Rust">cfg_if::cfg_if! {
    if #[cfg(feature = &quot;rustalloc&quot;)] {
      // uses the default Rust allocator
    } else if #[cfg(feature = &quot;jemalloc&quot;)] {
        use tikv_jemallocator::Jemalloc;
        #[global_allocator]
        static GLOBAL: Jemalloc = Jemalloc;
    } else if #[cfg(feature = &quot;system-alloc&quot;)] {
        use std::alloc::System;
        #[global_allocator]
        static GLOBAL: System = System;
    } else {
        compile_error!(&quot;You must enable one of the following features: `rustalloc`, `jemalloc`, or `system-alloc`&quot;);
    }
}
</code></pre><p>And in your&#xA0;<code>Cargo.toml</code></p><pre><code class="language-TOML">[features]
...
system-alloc = []
</code></pre><p>Compile your program with the profiling profile and the system allocator feature:</p><pre><code class="language-Shell">cargo build --profile profiling --features system-alloc # you might need to add `--no-default-features`, depending on your setup
</code></pre><h3 id="heaptrack">heaptrack</h3><p><a href="https://github.com/KDE/heaptrack?ref=blog.chainsafe.io">heaptrack</a>&#xA0;-&#xA0;<code>heaptrack-1.5.0</code></p><p>It&#x2019;s the simplest tool to use. It works by running your program under&#xA0;<code>heaptrack</code>, which will record all memory allocations and deallocations, and then you can analyse the results with its interactive viewer. It also supports generating a flamegraph. It used to be my go-to tool for memory analysis, but it has a very high memory overhead, so it might not be suitable if your program is already memory-intensive, like a Filecoin node. In my attempts, it mostly crashed with an OOM error, even with a 64 GiB RAM machine. Sometimes my Fedora would hang, and I had to reboot it: instant +10 to burnout.</p><p>You can run it with&#xA0;<code>heaptrack &lt;program&gt;</code>; once closed, it will generate a file like&#xA0;<code>heaptrack.&lt;pid&gt;.gz</code>. You can then analyse it with&#xA0;<code>heaptrack &lt;file&gt;</code>. The analysis might take quite a while, so be patient. The output will look something like this:</p><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2025/08/heaptrack.png" class="kg-image" alt="Memory Analysis in Rust" loading="lazy" width="1327" height="931" srcset="https://blog.chainsafe.io/content/images/size/w600/2025/08/heaptrack.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2025/08/heaptrack.png 1000w, https://blog.chainsafe.io/content/images/2025/08/heaptrack.png 1327w" sizes="(min-width: 720px) 720px"></figure><p>Theoretically, you can attach to a running process with&#xA0;<code>heaptrack --pid &lt;pid&gt;</code>, but there&#x2019;s an explicit warning that it might open a Pandora&#x2019;s box of issues, so I wouldn&#x2019;t recommend it.</p><p>When it works, it&#x2019;s a great tool and my go-to for memory analysis. Unfortunately, it has some issues with memory overhead, so I had to look for alternatives.</p><h3 id="gperftools-pprof">gperftools &amp; pprof</h3><p><a href="https://github.com/gperftools/gperftools?ref=blog.chainsafe.io">gperftools</a>&#xA0;-&#xA0;<code>gperftools-2.16</code></p><p>I&#x2019;ve had quite a good experience with this tool. The setup is minimal, and there&#x2019;s hardly any overhead. Every once in a while, it dumps the heap profile to a 1 MiB file, which can be inspected (without interrupting the program) with&#xA0;<code>pprof</code>.</p><pre><code class="language-Text">Dumping heap profile to /tmp/gperfheap.forest.prof_10047.0167.heap (171024 MB allocated cumulatively, 184 MB currently in use)</code></pre><p>You need to link your program with&#xA0;<code>tcmalloc</code>&#xA0;to set it up. You can do it, e.g., via a&#xA0;<a href="https://doc.rust-lang.org/cargo/reference/build-scripts.html?ref=blog.chainsafe.io">build script</a>:</p><pre><code class="language-Rust">fn main() {
    println!(&quot;cargo:rustc-link-lib=tcmalloc&quot;);
}</code></pre><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">There&#x2019;s an issue with this tool in Rust. Essentially, it modifies one of the environmental variables and makes it a non-UTF-8 string, which causes crashes if any parts of your program do something crazy like&#xA0;<a href="https://github.com/rust-lang/rust/blob/014bd8290f084c714995205a9116e6c035419ae6/library/std/src/env.rs?ref=blog.chainsafe.io#L113-L116">environmental variable iteration</a>. This is a known issue; see&#xA0;<a href="https://github.com/gperftools/gperftools/issues/1603?ref=blog.chainsafe.io">here</a>. In the meantime, you can set&#xA0;HEAPPROFILE_USE_PID=t&#xA0;before running your program.</div></div><p>Now, in your&#xA0;<code>Makefile</code>, you can add targets to build and run your program:</p><pre><code class="language-Makefile">gperfheapprofile = cargo build --no-default-features --features system-alloc --profile=profiling --bin $(1); \
	ulimit -n 8192; \
	HEAPPROFILE_USE_PID=t HEAPPROFILE=/tmp/gperfheap.$(1).prof target/profiling/$(1) $(2)

gperfheapprofile.forest:
	$(call gperfheapprofile,forest, --chain calibnet --encrypt-keystore=false)</code></pre><p>Run it with&#xA0;<code>make gperfheapprofile.forest</code>&#xA0;to start the program. It will dump the heap profile periodically, and you can inspect the dumps at any time. Let it run for a while and put some typical load on it to accumulate enough data to analyse.</p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">Don&#x2019;t use the default&#xA0;pprof&#xA0;that comes with&#xA0;gperftools, e.g., one provided by your distribution like&#xA0;<a href="https://packages.fedoraproject.org/pkgs/gperftools/pprof/fedora-42.html?ref=blog.chainsafe.io">Fedora</a>. It&#x2019;s an outdated, slow Perl script. Instead, use&#xA0;<a href="https://github.com/google/pprof?ref=blog.chainsafe.io">Google&#x2019;s pprof</a>&#xA0;as suggested in the&#xA0;<a href="https://github.com/gperftools/gperftools/blob/2d277134c4b5c56d1c2912330aa44160af52aadf/README?ref=blog.chainsafe.io#L16-L22">gperftools README</a>.</div></div><p>Now, analyse the dump using&#xA0;<code>pprof</code>. I prefer the web interface, but you might tinker with other options.</p><pre><code class="language-Shell"># Note that you need the binary with debug symbols, so use the profiling profile mentioned earlier.
pprof -http=localhost:8080 target/profiling/forest gperfheap.forest.prof_10047.0167.heap</code></pre><p>This will start a web server on&#xA0;<code>localhost:8080</code>&#xA0;where you can interactively inspect the memory usage of your program.</p><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2025/08/gperftools-pprof.png" class="kg-image" alt="Memory Analysis in Rust" loading="lazy" width="1713" height="981" srcset="https://blog.chainsafe.io/content/images/size/w600/2025/08/gperftools-pprof.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2025/08/gperftools-pprof.png 1000w, https://blog.chainsafe.io/content/images/size/w1600/2025/08/gperftools-pprof.png 1600w, https://blog.chainsafe.io/content/images/2025/08/gperftools-pprof.png 1713w" sizes="(min-width: 720px) 720px"></figure><p>Here, you can see that quite a bit of memory is used from the&#xA0;<code>load_required_tipset</code>&#xA0;(and a bunch of others - one needs to follow the call stack with the code to understand what is going on and mentally filter all&#xA0;<code>tokio</code>&#xA0;tasks). This makes sense, because there&#x2019;s a cache:</p><pre><code class="language-Rust">    /// Loads a tipset from memory given the tipset keys and cache. Semantically
    /// identical to [`Tipset::load`] but the result is cached.
    pub fn load_tipset(&amp;self, tsk: &amp;TipsetKey) -&gt; Result&lt;Option&lt;Arc&lt;Tipset&gt;&gt;, Error&gt; {
        if !is_env_truthy(&quot;FOREST_TIPSET_CACHE_DISABLED&quot;)
            &amp;&amp; let Some(ts) = self.ts_cache.lock().get(tsk)
        {
            metrics::LRU_CACHE_HIT
                .get_or_create(&amp;metrics::values::TIPSET)
                .inc();
            return Ok(Some(ts.clone()));
        }

        let ts_opt = Tipset::load(&amp;self.db, tsk)?.map(Arc::new);
        if let Some(ts) = &amp;ts_opt {
            self.ts_cache.lock().put(tsk.clone(), ts.clone());
            metrics::LRU_CACHE_MISS
                .get_or_create(&amp;metrics::values::TIPSET)
                .inc();
        }

        Ok(ts_opt)
    }</code></pre><p>An environmental variable can turn off the cache at a cost of performance. In this case, it&#x2019;s discouraged as the performance impact is so great that the node might not be able to keep up with the network.</p><h3 id="dhat-crate"><code>dhat</code>&#xA0;crate</h3><p><a href="https://crates.io/crates/dhat?ref=blog.chainsafe.io">dhat</a>&#xA0;-&#xA0;<code>dhat-0.3.3</code></p><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x2757;</div><div class="kg-callout-text">It&#x2019;s not mentioned in the crate&#x2019;s documentation, but you need the&#xA0;tcmalloc&#xA0;shared library on the host. On Fedora, it&#x2019;s under the&#xA0;gperftools-devel&#xA0;package.</div></div><p>This requires a different setup than what was mentioned at the beginning. All information is in the&#xA0;<a href="https://docs.rs/dhat/latest/dhat/?ref=blog.chainsafe.io">dhat documentation</a>. The gist is that you must add&#xA0;<code>dhat</code>&#xA0;to your dependencies, set it up as a global allocator, and start it at the beginning of your program. Note that the&#xA0;<code>dhat</code>&#xA0;allocator is slower than the standard allocator, so it should be used only for profiling.</p><p>It might be that the slowdown is not acceptable for your use case, or you want to profile a specific part of the code, in which case you might want to use&#xA0;<a href="https://docs.rs/dhat/latest/dhat/?ref=blog.chainsafe.io#setup-ad-hoc-profiling">ad hoc profiling</a>. This allows you to annotate the hot spots in your code with&#xA0;<a href="https://docs.rs/dhat/latest/dhat/fn.ad_hoc_event.html?ref=blog.chainsafe.io">dhat::ad_hoc_event</a>.</p><p>The output is a bit old-school, similar to&#xA0;<code>valgrind</code>&#xA0;output, but it can do the job. See the&#xA0;<a href="https://valgrind.org/docs/manual/dh-manual.html?ref=blog.chainsafe.io">DH manual</a>.</p><p>A unique feature of the crate is that you can write tests with it to check the amount of memory allocations. For example, you can write a test that asserts that the code doesn&#x2019;t allocate more than 10 MiB of memory:</p><pre><code class="language-Rust"> #[global_allocator]
static ALLOC: dhat::Alloc = dhat::Alloc;

#[test]
fn test() {
    let _profiler = dhat::Profiler::builder().testing().build();

    some_function_that_should_not_allocate_more_than_10_mib();

    let stats = dhat::HeapStats::get();

    // At the point of peak heap size, no more than 10 MiB should&apos;ve been allocated.
    dhat::assert!(stats.max_bytes &lt;= 10 * 1024 * 1024, &quot;Memory usage exceeded 10 MiB&quot;);
}</code></pre><p>In case of failure:</p><pre><code class="language-Text">---- test stdout ----
dhat: Total:     11,534,336 bytes in 1 blocks
dhat: At t-gmax: 11,534,336 bytes in 1 blocks
dhat: At t-end:  0 bytes in 0 blocks
dhat: The data has been saved to dhat-heap.json, and is viewable with dhat/dh_view.html

thread &apos;test&apos; panicked at src/main.rs:20:5:
dhat: assertion failed: stats.max_bytes &lt;= 10 * 1024 * 1024: Memory usage exceeded 10 MiB</code></pre><p>This is a great way to ensure that your code doesn&#x2019;t accidentally allocate too much memory, and it can be used in CI to catch regressions. Even better, you won&#x2019;t have to read posts like this one!</p><h3 id="valgrindmassif">valgrind - massif</h3><p><a href="https://valgrind.org/?ref=blog.chainsafe.io">valgrind</a>&#xA0;-&#xA0;<code>valgrind-3.25.1</code></p><p>It&#x2019;s more of an honourable mention. I failed to get it working with Forest; it&#x2019;d just hang indefinitely. I decided not to spend more time on it. You might have better luck with it. Add this to your&#xA0;<code>Makefile</code>:</p><pre><code class="language-makefile">memprofile-massif = cargo build --no-default-features --features system-alloc --profile=profiling --bin $(1); \
                   ulimit -n 8192; \
                   rm massif.out.*; \
                   valgrind --tool=massif target/profiling/$(1) $(2); \
                   ms_print massif.out.* &gt; /tmp/massif.$(1).txt

memprofile-massif.mybin:
  $(call memprofile-massif,mybin)</code></pre><p>Then run it with&#xA0;<code>make memprofile-massif.mybin</code>&#xA0;and check the output in&#xA0;<code>/tmp/massif.mybin.txt</code>. Sample output is lengthy, but you can check it&#xA0;<a href="https://gist.github.com/LesnyRumcajs/0e10dc6c2ac8d3e433e91a49ece881d5?ref=blog.chainsafe.io">here</a>. The entire allocation is done in the&#xA0;<code>allocate_memory</code>&#xA0;function:</p><pre><code class="language-Rust">use std::alloc::System;
#[global_allocator]
static GLOBAL: System = System;

fn allocate_memory(size: usize) -&gt; Vec&lt;u8&gt; {
    vec![0; size * 1024 * 1024] // Allocate `size` MB of memory
}

// massif should report 708 MiB allocated in total
fn main() {
    let _v1 = allocate_memory(42); // 42 MiB
    let _v2 = allocate_memory(666); // 666 MiB
}</code></pre><p>Massif output:</p><pre><code class="language-Text">--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
 16        352,413      742,399,888      742,391,808         8,080            0
 17        352,594      742,399,888      742,391,808         8,080            0
100.00% (742,391,808B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
-&gt;100.00% (742,391,808B) 0x40020B4: std::sys::alloc::unix::&lt;impl core::alloc::global::GlobalAlloc for std::alloc::System&gt;::alloc_zeroed (unix.rs:36)
| -&gt;100.00% (742,391,808B) 0x4002611: __rustc::__rust_alloc_zeroed (main.rs:3)
|   -&gt;100.00% (742,391,808B) 0x4030786: alloc::raw_vec::RawVecInner&lt;A&gt;::try_allocate_in (in /tmp/tst/target/profiling/tst)
|     -&gt;100.00% (742,391,808B) 0x4001E64: &lt;u8 as alloc::vec::spec_from_elem::SpecFromElem&gt;::from_elem (mod.rs:447)
|       -&gt;100.00% (742,391,808B) 0x400273E: alloc::vec::from_elem (mod.rs:3220)
|         -&gt;100.00% (742,391,808B) 0x4002493: tst::allocate_memory (main.rs:6)</code></pre><p>Quick sanity check:</p><math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mn>742</mn>
  <mo>,</mo>
  <mn>391</mn>
  <mo>,</mo>
  <mn>808</mn>
  <mtext>&#xA0;B</mtext>
  <mo>=</mo>
  <mn>708</mn>
  <mtext>&#xA0;MiB</mtext>
  <mo>=</mo>
  <mn>42</mn>
  <mtext>&#xA0;MiB</mtext>
  <mo>+</mo>
  <mn>666</mn>
  <mtext>&#xA0;MiB</mtext>
</math><p>The math checks out. Oof!</p><p>You can also use the&#xA0;<a href="https://github.com/KDE/massif-visualizer?ref=blog.chainsafe.io">massif-visualizer</a>. It&#x2019;s not as feature-rich as&#xA0;<code>heaptrack</code>, but it can be useful for quick analysis.</p><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2025/08/massif-visualizer.png" class="kg-image" alt="Memory Analysis in Rust" loading="lazy" width="1270" height="673" srcset="https://blog.chainsafe.io/content/images/size/w600/2025/08/massif-visualizer.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2025/08/massif-visualizer.png 1000w, https://blog.chainsafe.io/content/images/2025/08/massif-visualizer.png 1270w" sizes="(min-width: 720px) 720px"></figure><h3 id="other-tools">Other tools</h3><p>Other than the tools mentioned above, I got some potential recommendations from the community, but I haven&#x2019;t had a chance to try them (yet):</p><ul><li><a href="https://github.com/koute/bytehound?ref=blog.chainsafe.io">bytehound</a>&#xA0;- some legwork needed to set it up, as it requires a specific, old version of&#xA0;<code>mimalloc</code>&#xA0;library on the host for compilation. It looks promising, though it hasn&#x2019;t received any updates since 2023. According to the author, it is&#xA0;<em>finished</em>.</li><li><a href="https://github.com/wolfpld/tracy?ref=blog.chainsafe.io">Tracy Profiler</a>&#xA0;+&#xA0;<a href="https://crates.io/crates/tracing-tracy?ref=blog.chainsafe.io">Tracing-Tracy</a>&#xA0;- supposedly great combo for profiling asynchronous&#xA0;<code>tokio</code>&#xA0;code annotated with tracing spans.</li><li><a href="https://ebpf.io/?ref=blog.chainsafe.io">eBPF</a>&#xA0;- this was recommended several times on the&#xA0;<a href="https://www.reddit.com/r/rust/comments/1mpezl0/memory_analysis_in_rust/?ref=blog.chainsafe.io">Reddit post</a>&#xA0;as the&#xA0;<em>modern way</em>, with tooling like&#xA0;<a href="https://github.com/open-telemetry/opentelemetry-ebpf-profiler?ref=blog.chainsafe.io">OTEL eBPF</a>,&#xA0;<a href="https://aya-rs.dev/?ref=blog.chainsafe.io">Aya</a>,&#xA0;<a href="https://github.com/bpftrace/bpftrace?ref=blog.chainsafe.io">bpftrace</a>&#xA0;(<em>easy but limited</em>) and&#xA0;<a href="https://github.com/iovisor/bcc?ref=blog.chainsafe.io">bcc</a>&#xA0;(<em>powerful but more painful</em>). I haven&#x2019;t tried it, but it looks like a powerful toolbox for profiling. The fact that there&#x2019;s even a&#xA0;<a href="https://isovalent.com/books/learning-ebpf/?ref=blog.chainsafe.io">ePBF book</a>&#xA0;about it makes it pretty daunting!</li></ul><h2 id="hic-sunt-dracones">Hic Sunt Dracones</h2><p>The profilers will not report everything. For example, memory-mapped files will not be reported. This is annoying because these tools might tell you that your program uses 200 MiB of memory, but then you check the memory usage with&#xA0;<code>htop</code>, and it shows over 2 GiB.</p><p>You can use&#xA0;<a href="https://man7.org/linux/man-pages/man5/proc_pid_smaps.5.html?ref=blog.chainsafe.io">smaps</a>&#xA0;to check the mappings of your process. With a simple&#xA0;<a href="https://gist.github.com/LesnyRumcajs/711b5c5c8b0e5439febc6201b0d84b09?ref=blog.chainsafe.io">smaps Ruby wrapper</a>, you can see what is happening:</p><pre><code class="language-Shell">hubert@fuzzy:~/prj$ sudo ruby cached_mappings.rb 10047 10

Top 10 file-backed memory mappings (by cached memory):
 Memory (MB)    Rss (MB)  Mapping Path
------------------------------------------------------------
       237.6       237.6  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_9a
       148.5       148.5  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_f3
       141.8       141.8  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_ed
       129.1       129.1  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_fc
        93.2        93.2  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_ab
        64.0       156.0  /home/hubert/no-kad-test/mainnet/0.27.0/index_00_17
        58.7        58.7  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_99
        57.8       660.0  /home/hubert/prj/forest/target/profiling/forest (deleted)
        57.3        57.3  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_56
        42.9        42.9  /home/hubert/no-kad-test/mainnet/0.27.0/table_00_ff
------------------------------------------------------------
      1030.8      1725.0  TOTAL (Top 10)</code></pre><p>At least in Forest&#x2019;s case, it&#x2019;s not a huge deal because the memory-mapped files are used for caching and are not leaked. The system will reclaim the memory when needed. It is still essential to be aware of this, though, as it can lead to confusion (yes, speaking from experience) when analysing memory usage.</p><h2 id="avoiding-memory-issues">Avoiding memory issues</h2><p>Memory analysis aside, having all persistent collections bound is a good idea so that you could skip the analysis altogether. Some suggestions based on the memory analysis done in Forest:</p><ul><li>Use an&#xA0;<a href="https://en.wikipedia.org/wiki/cache_replacement_policies?ref=blog.chainsafe.io#lru">lru</a>&#xA0;or its variants for caching. Don&#x2019;t implement them yourself; use battle-tested libraries like&#xA0;<a href="https://crates.io/crates/lru?ref=blog.chainsafe.io">lru</a>&#xA0;or&#xA0;<a href="https://crates.io/crates/cached?ref=blog.chainsafe.io">cached</a>.</li><li>Monitor the size and length of your caches, e.g., via Prometheus metrics. Calculating the total size of a data structure can be tricky, but some libraries can help, such as&#xA0;<a href="https://crates.io/crates/get-size2?ref=blog.chainsafe.io">get-size2</a>. This will require some manual annotation, but it is worth it.</li><li>Don&#x2019;t use unbounded channels, like&#xA0;<a href="https://docs.rs/flume/latest/flume/fn.unbounded.html?ref=blog.chainsafe.io">flume::unbounded</a>, unless you are confident they won&#x2019;t grow indefinitely. Ban their usage in your codebase with&#xA0;<a href="https://doc.rust-lang.org/clippy/lint_configuration.html?ref=blog.chainsafe.io#disallowed-methods">clippy&#x2019;s disallowed-methods</a>.</li><li>Use reference-counted types like&#xA0;<code>Arc</code>&#xA0;or&#xA0;<code>Rc</code>&#xA0;to limit the number of copies of the data you have in memory.</li><li>Consider using pointers, e.g.,&#xA0;<code>Box</code>, for keys and values in your data structures, especially if the data types are large. This will reduce the memory taken via calls like&#xA0;<code>with_capacity</code>&#xA0;if the entire capacity is not always filled.</li><li>Consider using linked lists for more efficient memory usage. You can use&#xA0;<a href="https://crates.io/crates/hashlink?ref=blog.chainsafe.io">hashlink</a>&#xA0;for an LRU cache that uses linked lists internally. Note, this might save memory at the cost of performance, so you need to benchmark it for your use case.</li></ul><p>All these suggestions won&#x2019;t prevent all possible memory issues (see&#xA0;<a href="https://github.com/ChainSafe/forest/pull/5842?ref=blog.chainsafe.io">this one</a>), but they will help you avoid the memory analysis legwork.</p><h2 id="conclusion">Conclusion</h2><p>Memory analysis in Rust is not as straightforward as in some other languages, e.g., JVM-based. Still, plenty of tools and techniques can help you understand and optimise memory usage in your Rust programs. Once you&#x2019;re done with the analysis, you will significantly reduce your program&#x2019;s memory usage, leading to better performance and lower resource consumption. Who knows, maybe you&#x2019;ll even convince your boss to rewrite their bloated Java application in Rust! &#x1F980;</p><hr><h2 id="about-chainsafe">About ChainSafe</h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a>&#xA0;is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[What Could Go Wrong?]]></title><description><![CDATA[Sequencers are vital for Layer 2 rollups on Ethereum and beyond, but face risks from bugs, censorship, and stalls. Exploring modular sequencing can unlock safer, more scalable blockchain networks.]]></description><link>https://blog.chainsafe.io/what-could-go-wrong/</link><guid isPermaLink="false">68a33797f1b47d0051734789</guid><category><![CDATA[Infrastructure]]></category><dc:creator><![CDATA[Josh Dougall]]></dc:creator><pubDate>Mon, 18 Aug 2025 15:22:21 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/08/Frame-43.png" medium="image"/><content:encoded><![CDATA[<h2 id="a-modular-rethink-of-sequencing-risks">A modular rethink of sequencing risks</h2><img src="https://blog.chainsafe.io/content/images/2025/08/Frame-43.png" alt="What Could Go Wrong?"><p>Sequencers sit at the heart of almost every Layer 2 and blockchain rollup. They collect, order, and submit transactions from the L2 mempool, decide whether to execute or discard them, and broadcast the information to other nodes.<a href="https://blog.jarrodwatts.com/the-ultimate-guide-to-sequencers-in-l2-blockchains?ref=blog.chainsafe.io#:~:text=Sequencer%3A%20Picks%20up%20transactions%20from%20the%20L2%20mempool%2C%20decides%20whether%20to%20execute%20or%20discard%20them%20and%20broadcasts%20this%20information%20to%20other%20nodes."><u><sup>1</sup></u></a> The transaction information then gets batched together, along with proofs, and sent to the base Layer 1 the L2 lives on. The sequencer is what effectively rolls up the transactions to support scaling blockchain networks.&#xA0;</p><p>As is the case with every novel technology, though, sequencers have their own growing pains. Issues like bugs stalling transactions, censorship eroding user trust, and limited ability to scale slow them down. But sequencers are still an essential part of almost every Layer 2.&#xA0;</p><p>So the question becomes: How do we design sequencers in order to minimize the potential setbacks?&#xA0;</p><p>To answer that, we need to look at what might go wrong.&#xA0;&#xA0;</p><p>Some of the risks we will look at have already appeared in the industry and are not limited to any single design. But this exploration isn&apos;t about pointing fingers. Instead, it&apos;s about stepping back to better understand the unique ways that sequencing architectures can fail in order to design new solutions. Ideally, in a way that lets developers choose how to manage and mitigate the risks most relevant to their needs.&#xA0;</p><h2 id="risks">Risks</h2><p>Sequencers are vulnerable to risks ranging from mild interruptions to existential threats from bugs. Below, we will cover a few of the ones we have noticed already popping up in many sequencer models, along with a few others that scare us the most.&#xA0;</p><h3 id="fallback-mechanisms">Fallback mechanisms</h3><p>Every rollup design accounts for the possibility of sequencer outages. Fallback mechanisms, or &#x201C;escape hatches,&#x201D; are built to ensure users can still include transactions if the sequencer fails. On paper, these mechanisms look simple. In practice, they often fail when needed most.</p><p>For example, a rollup may offer a Layer 1 fallback that forcibly includes user transactions during a sequencer failure. In some designs, this only activates after a 24-hour delay or depends entirely on a small set of governance-approved proposers. In a crisis, transactions stall, markets move, and users cannot act until it is too late.</p><p>In centralized systems, governance teams may hold exclusive control and can be slow to respond or unreachable during emergencies. In decentralized systems, fallback access may be restricted by protocol keys, high costs, or strict timelocks. In both cases, users face the same problem: no way to act when immediate access matters most.</p><p>A slow or restricted fallback fails its purpose. These designs need to be built for urgent, reliable use, not as token safety measures.</p><h3 id="sequencer-stalls">Sequencer stalls</h3><p>Moderate sequencing risks often start with small mistakes but have severe consequences. These risks include stalls caused by software bugs, depleted gas fee balances, or basic operational errors.</p><p>In one example, a rollup sequencer batches and posts transactions to Ethereum&#x2019;s Layer 1 using a single wallet to pay gas fees. If the balance runs out, either from oversight or a sudden spike in gas prices, the sequencer stops, and transaction batches freeze indefinitely.</p><p>In centralized systems, this often comes down to manual wallet management and human error. Hours-long outages can occur if the operations team fails to top up the wallet on time. Automation and clear separation of duties can prevent this, but many monolithic designs do not include these safeguards.</p><p>Decentralized systems face the same risk in a different form. Multiple validators may share the responsibility of posting batches, but without clear incentives and coordination, no one may step in during a fee spike. The result is the same: stalled transaction processing.</p><p>These stalls delay transactions, freeze assets, and erode user trust. Some rollups reduce the impact with fallback logic. In the OP Stack, if a sequencer fails to submit batches within a fixed window, the system inserts an empty Layer 1 block. This triggers a one-block reorg that removes the stalled state and allows the chain to continue. The tradeoff is a brief rollback instead of a complete freeze.</p><p>Redundancy, automated economic management, and separation of operational duties turn catastrophic stalls into manageable incidents. Fallback mechanisms like OP Stack&#x2019;s can limit downtime to a minor disruption.</p><h3 id="transaction-censorship">Transaction censorship</h3><p>A rollup sequencer with unilateral transaction-ordering power can censor activity without oversight or transparency. It can delay certain transactions indefinitely or discard them entirely. Censorship can result from compliance requirements, operator bias, or internal policy. Users may mistake repeated failures for normal congestion, unaware that the exclusions are deliberate.</p><p>In centralized systems, censorship can be explicit or implicit. Users must appeal directly to the operators, who may be slow to respond or unwilling to explain decisions.</p><p>Decentralized systems face similar risks. While explicit collusion is generally harder because it requires coordinating a threshold of participants, implicit censorship can still arise from shared incentives or operator overlap and is often more difficult to detect. Without built-in routing alternatives, users have few ways to bypass a censoring sequencer. Whether censorship is more or less likely depends on validator diversity and concentration, MEV dynamics, and whether users have alternate submission routes or forced-inclusion guarantees.</p><p>Censorship often appears as delays, missing transactions, or silence. Transparent inclusion rules and proactive monitoring are essential to detect and prevent it.</p><h3 id="emergency-halts-after-hacks">Emergency halts after hacks</h3><p>A rollup sequencer suffers a severe security breach, compromising user funds. Operators respond with an emergency halt and block transactions from exploit-linked wallets. This can limit further damage, but also concentrates decision-making power.</p><p>In centralized systems, operators have direct control and can act quickly. The trade-off is reduced user autonomy and transparency, with users relying entirely on the operator&#x2019;s judgment.</p><p>In decentralized systems, control is distributed, but governance processes can be slow, divided, or influenced by conflicting incentives. Coordination challenges can delay action and create inconsistent responses, making recovery harder.</p><p>In any model, a crisis places operator judgment under intense scrutiny. Users have little ability to bypass such halts. Clearly defined and transparent emergency governance policies are essential.</p><h3 id="silent-bugs-and-accidental-exclusion">Silent bugs and accidental exclusion</h3><p>A subtle software bug prevents certain users or addresses, potentially millions, from submitting transactions. The sequencer appears operational, and transactions seem normal, but a large group of users is quietly locked out.</p><p>Centralized sequencers are especially vulnerable to these silent failures because a single point of control magnifies the impact. Users often remain unaware until patterns of exclusion emerge, by which time trust may be irreparably damaged.</p><p>Decentralized designs can sometimes catch such bugs earlier through redundancy and validator oversight, but they are not immune. Added complexity creates more points of failure, communication challenges, and greater opacity, which can make silent exclusions harder to detect.</p><p>Operator trust depends on competence, oversight, and transparency. Users who cannot bypass a faulty sequencer remain exposed. Rigorous testing, clear monitoring, and transparent processes are essential.</p><h3 id="latency-sinkholes">Latency sinkholes</h3><p>All rollups, whether centralized or decentralized, face latency tradeoffs. Users expect near-instant finality, but delivering it under load is challenging.</p><p>A single centralized sequencer node can handle transactions efficiently in normal conditions. However, when network activity spikes, from market volatility or a popular NFT mint, it can become a bottleneck. This causes delays, stalled transactions, and degraded performance because the sequencer cannot scale quickly enough.</p><p>Decentralized sequencing distributes transaction ordering across multiple nodes to reduce bottlenecks. Under heavy load, validator coordination, ordering agreements, and prover consensus add latency and communication overhead. In modular or highly composable decentralized designs, the complexity can grow further, leading to &#x201C;cross-rollup clashes&#x201D; where rollups compete for shared resources and slow each other down.</p><p>Every architecture trades between speed, cost, simplicity, fairness, and scalability. Defining and prioritizing these tradeoffs early is essential for delivering consistent, predictable performance.</p><h3 id="consensus-stalls">Consensus stalls</h3><p>Decentralization can increase resilience, but it also adds complexity that creates coordination risks.</p><p>In a consensus-based sequencing design, using protocols like Byzantine Fault Tolerance, Proof-of-Stake, or DAG-based models, multiple validators share responsibility for ordering transactions. This approach removes single points of failure but introduces new risks. Validators must maintain accurate, timely communication, which becomes difficult during network partitions, software bugs, or validator churn.</p><p>When validators disagree on the network state, they trigger view-change events or halts while reconciling differences. Even small issues, like latency, software incompatibility, or an overloaded network, can lead to prolonged stalls and delayed consensus. Transactions remain in limbo, frustrating users.</p><p>Centralized sequencing does not face this type of coordination failure because a single node makes all ordering decisions, but it is more exposed to downtime from outages or attacks, and users must trust the operator not to censor or delay transactions.</p><p>Decentralization improves trust minimization and resilience, but it increases complexity and potential downtime. Builders must choose the balance of uptime and trust minimization that best fits their network&#x2019;s priorities.</p><h2 id="sequencer-risks-are-a-design-choice">Sequencer risks are a design choice</h2><p>Sequencer failures have already occurred and, in some cases, caused major disruptions. They are directly linked to design decisions made early in a rollup&#x2019;s architecture.</p><p>Centralized systems tend to fail in visible ways. A single node under stress becomes a bottleneck, and the system stops. The source of the problem is clear and easier to address. Decentralized systems can fail more quietly, often due to coordination issues or fragility at the network&#x2019;s edges. These vulnerabilities are harder to detect and can cause widespread disruption before they are noticed.</p><p>Many rollups still adopt a default sequencer stack without evaluating whether it fits their needs. Sequencing has no universal blueprint. Each design carries different risks, and the right choice depends on the specific trade-offs a network is willing to accept.</p><h3 id="toward-modular-sequencing">Toward modular sequencing</h3><p>Sequencing should be a framework, not a fixed black box. Developers should be able to configure their own:</p><ul><li>Fallback design for resilience during downtime.</li><li>Ordering logic tailored to their transaction types and use cases.</li><li>Economic guarantees that align incentives and protect network health.</li><li>Decentralization thresholds that define how much trust and coordination is distributed.</li></ul><p>The goal is to choose the risks a network is willing to accept and design around them. The right sequencer is the one that fits the network&#x2019;s needs and trade-offs.</p><p>Modular, customizable sequencing will not remove all risks, but it allows more intentional designs that align with the diverse requirements of today&#x2019;s decentralized ecosystems.<br><br>To ground this in practice, here&#x2019;s a snapshot of how different networks are approaching sequencer risks today. Think of it as a menu of design choices, each with its own strengths and trade-offs, to help guide what might work best for you.</p><figure class="kg-card kg-image-card"><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdSzgcXpsXqDU8AVzv8p-tqDUBd-i9Fq2nRTnjQijxe5B8QCt7PdfJIYHCzMG0TCYE04Rlbx8r0ROK6rYqsNOwBQdcJcwqK2_mnRQL-zyvj09Z_eaRgRPeV9--uP4ya48Zk9bWrOw?key=67LftyF3VP1NKyJFGNEjmQ" class="kg-image" alt="What Could Go Wrong?" loading="lazy" width="992" height="1452"></figure><p>Each project will need to find the mix that fits its users, risk tolerance, and regulatory surface. Think of your configuration like a living threat model, one you revisit as conditions change.</p><p>We can keep arguing about the best sequencer. Or we can build sequencers that are the right fit for each network.</p><p>Make policy explicit. Make operations explicit. Make each piece replaceable.</p><hr><h2 id="about-chainsafe">About ChainSafe</h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a> is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, and Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a> | <a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a> | <a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a> | <a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a> | <a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p><p></p>]]></content:encoded></item><item><title><![CDATA[ChainSafe’s Monthly Roundup: Issue #6]]></title><description><![CDATA[July was a big month across the ChainSafe ecosystem, with progress spanning privacy tech, infrastructure upgrades, and core client development.]]></description><link>https://blog.chainsafe.io/chainsafes-monthly-roundup-issue-6/</link><guid isPermaLink="false">689b783ef1b47d00517345ed</guid><category><![CDATA[monthly roundup]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Thu, 14 Aug 2025 14:20:47 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/08/cmr6.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/08/cmr6.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"><p>July was a big month across the ChainSafe ecosystem, with progress spanning privacy tech, infrastructure upgrades, and core client development. From bringing shielded ZEC to MetaMask to major client releases, our team has built features and improvements that make web3 faster, more private, and more reliable for everyone.</p><h2 id="shielded-zec-in-metamask">Shielded ZEC in MetaMask</h2><p>ChainSafe released the <strong>Zcash Snap</strong> for MetaMask, letting users send and receive <strong>shielded ZEC</strong> right in their browser. </p><p>The work started in 2024 with a feasibility study, moved through two grants, and included audits to ensure its security. Now, shielded ZEC is easier to use for anyone with MetaMask.</p><p>ChainSafe developed WebZjs to make this possible, enabling core functionalities:</p><ul><li>zk-SNARK generation/verification</li><li>shielded transaction handling</li><li>Sapling key management</li></ul><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.chainsafe.io/zcash-in-the-browser-bringing-shielded-zec-to-metamask/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Zcash in the browser: Bringing shielded ZEC to MetaMask</div><div class="kg-bookmark-description">After months of research, prototyping, and iteration, we&#x2019;re proud to release the Zcash Snap: a fully functional MetaMask Snap that lets users send, receive, and manage shielded ZEC directly from the browser. The challenge Most cryptocurrencies work fine in a browser. Zcash isn&#x2019;t most cryptocurren&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.chainsafe.io/content/images/size/w256h256/2023/11/Frame-1004-1.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"><span class="kg-bookmark-author">ChainSafe</span><span class="kg-bookmark-publisher">Ben Adar</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.chainsafe.io/content/images/2025/06/zcashbrowser.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"></div></a></figure><h2 id="infrastructure">Infrastructure</h2><p>In July, the Infra team focused on strengthening our systems and refining our processes. From network upgrades to expanding our operational expertise, we laid the groundwork for smoother performance and future growth.</p><ul><li><strong>Rolled out commit-boost to replace mev-boost:</strong> this upgrade brings in richer validator performance metrics, giving us more insight to fine-tune operations and improve network efficiency.</li><li><strong>Joined an Obol DV cluster with Lodestar: </strong>three infra team members gained hands-on experience running distributed validator nodes, strengthening our expertise in DV tech.</li><li><strong>Moved our Canton deployment into a Kubernetes cluster:</strong> this migration boosts scalability, resilience, and maintainability for the service.</li><li><strong>Became an official Monad operator:</strong> further expanding our validator footprint and contributing to the decentralization of the Monad network. See our listing below:</li></ul><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.gmonads.com/validators?ref=blog.chainsafe.io"><div class="kg-bookmark-content"><div class="kg-bookmark-title">gmonads.com</div><div class="kg-bookmark-description">gmonads.com &#x2014; Built for the Monad community. Get real-time insights into validator activity, block production, and network performance.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.gmonads.com/favicon-circle.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"><span class="kg-bookmark-author">gmonads.com</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.gmonads.com/opengraph/gmonads_globe_opengraph.jpg" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"></div></a></figure><h2 id="lodestar">Lodestar</h2><p>In July 2025, Lodestar saw two major releases that improved performance, reliability, and licensing. The <strong>v1.32.0&#x2011;rc.0</strong> (pre-release) and <strong>v1.32.0</strong> (stable) introduced key features like increased gas limits, async Rust-based proof verification, and a switch to Apache-2.0 licensing, alongside performance boosts in block building and proposer metrics.</p><p>Building on this momentum, <strong>v1.33.0</strong>, released August 6th, continues to enhance Lodestar&#x2019;s capabilities with important bug fixes, optimizations, and additional support for upcoming Ethereum protocol improvements.</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">We&apos;ve released v1.33.0 of Lodestar for all! Update is recommended for users with an upgrade to libp2p, enabling proposer boost by default and minor maintenance to the client. If you had issues with CPU compatibility on v1.32, this will likely fix it: <a href="https://t.co/Dr6SeMu6tu?ref=blog.chainsafe.io">https://t.co/Dr6SeMu6tu</a> &#x1F4F7;</p>&#x2014; Lodestar (@lodestar_eth) <a href="https://twitter.com/lodestar_eth/status/1953161353029665133?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">August 6, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h3 id="glamsterdam-strategic-proposal">Glamsterdam strategic proposal</h3><p>Lodestar outlined their strategic proposal for Ethereum&#x2019;s Glamsterdam upgrade, focusing on faster slot times through smarter structuring. The key idea is to implement EIP-7732 (Execution Payload Block Separation, or EPBS) to decouple consensus (beacon blocks and blobs) from execution payloads. This separation enables:</p><ul><li>More efficient pipelining of slot operations.</li><li>Parallel development paths for consensus and execution layers.</li><li>Boosted network stability and liveness, thanks to extended validation time and better bandwidth use.</li><li>Collection of real-world data to inform future slot time optimizations.</li></ul><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.chainsafe.io/lodestars-glamsterdam-headliner-vision/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Lodestar&#x2019;s Glamsterdam headliner vision</div><div class="kg-bookmark-description">Lodestar&#x2019;s vision for Glamsterdam&#x2019;s headliner is an opportunity to optimize Ethereum&#x2019;s slot structuring, separate consensus and execution concerns, and ensure we set ourselves up for future success in shortening slot times with data on overhead concerns.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.chainsafe.io/content/images/size/w256h256/2023/11/Frame-1004-1.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"><span class="kg-bookmark-author">ChainSafe</span><span class="kg-bookmark-publisher">Phil Ngo</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.chainsafe.io/content/images/2025/07/ls_glamsterdam.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #6"></div></a></figure><h2 id="forest">Forest</h2><p><strong>v0.28.0 &#x201C;Denethor&#x2019;s Folly&#x201D;</strong> Highly recommended release. Denethor&apos;s Folly introduces quality-of-life improvements for archival snapshot operations and resolves a memory leak issue affecting long-running nodes.</p><p><strong>Key updates for developers:</strong></p><ul><li><strong>v0.28.0 &#x201C;Denethor&#x2019;s Folly&#x201D;</strong> &#x2014; Memory leak fix for long-running nodes and smoother archival snapshot operations.</li><li><strong>FRC-0108 snapshot format</strong> &#x2014; F3 finality certificates embedded in CAR snapshots for much faster node bootstrap and reduced bandwidth.</li><li><strong><code>filecoin-requests-builder</code> tool</strong> &#x2014; Quickly generate real chain RPC calls for reproducible benchmarks across node implementations.</li><li><strong>Improved RPC conformance testing</strong> &#x2014; Structured, machine-readable reports with detailed failure info for easier CI integration and debugging.</li></ul><p><strong>Other improvements:</strong><br>The Forest team also added out-of-the-box Grafana monitoring, selectable snapshot export modes with speed estimates, and richer JSON decoding for Init and System actor messages. </p><div class="kg-card kg-callout-card kg-callout-card-yellow"><div class="kg-callout-emoji">&#x1F469;&#x200D;&#x1F4BB;</div><div class="kg-callout-text"><a href="https://github.com/ChainSafe/forest/discussions/5883?ref=blog.chainsafe.io">Read the full update on Github</a>.</div></div><h2 id="about-chainsafe">About ChainSafe</h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a>&#xA0;is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[Zcash in the browser: Bringing shielded ZEC to MetaMask]]></title><description><![CDATA[Send, receive, and manage shielded ZEC directly from the browser.]]></description><link>https://blog.chainsafe.io/zcash-in-the-browser-bringing-shielded-zec-to-metamask/</link><guid isPermaLink="false">68506813f1b47d00517342d6</guid><dc:creator><![CDATA[Ben Adar]]></dc:creator><pubDate>Mon, 21 Jul 2025 13:40:13 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/06/zcashbrowser.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/06/zcashbrowser.png" alt="Zcash in the browser: Bringing shielded ZEC to MetaMask"><p>After months of research, prototyping, and iteration, we&#x2019;re proud to release the Zcash Snap: a fully functional MetaMask Snap that lets users send, receive, and manage shielded ZEC directly from the browser.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://snaps.metamask.io/snap/npm/chainsafe/webzjs-zcash-snap/?ref=blog.chainsafe.io"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Zcash Shielded Wallet</div><div class="kg-bookmark-description">Customize your web3 experience with Zcash Shielded Wallet.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://snaps.metamask.io/icons/icon-192x192.png?v=568fd0b854cf6abf842679bfb6cc6fe1" alt="Zcash in the browser: Bringing shielded ZEC to MetaMask"><span class="kg-bookmark-author">MetaMask Snaps Directory</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://snaps.metamask.io/static/b466d58c5b6d114965a20145c1bc1a4c/banner.png" alt="Zcash in the browser: Bringing shielded ZEC to MetaMask"></div></a></figure><h2 id="the-challenge">The challenge</h2><p>Most cryptocurrencies work fine in a browser. Zcash isn&#x2019;t most cryptocurrencies.</p><p>Its shielded pool relies on zero-knowledge proofs, complex cryptographic systems that use custom circuits, massive proving keys, and memory-heavy computations. That&#x2019;s never been a good fit for browser environments.</p><p>To make things trickier, wallet frameworks like MetaMask were never built to support shielded assets out of the box. There was no drop-in solution. If we wanted Zcash to work in a browser, we&#x2019;d need a whole new approach. One that preserved its privacy guarantees without requiring users to install a custom node or give up control.</p><h2 id="first-we-asked-%E2%80%9Cis-this-even-possible%E2%80%9D">First, we asked, &#x201C;Is this even possible?&#x201D;</h2><p>In Summer 2024, before writing a single line of code, we partnered with Zcash Community Grants on a feasibility study. The question was simple: Can shielded ZEC run in the browser?</p><p>We dug into the technical constraints&#x2014;circuit size, memory limits, and proving time&#x2014;and tested whether a subset of the proving system could realistically run client-side without compromising performance or correctness.</p><p>The answer? Yes. With the right optimizations, browser support wasn&#x2019;t just possible, it was within reach.</p><p>That led to two grants:</p><ul><li>One from Zcash Community Grants to build a browser-native Zcash library.</li><li>One jointly funded by the MetaMask Grants DAO and Zcash Community Grants to create a Snap using that library.</li></ul><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Not long ago, the ChainSafe R&amp;D team completed a feasibility study on developing a Zcash web wallet.<br><br>Now, we&#x2019;re thrilled to announce two grants: one from <a href="https://twitter.com/ZcashFoundation?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@ZcashFoundation</a> to develop WebZjs, a browser client library, and another from <a href="https://twitter.com/MetaMask?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@MetaMask</a> to build a <a href="https://twitter.com/Zcash?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@zcash</a>  snap using it. <a href="https://t.co/Qdvtoc40fq?ref=blog.chainsafe.io">https://t.co/Qdvtoc40fq</a></p>&#x2014; ChainSafe (@ChainSafeth) <a href="https://twitter.com/ChainSafeth/status/1821264021896749442?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">August 7, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">&#x27A1;&#xFE0F;</div><div class="kg-callout-text"><a href="https://research.chainsafe.io/featured/Publications/Zcash-web-feasibility/?utm_medium=social&amp;utm_source=twitter&amp;utm_campaign=Zcash">Read the Feasibility Report here</a></div></div><h2 id="the-first-in-browser-zcash-shielded-transaction">The first in-browser Zcash shielded transaction</h2><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Our team has just completed the world&#x2019;s FIRST <a href="https://twitter.com/Zcash?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@zcash</a>  shielded transaction directly from a browser! &#x1F389;&#x1F510;<br><br>This is a huge leap toward making private, secure ZEC transactions more accessible than ever.  &#x1F91D; <a href="https://t.co/biXXc0RcfD?ref=blog.chainsafe.io">https://t.co/biXXc0RcfD</a></p>&#x2014; ChainSafe (@ChainSafeth) <a href="https://twitter.com/ChainSafeth/status/1839388987770949979?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">September 26, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><p>As a proof of concept, we used an early prototype of the library (what would become WebZjs) to send the first-ever shielded transaction entirely in the browser.</p><p>Shielded ZEC, live in a browser tab. No custodians. No custom software. Just code and cryptography.</p><p>That first transaction proved it could be done. The next step was making it repeatable.</p><h2 id="webzjs-a-zcash-library-for-browsers">WebZjs: A Zcash library for browsers</h2><p>We built WebZjs to provide all the core functionality developers need:</p><ul><li>Generate and verify zk-SNARKs</li><li>Build and sign shielded transactions</li><li>Interface with Sapling</li><li>Manage wallet state and addresses</li></ul><p>All in the browser. No compromises on privacy.</p><p>With WebZjs, developers can integrate shielded ZEC directly into web apps and wallet interfaces, making private transactions more accessible without lowering the security bar.</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Web&#x1647;js is now ready to support wallet development!<br><br>This marks the beginning of Web&#x1647;js as a tool that the community can use and contribute to! <a href="https://t.co/u4W6y37azV?ref=blog.chainsafe.io">https://t.co/u4W6y37azV</a></p>&#x2014; ChainSafe (@ChainSafeth) <a href="https://twitter.com/ChainSafeth/status/1847341864661258620?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">October 18, 2024</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="wrapping-it-in-a-snap">Wrapping it in a Snap</h2><p>Next, we used WebZjs to build the MetaMask Zcash Snap.</p><p>Snaps let developers extend MetaMask with custom logic, safely sandboxed from the core wallet. That made it the perfect platform for Zcash: custom cryptography, privacy-preserving logic, and a familiar user experience.</p><p>The Zcash Snap supports:</p><ul><li>Fully shielded send/receive</li><li>Sapling key management</li><li>Native ZEC support in MetaMask</li><li>A no-install, fully private workflow</li></ul><p>And all of it works in a regular browser, with the same privacy guarantees Zcash is known for.</p><p>Ivan Rubido was able to demo the snap at ZconVI &#x2935;&#xFE0F;</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">And wrapping up Day 1 of <a href="https://twitter.com/hashtag/ZconVI?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">#ZconVI</a>, Ivan Rubido  from <a href="https://twitter.com/ChainSafeth?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@ChainSafeth</a> provided a demo of an in-browser <a href="https://twitter.com/hashtag/Zcash?src=hash&amp;ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">#Zcash</a> wallet with Metamask Snaps. <a href="https://t.co/gpUr709SHS?ref=blog.chainsafe.io">https://t.co/gpUr709SHS</a></p>&#x2014; Zcash Foundation &#x1F6E1;&#xFE0F; (@ZcashFoundation) <a href="https://twitter.com/ZcashFoundation/status/1897058450321948980?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">March 4, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="iteration-testing-and-community-feedback">Iteration, testing, and community feedback</h2><p>Throughout development, we worked closely with Zcash Community Grants and the broader Zcash community to test the Snap in real-world conditions. Users ran shielded transactions, verified outputs, and confirmed that privacy was preserved, just with better UX.</p><p>After several rounds of feedback, bug fixes, and a full <a href="https://hacken.io/audits/zcash/dapp-zcash-snap-may2025/?ref=blog.chainsafe.io">audit</a> by Hacken, we finalized the Snap and made it public.</p><p>It&#x2019;s now live and ready for anyone to use.</p><p>Try the Snap <a href="https://snaps.metamask.io/snap/npm/chainsafe/webzjs-zcash-snap/?ref=blog.chainsafe.io">here</a>.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://snaps.metamask.io/snap/npm/chainsafe/webzjs-zcash-snap/?ref=blog.chainsafe.io"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Zcash Shielded Wallet</div><div class="kg-bookmark-description">Customize your web3 experience with Zcash Shielded Wallet.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://snaps.metamask.io/icons/icon-192x192.png?v=568fd0b854cf6abf842679bfb6cc6fe1" alt="Zcash in the browser: Bringing shielded ZEC to MetaMask"><span class="kg-bookmark-author">MetaMask Snaps Directory</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://snaps.metamask.io/static/911ab509b27f9f6e7b6c964a780d3241/banner.png" alt="Zcash in the browser: Bringing shielded ZEC to MetaMask"></div></a></figure><h2 id="the-community-made-this-possible">The community made this possible!</h2><p>This work wouldn&#x2019;t have been possible without the support and guidance of Zcash Community Grants and MetaMask Grants DAO.</p><p>Their vision for privacy-preserving infrastructure and willingness to push technical boundaries were critical at every step.</p><p>At ChainSafe, we believe privacy is a public good. Building tools like the Zcash Snap is part of our broader commitment to accessible, user-owned, and decentralized technology.</p><p>We&#x2019;re proud to have brought shielded ZEC to the browser, and we can&#x2019;t wait to see what builders do with it next.</p><hr><h2 id="about-chainsafe">About ChainSafe</h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a>&#xA0;is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[Lodestar's Glamsterdam headliner vision]]></title><description><![CDATA[Lodestar's vision for Glamsterdam's headliner is an opportunity to optimize Ethereum's slot structuring, separate consensus and execution concerns, and ensure we set ourselves up for future success in shortening slot times with data on overhead concerns.]]></description><link>https://blog.chainsafe.io/lodestars-glamsterdam-headliner-vision/</link><guid isPermaLink="false">6877c9d4f1b47d005173455c</guid><category><![CDATA[Lodestar]]></category><category><![CDATA[Ethereum]]></category><dc:creator><![CDATA[Phil Ngo]]></dc:creator><pubDate>Wed, 16 Jul 2025 19:02:54 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/07/ls_glamsterdam.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/07/ls_glamsterdam.png" alt="Lodestar&apos;s Glamsterdam headliner vision"><p>Lodestar&apos;s vision for Glamsterdam&apos;s headliner is an opportunity to <strong>optimize Ethereum&apos;s slot </strong>structuring, separate consensus and execution concerns, and ensure we set ourselves up for future success in shortening slot times with data on overhead concerns. We believe that shortening slot times is a great win for user experience (UX), but how we get there is also important.</p><p>In our proposal, we outline why using the slot time we have more efficiently is the first step to achieving the goal of shortening the length of slot times. Then, we outline the wins with EIP-7732 and why it matters. In addition, we can then parallelize development on both layers with an execution layer headliner.</p><h2 id="why-we-support-eip-7732">Why we support EIP-7732</h2><p><a href="https://eips.ethereum.org/EIPS/eip-7732?ref=blog.chainsafe.io">EIP-7732</a>, also known as Execution Payload Block Separation (EPBS), achieves multiple goals, which we believe are worth the effort over competing headliners. These goals are:</p><ul><li>Maximally efficient pipelining of slot operations.</li><li>Separate layer concerns between consensus beacon blocks/blobs and execution payloads.</li><li>Larger positive impact on the liveness/stability of Ethereum via extended validation timeframes and improved bandwidth utilization.</li><li>Allowing for the collection of real-world data to support the shortening of slot times.</li></ul><h2 id="why-is-separating-beacon-blocks-and-execution-payloads-important">Why is separating beacon blocks and execution payloads important?</h2><p>Every second counts. Minimizing the dependencies of operations will help us better optimize, structure and utilize every millisecond of a slot operation effectively. We do this by decoupling execution validation from consensus validation, both logically and temporally. Currently, we have to acquire multiple pieces of data, which vary in size, thus affecting transmission times:</p><ul><li>Consensus block</li><li>Execution payload</li><li>Blobs</li></ul><p>Then, we run the state transition function (processing the execution payload transactions to determine validity) so we can attest to the head block. <a href="https://x.com/ChodoKamil/status/1945154735058657357?ref=blog.chainsafe.io" rel="noopener">As payloads get larger</a>, the overhead on transmission and validation grows in time duration. Separating the dependencies unlocks massive efficiencies in how we utilize every millisecond of a slot.</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Stress-test ePBS (EIP-7732) vs. Electra on 1 GigaGas L1 (avg 200 MGas blocks ~4 s exec) w/ <a href="https://twitter.com/potuz_eth?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@potuz_eth</a> over 4 epochs:<br><br>Electra: 28 orphaned blocks (lost rewards)<br>ePBS: 0 orphaned blocks<br><br>EIP-7732 is a game-changer for Ethereum L1 scaling! &#x1F525; <a href="https://t.co/SGqfcJAwRR?ref=blog.chainsafe.io">pic.twitter.com/SGqfcJAwRR</a></p>&#x2014; Kamil Chodo&#x142;a (@ChodoKamil) <a href="https://twitter.com/ChodoKamil/status/1945154735058657357?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">July 15, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><p>With EPBS, attestations can be submitted if the consensus block is valid without the dependencies of all the pieces of data listed above, nor having to acquire and check validity of the execution payload itself (we remove the <code>ExecutionPayload</code> field from the <code>BeaconBlockBody</code> and replace it with a signed commitment as <code>SignedExecutionPayloadHeader</code>).</p><p>Consensus blocks are much smaller and faster to propagate and validate. Therefore, attestations can then be done earlier in the slot. Attestations will no longer need to be thrown out with invalid execution payloads, which minimize liveness failures if non-valid execution payloads are no longer being produced. For a network that <a href="https://mevboost.pics/?ref=blog.chainsafe.io" rel="noopener">majorily depends on out-of-protocol block production</a> rather than local block building, there is a larger surface of possible malfunctions that can occur, risking Ethereum&apos;s liveness capabilities. This could be from builders submitting invalid blocks and/or trusted relays having various issues ranging from failure to demote invalid block builders to infrastructure failures:</p><ul><li><a href="https://github.com/gattaca-com/helix/blob/main/incidents/post_mortem_28_nov.md?ref=blog.chainsafe.io">Post-Mortem: High Missed Block Rate Incident on 28/11/2024</a></li><li><a href="https://research.lido.fi/t/bloxroute-feb-6th-post-mortem/6586/1?ref=blog.chainsafe.io" rel="noreferrer">BloXroute - Feb 6th Post Mortem</a></li><li><a href="https://titanbuilder.substack.com/p/titan-relay-incident-report-withdrawals?ref=blog.chainsafe.io">Titan Relay Incident Report: Withdrawals Root Validation Issue</a></li></ul><p>EPBS ensures trustless builder accountability and helps to remove another vector for liveness failure.</p><p>In Delayed Execution (EIP-7886), the consensus block, execution payload and blobs still have the same propagation deadline, while EPBS, has different propagation deadlines and start times, which lead to better utilization of the slot.</p><p>If we also want to keep Ethereum as decentralized as possible, we need to consider supporting lower resourced nodes both in terms of compute and bandwidth. Supporting EPBS means we can restructure operators to efficiently use slots, reducing peak bandwidth requirements. Execution payloads can be transmitted over extended timeframes and executed with more time. Bandwidth is harder to scale due to physical network infrastructure requirements, so we must optimize its usage for scaling the network.</p><h2 id="invasiveness-of-shortening-slot-times">Invasiveness of shortening slot times</h2><p>EIP-7782 for six second slot times are much more invasive on the client as it touches more aspects of the codebase than EPBS. There is also no compelling data at this point to show that client implementations can successfully upkeep a network like Ethereum mainnet that is now two times faster. Some clients may need to rework their architecture (such as their caches) to optimize for this future. Postponing EIP-7782 gives clients more time to ensure their clients are ready for this future.</p><p>We believe that data from the network and clients collected from restructuring the slot can inform us about changes we can make to the slot time in the H* hard fork.</p><h2 id="bonus-integration-of-focil">Bonus integration of FOCIL?</h2><p>Although we believe the priority on EPBS is higher than Fork-choice Enforced Inclusion Lists (FOCIL), research developments have <a href="https://ethereum-magicians.org/t/epbs-focil-compatibility/24777?ref=blog.chainsafe.io" rel="noopener">allowed FOCIL to find a clean integration into EPBS</a>. FOCIL can make a great non-headliner addition to Glamsterdam and is complimentary to the integration of EPBS. This would make for a great secondary goal to the headliner if achievable.</p><p>For those who are concerned about the degradating of UX due to increased average transaction inclusion time, there is a mitigation in the works for a <a href="https://notes.ethereum.org/@anderselowsson/Dual-deadlinePTCvote?ref=blog.chainsafe.io" rel="noopener">dual-deadline PTC vote in EPBS</a> where the Payload Timeliness Committee (PTC) observes for the availability of the payload first at four seconds and then for blob data availability at ten seconds.</p><h2 id="execution-layer-headliner-eip-7919-pureth">Execution Layer Headliner: EIP-7919 Pureth</h2><h3 id="with-epbs-we-can-separate-consensus-and-execution-headliners-for-parallel-workflows">With EPBS, we can separate consensus and execution headliners for parallel workflows</h3><p>If EPBS becomes the headliner for Glamsterdam, the work is scoped to be 100% for consensus layer clients. An added side benefit of this is testing for the most complex and impactful feature is constrained to consensus, minimizing coordination and testing surface overhead. This will then allow execution client teams to focus on their own main headliner which focuses mostly on execution.</p><p>We believe an execution headliner like EIP-7919 Pureth, will unlock massive UX benefits for infrastructure with minimal disruptions to EPBS implementation on the consensus layer. Pureth removes current issues with consuming chain data and includes a few minor tasks for consensus clients. These tasks include updating SSZ definitions for execution payload and helps future-proof changes to the beacon state container.</p><h2 id="other-resources">Other resources</h2><p>There are multiple other benefits that we agree with which make EIP-7732 very appealing as a headliner for Glamsterdam. The resources are below for additional context:</p><ul><li><a href="https://ethereum-magicians.org/t/eip-7732-the-case-for-inclusion-in-glamsterdam/24306/1?ref=blog.chainsafe.io" rel="noopener">Potuz: EIP-7732 the case for inclusion in Glamsterdam</a></li><li><a href="https://blog.sigmaprime.io/glamsterdam-headliner.html?ref=blog.chainsafe.io" rel="noopener">Sigma Prime: Glamsterdam&apos;s Headliner</a></li><li><a href="https://hackmd.io/@tchain/prysm-glamsterdam-headliner?ref=blog.chainsafe.io" rel="noopener">Prysm Team&apos;s Glamsterdam Headliner</a></li></ul>]]></content:encoded></item><item><title><![CDATA[ChainSafe’s Monthly Roundup: Issue #5]]></title><description><![CDATA[Our team has been travelling the world, speaking at web3 conferences like EthCC in Cannes, Protocol Berg in Berlin, and the aptly named Berlinterop this June.]]></description><link>https://blog.chainsafe.io/chainsafes-monthly-roundup-issue-5/</link><guid isPermaLink="false">68753d70f1b47d005173446b</guid><category><![CDATA[monthly roundup]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Tue, 15 Jul 2025 19:45:33 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/07/cmr5.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/07/cmr5.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"><p>It&apos;s summer (at last!), and even though &quot;summer break&quot; is more of a memory than an expectation these days, ChainSafers are getting out there and making the most of the warm weather. Our team has been travelling the world, speaking at web3 conferences like EthCC in Cannes, Protocol Berg in Berlin, and the aptly named Berlinterop this June.</p><p>This month&#x2019;s roundup highlights the speaking engagements ChainSafe has been proud to participate in so far, as well as updates to our validator node infrastructure and protocol implementations. </p><p>If you&apos;re going to be at <a href="https://www.gamescom.global/en?ref=blog.chainsafe.io">Gamescom</a> next month, be sure to look out for ChainSafers!</p><h2 id="infrastructure">Infrastructure</h2><p>In June, our infrastructure team made significant strides: we fully deployed Kubernetes clusters to orchestrate our Canton deployment with improved scalability, seamless continuous deployment, and auto-healing features. </p><p>Plus, our <a href="https://www.monad.xyz/?ref=blog.chainsafe.io">Monad</a> node is live as a validator in <strong>Testnet-2</strong>! This deployment highlights our robust, production-ready infrastructure capabilities with Kubernetes and our expanding role in the Monad network.</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Announcing Monad Testnet-2!<br><br>Testnet-2 is an experimental environment for enhancing validator readiness for mainnet - this is for validators, not for users.<br><br>A total of 100-150 participants will be selected. T-2 is expected to last for 10 weeks starting in late May. <a href="https://t.co/ias3KBv8LE?ref=blog.chainsafe.io">pic.twitter.com/ias3KBv8LE</a></p>&#x2014; Monad &#x2A00; (@monad) <a href="https://twitter.com/monad/status/1920479500283847140?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">May 8, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h2 id="ethcc-in-cannes-france">EthCC in Cannes, France</h2><p>This year, ChainSafe made a strong presence at EthCC in Cannes, France, with our VP of Engineering, Belma, delivering a standout solo presentation and participating in a high-profile panel.</p><p>On July 2, she explored <strong>&#x201C;Open&#x2011;Source Development&#x202F;&#x2013; What Are We Doing Wrong?&#x201D;</strong>, highlighting common pitfalls in Web3 projects and sharing actionable strategies to foster more welcoming and collaborative open source communities.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/r-JuKG8ySEw?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Belma Gutlic (ChainSafe) -  Open Source Development - What Are We Doing Wrong?"></iframe></figure><p>The next day, she joined industry peers on the panel <strong>&#x201C;Who Captures the Value: The Protocol or the dApp?&#x201D;</strong> to debate how value accrues in the Ethereum stack and its implications for builders. Belma was joined by Lane Rettig from NEAR Foundation, Dani O. of EthDenver and MetaWebVC, Vangelis Andrikopoulos from Sei Labs, Guy Wuollet from a16z crypto, and Andy from The Rollup!</p><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2025/07/ethccpanel1.jpg" class="kg-image" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5" loading="lazy" width="1600" height="1200" srcset="https://blog.chainsafe.io/content/images/size/w600/2025/07/ethccpanel1.jpg 600w, https://blog.chainsafe.io/content/images/size/w1000/2025/07/ethccpanel1.jpg 1000w, https://blog.chainsafe.io/content/images/2025/07/ethccpanel1.jpg 1600w" sizes="(min-width: 720px) 720px"></figure><p>Belma&#x2019;s talks captured the spirit of ChainSafe&#x2019;s mission&#x2014;advocating for open, collaborative ecosystems and pushing critical conversations that shape the future of web3.</p><h2 id="lodestar">Lodestar</h2><p>In June, the Lodestar team laid out their plan to transition from a pure JavaScript client focused on browser compatibility to a performance-first, hybrid JavaScript and Zig architecture. </p><p>Read about the new direction for the Lodestar team here: </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.chainsafe.io/lodestar-zig-and-javascript/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Lodestar&#x2019;s next chapter: Blending Zig and JavaScript</div><div class="kg-bookmark-description">Lodestar&#x2019;s future: transitioning from a pure JavaScript client focused on browser compatibility to a performance-first, hybrid JavaScript and Zig architecture.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.chainsafe.io/content/images/size/w256h256/2023/11/Frame-1004-1.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"><span class="kg-bookmark-author">ChainSafe</span><span class="kg-bookmark-publisher">ChainSafe</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.chainsafe.io/content/images/2025/06/lodestar_june20.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"></div></a></figure><h3 id="ethcc-and-the-ethereum-protocol-fellowship">EthCC and the Ethereum Protocol Fellowship</h3><p>While representing ChainSafe at EthCC, Lodestar lead Phil Ngo (<a href="https://x.com/philngo_?ref=blog.chainsafe.io">@philngo_</a>) has picked up four Ethereum Protocol Fellowship (EPF) fellows to work with and on our Ethereum implementation. </p><p>The EPF is a six-month program that gives developers the opportunity to contribute directly to Ethereum&#x2019;s core protocol through hands-on projects and mentorship. The four fellows will work on Lodestar-related projects, working directly with the Lodestar team. </p><h3 id="protocol-berg-berlin">Protocol Berg Berlin</h3><p>Phil Ngo and Nico Flaig travelled to Berlin to talk about one of ChainSafe&apos;s shining moments from this year&#x2014;the Holesky hard fork rescue:</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://watch.protocol.berlin/65a90bf47932ebe436ba9351/watch?session=68547c2790bd41297ba6282e&amp;ref=blog.chainsafe.io"><div class="kg-bookmark-content"><div class="kg-bookmark-title">How client diversity saved Holesky: Lessons for the future</div><div class="kg-bookmark-description">Holesky, the largest Ethereum public testnet experienced one of the best, unplanned events for chaos testing as it hard-forked to Pectra. With an invalid block, consistent forking and a non-finality period spanning a duration of three weeks, client and infrastructure teams were pushed to Ethereum&#x2019;s&#x2026;</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://watch.protocol.berlin/favicon.ico" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"><span class="kg-bookmark-author">ETHBerlin</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://streameth-production.ams3.digitaloceanspaces.com/sessions/65a90bf47932ebe436ba9351/Side_Stage___Kino_6__22_-1750368699783.jpg" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"></div></a></figure><p>Read about the Holesky fork and the need for client diversity on our blog: </p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://blog.chainsafe.io/lodestar-holesky-rescue-retrospective/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Lodestar Holesky Rescue Retrospective</div><div class="kg-bookmark-description">When the Holesky hard fork went sideways, validators struggled through hidden bugs, misconfigured clients, and unexpected chain splits. Here&#x2019;s how quick thinking, precise fixes, and community teamwork turned a chaotic experience into a valuable lesson for future forks.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://blog.chainsafe.io/content/images/size/w256h256/2023/11/Frame-1004-1.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"><span class="kg-bookmark-author">ChainSafe</span><span class="kg-bookmark-publisher">Phil Ngo</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://blog.chainsafe.io/content/images/2025/03/Frame-39--5-.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #5"></div></a></figure><h2 id="forest">Forest</h2><p>ChainSafe&apos;s Filecoin implementation in Rust pushed a swath of updates last month. June&apos;s updates mean faster, more efficient performance for Forest users, especially for developers and node operators. RPC calls like <code>StateWaitMsg</code> are now significantly quicker, chain data is easier to inspect with new CLI tools, and the client is more aligned with the broader Filecoin ecosystem thanks to the Common Node API. Here&apos;s a look at Forest&apos;s June upgrades:</p><ul><li><strong>Release</strong>: Forest v0.27.0 now live.</li><li><strong>F3 Snapshots</strong>: Preliminary design complete; FRC open for review.</li><li><strong>Common Node API</strong>: Merged! Aligns JSON-RPC behaviour across Filecoin clients.</li><li><strong>RPC Performance</strong>: Added dedicated caches for receipts/events &#x2192; big speedup for <code>StateWaitMsg</code> &amp; <code>StateGetReceipt</code>.</li><li><strong>Power Table Optimization</strong>: New blockstore read cache slashed query time from 1.7s to 0.7s.</li><li><strong>Snapshot Automation</strong>: New CLI command auto-generates and syncs snapshots to S3.</li><li><strong>CLI Parity with Lotus</strong>: New <code>chain list</code> command shows detailed gas and message stats per epoch.</li><li><strong>Actor Param Decoding (PoC)</strong>: Early support for decoding parameters in Miner, Account, and EVM actors via <code>StateDecodeParams</code>.</li></ul><div class="kg-card kg-callout-card kg-callout-card-green"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text"><a href="https://github.com/ChainSafe/forest/discussions/5781?ref=blog.chainsafe.io" rel="noreferrer">Read the full changelog.</a></div></div><h2 id="about-chainsafe">About ChainSafe</h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a>&#xA0;is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[FRC-0104: Making Filecoin nodes speak the same language]]></title><description><![CDATA[FRC-0104: Common Node API, defines a standard API for Filecoin nodes using OpenRPC. It streamlines core methods across clients like Lotus and Forest, reducing guesswork and improving compatibility. With clear schemas and conformance testing, apps target one spec and work across compliant clients.]]></description><link>https://blog.chainsafe.io/frc-0104-filecoin-common-node-api/</link><guid isPermaLink="false">685c59c0f1b47d00517343fb</guid><category><![CDATA[Filecoin]]></category><category><![CDATA[Forest]]></category><category><![CDATA[Infrastructure]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Thu, 26 Jun 2025 14:53:15 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/06/Forest-Basic--2-.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/06/Forest-Basic--2-.png" alt="FRC-0104: Making Filecoin nodes speak the same language"><p><em>Written by <a href="https://x.com/OnChainAlexey?ref=blog.chainsafe.io"><em>Aleksei Krasnoperov</em></a></em></p><p>Filecoin is built on a vision of decentralization and client diversity, where multiple implementations coexist, driving innovation, resilience, and security across the ecosystem. However, for this vision to flourish, a fundamental problem needs to be addressed: interoperability.</p><p>Right now, Lotus is the primary reference implementation for Filecoin. Builders, miners, and applications widely adopt its JSON-RPC interface. But there&apos;s no formally agreed-upon standard for this interface. As a result, building applications compatible across multiple Filecoin nodes becomes an exercise in reverse engineering and guesswork.</p><p>Enter <strong>FRC-0104: The Common Node API</strong>.</p><h3 id="whats-the-problem"><strong>What&apos;s the problem?</strong></h3><p>As the de facto standard, the Lotus RPC API offers over <strong>280+ methods</strong>. However, since these methods were developed naturally over time by the Lotus team, some of them are core to the entire network, while others are more Lotus specific. This makes it a bit painful for alternative client developers to determine which methods are which.</p><p>Lack of standardization means:</p><ul><li>Slowing down development as builders spend resources deciphering interfaces.</li><li>Leaving developers uncertain about API stability and compatibility.</li></ul><h3 id="how-frc-0104-addresses-this"><strong>How FRC-0104 addresses this</strong></h3><p>FRC-0104 proposes a clearly defined standardized API for Filecoin nodes using an OpenRPC schema. It focuses on methods actively used in real-world applications, distilled down from the existing Lotus API.</p><p>FRC-0104 includes a subset of methods carefully identified through extensive exploration with the Lotus team. The selected methods reflect actual, widespread needs, eliminating redundancy and ensuring clarity for implementers.</p><p>This proposal categorizes RPC methods into four essential groups:</p><ul><li><strong>State queries</strong>: Methods to access chain, actor, and network states.</li><li><strong>Miner operations</strong>: Essential methods miners need for consensus participation.</li><li><strong>Transactions</strong>: Methods for submitting transactions and managing the mempool.</li><li><strong>Node operations</strong>: Methods for basic node management and inspection.</li></ul><p><a href="https://github.com/filecoin-project/FIPs/blob/master/FRCs/frc-0104.md?ref=blog.chainsafe.io#methods">Complete list of Common node API methods</a></p><p>By defining a common node API in FRC-0104, we&#x2019;re unlocking the ability to build robust, automated conformance testing tools. These tools can check whether implementations adhere to the standard structurally, behaviorally, and functionally. To support this, the Forest team is <a href="https://github.com/ChainSafe/forest/issues/5705?ref=blog.chainsafe.io">externalizing</a> their RPC Snapshots Testing Suite, making it easier for any team to validate their implementation against FRC-0104.</p><p>The result? A minimal, predictable, and universally compatible API standard.</p><h3 id="why-openrpc"><strong>Why OpenRPC?</strong></h3><p>With FRC-0104, we now have complete JSON schemas, detailed method descriptions, and consistent documentation that aligns precisely with implementation.</p><p>By proposing a normative OpenRPC schema, FRC-0104 provides a standardized, language-agnostic, and machine-readable definition of each method. This approach enables a simplified process for syntax compliance checks, method specificity, conformance validation, streamlined tooling across diverse programming languages and environments, and, critically, reducing redundant effort across teams.</p><h3 id="real-world-impact"><strong>Real-world impact</strong></h3><p>With FRC-0104 in place, developers can confidently build Filecoin applications that work seamlessly across Lotus, Forest, Venus, and any future implementations. Allowing node operators and miners flexibility in selecting the client implementation best suited to their needs, knowing their applications will remain compatible.</p><p>Implementing the Common Node API will also encourage clearer security considerations, allowing node operators to implement standardized access control and auditing measures.</p><h3 id="whats-next"><strong>What&apos;s next?</strong></h3><p>Establishing this standard specification encourages greater accountability among node implementers and, hopefully, more thoughtful consideration of future iterations. FRC-0104 will help mitigate rapid, unchecked iterations of the API, reducing technical debt over the long term.</p><p>By embracing a unified API standard, Filecoin can strengthen client diversity, streamline development, and move towards a robust, interoperable future.</p><p>Let&apos;s help Filecoin speak the same language!</p><hr><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://forest.chainsafe.io/?ref=blog.chainsafe.io"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Forest</div><div class="kg-bookmark-description">The Filecoin Implementation in Rust</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://forest.chainsafe.io/favicon.ico" alt="FRC-0104: Making Filecoin nodes speak the same language"><span class="kg-bookmark-author">Forest</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://imagedelivery.net/qdx9xDn6TxxInQGWsuRsVg/7961f9e4-e7f3-41a2-6c41-fa97f0d5e300/public" alt="FRC-0104: Making Filecoin nodes speak the same language"></div></a></figure><p>Forest is a Rust implementation of the Filecoin protocol, offering fast performance with minimal hardware requirements. Use it to validate and access chain data, run an RPC node, generate snapshots, and manage FIL with a built-in wallet.</p><p>Forest is built and maintained by ChainSafe</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a>&#xA0;|&#xA0;<a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a>&#xA0;|&#xA0;<a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a>&#xA0;|&#xA0;<a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a>&#xA0;|&#xA0;<a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[Lodestar’s next chapter: Blending Zig and JavaScript for a high-performance Ethereum client]]></title><description><![CDATA[Lodestar’s future: transitioning from a pure JavaScript client focused on browser compatibility to a performance-first, hybrid JavaScript and Zig architecture.]]></description><link>https://blog.chainsafe.io/lodestar-zig-and-javascript/</link><guid isPermaLink="false">68545126f1b47d00517343bb</guid><category><![CDATA[Lodestar]]></category><category><![CDATA[Ethereum]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Mon, 23 Jun 2025 12:54:19 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/06/lodestar_june20.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/06/lodestar_june20.png" alt="Lodestar&#x2019;s next chapter: Blending Zig and JavaScript for a high-performance Ethereum client"><p><em>Written by Cayman Nava.</em></p><p><em>Thanks to Matthew Keil for feedback.</em></p><p><strong>TLDR:</strong> Lodestar is rewriting core modules in Zig and switching to Bun as the primary runtime.</p><p>Since 2019, the Lodestar team has been an active contributor in the Ethereum R&amp;D ecosystem. Over the years, we&#x2019;ve built a robust production-grade beacon node and validator in TypeScript, which now powers a notable portion of the Ethereum network, especially among solo stakers.</p><p>As Ethereum&#x2019;s protocol has evolved, so has our client. Quietly, we&#x2019;ve begun replacing performance bottlenecks in JavaScript with native code. Today, we&apos;re excited to publicly share our vision for Lodestar&#x2019;s future: transitioning from a pure JavaScript client focused on browser compatibility to a performance-first, hybrid JavaScript and Zig architecture. Don&#x2019;t worry, browser support for key libraries the community depends on isn&#x2019;t going anywhere.</p><h3 id="our-javascript-journey">Our JavaScript journey</h3><p>In the early days-before the Beacon Chain launched (remember the Eth2 meme?)-we anticipated strong demand for Ethereum tooling in the browser. Naturally, we chose TypeScript.</p><p>But what we&#x2019;ve learned is that Ethereum browser tooling is a niche-important, but not where a client team has the most impact. The biggest value we provide is running performant infrastructure that supports mainnet. Our true contributions are the EIPs we write, the opinions we share, and the consensus we support. That&#x2019;s where Lodestar has influence in the ecosystem.</p><p>The challenge? JavaScript is not designed for high-performance applications. You can&#x2019;t control memory layout. You can&#x2019;t share structured data across threads. And the runtimes have deep, often unpredictable performance quirks.</p><p><a href="https://blog.chainsafe.io/lodestar-v1-4-0-a-fully-production-ready-ethereum-consensus-client/" rel="noopener">But that didn&apos;t stop us</a>. Despite those hurdles, we built a production-grade beacon node. Our client is now consistently a top performer: our Lido validators routinely operate within 0.1% effectiveness of the best-performing validators on mainnet.</p><p>These hard-won victories shaped the skills and mindset now driving our next leap forward.</p><h3 id="tradeoffs-in-the-bouncy-house">Tradeoffs in the bouncy house</h3><p>Trivia time:</p><blockquote>Q: How many bytes does a 32-byte Uint8Array take in Node.js?<br>A: 217 bytes. &#x1F62D;</blockquote><blockquote>Q: What&#x2019;s the fastest way to iterate through the bits of a BigInt in Node.js?<br>A: Convert it to a base-2 string and iterate over the characters. &#x1F92A;</blockquote><p>These are the kinds of realities we&#x2019;ve had to work around. JavaScript is bound&#x2014;gloriously and painfully&#x2014;to its runtime.</p><p>Every language poses unique challenges when building a robust client. In JavaScript&#x2019;s case, those challenges pushed us to get clever: squeezing every last drop of performance out of a leaky abstraction.</p><p>Over the past year, the biggest wins have come from moving bottlenecked workloads into native code-C, Rust, and now Zig. That strategy has shaped our roadmap. We&#x2019;re confident that doubling down will continue to raise Lodestar&#x2019;s reliability, efficiency, and long-term maintainability.</p><h3 id="zig-control-and-clarity">Zig: Control and clarity</h3><p>We&#x2019;ve been experimenting with Zig for over a year and we&apos;ve grown to love its laser focus. Zig is designed to be the simplest tool for writing optimal low-level software without surprises or hidden costs.</p><p>Its combination of simplicity, control, and performance makes it a perfect fit for building robust Ethereum infrastructure.</p><p>Zig&#x2019;s ecosystem is promising, but still young. The library landscape isn&#x2019;t yet battle-tested. We&#x2019;re helping improve that-by contributing upstream, building Ethereum-specific tooling, and integrating with C libraries.</p><p>We see our participation in the Zig ecosystem as a long-term investment. We&apos;re already collaborating with teams like Zeneth and Zeam, and we&#x2019;re excited to help shape a vibrant, reliable Zig-powered stack for Ethereum infra.</p><p>Active Zig projects we&#x2019;re working on:</p><ul><li><a href="https://github.com/ChainSafe/ssz-z?ref=blog.chainsafe.io" rel="noopener">ssz-z</a> &#x2013; feature-rich SSZ toolkit</li><li><a href="https://github.com/ChainSafe/zbuild?ref=blog.chainsafe.io" rel="noopener">zbuild</a> &#x2013; Zig build configuration using zon</li><li><a href="https://github.com/ChainSafe/snappy?ref=blog.chainsafe.io" rel="noopener">snappy</a> &#x2013; Zig bindings for Google&#x2019;s Snappy</li><li><a href="https://github.com/ChainSafe/hashtree-z?ref=blog.chainsafe.io" rel="noopener">hashtree</a> &#x2013; Zig binding for hashtree</li><li><a href="https://github.com/ChainSafe/blst-z?ref=blog.chainsafe.io" rel="noopener">blst-z</a> &#x2013; Zig binding for blst</li><li><a href="https://github.com/ChainSafe/zig-discv5?ref=blog.chainsafe.io" rel="noopener">zig-discv5</a> &#x2013; Zig implementation of discv5 (in progress)</li><li><a href="https://github.com/ChainSafe/bun-ffi-z?ref=blog.chainsafe.io" rel="noopener">bun-ffi-z</a> &#x2013; Utility to build/publish Zig FFI modules for Bun</li></ul><h2 id="bun-performance-edge-integrated-tooling">Bun: Performance edge &amp; integrated tooling</h2><p>Bun is a modern JavaScript runtime, written in Zig and built for speed. It&#x2019;s a compelling alternative to Node.js, offering:</p><ul><li>Lower latency</li><li>Higher throughput (via JavaScriptCore)</li><li>A tight and fast FFI</li><li>First-class tooling (bundler, test runner, etc.)</li></ul><p>For Lodestar, this means less overhead and faster execution, especially for CPU-bound tasks like cryptographic operations and serialization. In our benchmarks, Bun outperforms Node.js by up to 20% on these workloads.</p><p>While Node&apos;s N-API is a solid tool for native integration, Bun&apos;s leaner FFI unlocks tighter, more efficient interoperability with our native Zig code.</p><p>And for those of you relying on our browser tooling: nothing&#x2019;s changing. We&#x2019;ll continue supporting our TypeScript libraries and shipping WASM builds for critical modules.</p><h3 id="lodestar-ship-of-theseus">Lodestar: Ship of Theseus</h3><blockquote>If a ship has all its parts replaced, is it still the same ship?</blockquote><p>The architecture of Lodestar is solid. But JavaScript&#x2019;s inherent limits aren&#x2019;t going away. Rather than contorting around them, we&#x2019;re choosing to transcend them.</p><p>Bit by bit, module by module, we&#x2019;re rebuilding Lodestar-starting with cryptography, hashing, SSZ types, and the state transition-in Zig.</p><p>This unlocks architectural improvements we&#x2019;ve long wanted but couldn&#x2019;t justify. Many performance bottlenecks will simply disappear.</p><p>In the near term, we&#x2019;ll release Lodestar 2.0, which targets Bun and includes several breaking changes.</p><p>Longer term, we plan to integrate a native networking stack. Eventually, we might leave JavaScript behind entirely-but only if it helps us build the best possible Ethereum client.</p><p>Our north star is not any particular language or runtime, it&#x2019;s impact. It&#x2019;s doing what needs to be done to build infrastructure that Ethereum can depend on.</p><h3 id="what-does-this-mean-for-you">What does this mean for you?</h3><ul><li>Lodestar 2.0 will &quot;just work&#x2122;&quot; in Docker and binary releases.<ul><li>For source installs: just swap Node.js for Bun.</li></ul></li><li>Browser builds live on. WASM+TypeScript tooling stays, but it no longer leads the roadmap.</li><li>Cold-start times and first-slot performance are dramatically improved.</li><li>New ways to contribute:If you know Zig, we need you.Curious about Bun FFI, we need you.Want to benchmark or fuzz, we need you.</li></ul><h3 id="conclusion-building-for-impact">Conclusion: building for impact</h3><p>Six years. Hundreds of thousands of lines of code. Thousands of mainnet epochs. And a few gray hairs.</p><p>What we&#x2019;ve learned is this: the best way to meet Ethereum&#x2019;s evolving challenges is by aggressively optimizing our hottest code paths with the best tools available.</p><p>Zig gives us precision, predictability, and fearless concurrency. Bun gives us developer experience we can love-without compromising speed.</p><p>Together, they allow Lodestar to shine brighter than ever.</p><p>This isn&#x2019;t about chasing hype. It&#x2019;s about building the leanest, most trustworthy Ethereum consensus client we can imagine.</p><p>If that mission resonates with you, jump into our <a href="https://discord.gg/gxUgXVUCcv?ref=blog.chainsafe.io" rel="noopener">Discord</a>, open an <a href="https://github.com/ChainSafe/lodestar/issues/new/choose?ref=blog.chainsafe.io" rel="noopener">issue</a>, or fire off a PR. Whether you <a href="https://x.com/lodestar_eth?ref=blog.chainsafe.io" rel="noopener">cheer us on or tell us why we&#x2019;re wrong</a>, you&#x2019;re helping steer the ship.</p><p>Onward to Lodestar 2.0 - lighter, sharper, and ready for the next 10 million slots.</p>]]></content:encoded></item><item><title><![CDATA[ChainSafe’s Monthly Roundup: Issue #4]]></title><description><![CDATA[From a fresh new website to exciting protocol updates, validator milestones, and a sneak peek at what’s coming next, the ChainSafe team has been busy across the stack.]]></description><link>https://blog.chainsafe.io/chainsafes-monthly-roundup-issue-4/</link><guid isPermaLink="false">6852e17af1b47d005173433e</guid><category><![CDATA[monthly roundup]]></category><dc:creator><![CDATA[ChainSafe]]></dc:creator><pubDate>Wed, 18 Jun 2025 16:18:22 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/06/cmr4.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/06/cmr4.png" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #4"><p>Hey everyone, we&apos;ve got a lot to share this month! From a fresh new website to exciting protocol updates, validator milestones, and a sneak peek at what&#x2019;s coming next, the ChainSafe team has been busy across the stack.</p><h2 id="chainsafeios-redesign"><strong>ChainSafe.io&apos;s redesign</strong></h2><p>We are thrilled to announce the launch of our redesigned website!&#xA0;</p><figure class="kg-card kg-image-card"><img src="https://blog.chainsafe.io/content/images/2025/06/chainsafeio3.png" class="kg-image" alt="ChainSafe&#x2019;s Monthly Roundup: Issue #4" loading="lazy" width="2000" height="895" srcset="https://blog.chainsafe.io/content/images/size/w600/2025/06/chainsafeio3.png 600w, https://blog.chainsafe.io/content/images/size/w1000/2025/06/chainsafeio3.png 1000w, https://blog.chainsafe.io/content/images/size/w1600/2025/06/chainsafeio3.png 1600w, https://blog.chainsafe.io/content/images/size/w2400/2025/06/chainsafeio3.png 2400w" sizes="(min-width: 720px) 720px"></figure><div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x1F449;</div><div class="kg-callout-text"><b><strong style="white-space: pre-wrap;">Visit </strong></b><a href="https://chainsafe.io/?ref=blog.chainsafe.io" rel="noreferrer"><b><strong style="white-space: pre-wrap;">chainsafe.io</strong></b></a></div></div><p>The new site design offers improved navigation and detailed information about our protocol, infrastructure, and co-development projects. Everything &#x2018;ChainSafe&#x2019; is front and center on our new website, including two new initiatives we&#x2019;re thrilled to share with you:</p><h3 id="new-optimism-rust-op-supervisor">New Optimism Rust OP-Supervisor</h3><p>Built to keep the Superchain connected and secure, the OP-Supervisor validates messages, tracks block safety, and makes sure everything stays in sync across chains. Acting as a reliable L1 data source, it handles rollup verification, re-orgs, and state consistency so interoperability stays smooth, safe, and ready to scale.&#xA0;</p><p>Stay tuned for updates!</p><h3 id="chainsafe-staking">ChainSafe Staking</h3><p>We&#x2019;ve proven our chops as infrastructure operators, so we&#x2019;re opening the door (soon!) to clients who want to delegate funds to our staking operations.&#xA0;</p><p>ChainSafe is currently active on these networks, with plans to add more:</p><ul><li>Lido</li><li>Celestia</li><li>Namada</li><li>Kusama</li><li>Polkadot (coming soon)</li></ul><h2 id="infrastructure"><strong>Infrastructure</strong></h2><p>May was all about tightening access, testing portability, and deepening validator involvement. The infra team kept things moving behind the scenes&#x2014;and even went on the road with the Forest team. All the while, the Infrastructure team is working hard to open our staking services for new business!</p><h3 id="fildevsummit-toronto">FilDevSummit Toronto</h3><p>Infra was represented at FilDevSummit where team lead Josh (<a href="https://x.com/joshdougall?ref=blog.chainsafe.io">@joshdougall</a>) demoed a cool piece of handiwork: a portable Raspberry Pi 5 running a Forest RPC node over battery and 5G hotspot. Find more info on that our socials soon :)</p><h3 id="validator-milestones">Validator milestones</h3><p>We were accepted into the <a href="https://namada.net/blog/announcing-the-namada-delegation-program?ref=blog.chainsafe.io">Namada Validator Foundation Delegation Program</a> and successfully deployed a Canton validator, deepening our integration into the ecosystem.</p><h3 id="improved-access-with-opkssh">Improved access with OPKSSH</h3><p>We rolled out OPKSSH, a single sign-on SSH tool leveraging Google Workspace sign-ins and OpenID Connect. This enhances security by managing SSH access via identities and Google Groups, replacing long-lived keys with temporary tokens and MFA.</p><h2 id="lodestar">Lodestar</h2><p>Lodestar shipped two back-to-back releases focused on stability, usability, and future-proofing for Ethereum&#x2019;s evolving roadmap.</p><h3 id="v1300-may-14">v1.30.0 (May 14)</h3><ul><li>Focused on improving the validator experience and smoothing out compatibility issues with recent network changes.</li><li>Delivered a cleaner, more reliable staking journey for both advanced users and newcomers.</li></ul><h3 id="v1310-may-28">v1.31.0 (May 28)</h3><ul><li>Continued UX refinements and resolved lingering bugs.</li><li>Recommended upgrade for anyone on older versions to ensure optimal performance and readiness for upcoming protocol changes.</li></ul><h2 id="forest">Forest</h2><p>May was a big month for Forest, featuring new tooling, CLI enhancements, and direct engagement with the community at FIL Dev Summit Toronto. The team returned with valuable feedback already influencing Forest&#x2019;s roadmap.</p><h3 id="development-highlights">Development Highlights</h3><ul><li>Introduced a <strong>Snapshot Garbage Collector</strong>, enabling users to prune the chain and export lite snapshots with a new forest-cli chain prune snap command.</li><li>Improved tooling transparency via the forest-tool archive info command, now displaying index size for better snapshot visibility.</li><li>Aligned RPC token handling with Lotus, ensuring CLI interactions save tokens by default for smoother usage.</li></ul><h3 id="discoverability-boost">Discoverability Boost</h3><ul><li>The Forest Faucet saw SEO improvements, making it easier for users to find and use this critical onboarding tool.</li></ul><p>Shoutout to <a href="https://github.com/barbaraperic?ref=blog.chainsafe.io">@barbaraperic</a> for leading SEO improvements on the <a href="https://forest-explorer.chainsafe.dev/faucet?ref=blog.chainsafe.io"><strong>Forest Faucet</strong></a>!</p><p>More details are in the<a href="https://github.com/ChainSafe/forest/blob/master/CHANGELOG.md?ref=blog.chainsafe.io"> changelog</a>.</p><h2 id="gossamer"><strong>Gossamer</strong></h2><p>This month, the Gossamer team made meaningful strides across Polkadot protocol support, storage improvements, and JAM/PVM implementation, while engaging with the community in person at JAM Experience Lisbon.</p><p>Gossamer joined JAM Experience Lisbon 2025, where the team gave a spontaneous project update, shared ideas with fellow JAM implementers, and participated in local &#x201C;JAM Toaster&#x201D; events.</p><p>Be sure to check this out: Gossamer&#x2019;s Kirill and Jimmy appeared for an interview with Pala Labs, discussing Gossamer&#x2019;s role in JAM:</p><figure class="kg-card kg-embed-card"><div><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Meet Gossamer - JAM Implementers Interviews #6<br>w/ Cyril &amp; Jimmy from <a href="https://twitter.com/ChainSafeth?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">@ChainSafeth</a>:<br><br>&#x2022; 11 yrs of BTC&#x2192;ETH&#x2192;DOT distilled into a JAM client in Go<br>&#x2022; A vision for censorship-proof communities<br>&#x2022; DA solved  &#x2192;  &#x201C;JAM already does it.&#x201D;<br><br>WATCH NOW &#x2935;&#xFE0F; <a href="https://t.co/Y4WBxvhud4?ref=blog.chainsafe.io">pic.twitter.com/Y4WBxvhud4</a></p>&#x2014; Pala Labs (@pala_labs) <a href="https://twitter.com/pala_labs/status/1933209955097882644?ref_src=twsrc%5Etfw&amp;ref=blog.chainsafe.io">June 12, 2025</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div></figure><h3 id="core-development-progress">Core Development Progress</h3><ul><li>Continued integration of the GRANDPA finality gadget into Gossamer.</li><li>Advanced the Polkadot storage layer by integrating a refactored database backend for improved performance and maintainability.</li></ul><h3 id="polkadot-elves-implementation">Polkadot ELVES Implementation</h3><ul><li>Built out key subsystems for collator-validator communication, unbacked candidate distribution, and validator group gossip protocols.</li><li>Began implementing a relay-parent&#x2013;aware data structure for improved statement routing across the network.</li></ul><h3 id="jam-pvm-integration">JAM &amp; PVM Integration</h3><ul><li>Developed core JAM protocol logic, including block import routines and host functions for PVM communication.</li><li>Improved memory management in the PVM to support multiple pages, and explored strategies for PVM recompilation and JAM-NP research</li></ul><h2 id="about-chainsafe"><strong>About ChainSafe</strong></h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a> is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a> | <a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a> | <a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a> | <a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a> | <a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item><item><title><![CDATA[Beyond MEV: Navigating Ethereum’s decentralization and block building future]]></title><description><![CDATA[<p>At its core, Ethereum was designed with one intention: decentralization. But as Ethereum grows, staying true to that intention becomes harder.</p><p>One of the thorniest challenges? MEV (Maximal Extractable Value). Introducing technical vulnerability and incentive misalignment, MEV reshapes how blocks are built, who builds them, and who benefits from them.</p>]]></description><link>https://blog.chainsafe.io/beyond-mev-navigating-ethereums-decentralization-and-block-building-future/</link><guid isPermaLink="false">6851ceddf1b47d0051734300</guid><dc:creator><![CDATA[Ben Adar]]></dc:creator><pubDate>Tue, 17 Jun 2025 20:59:24 GMT</pubDate><media:content url="https://blog.chainsafe.io/content/images/2025/06/Frame-40--1--1.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.chainsafe.io/content/images/2025/06/Frame-40--1--1.png" alt="Beyond MEV: Navigating Ethereum&#x2019;s decentralization and block building future"><p>At its core, Ethereum was designed with one intention: decentralization. But as Ethereum grows, staying true to that intention becomes harder.</p><p>One of the thorniest challenges? MEV (Maximal Extractable Value). Introducing technical vulnerability and incentive misalignment, MEV reshapes how blocks are built, who builds them, and who benefits from them.</p><p>MEV forces the protocol to answer uncomfortable questions: Should Ethereum give up on local block production? Should Ethereum hand over block construction to sophisticated external builders? Should Ethereum enshrine those builders in-protocol?</p><p>On May 13, 2025, a <a href="https://github.com/ChainSafe/lodestar/discussions/7709?ref=blog.chainsafe.io#discussioncomment-13174039" rel="noreferrer">discussion</a> between the Lodestar and Flashbots teams offered a window into how these questions are being tackled at the protocol level and at the very ethos of Ethereum&apos;s values. The conversation was about what kind of network Ethereum wants to become and what it might have to give up along the way.</p><figure class="kg-card kg-embed-card"><iframe width="200" height="113" src="https://www.youtube.com/embed/jD0W53HuWHY?start=2637&amp;feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="Ethereum Guild: MEV, Block Building, and ePBS"></iframe></figure><h2 id="epbs-fixing-the-relay-problem-or-locking-in-a-new-one">ePBS: Fixing the relay problem, or locking in a new one?</h2><p>When Ethereum introduced PBS (Proposer-Builder Separation) via MEV-Boost, it did so off-protocol, using relays as trusted intermediaries to pass signed blocks from builders to proposers. The decision was made in the interest of time. It allowed Ethereum validators to access more competitive, high-MEV blocks without requiring them to run sophisticated infrastructure themselves. But in doing so, it introduced a new layer of complexity and risk.</p><p>Relays aren&#x2019;t part of the protocol. They can fail silently, be censored, or gamed.</p><p>ePBS (enshrined PBS) is meant to fix that. By baking PBS into the protocol itself, ePBS would remove the need for relays entirely. Builders would communicate directly with proposers in a trustless, standardized way. Payments would be enforced. Timing games, like waiting to see other bids or delaying payload publication, would be harder to pull off.&#xA0;</p><p>The current ePBS design introduces a Payload Timeliness Committee (PTC), a selected group of validators who vote on whether a builder&#x2019;s execution payload arrived on time. Their vote determines whether the block is treated as valid and full, or ignored as empty, discouraging strategic delays. In simpler terms: the committee acts as a check on builder behaviour. If a builder stalls, the protocol can penalize them by excluding their block or reducing its reward, keeping things fair and timely.&#xA0;</p><p>It&#x2019;s a clever design. One trust assumption, relays, is replaced by another, but this time inside the protocol, with cryptoeconomic enforcement.</p><p>Sounds like a win&#x2026; Until you zoom out.</p><blockquote>&#x201C;Many MEV researchers... are quite nervous about enshrining any PBS solution at this point in time because it&apos;s still changing very rapidly. You run a very high risk, frankly, of enshrining something suboptimal.&#x201D; <br>&#x2014;<a href="https://x.com/hasufl?ref=blog.chainsafe.io" rel="noreferrer">Hasu</a>, Strategy Lead, Flashbots&#xA0; </blockquote><p>Hasu&#x2019;s worry isn&#x2019;t about the goal of ePBS, it&#x2019;s about the timing. Ethereum&#x2019;s block-building market is still in flux. New designs like pre-confirmations, based rollups, and encrypted mempools are just beginning to take shape. </p><p>Hasu&#x2019;s worry isn&#x2019;t about the goal of ePBS, it&#x2019;s about the timing. Ethereum&#x2019;s block-building market is still in flux. New designs like pre-confirmations, based rollups, and encrypted mempools are just beginning to take shape.&#xA0;</p><p>That&#x2019;s the deeper tension. Today, builders are offchain actors. Their role is shaped by market forces, not protocol mandates. Validators can choose to use them or build locally. But once PBS is codified into the protocol, that flexibility shrinks. The builder-proposer relationship becomes part of Ethereum&#x2019;s core logic. And in doing so, it might crowd out other designs entirely.</p><p>By embedding one version of PBS into the protocol, Ethereum risks freezing out other paths, like deterministic ordering, encrypted mempools, or preconfirmations, before they&#x2019;ve had a chance to mature. Enshrining PBS now might lock-in the wrong assumptions into the protocol.</p><blockquote>&#x201C;ePBS basically means we give up on... solutions [like deterministic ordering] and just hand it over to the builder network.&#x201D; <br>&#x2014;<a href="https://x.com/nicoflaig?ref=blog.chainsafe.io" rel="noreferrer">Nico Flaig</a>, Protocol Engineer, Lodestar</blockquote><p>Enshrining PBS might solve one trust problem (relays) while hardcoding a bigger one: permanent dependence on external builders, <strong>most of whom are private, profit-maximizing entities.</strong></p><h2 id="buildernet-de-risking-our-dependence-on-private-builders">BuilderNet: De-risking our dependence on private builders</h2><p>Flashbots don&#x2019;t want to enshrine PBS. But they do want to fix the builder market.</p><p>Their proposal? BuilderNet, a decentralized block building network that runs on hardware-secured enclaves, known as Trusted Execution Environments (TEEs).</p><p>The idea is ambitious: keep the performance and sophistication of external builders, but remove their opacity and control. Use hardware to prove that builders aren&#x2019;t front-running users. Use privacy to stop sandwich attacks. Use structure to return value to users and validators alike.</p><p>On paper, it sounds like the best of both worlds: privacy, transparency, decentralization, and efficiency.</p><blockquote>&#x201C;If your transaction creates any MEV or pays any excess transaction fee, you can be refunded&#x2026; when BuilderNet generates any surplus against other builders, anybody who contributed to that surplus can get a refund.&#x201D; <br>&#x2014;Hasu</blockquote><p>That surplus comes from order flow. If BuilderNet can attract high-quality transaction flow from wallets, dapps, and users, then win blocks with it, it can split the rewards among the people who made that order flow possible. That includes users too, not just validators and builders.</p><p>It&#x2019;s a new kind of auction. One that handles blockspace and attention.</p><p>Still, BuilderNet asks for trust in a different place. Instead of trusting a builder&#x2019;s incentives, you&#x2019;re trusting the guarantees of the TEE: a black box of silicon, manufactured by Intel or AMD, running unobservable code. It&#x2019;s verifiable in theory but fragile in practice. SGX, Intel&#x2019;s last TEE, was retired. Flashbots now uses Intel TDX and hopes to diversify across manufacturers for redundancy. But for now, trust in the hardware is table stakes.</p><p>The other risk? Success. If BuilderNet works too well, if it becomes the only place builders want to build, does Ethereum just recreate the same centralization under a new banner?</p><p>That&#x2019;s the paradox BuilderNet is trying to navigate: use centralizing forces (speed, scale, specialization) to create decentralizing outcomes (user refunds, public infrastructure, transparency). Whether it works will depend on a combination of tech and governance. Hasu was clear:</p><blockquote>&#x201C;BuilderNet is intended to become its own decentralized network with open contribution, several teams, a governance process, BuilderNet improvement proposals.&#x201D; <br>&#x2014;Hasu </blockquote><p>It&#x2019;s a protocol by another name, but unlike ePBS, it isn&#x2019;t enshrined. It can evolve in the open or fail fast without taking Ethereum with it.</p><h2 id="the-builder-dilemma">The builder dilemma</h2><p>For a long time, building blocks was the validator&#x2019;s job. You ran a node, had a mempool, and ordered transactions. It wasn&#x2019;t always the most profitable, but it was yours.</p><p>MEV changed that. As the value of block construction increased, so did the pressure to specialize. Enter block builders, external actors with fast infrastructure, deep exchange access, and custom logic to extract value from every transaction. Suddenly, the validator&#x2019;s job wasn&#x2019;t to build, it was to outsource its right to propose a block to someone else in exchange for a share of the profits.</p><p>For some, this tradeoff feels unavoidable. For others, it feels like capitulation.</p><blockquote>&#x201C;The builders are antithetical to the ethos of why we all join the blockchain space... to build a better future that is more egalitarian and more meritocratic.&#x201D; <br>&#x2014;<a href="https://x.com/MatthewKeil?ref=blog.chainsafe.io" rel="noreferrer">Matthew Keil</a>, Protocol Engineer, Lodestar</blockquote><p>Keil&#x2019;s concern isn&#x2019;t about performance. It&#x2019;s about power. When only a few players can build blocks, they set the rules for who gets in and who doesn&#x2019;t.</p><p>Hasu sees it differently. In his view, builders are already solving real problems: they keep the validator set decentralized, distribute MEV more evenly, and improve user experience by reducing gas costs and sandwich attacks. To him, the question isn&#x2019;t whether builders should exist, it&#x2019;s how to constrain them. In his view, MEV should be minimized at the wallet and app layer, where users can assert control, and harnessed at the builder layer, where incentives and enforcement can be standardized.</p><p>And then there&#x2019;s a third perspective. Beyond ideals, what&#x2019;s actually feasible?</p><blockquote>&#x201C;How far do you think that we can scale local builders and still keep good liveness rates?&#x201D; <br>&#x2014;<a href="https://x.com/Data_Always?ref=blog.chainsafe.io" rel="noreferrer">Data Always</a>, Researcher, Flashbots</blockquote><p>In other words, even if you want decentralization, can you actually run it onchain, on time, on hardware that doesn&#x2019;t cost a fortune?</p><p>The deeper question here is: What kind of decentralization do we want, and who gets to participate in it? Is it about making sure every validator can build blocks locally on a Raspberry Pi? Or is it about making sure users, not only builders, benefit from block production? Ethereum may not be able to have both.</p><h2 id="building-on-shared-ground">Building on shared ground</h2><p>Even if they don&#x2019;t agree on how to get there, there was definitely one major consensus among both teams: keep Ethereum credible, decentralized, and performant.&#xA0;</p><p>And in some areas, the paths converge.</p><p><strong>Inclusion Lists (FOCIL)</strong> came up again and again. Both Lodestar and Flashbots saw them as a pragmatic step, one that could improve censorship resistance without overhauling the builder market.</p><p>Inclusion lists allow block proposers to require certain transactions to be included in blocks. Used wisely, they can reduce the worst effects of MEV and reintroduce some protocol-native accountability.</p><p><strong>Lower slot times</strong> also drew agreement. The logic is straightforward: when blocks happen faster, the window for MEV games gets smaller.</p><p>Hasu noted that lower latency reduces MEV in decentralized exchanges, especially in backrunning scenarios. Nico pointed out that faster slots could improve user experience while aligning with rollup-centric futures. No one saw it as controversial, just incomplete. A useful tool, but no cure.</p><p>Ethereum doesn&#x2019;t need everyone to think the same. It needs people to build things that challenge each other&#x2019;s assumptions and make the network stronger in the process.</p><h2 id="where-it-goes-from-here">Where it goes from here</h2><p>No one left the conversation thinking the problem was solved. If anything, the discussion sharpened the uncertainty.</p><p>BuilderNet might work. It might not. ePBS might prove essential. Or it might ossify too early. Local block building might fade. Or it might stage a comeback, but realistically this would only happen if we can give it better incentives. Right now, it&#x2019;s just so much more rational to outsource to builders who can extract more MEV.&#xA0;</p><p>What&#x2019;s clear is that Ethereum is at a fork, in the protocol and in its design philosophy. Does the network want to stay flexible, relying on external markets and modular upgrades? Or does it want to fold its infrastructure inward, codifying roles and responsibilities at the protocol layer?</p><p>BuilderNet, for now, represents an attempt to have it both ways: a system that isn&#x2019;t enshrined, but still aspires to protocol-level trust.&#xA0;</p><p>It&#x2019;s a bold bet that buys us some time. Time that Ethereum could use to keep experimenting without rushing into permanence.</p><p>The work isn&#x2019;t done. But it&#x2019;s clearer now where the edges are.</p><hr><h2 id="about-chainsafe">About ChainSafe</h2><p><a href="https://chainsafe.io/?utm_medium=referral&amp;utm_source=blog&amp;utm_campaign=ephemery&amp;utm_content=aboutus">ChainSafe</a> is a leading blockchain research and development firm specializing in protocol engineering, infrastructure development, co-development and web3-enabled gaming.</p><p>Alongside its contributions to major ecosystems such as Ethereum, Polkadot, Filecoin, ChainSafe creates solutions for developers and teams across web3.&#xA0;</p><p>As part of its mission to build accessible and improved tooling for developers, ChainSafe embodies an open source and community-guided ethos to advance the future of the internet.</p><p><a href="https://chainsafe.io/?ref=blog.chainsafe.io">Website</a> | <a href="https://www.youtube.com/channel/UCpm0lKkxhEKWutbPt1hOgRg?ref=blog.chainsafe.io">Youtube</a> | <a href="https://twitter.com/chainsafeth?ref=blog.chainsafe.io">Twitter</a> | <a href="https://www.linkedin.com/company/chainsafe-systems?ref=blog.chainsafe.io">Linkedin</a> | <a href="https://github.com/ChainSafe/?ref=blog.chainsafe.io">GitHub</a></p>]]></content:encoded></item></channel></rss>