<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Devs of Midnight</title>
    <description>The latest articles on Forem by Devs of Midnight (@devsofmidnight).</description>
    <link>https://forem.com/devsofmidnight</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10715%2F614fb778-bd43-4a7a-bda0-98a4ad4aed1f.png</url>
      <title>Forem: Devs of Midnight</title>
      <link>https://forem.com/devsofmidnight</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/devsofmidnight"/>
    <language>en</language>
    <item>
      <title>Midnight network is live</title>
      <dc:creator>Lauren Lee</dc:creator>
      <pubDate>Mon, 30 Mar 2026 14:28:04 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/midnight-network-is-live-1apj</link>
      <guid>https://forem.com/devsofmidnight/midnight-network-is-live-1apj</guid>
      <description>&lt;p&gt;The Midnight network is officially live. This milestone marks the introduction of state continuity and permanence in the network and is a significant achievement for everyone involved. This launch follows years of research, development, and collaboration to develop the fourth generation of blockchain technology to deliver end-to-end privacy that is flexible and enforceable at the protocol level. Scientists, engineers, developers, partners, and the community all made substantial and ongoing contributions to the development of the network from its inception.&lt;/p&gt;

&lt;p&gt;The genesis block marks both a culmination of building toward the network launch and the starting point for the next phase of on-chain network activity. Developers, partners, and institutions will be able to deploy applications and migrate assets on Midnight. This launch triggers the next stage of network and ecosystem expansion as more Midnight-native tools and services come online that will enable end-to-end programmable privacy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scaling real-world use with fourth-generation blockchain
&lt;/h2&gt;

&lt;p&gt;Midnight, the world's first fourth generation of blockchain addresses the fundamental barriers that have prevented blockchain from supporting the real world at scale. Applications in the real world require the ability to protect sensitive data, execute compliance logic on-chain, and make blockchain as accessible as any other technology. Midnight is designed to solve all three.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://midnight.foundation/news/securing-the-future-of-privacy-and-identity-with-midnights-fourth-generation-technology" rel="noopener noreferrer"&gt;Outlining the journey and roadmap&lt;/a&gt; from the first bitcoin transaction to Midnight’s fourth-generation technology, Founder of &lt;a href="https://iohk.io/" rel="noopener noreferrer"&gt;Input Output&lt;/a&gt; Charles Hoskinson explained how we got to the fourth generation of blockchain: "Satoshi gave us good money; Ethereum gave us programmability; Cardano brought the third generation of interoperability, scale and good governance. Midnight gives us our identity and privacy back”.&lt;/p&gt;

&lt;p&gt;While the previous generations of blockchains achieved scale and programmability, and sparked waves of innovation, they did so on public ledgers. This is why the vast majority of the world’s value remains off-chain. Trillions in real estate, private equity, debt and currency cannot yet be digitized. The lack of privacy and unpredictability of the infrastructure makes digitizing and tokenising their assets an existential risk to institutions and the value they hold.&lt;/p&gt;

&lt;p&gt;Midnight can remove the final hurdle to bringing the world’s economy on-chain. Midnight gives everyone the capability and opportunity to digitize all the world’s value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unlocking Real-world privacy
&lt;/h3&gt;

&lt;p&gt;For blockchain to support regulated activity, on-chain privacy must be programmable. Midnight allows developers to determine when to apply privacy across both application and transaction layers. This is achieved through a technical architecture that prioritizes data sovereignty and cryptographic verification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid Ledger Architecture:&lt;/strong&gt; Midnight uniquely combines both public and private data, enabling applications to process and verify sensitive personal, financial, and commercial information without the data ever being exposed to the network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-side proofs:&lt;/strong&gt; Sensitive data stays on the user’s device where it belongs. Using a local proof server, zero-knowledge proofs are generated on the user's machine and submitted to the network for validation, meaning identity, eligibility, credit, and compliance verification can happen without the underlying data ever leaving the user's hands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shielded &amp;amp; Unshielded Assets:&lt;/strong&gt; Midnight introduces shielded and unshielded assets, giving developers flexibility over if information is shared on-chain. Shielded assets keep balances, counterparties, and transaction flows off the public ledger. Unshielded assets provide the tools for open collaboration and exchange. Confidentiality and auditability are not a choice between one or the other — on Midnight, you have both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Selective Disclosure:&lt;/strong&gt; Compliance logic can be programmed directly into an application, defining exactly when transaction information must be revealed and to whom. Authorised participants including counterparties, auditors, regulators can be granted visibility into specific records without accessing the underlying data that initiated the transaction. This feature enables identity verification, regulatory checks, and eligibility conditions to be validated on-chain without exposing the underlying data.
Abstracting away the underlying zero-knowledge cryptography, Midnight empowers developers to focus on application logic while providing users with real-world privacy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sustainable costs and predictability
&lt;/h3&gt;

&lt;p&gt;Token volatility makes existing blockchain infrastructure commercially unworkable for many real-world use cases. Transaction fees paid in a network's native asset expose operational costs to market price movements, preventing businesses from accurately forecasting operational costs.&lt;/p&gt;

&lt;p&gt;Midnight architecture resolves this through a dual-component economic model. Separating the asset used to govern and secure the network from the resource used to pay for transactions ensures operational costs remain predictable. The Midnight network opens up a path toward a future where users no longer need to hold or manage volatile crypto assets to use the network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aligning incentives with dual-component tokenomics
&lt;/h2&gt;

&lt;p&gt;Midnight uses a &lt;a href="https://www.shielded.io/blog/midnight-and-solving-the-privacy-trilemma-midnight-summit-keynote" rel="noopener noreferrer"&gt;dual-component economic model designed to align the incentives of users, builders, and validators&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  NIGHT for utility and governance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://midnight.network/night" rel="noopener noreferrer"&gt;NIGHT&lt;/a&gt; is the generator for the network’s operational resource, DUST. NIGHT is the unshielded ledger-native governance and utility token. NIGHT generates the DUST resource, which means NIGHT functions as a store of value for the ecosystem without being consumed by daily transactions. NIGHT is also intended to grant governance rights to holders.&lt;/p&gt;

&lt;h3&gt;
  
  
  DUST is the renewable network resource
&lt;/h3&gt;

&lt;p&gt;DUST is the resource required to power transactions. Unlike traditional gas models where tokens are burned or paid out, DUST operates on a recharge model similar to a battery.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generation:&lt;/strong&gt; DUST is generated proportionally to NIGHT holdings. A NIGHT holder can register NIGHT to generate DUST and designate a recipient to power transactions on the network. That gives NIGHT holders flexibility to choose how to designate their DUST resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sustainability:&lt;/strong&gt; DUST regenerates over time until it reaches capacity based on the amount of NIGHT held. It takes seven days for a DUST address to reach full charge, whereas partial recharges take proportionally less time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-funding applications:&lt;/strong&gt; Developers can hold NIGHT to generate the DUST required to cover transaction costs for their users. This allows for applications where the end-user does not need to own or even be aware of the underlying tokens to interact with the service.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Abstracting away complexity with Compact programming language
&lt;/h3&gt;

&lt;p&gt;To make advanced cryptography accessible, Midnight uses Compact, a statically-typed domain-specific language (DSL) based on TypeScript. Compact allows developers to manage both private and public states within a single contract. By using familiar syntax, the language removes the requirement for specialized expertise in ZK proof cryptography, enabling more efficient development of sophisticated logic.&lt;/p&gt;

&lt;p&gt;The design of Compact focuses on lowering the technical barrier to building privacy-enhancing technology. Learn more about &lt;a href="https://docs.midnight.network/compact" rel="noopener noreferrer"&gt;Compact in the Midnight documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Launching alongside leading institutions
&lt;/h2&gt;

&lt;p&gt;The Midnight network launch represents the primary milestone of the current development phase, which focuses on strengthening infrastructure and achieving operational stability and security. During this stage, the network expands to include distinct federated node operators that collectively operate the protocol under explicit rules for participation and coordination.&lt;/p&gt;

&lt;p&gt;While these operators already support the Midnight Preprod network, their participation in the Midnight network launch provides the secure, enterprise-grade foundation necessary for live applications to function. By involving leading global institutions, the Midnight Foundation ensures that infrastructure is managed by operators with proven experience handling high-volume, mission-critical data.&lt;/p&gt;

&lt;p&gt;Charles Hoskinson explains, “Midnight is the first public blockchain that gives the world the infrastructure it needs to come on-chain — without sacrificing privacy or compliance. Launching alongside partners like Google Cloud and MoneyGram is a monumental step. For the first time, organisations of this scale have committed not only to running critical infrastructure but also to building and deploying live applications on a public network.”&lt;/p&gt;

&lt;p&gt;Learn more about the federated node partners supporting the network including &lt;a href="https://midnight.network/blog/worldpay-and-bullish-join-midnight-s-alliance-of-federated-node-operators-ahead-of-mainnet" rel="noopener noreferrer"&gt;Worldpay&lt;/a&gt;, &lt;a href="https://midnight.network/blog/worldpay-and-bullish-join-midnight-s-alliance-of-federated-node-operators-ahead-of-mainnet" rel="noopener noreferrer"&gt;Bullish&lt;/a&gt;, &lt;a href="https://midnight.network/blog/expanding-list-of-mainnet-node-operators-revealed" rel="noopener noreferrer"&gt;MoneyGram, Pairpoint by Vodafone, eToro&lt;/a&gt;, &lt;a href="https://midnight.network/blog/expanding-list-of-mainnet-node-operators-revealed" rel="noopener noreferrer"&gt;AlphaTON Capital, Google Cloud, Blockdaemon, and Shielded Technologies&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multiphase roll-out strategy for stability and security
&lt;/h2&gt;

&lt;p&gt;The rollout of the Midnight network from genesis block follows a structured multi-phase path to decentralization, and will begin with an initial phased application deployment rollout period to ensure operational stability and security. This is essentially an early phase where developers and applications can access the network’s functionality within a protected environment. &lt;/p&gt;

&lt;p&gt;This structured approach allows users to have more confidence that the early DApps and services launching on the network are from developers who have met rigorous readiness criteria.&lt;/p&gt;

&lt;p&gt;To maintain this security during the initial phase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Development best practices:&lt;/strong&gt; The Midnight Preprod environment is a mirror of the Midnight network. As is common development best practice, all developers should test and deploy to the Preprod environment first to ensure application logic is fully optimized before moving to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure resilience:&lt;/strong&gt; Federated node operators are protected by a private protected network. This architecture creates a secure, encrypted communication layer, making the network's core infrastructure resilient against potential external attacks.
Fahmi Syed, President of the Midnight Foundation explains the multiphase strategy: “This rollout will be phased, reflecting the importance of introducing privacy-enhancing infrastructure in a deliberate and resilient way. More importantly, this creates the foundations for an entirely new class of on-chain activity. When privacy is built into the system itself, it becomes possible to bring real-world activity and assets on-chain without exposing the underlying data — unlocking entirely new forms of economic value that were previously impossible on transparent infrastructure.”&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Progressive decentralization
&lt;/h3&gt;

&lt;p&gt;As stewards of the network, the Midnight Foundation intends to transition from this federated model to a fully decentralized network. This path to decentralization is designed to be managed thoughtfully and responsibly, ensuring the network maintains security and stability as it matures. This planned evolution allows the ecosystem to scale while moving toward a fully decentralized and permissionless state in &lt;a href="https://midnight.foundation/news/securing-the-future-of-privacy-and-identity-with-midnights-fourth-generation-technology" rel="noopener noreferrer"&gt;subsequent phases of the roadmap&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do next…
&lt;/h2&gt;

&lt;p&gt;The Midnight network launch is a significant milestone that initiates the next phase of ecosystem growth. This release provides the foundation for a wide range of privacy-preserving applications and institutional integrations.&lt;/p&gt;

&lt;p&gt;See live network metrics at &lt;a href="https://www.midnightexplorer.com/" rel="noopener noreferrer"&gt;Midnight Explorer&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Join the &lt;a href="https://discord.com/invite/midnightnetwork" rel="noopener noreferrer"&gt;community on Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check the Midnight blog regularly for &lt;a href="http://midnight.network/blog" rel="noopener noreferrer"&gt;more news and information&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>blockchain</category>
      <category>web3</category>
      <category>typescript</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Get your project on the map</title>
      <dc:creator>Lauren Lee</dc:creator>
      <pubDate>Fri, 06 Mar 2026 12:40:58 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/get-your-project-on-the-map-41ma</link>
      <guid>https://forem.com/devsofmidnight/get-your-project-on-the-map-41ma</guid>
      <description>&lt;p&gt;&lt;em&gt;Three quick updates to make sure your work is visible, counted, and recognized as part of the Midnight ecosystem.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://midnight.network/developer-hub" rel="noopener noreferrer"&gt;Midnight&lt;/a&gt; is approaching mainnet. The ecosystem already has hundreds of active developers building with Compact, deploying on Preprod, and shipping real applications. But &lt;strong&gt;activity that isn't attributed doesn't get counted&lt;/strong&gt;, and that invisibility has real consequences for the ecosystem you're helping to build.&lt;/p&gt;

&lt;p&gt;Establishing a clear public record of development activity ensures that the broader blockchain industry recognizes the growth of Midnight Network. Accurate attribution is a functional necessity for the ecosystem and establishes a standardized framework for documenting technical contributions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The attribution process
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.developerreport.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Electric Capital&lt;/strong&gt;&lt;/a&gt; produces the most widely cited developer report in blockchain. Investors, protocols, and media use it to understand which ecosystems are growing, which are stagnant, and where to pay attention. Their methodology is public: they track GitHub commits, contributor counts, and repository metadata across every major blockchain ecosystem. If your repo doesn't have the right metadata, their tooling won't associate it with Midnight, regardless of how active or high-quality the work is.&lt;/p&gt;

&lt;p&gt;Midnight is submitting its ecosystem map to Electric Capital for the first time, ahead of mainnet. This is a &lt;strong&gt;one-time window&lt;/strong&gt; to establish a credible public record of where the ecosystem stands from day one. Developer counts from the weeks surrounding a mainnet launch are captured in a rolling window that informs how new ecosystems are ranked and covered. Ecosystems that show up in that window with strong numbers get recognized. Ecosystems that don't, start from a deficit they spend months correcting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compounding developer results
&lt;/h2&gt;

&lt;p&gt;The changes below take under five minutes per repository. They are small, permanent, and consequential. Beyond writing code, implementing these metadata standards is a high-imact action for ecosystem growth.  Every repo that completes them is a developer who gets credited for building on Midnight.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;TL;DR: Midnight's developer ecosystem is real and growing. These three steps make sure that growth is visible to the tools and reports that the wider industry pays attention to.&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 1: Add GitHub topics
&lt;/h2&gt;

&lt;p&gt;GitHub topics are how Electric Capital (and other ecosystem trackers) programmatically identify which repos belong to which ecosystem. Without them, even actively maintained repos are invisible to the tooling.&lt;/p&gt;

&lt;p&gt;To add topics to your repository:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to your repository on GitHub&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the right-hand sidebar, find the About section&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the ⚙️ gear icon next to it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In the Topics field, add the relevant topics from the table below&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Save changes&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;When to use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;midnightntwrk&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Required for all Midnight ecosystem projects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;compact&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Add only if your project uses the Compact language&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Do not use:&lt;/strong&gt; &lt;code&gt;midnight&lt;/code&gt;, &lt;code&gt;midnight-network&lt;/code&gt;, &lt;code&gt;midnight-compact&lt;/code&gt;, or &lt;code&gt;midnight-ecosystem&lt;/code&gt;. These variants are not tracked and will not associate your project with the ecosystem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 2: Add one attribution sentence to your README
&lt;/h2&gt;

&lt;p&gt;Electric Capital's tooling scans README files for signals that confirm a repo's relationship to an ecosystem. One sentence, placed near the top of your README, is sufficient. Please use &lt;strong&gt;exact wording&lt;/strong&gt; from the table below. Customising the phrasing means the automated system may not recognize it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your project type&lt;/th&gt;
&lt;th&gt;Attribution sentence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;dApps, contracts, or tooling that run directly on Midnight&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"This project is built on the Midnight Network."&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SDKs, infrastructure, wallets, or services&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"This project integrates with the Midnight Network."&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Developer tooling, frameworks, or libraries&lt;/td&gt;
&lt;td&gt;&lt;em&gt;"This project extends the Midnight Network with additional developer tooling."&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 3: Open a PR to the Awesome dApps list
&lt;/h2&gt;

&lt;p&gt;The Midnight &lt;a href="http://github.com/midnightntwrk/midnight-awesome-dapps" rel="noopener noreferrer"&gt;Awesome dApps list&lt;/a&gt; is the community-maintained directory of ecosystem projects. Opening a PR adds your project to that record and makes it discoverable by other developers, partners, and the teams evaluating the ecosystem.&lt;/p&gt;

&lt;p&gt;Submit your project at: &lt;a href="https://github.com/midnightntwrk/midnight-awesome-dapps" rel="noopener noreferrer"&gt;github.com/midnightntwrk/midnight-awesome-dapps&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Earn Zealy points while you're at it!
&lt;/h2&gt;

&lt;p&gt;Each of the three steps above has a corresponding quest on &lt;a href="https://zealy.io/cw/midnightnetwork/questboard" rel="noopener noreferrer"&gt;Zealy&lt;/a&gt;. Complete them to earn points and appear on the &lt;a href="https://zealy.io/cw/midnightnetwork/leaderboard" rel="noopener noreferrer"&gt;Midnight ecosystem leaderboard&lt;/a&gt;. Links to the three quests are below.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quest 1:&lt;/strong&gt; &lt;a href="https://zealy.io/cw/midnightnetwork/questboard/admin/2b5850a3-c343-44c1-9478-71aae189837c" rel="noopener noreferrer"&gt;Add the midnightntwrk GitHub topic&lt;/a&gt;   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quest 2:&lt;/strong&gt; &lt;a href="https://zealy.io/cw/midnightnetwork/questboard/admin/1c837b8e-b266-419e-a282-a0ea1eee884e" rel="noopener noreferrer"&gt;Add the attribution sentence to your README&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quest 3:&lt;/strong&gt; &lt;a href="https://zealy.io/cw/midnightnetwork/questboard/admin/63ed7bac-6c9f-4387-8bb3-36d861d3ec97?tab=properties" rel="noopener noreferrer"&gt;Open a PR to the Midnight Awesome dApps list&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Three steps, once per repo, permanent record
&lt;/h2&gt;

&lt;p&gt;These changes don't affect how your code works. They affect how your work is seen. Midnight's first public developer count will be used in every industry report, investor briefing, and ecosystem comparison that references the network for years to come. Your repo being in that count matters.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions?&lt;/em&gt; Find us in the &lt;a href="https://discord.com/invite/midnightnetwork" rel="noopener noreferrer"&gt;Midnight Discord&lt;/a&gt; in &lt;strong&gt;#dev-chat&lt;/strong&gt;, or reply to this post.&lt;/p&gt;

</description>
      <category>ecosystem</category>
      <category>web3</category>
      <category>devrel</category>
      <category>midnight</category>
    </item>
    <item>
      <title>Aliit Fellowship Now Accepting Cohort 2 Applications</title>
      <dc:creator>Lauren Lee</dc:creator>
      <pubDate>Thu, 05 Mar 2026 14:48:25 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/aliit-fellowship-now-accepting-cohort-2-applications-g5m</link>
      <guid>https://forem.com/devsofmidnight/aliit-fellowship-now-accepting-cohort-2-applications-g5m</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The Aliit Fellowship, the technical contributor program for the Midnight network, is now accepting applications for Cohort 2. Cohort 1 is active. The program has evolved. Here's everything you need to know before you apply.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Aliit Fellowship serves as the primary hub for hands-on contribution to Midnight. The Aliit prioritizes technical expertise and ecosystem development. Fellows engage directly with the protocol, create essential tooling, and produce the documentation required to make zero-knowledge (ZK) technology accessible. Alongside core development, the Fellowship includes dedicated tracks for Education, Advocacy, and Community Leadership which are inclusive of different types of contributions.&lt;/p&gt;

&lt;p&gt;Following the successful launch of Cohort 1, the Fellowship has transitioned to a rolling admission model to better integrate contributors as they ready their projects. Applications for Cohort 2 are now open.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;About the Aliit&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The Aliit is Midnight's technical fellowship. It exists for developers who are actively contributing to the ecosystem in meaningful, hands-on ways, whether through code, tooling, documentation, support, or other technically grounded work.&lt;/p&gt;

&lt;p&gt;The Aliit Fellowship focuses on the technical development of the network rather than social or community reach. While the &lt;a href="https://midnight.network/nightforce-ambassador-program" rel="noopener noreferrer"&gt;Nightforce&lt;/a&gt; program supports community growth and visibility, the Aliit supports contributors who strengthen the technical core of the ecosystem.&lt;/p&gt;

&lt;p&gt;The Aliit Fellowship is looking for contributors who operate with good technical judgment, communicate clearly, and are willing to help unblock others. This Fellowship is built on trust and responsibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;The Candidacy Structure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The Aliit Fellowship now runs on a four-stage path:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Candidate&lt;/strong&gt; is where you begin. This is a two-month phase structured within Zealy, with updated quests designed to surface how you think, what you build, and how you show up for the community. Applications to become a Candidate are reviewed on a rolling weekly basis. You can apply to become a Candidate at any point.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 1 Fellow&lt;/strong&gt; is the entry point for the Fellowship. If you're accepted into Cohort 2, you’ll become a Tier 1 Fellow. Cohort 1, which graduated from Cohort 0, are already Tier 1 Fellows. This stage is  a four-month commitment, and it's where you'll establish your rhythm of contribution and build alongside the existing Fellows.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 2 Fellow&lt;/strong&gt; runs for six months and carries you through the end of the year. Members who progress to Tier 2 have demonstrated consistency and are embedded more deeply in the work of the ecosystem.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tier 3 Fellow&lt;/strong&gt; opens in January 2027. We'll share more about what this looks like as the year develops.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How Contribution Works: The Four Personas&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One of the most significant changes in this iteration is the introduction of contribution personas. Rather than prescribing a single mode of participation, we've defined four lanes that reflect how real technical contributors actually work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Builder&lt;/strong&gt; is the default for every member. This covers development work, tooling, protocol contributions, and anything living in GitHub.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Educator&lt;/strong&gt; is for members who create tutorials, run workshops, write documentation, or help other developers understand complex concepts. If you're the person who makes ZK proofs feel approachable, this is your lane.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advocate&lt;/strong&gt; covers talks, content creation, and activities that bring new developers into the Midnight ecosystem. If you're actively representing Midnight at events or through original content, this is where that work counts.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Leader&lt;/strong&gt; recognizes members who organize events, provide ongoing support in developer channels, and help coordinate the broader builder community.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're not locked to one persona. Each month, you self-report where your contributions landed across as many lanes as apply to you. The reporting is lightweight: GitHub activity plus a monthly summary, nothing more.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Benefits of Fellowship&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The Fellowship provides resources and benefits tailored specifically to technical contributors. Candidates receive access to an exclusive Discord channel and an NFT while in the queue. Fellows receive a package designed to support technical, personal and professional development alongside ecosystem growth including: welcome swag, developer tool credits, NFTs, dedicated Discord access, community spotlight opportunities, fireside speaking slots, public speaking coaching, and conference credits.&lt;/p&gt;

&lt;p&gt;The further you progress, the more the Fellowship supports your ongoing development . Tier 3 Fellows will receive NIGHT rewards on top of all other benefits. More details on that will come as mainnet approaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How Admissions Work&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Applications are accepted on a rolling basis and reviewed weekly. There is no batch deadline. If you're ready, you can apply now.&lt;/p&gt;

&lt;p&gt;During the Candidate phase, we're paying attention to how you engage with the updated Zealy quests, the quality of your contributions in Discord and the developer channels, and how you show up for other builders. Admission decisions reflect that whole picture.&lt;/p&gt;

&lt;p&gt;Once accepted into Tier 1, you'll receive an onboarding from the team and be connected with the existing Fellows. The program is designed to be genuinely collaborative, not just a credential.&lt;/p&gt;

&lt;p&gt;This program was built because Midnight is early, complex, and evolving. The Aliit exists to catch issues early, improve clarity, and help other builders move forward. If that kind of work is what you're already doing, you belong here.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to apply
&lt;/h2&gt;

&lt;p&gt;The admission process operates on a rolling basis, with Candidate applications undergoing regular review. The first formal review of this Candidate pool occurs at the end of April, with official onboarding for Cohort 2 beginning on May 1.&lt;/p&gt;

&lt;p&gt;Early application ensures candidates have sufficient time to establish a record of contribution before the April review.&lt;/p&gt;

&lt;p&gt;If you have questions before applying, &lt;a href="https://discord.com/invite/midnightnetwork" rel="noopener noreferrer"&gt;drop them in the Midnight Discord&lt;/a&gt;. The Fellows and the DevRel team are present and responsive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://midnight.network/aliit" rel="noopener noreferrer"&gt;Apply to be part of Cohort 2 here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>community</category>
      <category>blockchain</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Midnight MCP - AI-assisted development for Compact smart contracts</title>
      <dc:creator>Idris Olubisi💡</dc:creator>
      <pubDate>Tue, 24 Feb 2026 13:03:27 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/midnight-mcp-ai-assisted-development-for-compact-smart-contracts-37i</link>
      <guid>https://forem.com/devsofmidnight/midnight-mcp-ai-assisted-development-for-compact-smart-contracts-37i</guid>
      <description>&lt;p&gt;AI coding assistants like Claude, GitHub Copilot, and Cursor have transformed how developers write code. But they have a fundamental limitation: they only know what was in their training data.&lt;/p&gt;

&lt;p&gt;Compact, Midnight's smart contract language, isn't in that training data. When you ask an AI assistant to write a Compact contract, it hallucinates. It invents syntax that doesn't exist, references functions that were never defined, and produces code that fails at compile time.&lt;/p&gt;

&lt;p&gt;Midnight MCP solves this problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MCP?
&lt;/h2&gt;

&lt;p&gt;The &lt;em&gt;Model Context Protocol&lt;/em&gt; (MCP) is an open standard that allows AI assistants to access external tools and data sources. Instead of relying solely on training data, an AI assistant with MCP can query live documentation, search codebases, and call APIs.&lt;/p&gt;

&lt;p&gt;Midnight MCP is an MCP server purpose-built for Midnight development. It gives AI assistants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Indexed knowledge&lt;/strong&gt; of 102 Midnight repositories&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real compiler validation&lt;/strong&gt; before showing you code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic search&lt;/strong&gt; across documentation and examples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version-aware syntax references&lt;/strong&gt; for Compact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you ask Claude to write a Compact contract, it queries Midnight MCP for the correct syntax, generates the code, validates it against the real compiler, and only shows you working code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with AI-generated Compact code
&lt;/h2&gt;

&lt;p&gt;Consider this prompt:&lt;/p&gt;

&lt;p&gt;"Write a simple counter contract in Compact"&lt;/p&gt;

&lt;p&gt;Without Midnight MCP, an AI assistant might generate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;contract Counter {
    state count: Int = 0;

    function increment(): Void {
        count = count + 1;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This looks plausible. It's also completely wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compact uses &lt;code&gt;ledger&lt;/code&gt; for state, not &lt;code&gt;state&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;There is no &lt;code&gt;Int&lt;/code&gt; type in Compact. It uses &lt;code&gt;Uint&amp;lt;32&amp;gt;&lt;/code&gt;, &lt;code&gt;Field&lt;/code&gt;, and other specific types.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Void&lt;/code&gt; doesn't exist. Compact uses &lt;code&gt;[]&lt;/code&gt; for the unit type.&lt;/li&gt;
&lt;li&gt;State mutations require witness functions, not direct assignment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI hallucinated a language that resembles Solidity but isn't Compact. A developer unfamiliar with Compact might spend hours debugging code that was never valid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Midnight MCP
&lt;/h2&gt;

&lt;p&gt;Midnight MCP requires no API keys and installs in under 60 seconds. Add the appropriate configuration to your AI assistant based on the tool you use.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Desktop
&lt;/h3&gt;

&lt;p&gt;On macOS, edit &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;. Add the following configuration to enable Midnight MCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"midnight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"midnight-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cursor
&lt;/h3&gt;

&lt;p&gt;Create or edit &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in your project root. You can also configure it globally at &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; on macOS/Linux or &lt;code&gt;%USERPROFILE%\.cursor\mcp.json&lt;/code&gt; on Windows. Add the following configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"midnight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"midnight-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  VS Code with GitHub Copilot
&lt;/h3&gt;

&lt;p&gt;Create or edit &lt;code&gt;.vscode/mcp.json&lt;/code&gt; in your project. Add the following configuration to connect Copilot to Midnight MCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"servers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"midnight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"midnight-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After adding the configuration, restart your AI assistant. You now have access to 29 Midnight-specific tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Midnight MCP works
&lt;/h2&gt;

&lt;p&gt;Midnight MCP operates as a local server that connects your AI assistant to Midnight's ecosystem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcale9bp8n6rz03heck2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcale9bp8n6rz03heck2a.png" alt="Midnight MCP Architecture" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you ask for a Compact contract:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The AI assistant calls &lt;code&gt;midnight-get-latest-syntax&lt;/code&gt; to retrieve current Compact syntax.&lt;/li&gt;
&lt;li&gt;It generates code using the correct patterns.&lt;/li&gt;
&lt;li&gt;It calls &lt;code&gt;midnight-compile-contract&lt;/code&gt; to validate against the real compiler.&lt;/li&gt;
&lt;li&gt;If compilation fails, it reads the error, fixes the code, and retries.&lt;/li&gt;
&lt;li&gt;You receive verified, working code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This compile-validate-fix loop happens automatically. You never see the broken intermediate versions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real compiler integration
&lt;/h2&gt;

&lt;p&gt;Most code-generation tools rely on pattern matching and hope. Midnight MCP validates code against the actual Compact compiler hosted.&lt;/p&gt;

&lt;p&gt;The compiler catches errors that static analysis cannot, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type mismatches&lt;/strong&gt;: Using &lt;code&gt;Field&lt;/code&gt; where &lt;code&gt;Uint&amp;lt;64&amp;gt;&lt;/code&gt; is expected&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sealed field violations&lt;/strong&gt;: Attempting to access sealed state incorrectly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disclose rule errors&lt;/strong&gt;: Missing or malformed privacy annotations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unbound identifiers&lt;/strong&gt;: References to undefined variables or types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the compiler returns an error, the response includes the exact line number and column:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;success: false
message: "Line 12:8 - unbound identifier 'totalSupply'"
errorDetails:
  line: 12
  column: 8
  errorType: error
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI assistant uses this information to fix the code and try again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Graceful fallback
&lt;/h3&gt;

&lt;p&gt;If the hosted compiler is unavailable, Midnight MCP falls back to static analysis. The response indicates which validation method was used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;validationType: "compiler"           # Real compiler validation
validationType: "static-analysis-fallback"  # Compiler unavailable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You always receive validation. The tool never fails silently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Semantic search across 102 repositories
&lt;/h2&gt;

&lt;p&gt;Today, Midnight MCP indexes every non-archived repository in the Midnight ecosystem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;All 88 repositories from &lt;code&gt;midnightntwrk&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;14 community and partner repositories, including OpenZeppelin contracts and hackathon winners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The search is semantic, not keyword-based. For example, a prompt like "find code that handles shielded transactions" returns relevant results even if those exact words don't appear in the code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt: "How do I implement a token with transfer limits?"

midnight-search-compact returns:
- Token contract examples from midnight-examples
- Rate limiting patterns from community repos
- Relevant documentation sections
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  29+ tools for Midnight development
&lt;/h2&gt;

&lt;p&gt;Midnight MCP provides 29 tools organized by function.&lt;/p&gt;

&lt;h3&gt;
  
  
  Search tools
&lt;/h3&gt;

&lt;p&gt;Use these tools to find code, documentation, and examples across the Midnight ecosystem.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-search-compact&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search Compact language code across indexed repos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-search-docs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search official Midnight documentation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-search-typescript&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search TypeScript SDK implementations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-fetch-docs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Fetch live documentation from docs.midnight.network&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Analysis tools
&lt;/h3&gt;

&lt;p&gt;Use these tools to validate, analyze, and review Compact contracts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-compile-contract&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Validate code against the real Compact compiler&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-analyze-contract&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Run 15 static security checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-review-contract&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI-powered security review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-extract-contract-structure&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parse contract structure and exports&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Generation tools
&lt;/h3&gt;

&lt;p&gt;Use these tools to create new contracts and documentation.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-generate-contract&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generate contracts from natural language descriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-document-contract&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generate documentation in Markdown or JSDoc format&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Repository tools
&lt;/h3&gt;

&lt;p&gt;Use these tools to access files and syntax references from Midnight repositories.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-get-file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Retrieve files from any indexed Midnight repository&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-get-file-at-version&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Get file content at a specific version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-compare-syntax&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compare syntax between Compact versions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-get-latest-syntax&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Current Compact syntax reference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-get-repo-context&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Everything needed to start coding (compound tool)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-list-examples&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List available example contracts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Version management tools
&lt;/h3&gt;

&lt;p&gt;Use these tools to manage upgrades and track changes between Compact versions.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-upgrade-check&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full upgrade analysis (compound tool)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-check-breaking-changes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Identify breaking changes between versions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;midnight-get-migration-guide&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Step-by-step migration instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Resources and prompts
&lt;/h2&gt;

&lt;p&gt;Beyond tools, Midnight MCP provides nine built-in resources and five interactive prompts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Resources&lt;/em&gt; are always-available references that provide quick access to syntax and examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;midnight://syntax/latest      Current Compact syntax
midnight://examples/counter   Counter contract example
midnight://examples/token     Token contract example
midnight://docs/compact       Compact language reference
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Prompts&lt;/em&gt; are templates for common tasks that guide you through specific workflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create-compact-contract      Start a new contract
debug-compact-error          Fix compilation errors
security-review              Full security audit
compare-compact-versions     Migration assistance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Midnight MCP is built for reliability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Token efficiency&lt;/strong&gt;: Outputs YAML by default (20-30% fewer tokens than JSON)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compound tools&lt;/strong&gt;: Single calls that combine multiple operations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graceful degradation&lt;/strong&gt;: Falls back to cached data when services are unavailable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress notifications&lt;/strong&gt;: Real-time updates during long operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The codebase is fully tested with 206 tests across 10 test suites.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Midnight MCP is open source and actively developed. The roadmap includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Full ZK circuit output parsing&lt;/strong&gt; from compiler results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contract deployment&lt;/strong&gt; directly from AI chat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript SDK integration&lt;/strong&gt; for automatic prover code generation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local devnet interaction&lt;/strong&gt; for querying balances and submitting transactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn more
&lt;/h2&gt;

&lt;p&gt;Explore the source code and contribute:&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://github.com/Olanetsoft/midnight-mcp" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://npmjs.com/package/midnight-mcp" rel="noopener noreferrer"&gt;npm package&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://github.com/Olanetsoft/midnight-mcp/blob/main/docs/API.md" rel="noopener noreferrer"&gt;API documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Midnight MCP is a community project. Contributions, issues, and feature requests are welcome.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>mcp</category>
      <category>programming</category>
    </item>
    <item>
      <title>DevRel When the Ecosystem Is Still Taking Shape</title>
      <dc:creator>Lauren Lee</dc:creator>
      <pubDate>Mon, 02 Feb 2026 07:22:01 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/devrel-when-the-ecosystem-is-still-taking-shape-dh8</link>
      <guid>https://forem.com/devsofmidnight/devrel-when-the-ecosystem-is-still-taking-shape-dh8</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;What actually works in early-stage developer ecosystems&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DevRel looks different when developers are building on systems that are still changing underneath them.
&lt;/h3&gt;

&lt;p&gt;Leading Developer Relations at &lt;a href="https://midnight.network/" rel="noopener noreferrer"&gt;Midnight&lt;/a&gt; has meant building an ecosystem from scratch, before launch, while the product is still taking shape underneath us.&lt;/p&gt;

&lt;p&gt;It has been one of the most challenging and instructive experiences of my career. This is my first time leading DevRel pre-launch, with real users, real incentives, and real consequences when things break. When nothing is stable yet, every assumption about DevRel gets pressure-tested &lt;em&gt;fast&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;What actually helps developers move forward becomes very clear, very quickly.&lt;/p&gt;

&lt;p&gt;As we get closer to taking the chain live, these patterns have become impossible to ignore.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7pgr67kpeqtmvnw5okz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7pgr67kpeqtmvnw5okz.png" alt=" " width="800" height="532"&gt;&lt;/a&gt;&lt;br&gt;Building before launch, with real developers and real consequences.
  &lt;/p&gt;

&lt;p&gt;In early 2025, I wrote an &lt;a href="https://dev.to/devsofmidnight/devrel-in-web3-building-systems-that-scale-while-the-ecosystem-is-still-taking-shape-35d7"&gt;article&lt;/a&gt; about DevRel at &lt;a href="https://docs.midnight.network/" rel="noopener noreferrer"&gt;Midnight&lt;/a&gt; as a systems problem. Flywheels, journeys, scaffolding for scale. That thinking still holds.&lt;/p&gt;

&lt;p&gt;What changed is that we stopped designing in the abstract and started operating those systems with &lt;em&gt;real&lt;/em&gt; developers, &lt;em&gt;real&lt;/em&gt; incentives, and &lt;em&gt;real&lt;/em&gt; breakage. Some assumptions held. Others collapsed fast.&lt;/p&gt;

&lt;p&gt;This post is not a replacement for that earlier strategy.  It is what survived contact with reality. &lt;/p&gt;

&lt;p&gt;For context, here’s the original piece: &lt;a href="https://dev.to/devsofmidnight/devrel-in-web3-building-systems-that-scale-while-the-ecosystem-is-still-taking-shape-35d7"&gt;DevRel in Web3: Building Systems that Scale While the Ecosystem is Still Taking Shape&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Engagement programs are only valuable if they create directional movement&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh9hzu40ujeyvtuk9t22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foh9hzu40ujeyvtuk9t22.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Healthy ecosystems help developers move &lt;em&gt;somewhere&lt;/em&gt;, not just participate.&lt;/p&gt;

&lt;p&gt;Quests, fellowships, Discords, events, and content have value only when they push developers forward, from curiosity to first build, from contribution to real ownership. Activity without progression is just motion, not momentum.&lt;/p&gt;

&lt;p&gt;Early-stage programs must teach something concrete and lead to something tangible. Developers should leave knowing more than they did before and having built something they did not have yesterday.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If a program cannot answer “what does this unlock next?” it is not an engagement strategy. It is marketing noise with better branding.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Docs, tooling, and support are converging into a single developer experience&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnkdyy12nqh58k85c1s5j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnkdyy12nqh58k85c1s5j.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Developers experience your ecosystem as a single surface, no matter how many teams, orgs, or silos exist behind the scenes.&lt;/p&gt;

&lt;p&gt;From their perspective, documentation, examples, local tooling, error messages, and support are inseparable parts of one experience. When something breaks, they do not diagnose which team owns it. They just decide whether to keep going.&lt;/p&gt;

&lt;p&gt;The ecosystems that feel easy to build on are the ones that design these pieces as a coherent system, not as a collection of disconnected deliverables. Consistency, handoffs, and shared ownership matter more than perfect individual components.&lt;/p&gt;

&lt;p&gt;If it feels smooth to the developer, it is because the org did the hard work to make it so.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Early-stage DevRel credibility is earned through consistency, not scale&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvz53deawtaxc9z42kivd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvz53deawtaxc9z42kivd.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shipping reliably beats launching big, every time.&lt;/p&gt;

&lt;p&gt;Weekly rhythms, predictable programs, clear expectations, and visible follow-through build trust faster than any splashy campaign ever could. It may not look glamorous from the outside, but developers notice when things run on time, work as described, and improve steadily.&lt;/p&gt;

&lt;p&gt;Early-stage ecosystems are experiments by definition. The teams that earn trust are not the ones that avoid mistakes, but the ones that ship quickly, acknowledge what did not work, fix it, and keep moving. Momentum comes from iteration, not perfection.&lt;/p&gt;

&lt;p&gt;Consistency plus learning beats polish every time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F074ir2997sza4u6gxatq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F074ir2997sza4u6gxatq.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Early-stage DevRel succeeds or fails on &lt;em&gt;unblocking&lt;/em&gt;, not inspiration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe212hot04itqzdg40b4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe212hot04itqzdg40b4d.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The most effective DevRel teams are not necessarily the loudest but instead are the fastest at removing friction.&lt;/p&gt;

&lt;p&gt;At early stages, developers do not churn because they lack motivation. They churn because they hit blockers, and no one clears them quickly enough. The teams that win treat DevRel as an unblocker responsibility first, and storytelling second.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. Flat teams outperform rigid hierarchies in early ecosystems&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8v28aunp0575usrzr4sk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8v28aunp0575usrzr4sk.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you’re building an ecosystem from zero, no one actually knows what will work yet. The fastest progress comes from teams that invite ideas from everywhere, try things quickly, and course-correct without ego.&lt;/p&gt;

&lt;p&gt;We treat DevRel as a continuous experiment. Ideas come from the team, from builders, from the community. We test them. Some land. Many do not. We learn, adjust, and move forward. That is not chaos, it is disciplined adaptation under uncertainty.&lt;/p&gt;

&lt;p&gt;Decentralized ecosystems demand this mindset. The community ultimately decides what sticks. The role of DevRel is not to dictate direction, but to create the conditions where good ideas surface, get tested, and scale when they earn it.&lt;/p&gt;

&lt;p&gt;Everyone involved brings expertise. Everyone has seen DevRel done well and badly elsewhere. The teams that win are the ones confident enough to listen, humble enough to pivot, and disciplined enough to turn learning into action.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;6. Small, well-instrumented communities outperform large, unmeasured ones&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25nisezcsf3qeab1f3u1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25nisezcsf3qeab1f3u1.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You do not need more developers. You need clearer visibility into the ones you already have.&lt;/p&gt;

&lt;p&gt;Early-stage ecosystems win when teams can answer simple questions: who is progressing, who is stuck, and why. But insight alone is not enough. What matters is what you do next.&lt;/p&gt;

&lt;p&gt;Strong communities turn feedback into action. They intervene when builders hit friction, create new paths when momentum stalls, and give developers clear reasons to keep building and deepening ownership.&lt;/p&gt;

&lt;p&gt;Retention does not come from scale. It comes from attention. A smaller group with tight feedback loops, clear progression paths, and visible follow-through will always out-iterate a massive community where signals disappear into the void.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41xonbevr4d28h8f4vsl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41xonbevr4d28h8f4vsl.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;7. DevRel is becoming an operating system, not a job title&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fao0png1ujzg5apnzt1do.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fao0png1ujzg5apnzt1do.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The most impactful DevRel work now lives in systems, not individuals.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What scales is not charisma or heroics, but workflows, standards, flywheels, tooling, and feedback loops that keep running week over week. Titles may change, but the work is increasingly about building durable engagement infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early-stage DevRel is less about growth hacks and more about earning trust under uncertainty.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmbkkkifgd53eixffaent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmbkkkifgd53eixffaent.png" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Join the &lt;a href="https://docs.midnight.network/" rel="noopener noreferrer"&gt;Midnight&lt;/a&gt; Conversation&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We’d love for you to join this early ecosystem. Hear your feedback and ideas. Drop into &lt;a href="https://discord.gg/BA8Q7CaF" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;, open an &lt;a href="https://github.com/orgs/midnightntwrk/projects/36/views/1" rel="noopener noreferrer"&gt;issue&lt;/a&gt;, or fork a &lt;a href="https://github.com/midnightntwrk/example-counter" rel="noopener noreferrer"&gt;repo&lt;/a&gt; and show us what you’ve built.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;An invitation to fellow DevRel builders&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;If you’re doing DevRel in a web3 ecosystem, especially an early one, I’d love to connect.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you’re building DevRel while the platform is still taking shape, I’d love to compare notes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What broke faster than you expected? What held up under real usage? What did you stop doing entirely?&lt;/p&gt;

&lt;h4&gt;
  
  
  --✨👩🏼‍💻 &lt;a href="https://x.com/LoLoCoding" rel="noopener noreferrer"&gt;lolocoding&lt;/a&gt;
&lt;/h4&gt;

</description>
      <category>devrel</category>
      <category>web3</category>
      <category>community</category>
      <category>learning</category>
    </item>
    <item>
      <title>Introduction to the FungibleToken contract on Midnight</title>
      <dc:creator>Claude Barde</dc:creator>
      <pubDate>Thu, 11 Sep 2025 14:35:44 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/introduction-to-the-fungibletoken-contract-on-midnight-20ai</link>
      <guid>https://forem.com/devsofmidnight/introduction-to-the-fungibletoken-contract-on-midnight-20ai</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Introduction to the FungibleToken contract on Midnight&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Midnight&lt;/strong&gt; is a privacy-first blockchain designed to bring &lt;em&gt;privacy&lt;/em&gt; to decentralized applications. It achieves this through &lt;a href="https://docs.midnight.network/develop/how-midnight-works/" rel="noopener noreferrer"&gt;zero-knowledge proofs, programmable data protection, and developer-friendly tools&lt;/a&gt; like &lt;strong&gt;Compact&lt;/strong&gt;, a TypeScript-based DSL (Domain-Specific Language) for writing privacy-aware smart contracts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.openzeppelin.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;OpenZeppelin&lt;/strong&gt;&lt;/a&gt; is renowned in the Ethereum ecosystem for its battle-tested smart contract libraries, which have secured trillions in on-chain value. Recently, &lt;a href="https://midnight.network/blog/openzeppelin-joins-forces-with-midnight-to-shape-the-future-of-privacy-preserving-smart" rel="noopener noreferrer"&gt;OpenZeppelin partnered with Midnight&lt;/a&gt; to bring comparable tooling to the Compact ecosystem, adapting familiar standards like ERC-20 into privacy-preserving variants.&lt;/p&gt;

&lt;p&gt;In the Ethereum world, the &lt;strong&gt;ERC-20&lt;/strong&gt; standard defines a fungible token with public ledger functions like &lt;code&gt;balanceOf&lt;/code&gt;, &lt;code&gt;transfer&lt;/code&gt;, &lt;code&gt;approve&lt;/code&gt;, etc. It exposes transaction data transparently and lacks built-in privacy. The &lt;strong&gt;FungibleToken&lt;/strong&gt; contract on Midnight draws inspiration from this, but operates within Midnight’s zero-knowledge, selective-disclosure framework.&lt;/p&gt;

&lt;p&gt;Fungible tokens are a cornerstone of the blockchain ecosystem, representing digital assets that are interchangeable – much like traditional currency. On various blockchains, these tokens power a wide array of applications, from facilitating seamless transactions and enabling decentralized finance (DeFi) protocols to representing ownership in digital communities and driving the mechanics of in-game economies. &lt;/p&gt;

&lt;p&gt;Unlike unique non-fungible tokens (NFTs), the value of one fungible token is identical to another of the same type, making them ideal for use cases requiring divisibility and ease of exchange. Their widespread adoption underscores their importance in building liquid and interconnected digital economies.&lt;/p&gt;

&lt;p&gt;In this article, you'll learn about the core features of the contract, including how it manages ledger state variables, its key entry points and circuits for operations like minting, burning, and transferring tokens, and the essential safety and utility functions provided by the &lt;strong&gt;Utils&lt;/strong&gt; and &lt;strong&gt;Initializable&lt;/strong&gt; modules.&lt;br&gt;&lt;br&gt;
By understanding how these components fit together, you’ll gain insight into how the &lt;strong&gt;FungibleToken&lt;/strong&gt; contract balances fungibility, usability, and privacy, providing an essential building block for privacy-preserving DeFi, identity, and tokenized assets on Midnight.&lt;/p&gt;


&lt;h2&gt;
  
  
  &lt;strong&gt;Features of the FungibleToken Contract&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The FungibleToken contract on Midnight utilizes ledger state variables to keep track of balances, allowances, total supply, name, symbol, and decimals. Its functionality is exposed through "circuits" (entry points) like &lt;code&gt;Mint&lt;/code&gt;, &lt;code&gt;Burn&lt;/code&gt;, &lt;code&gt;Transfer&lt;/code&gt;, &lt;code&gt;Approve&lt;/code&gt;, &lt;code&gt;TransferFrom&lt;/code&gt;, and &lt;code&gt;Initialize&lt;/code&gt;, all of which enforce specific zero-knowledge validated transitions and maintain the integrity of the token's state.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;1. Ledger State Variables&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In Compact, the contract defines a structured &lt;strong&gt;state&lt;/strong&gt; storing token balances and allowances—similar to ERC-20. The &lt;code&gt;_balances&lt;/code&gt; map keeps track of the users’ token balances and is updated when a transfer occurs. The &lt;code&gt;_allowances&lt;/code&gt; map keeps track of the permission given to specific users to spend tokens on behalf of another user:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;_balances&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Either&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ZswapCoinPublicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ContractAddress&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Uint&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;_allowances&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Either&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ZswapCoinPublicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ContractAddress&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Either&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;ZswapCoinPublicKey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ContractAddress&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Uint&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These values live in the contract's ledger and are updated through transactions sent to the contract.&lt;/p&gt;

&lt;p&gt;There are other values in the ledger that are set when the contract is deployed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;_totalSupply&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Uint&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;sealed&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Opaque&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;sealed&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;_symbol&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Opaque&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;sealed&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;_decimals&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Uint&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These values provide different information about the token managed by the contract, its total supply, its name, its symbol, and its decimal (for display).&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Entry Points and Circuits&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In Compact, entry points are defined as &lt;strong&gt;circuits&lt;/strong&gt; (akin to Solidity functions), each modelling a zero-knowledge validated transition. The difference between a circuit entry point and a circuit is that the entry point is callable via a transaction, while the non-entry point circuit is internal. Core circuits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Mint&lt;/code&gt; / &lt;code&gt;Burn&lt;/code&gt;&lt;/strong&gt; (to mint new tokens or burn existing tokens).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Transfer&lt;/code&gt;&lt;/strong&gt;: to move tokens between addresses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Approve&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;TransferFrom&lt;/code&gt;&lt;/strong&gt;: standard ERC-20-style delegation mechanisms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;Initialize&lt;/code&gt;&lt;/strong&gt;: via the &lt;strong&gt;Initializable&lt;/strong&gt; module for contract setup.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each circuit enforces necessary constraints — for example, ensuring sufficient balance, managing allowance decrements, and preserving total supply.&lt;/p&gt;

&lt;p&gt;In the next step of the contract lifecycle, the different metadata stored in the ledger of the contract are safely initialized.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Initialization &amp;amp; metadata&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The following circuits define the essential setup and retrieval logic for the fungible token metadata and users’ balances, enforcing correct initialization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;initialize(name_, symbol_, decimals_)&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
One-time setup. Calls &lt;code&gt;Initializable_initialize()&lt;/code&gt;, then stores the (disclosed) name, symbol, and decimals. Every other public circuit asserts that the contract is initialized first.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;name()&lt;/code&gt; / &lt;code&gt;symbol()&lt;/code&gt; / &lt;code&gt;decimals()&lt;/code&gt; / &lt;code&gt;totalSupply()&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Simple getters that first assert initialized, then return the sealed (read only) ledger values.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;balanceOf(account)&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Safe map lookup that returns &lt;code&gt;0&lt;/code&gt; if the account isn’t present (to prevent contract failure if the key is absent).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;The transfer family&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;FungibleToken&lt;/code&gt; contract's &lt;strong&gt;transfer&lt;/strong&gt; circuits manage token movement. Key circuits include: &lt;code&gt;transfer&lt;/code&gt; for safe user-initiated transfers, &lt;code&gt;_unsafeTransfer&lt;/code&gt; for internal token movement, &lt;code&gt;_transfer&lt;/code&gt; for administrative transfers, &lt;code&gt;_unsafeUncheckedTransfer&lt;/code&gt; for low-level token movement, and &lt;code&gt;_update&lt;/code&gt; as the central accounting function for all token operations.&lt;/p&gt;

&lt;p&gt;These are split into &lt;strong&gt;safe&lt;/strong&gt; and &lt;strong&gt;unsafe&lt;/strong&gt; variants because &lt;strong&gt;sending to contract addresses is currently disallowed&lt;/strong&gt; (until contract-to-contract interactions are supported). &lt;/p&gt;

&lt;p&gt;“Safe” circuits enforce that policy; “unsafe” ones let you bypass it—explicitly marked as dangerous in comments.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;transfer(to, value)&lt;/code&gt; → &lt;code&gt;Boolean&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Safe user-initiated transfer: rejects if &lt;code&gt;to&lt;/code&gt; is a &lt;code&gt;ContractAddress&lt;/code&gt;. Internally, it just forwards to the unsafe variant after the check.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_unsafeTransfer(to, value)&lt;/code&gt; → &lt;code&gt;Boolean&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Owner is the caller (&lt;code&gt;left(ownPublicKey())&lt;/code&gt;). Moves value using the unchecked internal mover, then returns &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_transfer(from, to, value)&lt;/code&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Admin/extension hook that moves tokens &lt;strong&gt;from an arbitrary &lt;code&gt;from&lt;/code&gt;&lt;/strong&gt; (not necessarily the caller). Still enforces the “no contracts as &lt;code&gt;to&lt;/code&gt;” rule and then uses the same mover underneath.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_unsafeUncheckedTransfer(from, to, value)&lt;/code&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The low-level mover checks that neither side is the zero/burn address and then delegates the actual accounting to &lt;code&gt;_update&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;_update(from, to, value)&lt;/code&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Central accounting function&lt;/strong&gt; used by all mint/burn/transfer paths. It’s an internal circuit; it cannot be called via a transaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If &lt;code&gt;from&lt;/code&gt; is zero, the &lt;strong&gt;mint&lt;/strong&gt; circuit is called, it asserts no &lt;code&gt;uint128&lt;/code&gt; overflow, and increases &lt;code&gt;_totalSupply&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Else, it deducts from &lt;code&gt;from&lt;/code&gt; balance (or reverts on insufficient funds).&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;to&lt;/code&gt; is zero, the &lt;strong&gt;burn&lt;/strong&gt; circuit is called, and it decreases &lt;code&gt;_totalSupply&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Else, it adds to &lt;code&gt;to&lt;/code&gt; balance.
This single function guarantees the invariants for every movement of value.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The "transfer family" circuits ensure secure token movement, with "safe" variants disallowing transfers to contract addresses and "unsafe" variants providing lower-level control.&lt;br&gt;&lt;br&gt;
This leads us to explore how allowances function, enabling delegated token spending.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Allowances (approve / spend / transferFrom)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This section details the allowance mechanisms within the FungibleToken contract, which enable users to delegate spending permissions to other addresses. These circuits facilitate secure, approved transfers on behalf of an owner without directly exposing their private keys.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;allowance(owner, spender)&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Read the nested &lt;code&gt;_allowances&lt;/code&gt; map, returning &lt;code&gt;0&lt;/code&gt; when keys are missing (no revert).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;approve(spender, value)&lt;/code&gt; → &lt;code&gt;Boolean&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The owner is the caller. Forwards to &lt;code&gt;_approve(owner, spender, value)&lt;/code&gt; and returns &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;transferFrom(from, to, value)&lt;/code&gt; → &lt;code&gt;Boolean&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Safe delegated transfer: enforces the “no contract receiver” rule, then defers to &lt;code&gt;_unsafeTransferFrom&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_unsafeTransferFrom(from, to, value)&lt;/code&gt; → &lt;code&gt;Boolean&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The spender is the caller. First spends allowance via &lt;code&gt;_spendAllowance(from, spender, value)&lt;/code&gt;, then moves value using &lt;code&gt;_unsafeUncheckedTransfer&lt;/code&gt;. Returns &lt;code&gt;true&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_approve(owner, spender, value)&lt;/code&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
It ensures that both the owner and the spender are valid, creates the owner’s entry in the map if needed, and then writes the allowance. (This mirrors OZ’s ERC-20 pattern of public &lt;code&gt;approve()&lt;/code&gt; → internal &lt;code&gt;_approve()&lt;/code&gt;.) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_spendAllowance(owner, spender, value)&lt;/code&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
It deducts from the allowance unless it’s “infinite.” The implementation treats &lt;strong&gt;&lt;code&gt;MAX_UINT128&lt;/code&gt;&lt;/strong&gt; as infinite: if &lt;code&gt;currentAllowance == MAX&lt;/code&gt;, it doesn’t decrement; otherwise, it asserts &lt;code&gt;currentAllowance ≥ value&lt;/code&gt; and writes back &lt;code&gt;currentAllowance - value&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
This is important because it supports “no-friction approvals” by letting apps set MAX once. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, we just covered how allowances let people delegate token spending—basically, giving others permission to move their tokens. Up next, we'll dive into how we create and delete tokens in the contract.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Minting and burning&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Here's how the FungibleToken contract handles making and destroying tokens. We'll dive into the &lt;code&gt;_mint&lt;/code&gt; and &lt;code&gt;_burn&lt;/code&gt; functions, showing what they do and how they link up with the main accounting system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_mint(account, value)&lt;/code&gt;&lt;/strong&gt; (safe) → &lt;code&gt;[]&lt;/code&gt;&lt;br&gt;&lt;br&gt;
It forbids minting &lt;strong&gt;to&lt;/strong&gt; a contract address (same contract-to-contract restriction), then forwards to &lt;code&gt;_unsafeMint&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_unsafeMint(account, value)&lt;/code&gt;&lt;/strong&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;br&gt;&lt;br&gt;
It validates the receiver’s address, then calls &lt;code&gt;_update(burnAddress(), account, value)&lt;/code&gt;—i.e., mint is modelled as a transfer &lt;strong&gt;from&lt;/strong&gt; the burn/zero address. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;_burn(account, value)&lt;/code&gt;&lt;/strong&gt; → &lt;code&gt;[]&lt;/code&gt;&lt;br&gt;&lt;br&gt;
It validates the sender’s address, then calls &lt;code&gt;_update(account, burnAddress(), value)&lt;/code&gt;—i.e., burn is a transfer &lt;strong&gt;to&lt;/strong&gt; the burn/zero address.&lt;br&gt;&lt;br&gt;
&lt;em&gt;Note:&lt;/em&gt; The actual notion of “zero/burn” address is standardized in the Utils module; you can also see helpers like &lt;code&gt;Utils_isKeyOrAddressZero&lt;/code&gt; and &lt;code&gt;Utils_isContractAddress&lt;/code&gt;. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because mint and burn also route through &lt;code&gt;_update&lt;/code&gt;, &lt;strong&gt;total supply is adjusted in exactly one place,&lt;/strong&gt; and the same safety checks apply across all flows (including the &lt;code&gt;uint128&lt;/code&gt; overflow check on mint). &lt;/p&gt;

&lt;p&gt;The mint and burn circuits, by using the &lt;code&gt;_update&lt;/code&gt; function, make sure the total supply adjustments are always consistent and that all token flows get the same safety checks.&lt;br&gt;&lt;br&gt;
Now, let's dive into the extra safety and utility stuff that the &lt;code&gt;Utils&lt;/code&gt; and &lt;code&gt;Initializable&lt;/code&gt; modules bring to the table.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Safety &amp;amp; utility glue (from &lt;code&gt;Utils&lt;/code&gt; and &lt;code&gt;Initializable&lt;/code&gt;)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This section explores how the &lt;code&gt;Utils&lt;/code&gt; and &lt;code&gt;Initializable&lt;/code&gt; modules provide essential safeguards and helpful functionalities. These components are vital for ensuring the contract's integrity and enabling secure, well-managed operations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Initialization guards&lt;/strong&gt;: The &lt;code&gt;Initializable_initialize&lt;/code&gt; and &lt;code&gt;Initializable_assertInitialized&lt;/code&gt; functions serve as crucial initialization guards within the &lt;code&gt;Initializable&lt;/code&gt; contract. These safeguards ensure that a contract's state is properly set up only once and that subsequent operations only proceed if the contract has been correctly initialized. Every circuit that interacts with or modifies the contract's state is designed to invoke the &lt;code&gt;assert&lt;/code&gt; function, reinforcing the integrity of the initialization process. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Address helpers&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Utils_isContractAddress(either)&lt;/code&gt; distinguishes user keys from contract addresses.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Utils_isKeyOrAddressZero(either)&lt;/code&gt; detects the zero/burn address used in &lt;code&gt;_update&lt;/code&gt;, &lt;code&gt;_unsafeUncheckedTransfer&lt;/code&gt;, etc.
These support the temporary “no contract receiver” policy and zero-address checks. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;The &lt;strong&gt;Utils&lt;/strong&gt; and &lt;strong&gt;Initializable&lt;/strong&gt; modules provide crucial safety and utility functions, ensuring the contract's proper setup and secure operation. Now, let's look at how all these different parts of the &lt;strong&gt;FungibleToken&lt;/strong&gt; contract work together.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;How the pieces fit together&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This part shows how everything in the FungibleToken contract is hooked up. Whether it's you sending tokens, someone else doing it for you, or tokens being created or destroyed, it all funnels through a few key functions and ultimately lands in the main &lt;code&gt;_update&lt;/code&gt; function to keep track of everything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;User transfer:&lt;br&gt;&lt;br&gt;
&lt;code&gt;transfer&lt;/code&gt; → &lt;em&gt;(safe check)&lt;/em&gt; → &lt;code&gt;_unsafeTransfer&lt;/code&gt; → &lt;code&gt;_unsafeUncheckedTransfer&lt;/code&gt; → &lt;code&gt;_update&lt;/code&gt; (balances/supply) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delegated transfer:&lt;br&gt;&lt;br&gt;
&lt;code&gt;transferFrom&lt;/code&gt; → &lt;em&gt;(safe check)&lt;/em&gt; → &lt;code&gt;_unsafeTransferFrom&lt;/code&gt; → &lt;code&gt;_spendAllowance&lt;/code&gt; → &lt;code&gt;_unsafeUncheckedTransfer&lt;/code&gt; → &lt;code&gt;_update&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mint/Burn:&lt;br&gt;&lt;br&gt;
&lt;code&gt;_mint/_unsafeMint&lt;/code&gt; or &lt;code&gt;_burn&lt;/code&gt; → &lt;code&gt;_update&lt;/code&gt; (with zero/burn address on one side) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This section illustrates how various token operations, from user transfers to minting and burning, ultimately funnel through the central &lt;code&gt;_update&lt;/code&gt; function for consistent accounting. Now, let's summarize the key takeaways of the &lt;strong&gt;FungibleToken&lt;/strong&gt; contract on Midnight.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;FungibleToken&lt;/strong&gt; Compact contract on Midnight is a privacy-aware reimagining of the ERC-20 standard. It maintains the familiar token interfaces—balances, transfers, approvals—but encodes them as ZK-validated circuits within Compact, enabling private, verifiable execution. The contract’s state and logic are shielded by design, exposing only proofs rather than raw data to the blockchain. &lt;/p&gt;

&lt;p&gt;The ERC-20 standard revolutionized the crypto landscape by providing a common framework for creating and managing digital assets, fostering interoperability, and accelerating the growth of decentralized applications. For Midnight, an ERC-20-based token is crucial as it leverages this established standard while integrating ZK-privacy, offering a familiar yet enhanced experience for developers and users seeking both functionality and confidentiality.&lt;/p&gt;

&lt;p&gt;This model contrasts sharply with ERC-20 on Ethereum, where all token movements and balances are fully transparent. Here, Midnight allows selective disclosure: users and applications choose what to reveal. The &lt;strong&gt;FungibleToken&lt;/strong&gt; contract thus balances fungibility, usability, and privacy—providing an essential building block for privacy-preserving DeFi, identity, and tokenized assets on Midnight.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Links&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Delve deeper into the code, contracts, and comprehensive documentation to enhance your understanding and development skills. These resources are invaluable for building robust and innovative solutions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FungibleToken contract: &lt;a href="https://github.com/OpenZeppelin/compact-contracts/blob/main/contracts/fungibleToken/src/FungibleToken.compact" rel="noopener noreferrer"&gt;FungibleToken.compact on Github&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenZeppelin documentation: &lt;a href="https://docs.openzeppelin.com/contracts-compact/0.0.1/fungibletoken" rel="noopener noreferrer"&gt;docs.openzeppelin.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ERC20 standard: &lt;a href="https://ethereum.org/en/developers/docs/standards/tokens/erc-20/" rel="noopener noreferrer"&gt;ethereum.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Midnight docs: &lt;a href="https://docs.midnight.network/" rel="noopener noreferrer"&gt;Midnight Developer Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Do you have any questions?: &lt;a href="https://forum.midnight.network/" rel="noopener noreferrer"&gt;Midnight Forum&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>midnight</category>
      <category>compact</category>
    </item>
    <item>
      <title>The Midnight Community Board: Building *With* the Community, Not Just For It</title>
      <dc:creator>Lauren Lee</dc:creator>
      <pubDate>Fri, 01 Aug 2025 14:56:44 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/the-midnight-community-board-building-with-the-community-not-just-for-it-5afo</link>
      <guid>https://forem.com/devsofmidnight/the-midnight-community-board-building-with-the-community-not-just-for-it-5afo</guid>
      <description>&lt;p&gt;I believe a healthy ecosystem isn’t built &lt;em&gt;for&lt;/em&gt; a community. It’s built &lt;em&gt;with&lt;/em&gt; them.&lt;/p&gt;

&lt;p&gt;That’s why the DevRel team at &lt;a href="https://midnight.network/" rel="noopener noreferrer"&gt;Midnight&lt;/a&gt; is thrilled to debut the &lt;strong&gt;Community Board&lt;/strong&gt;, a new GitHub-based hub designed to make collaboration more transparent, inclusive, and efficient.&lt;/p&gt;

&lt;p&gt;Just this week, a longtime partner and contributor shared feedback that struck a chord:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“The real frustration hasn’t been the number of channels. It’s not knowing what happens to our ideas or feedback once they’re shared. Without transparency into follow-up, it feels like issues just disappear.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The Community Board is our solution to that exact problem. It gives developers, partners, and community members visibility into what’s happening with their feedback. And more importantly, a seat at the table to help shape priorities and the opportunity to pick up work themselves.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How the Community Board Works&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Submission Flow&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Anyone in the community can open an &lt;strong&gt;issue&lt;/strong&gt; in the GitHub Community Hub repository.
&lt;/li&gt;
&lt;li&gt;Issues cover a range of categories:

&lt;ul&gt;
&lt;li&gt;Content Development (blogs, videos, docs, etc.)
&lt;/li&gt;
&lt;li&gt;dApp Development (example apps, new features)
&lt;/li&gt;
&lt;li&gt;Feature Demo Ideas (including i18n/localization)
&lt;/li&gt;
&lt;li&gt;Feature Requests and Suggestions
&lt;/li&gt;
&lt;li&gt;Bug Tracking
&lt;/li&gt;
&lt;li&gt;Midnight Improvement Proposals (MIPs) &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Triage Process&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;arbiter committee&lt;/strong&gt; (currently DevRel, expanding over time to include dApp devs, SPOs, partners, and wallet holders) reviews submissions.
&lt;/li&gt;
&lt;li&gt;Submissions are given clear statuses: &lt;em&gt;Needs Discussion, Triaged, Rejected.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Triage happens transparently, either live during Fireside Hangs or asynchronously on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Grab-and-Go Board&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Triaged issues move into the &lt;strong&gt;Grab-and-Go Board&lt;/strong&gt;, a curated space for vetted ideas.
&lt;/li&gt;
&lt;li&gt;From here, contributors can claim work:

&lt;ul&gt;
&lt;li&gt;DevRel team members
&lt;/li&gt;
&lt;li&gt;Partners
&lt;/li&gt;
&lt;li&gt;Ambassadors
&lt;/li&gt;
&lt;li&gt;Ecosystem builders and developers&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Community Voting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Issues on the Grab-and-Go Board can be upvoted with emoji reactions.
&lt;/li&gt;
&lt;li&gt;Voting provides &lt;strong&gt;constituency-driven signals&lt;/strong&gt;, helping us prioritize based on real demand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Execution and Integration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Picked-up issues flow through columns:
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;To Do → In Progress → Needs Review → Done.&lt;/em&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where needed, issues flagged for internal ownership move to the engineering teams' Jira board.
&lt;/li&gt;
&lt;li&gt;Over time, the Community Board could become a central part of the &lt;strong&gt;Midnight Improvement Proposal (MIP) process&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Actions automatically label issues, move them into the right boards, and reduce manual overhead, keeping the workflow fast and efficient.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why this matters&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ends fragmentation&lt;/strong&gt;: One place for all community ideas and feedback
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provides visibility&lt;/strong&gt;: Everyone can see what stage a submission is in
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enables contribution&lt;/strong&gt;: Community members can pick up vetted tasks directly
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Democratizes prioritization&lt;/strong&gt;: Voting ensures the roadmap reflects community demand
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broadens our builder base&lt;/strong&gt;: Reduces pressure on core teams and grows a contributor ecosystem
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streamlines collaboration&lt;/strong&gt;: Clear swimlanes, automation, and transparent triage keep the process efficient&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is still a work in progress, and we’ll continue refining it. But it’s a big step toward making &lt;a href="https://midnight.network/" rel="noopener noreferrer"&gt;Midnight&lt;/a&gt; a truly builder-driven ecosystem.&lt;/p&gt;

&lt;p&gt;👉 Watch an overview/explainer &lt;a href="https://youtu.be/r6voeOFWzVs" rel="noopener noreferrer"&gt;video&lt;/a&gt;&lt;br&gt;&lt;br&gt;
👉 Explore the Community Board on &lt;a href="https://github.com/orgs/midnightntwrk/projects/36/views/1" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;A huge thank you to Stevan Lohja and the DevRel team for building this, and to our community members for not just sharing feedback but leaning in to build alongside us. Together, we’re proving that privacy-first technology can be built in public, by and for the builders who believe in it. 🌱&lt;/p&gt;

</description>
      <category>web3</category>
      <category>devrel</category>
      <category>community</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Learning Web3 from the Ground Up: Understanding Ethereum</title>
      <dc:creator>Samantha Holstine</dc:creator>
      <pubDate>Fri, 25 Jul 2025 15:09:00 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-understanding-ethereum-2hlb</link>
      <guid>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-understanding-ethereum-2hlb</guid>
      <description>&lt;p&gt;This past week, I started the SheFi course— a program designed to help women dive deeper into Web3 and decentralized finance. One of the first topics it covered was Ethereum: what it is, why it matters, and how it fits into the broader decentralized ecosystem.&lt;/p&gt;

&lt;p&gt;To build on what I learned there, I read two excellent overviews: &lt;a href="https://medium.com/the-coinbase-blog/a-beginners-guide-to-ethereum-46dd486ceecf" rel="noopener noreferrer"&gt;“A Beginner’s Guide to Ethereum” from Coinbase&lt;/a&gt; and &lt;a href="https://medium.com/@oneofthemanymatts/getting-up-to-speed-on-ethereum-63ed28821bbe" rel="noopener noreferrer"&gt;“Getting Up to Speed on Ethereum” by Matt&lt;/a&gt;. Both helped frame Ethereum not just as a cryptocurrency, but as a foundational platform for Web3 applications. Here’s what stood out and why Ethereum remains vital in a rapidly evolving cryptocurrency ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ethereum in a Nutshell
&lt;/h2&gt;

&lt;p&gt;Ethereum is a decentralized computing platform. Think of it like a global computer that anyone can access, but no single person or organization controls it. This is possible because Ethereum is powered by a blockchain—a network of nodes around the world that maintain and validate a shared record of activity. What makes Ethereum special is that it doesn’t just store transactions; it can also run applications. These apps are powered by smart contracts, which are programs deployed to the blockchain that execute exactly as written.&lt;/p&gt;

&lt;p&gt;The Ethereum network is designed to be open, programmable, and permissionless. That means anyone can build on it, and no one needs approval to use it. This structure has enabled Ethereum to become the foundation for a wide range of decentralized applications (dApps), including financial tools such as lending protocols and stablecoins, as well as NFT marketplaces and decentralized identity systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Ethereum Matters
&lt;/h2&gt;

&lt;p&gt;Ethereum matters because it transforms the internet from a read-write platform into a read-write-execute environment. That is, it enables not just the sharing of information, but also the execution of logic—without relying on centralized intermediaries. This shift opens the door to creating systems that are more transparent, resilient, and accessible.&lt;/p&gt;

&lt;p&gt;One of Ethereum’s most significant breakthroughs is that it allows developers to write and deploy their own logic onto the network through smart contracts. These contracts can define rules, manage value, and interact with other contracts—all while being trustless and tamper-proof. Once deployed, smart contracts can’t be changed or censored, which means users can interact with them without worrying about backend changes or manipulation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ether: The Fuel of the Ethereum Network
&lt;/h2&gt;

&lt;p&gt;Ether (ETH) is the native currency of Ethereum. While many people think of ETH primarily as a cryptocurrency—something you can buy, sell, or hold—its most important role as the fuel for computation. Every operation on the Ethereum network costs gas, and ETH is what you use to pay for it. This is a crucial aspect of Ethereum’s security and incentive structure, ensuring that resources are utilized responsibly and the network remains resilient to spam.&lt;/p&gt;

&lt;p&gt;When you send a transaction, deploy a smart contract, or interact with a dApp, you’re paying for the network to process that request. The more complex the operation, the more gas it consumes. Gas prices fluctuate based on network demand, and users can choose how much to pay to incentivize faster confirmation. This dynamic creates a market for block space, encouraging developers to write more efficient code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Smart Contracts
&lt;/h2&gt;

&lt;p&gt;Smart contracts are at the heart of what makes Ethereum powerful. These are self-executing programs that live on the blockchain and enforce rules automatically. You don’t need to trust a company or a person; you can trust the code. Smart contracts enable a wide range of use cases, including lending platforms like Aave, decentralized exchanges like Uniswap, and even games like Axie Infinity.&lt;/p&gt;

&lt;p&gt;Once a smart contract is deployed, it’s public and verifiable. Anyone can inspect the code, interact with it, and build on top of it. This openness fosters a culture of composability—developers can plug into existing contracts, remix them, or build entirely new systems that work together. This is why Ethereum is often referred to as a “LEGO set for financial and digital tools.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Ethereum Today and Tomorrow
&lt;/h2&gt;

&lt;p&gt;Ethereum has come a long way since its launch in 2015. It’s no longer just a niche experiment; it’s the most widely used smart contract platform in the world. However, with that growth has come challenges. Network congestion and high gas fees have made it difficult for some users to interact with dApps affordably. To address these issues, Ethereum has undergone significant upgrades, most notably the transition from proof-of-work to proof-of-stake, known as “The Merge.”&lt;/p&gt;

&lt;p&gt;Proof-of-stake is a consensus mechanism that allows Ethereum to secure the network using validators who lock up ETH rather than relying on energy-intensive mining. This shift has dramatically reduced Ethereum’s energy usage and paved the way for future scaling efforts, such as sharding and rollups. Rollups are a technique for batching many transactions into a single proof, which can then be submitted to the Ethereum mainnet. This helps scale the network without sacrificing security or decentralization.&lt;/p&gt;

&lt;p&gt;The Ethereum ecosystem is also growing through layer 2 networks, which are built on top of Ethereum and handle transactions off-chain while still relying on Ethereum for settlement and security. Projects like Arbitrum, Optimism, and zkSync are working to make Ethereum faster and cheaper for everyday users.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Ethereum Connects with Midnight
&lt;/h2&gt;

&lt;p&gt;While Ethereum serves as the foundational smart contract platform for much of Web3, Midnight is designed to complement and extend its capabilities—especially in terms of privacy.&lt;/p&gt;

&lt;p&gt;In practical terms, this means that developers who are comfortable with the Ethereum ecosystem —its wallets, development environments, and smart contract models—can interact with Midnight using similar patterns. For example, Midnight supports a Solidity-like programming approach through its Compact smart contract language, which compiles to verifiable circuits that enforce privacy constraints. This allows developers to build private versions of applications, such as voting systems, token transfers, and identity verification, that would typically be public on the Ethereum blockchain.&lt;/p&gt;

&lt;p&gt;Ethereum offers programmability and decentralization, but by default, all on-chain transactions are transparent. Midnight fills in the missing privacy layer. You could imagine a workflow where public assets and smart contracts live on Ethereum, but sensitive data or confidential logic is handled by Midnight—bridging the two networks for richer, privacy-preserving applications.&lt;/p&gt;

&lt;p&gt;Together, Ethereum and Midnight can be seen as complementary parts of a broader decentralized stack: Ethereum provides openness and composability, while Midnight adds selective disclosure and private computation, enabling developers to build secure and compliant applications in ways that Ethereum alone can’t.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Ethereum isn’t just a cryptocurrency—it’s a platform for building a new kind of internet. By combining programmable logic with decentralized infrastructure, Ethereum enables applications that are open, transparent, and user-owned. It’s the foundation of decentralized finance (DeFi), non-fungible tokens (NFTs), and numerous experiments in online interaction.&lt;/p&gt;

&lt;p&gt;For me, starting with SheFi and reading through these resources helped ground my understanding of what Ethereum is and why it matters. It’s not just about buying coins—it’s about reshaping how we think about trust, ownership, and value in a digital world.&lt;/p&gt;

&lt;p&gt;I’ll be back next week as I continue diving into the core building blocks of Web3. If you’re just starting out too, I highly recommend giving &lt;a href="https://medium.com/the-coinbase-blog/a-beginners-guide-to-ethereum-46dd486ceecf" rel="noopener noreferrer"&gt;Coinbase’s primer&lt;/a&gt; and &lt;a href="https://medium.com/@oneofthemanymatts/getting-up-to-speed-on-ethereum-63ed28821bbe" rel="noopener noreferrer"&gt;Matt’s breakdown&lt;/a&gt; a read.  &lt;/p&gt;

</description>
      <category>midnightnetwork</category>
      <category>web3</category>
      <category>beginners</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Learning Web3 From the Ground Up: What Are Zero-Knowledge Proofs (ZKPs)?</title>
      <dc:creator>Samantha Holstine</dc:creator>
      <pubDate>Mon, 21 Jul 2025 17:20:09 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-what-are-zero-knowledge-proofs-zkps-2fb3</link>
      <guid>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-what-are-zero-knowledge-proofs-zkps-2fb3</guid>
      <description>&lt;p&gt;As I continue exploring the foundations of Web3, last week I focused on &lt;a href="https://docs.midnight.network/blog/web3-intro-smart-contracts-and-compact" rel="noopener noreferrer"&gt;Smart Contracts and Compact&lt;/a&gt;—Midnight’s purpose-built smart contract language. Together, these two elements form the foundation for defining and enforcing logic in privacy-preserving applications.&lt;/p&gt;

&lt;p&gt;But logic alone isn’t enough in a decentralized system, especially when privacy is a priority. That’s where zero-knowledge proofs (ZKPs) come in.&lt;/p&gt;

&lt;p&gt;ZKPs enable the verification of a statement's truth without revealing the underlying justification. They let applications enforce smart contract rules while keeping sensitive data private—an essential capability for building systems that balance trust, utility, and confidentiality.&lt;/p&gt;

&lt;p&gt;In this post, I’ll break down what zero-knowledge proofs are, how they work, and how Midnight uses them to support privacy, compliance, and secure dApp development.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Zero-Knowledge Proofs?
&lt;/h2&gt;

&lt;p&gt;A zero-knowledge proof allows someone (the prover) to prove to another party (the verifier) that a specific statement is true, without revealing any additional information beyond the fact itself.&lt;/p&gt;

&lt;p&gt;Think of it like this: instead of handing over your complete ID to prove you're over 18, you could use a ZKP to prove you're above the age threshold, without disclosing your exact birthday, name, or ID number.&lt;/p&gt;

&lt;p&gt;This cryptographic technique is built on three foundational properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Completeness: If the statement is true, the prover can convince the verifier that it is true.
&lt;/li&gt;
&lt;li&gt;Soundness: If the statement is false, no dishonest prover can convince the verifier that it is true.
&lt;/li&gt;
&lt;li&gt;Zero-knowledge: The verifier learns nothing beyond the truth of the statement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Interactive vs. Non-Interactive Proofs
&lt;/h2&gt;

&lt;p&gt;Early ZKPs required a back-and-forth exchange between prover and verifier—these are called interactive proofs. But in decentralized systems, interaction isn’t always feasible. That’s where non-interactive proofs come in.&lt;/p&gt;

&lt;p&gt;Non-interactive ZKPs let a prover generate a single proof that anyone can verify at any time, with no additional input. Protocols like zk-SNARKs and zk-STARKs make this possible, often using techniques like the &lt;a href="https://www.zkdocs.com/docs/zkdocs/protocol-primitives/fiat-shamir/" rel="noopener noreferrer"&gt;Fiat–Shamir heuristic&lt;/a&gt; to simulate interaction using cryptographic hashes.&lt;/p&gt;

&lt;p&gt;This makes non-interactive ZKPs ideal for blockchains, where proofs need to be public, reusable, and verifiable by anyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Zero-Knowledge Proof Systems
&lt;/h2&gt;

&lt;p&gt;Different ZKP systems come with different tradeoffs in terms of size, speed, and trust requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Groth16 (zk-SNARK): Very small proofs, fast verification, but requires a trusted setup per circuit.
&lt;/li&gt;
&lt;li&gt;Plonk (zk-SNARK): Slightly larger proofs, slower verification, but only needs a one-time universal setup.
&lt;/li&gt;
&lt;li&gt;Bulletproofs: No trusted setup, but proof size grows with complexity.
&lt;/li&gt;
&lt;li&gt;zk-STARKs: Transparent (no trusted setup), post-quantum secure, but with large proof sizes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Midnight utilizes a Plonk-derived system called &lt;a href="https://electriccoin.co/blog/explaining-halo-2/" rel="noopener noreferrer"&gt;Halo 2&lt;/a&gt;, which supports recursive proofs and eliminates trusted setup in specific configurations, making it an ideal choice for privacy-preserving dApps that require both flexibility and scalability.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Do ZKPs Work?
&lt;/h2&gt;

&lt;p&gt;The idea behind zero-knowledge proofs might seem almost magical: one party (the prover) can prove to another (the verifier) that a statement is true, without revealing the &lt;em&gt;why&lt;/em&gt;. But this is no sleight of hand—it’s grounded in rigorous cryptography and clever use of mathematical structures.&lt;/p&gt;

&lt;p&gt;At the heart of a ZKP is a “statement” that the prover wants to validate without revealing the underlying secret. That statement gets encoded into a circuit, which represents the logical rules or constraints that need to be satisfied. The prover then uses a special cryptographic key, known as the proving key, along with the secret input (called the witness), to generate a succinct proof. The verifier can then check this proof using a verifying key, confirming the rules were followed, without ever seeing the private input.&lt;/p&gt;

&lt;p&gt;This process makes ZKPs ideal for privacy-preserving smart contracts. In traditional systems, all data must be made public to verify that an action is legitimate. But with ZKPs, we can shift the trust model: rather than inspecting the data itself, the verifier checks a cryptographic proof that the data complies with the rules.&lt;/p&gt;

&lt;p&gt;Midnight takes this further by embedding ZKPs directly into the structure and execution of smart contracts. In Midnight, the verification key of a compiled Compact smart contract becomes the identity of that contract on-chain. When users interact with it, they’re not just calling a function—they’re submitting proof that they've complied with the logic defined by that contract, without revealing their inputs.&lt;/p&gt;

&lt;p&gt;Here's a high-level flow of how this works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Setup: A circuit is created. A proving key and a verifying key are generated.
&lt;/li&gt;
&lt;li&gt;Proof Generation: The prover uses their secret (a witness) and the proving key to generate a cryptographic proof.
&lt;/li&gt;
&lt;li&gt;Verification: The verifier uses the verifying key and the proof to confirm the statement is true, without learning anything else.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This process ensures that the smart contract logic is executed exactly as intended, without exposing the underlying data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Midnight’s Approach to ZKPs
&lt;/h2&gt;

&lt;p&gt;Midnight utilizes zero-knowledge proofs not only for theoretical privacy but also to enable real-world compliance and usability. Let’s walk through a few key elements of how ZKPs show up on the Midnight network:&lt;/p&gt;

&lt;h3&gt;
  
  
  Confidential Transactions
&lt;/h3&gt;

&lt;p&gt;Users can transfer assets on Midnight without revealing the sender, receiver, or amount. ZKPs are used to prove that a transaction is valid (i.e., no double spending, balances add up) without revealing specific details. This ensures both privacy and integrity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Selective Disclosure and Compliance
&lt;/h3&gt;

&lt;p&gt;Midnight supports “shielded” and “unshielded” data modes. You can keep your transaction data private by default, but also selectively disclose specific information (via a ZKP or viewing key) to a regulator, auditor, or another authorized party.&lt;/p&gt;

&lt;p&gt;This enables use cases like “prove I’m a citizen of Country X” or “prove I’m not sanctioned” without revealing your complete identity or wallet history.&lt;/p&gt;

&lt;p&gt;For more information about selective disclosure, read my overview &lt;a href="https://docs.midnight.network/blog/web3-intro-selective-disclosure" rel="noopener noreferrer"&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  Decentralized Identity
&lt;/h3&gt;

&lt;p&gt;ZKPs are key to proving facts about identity without revealing full credentials. Midnight supports workflows like proving KYC status (“A trusted provider has verified me”) using a proof, not a document.&lt;/p&gt;

&lt;p&gt;This allows users to interact with services that require identity checks—such as exchanges or marketplaces—without exposing sensitive personal data.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability via Recursive Proofs
&lt;/h3&gt;

&lt;p&gt;ZKPs also compress large computations into tiny proofs. That makes them ideal for batching transactions or reducing blockchain bloat. Midnight’s use of recursive proofs allows smart contracts and transactions to scale more efficiently than traditional blockchains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real-World Use Cases on Midnight
&lt;/h2&gt;

&lt;p&gt;Some examples of ZKP-powered applications on Midnight are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voting: Prove you’re eligible to vote and that your vote was counted, without revealing your identity or your vote.
&lt;/li&gt;
&lt;li&gt;Whistleblowing: Submit a report anonymously, proving only that you’re authorized (e.g., an employee).
&lt;/li&gt;
&lt;li&gt;Private Asset Swaps: Use Midnight’s Zswap to exchange tokens confidentially without revealing terms or participants.
&lt;/li&gt;
&lt;li&gt;KYC Onboarding: Prove compliance status to a platform or dApp without exposing documents.
&lt;/li&gt;
&lt;li&gt;Tokenized Real-World Assets: Keep ownership private while maintaining auditable transfer records. These use cases show how ZKPs on Midnight turn privacy into a practical feature, not just a theoretical promise. They lay the groundwork for a future where developers can build secure, compliant, and data-protecting applications by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Zero-knowledge proofs bring trust to trustless systems. They make it possible to prove something is true—like compliance with laws, asset ownership, or user eligibility—without revealing any sensitive details.&lt;/p&gt;

&lt;p&gt;Midnight makes ZKPs more than theoretical. They’re deeply integrated into its smart contract architecture, transaction model, and developer tooling. Paired with the Compact language (covered in last week’s post), they create a robust foundation for building privacy-first decentralized applications.&lt;/p&gt;

&lt;p&gt;If you’re interested in learning more, check out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.midnight.network/academy/module-3" rel="noopener noreferrer"&gt;Midnight Developer Academy Module 3&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.midnight.network/learn/understanding-midnights-technology/zero-knowledge-proofs" rel="noopener noreferrer"&gt;Zero-Knowledge Proofs&lt;/a&gt; in the &lt;a href="https://docs.midnight.network/" rel="noopener noreferrer"&gt;Midnight Docs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if you’ve come across excellent ZKP explanations or tutorials, I’d love to hear about them—please share your favorites!&lt;/p&gt;

&lt;p&gt;See you next week as I continue to unpack the core ideas that power privacy in Web3!  &lt;/p&gt;

</description>
      <category>midnightnetwork</category>
      <category>web3</category>
      <category>beginners</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Say Hello to example-counter and example-bboard</title>
      <dc:creator>Lauren Lee</dc:creator>
      <pubDate>Tue, 15 Jul 2025 10:45:00 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/say-hello-to-example-counter-and-example-bboard-1inp</link>
      <guid>https://forem.com/devsofmidnight/say-hello-to-example-counter-and-example-bboard-1inp</guid>
      <description>&lt;p&gt;&lt;a href="https://midnight.network/" rel="noopener noreferrer"&gt;Midnight's Developer Relations team&lt;/a&gt; is actively shaping how developers learn, build, and experiment with privacy-first apps. In this post, we take a closer look at how DevRel is lowering the barrier to entry for new builders, supporting open-source tools, and helping the community navigate the unique challenges of developing on a privacy-preserving blockchain.&lt;/p&gt;

&lt;h2&gt;
  
  
  From ZIP Files to GitHub: Opening the Gates
&lt;/h2&gt;

&lt;p&gt;Midnight is entering a new phase in our developer journey. Until now, developers had to download ZIP files from our documentation site just to get started. No versioning, no collaboration, no visibility.&lt;/p&gt;

&lt;p&gt;That changes today.&lt;/p&gt;

&lt;p&gt;The DevRel team is proud to share our first two open source example repositories: &lt;a href="https://github.com/midnightntwrk/example-counter" rel="noopener noreferrer"&gt;&lt;code&gt;example-counter&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://github.com/midnightntwrk/example-bboard" rel="noopener noreferrer"&gt;&lt;code&gt;example-bboard&lt;/code&gt;&lt;/a&gt;. These projects are more than demos. They’re intentionally scoped, composable references designed to help developers explore what’s possible with Midnight’s privacy-first architecture.&lt;/p&gt;

&lt;p&gt;While our broader engineering team continues to open source core protocol components, these repos mark a different kind of milestone: showing others how to build on top of Midnight’s foundation. With versioned code and public visibility, developers can now fork, remix, and build with confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Contract With a Purpose
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/midnightntwrk/example-counter" rel="noopener noreferrer"&gt;&lt;code&gt;example-counter&lt;/code&gt;&lt;/a&gt; is a minimal dApp that introduces the fundamentals of building on Midnight. It walks through the full development flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing a Compact smart contract
&lt;/li&gt;
&lt;li&gt;Running and compiling locally
&lt;/li&gt;
&lt;li&gt;Using public state
&lt;/li&gt;
&lt;li&gt;Deploying to the Midnight testnet
&lt;/li&gt;
&lt;li&gt;Sending transactions
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;pragma&lt;/span&gt; &lt;span class="nx"&gt;language_version&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.16&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;CompactStandardLibrary&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// public state&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;ledger&lt;/span&gt; &lt;span class="nx"&gt;round&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Counter&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// transition function changing public state&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="nx"&gt;circuit&lt;/span&gt; &lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;round&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;increment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s designed to build foundational literacy in Compact and Midnight’s dev tooling. It’s a simple but powerful way to learn Compact and become familiar with the development flow on Midnight.&lt;/p&gt;

&lt;p&gt;Think of it as a &lt;code&gt;“Hello, World”&lt;/code&gt; for privacy-enhancing dApp development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enforcing Rules Without Revealing Identity
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/midnightntwrk/example-bboard" rel="noopener noreferrer"&gt;&lt;code&gt;example-bboard&lt;/code&gt;&lt;/a&gt; goes further. It simulates a public bulletin board, where users can post messages, and only the original author can remove their own post.&lt;/p&gt;

&lt;p&gt;It’s a small app that teaches a big concept: Midnight enables identity-aware rules without revealing identity.&lt;/p&gt;

&lt;p&gt;This repo covers how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Combine public and private state in a Compact contract
&lt;/li&gt;
&lt;li&gt;Use zero-knowledge proofs to enforce permissions
&lt;/li&gt;
&lt;li&gt;Validate ownership locally without exposing identity
&lt;/li&gt;
&lt;li&gt;Design UI flows that respect user privacy by default
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s especially useful for teams exploring anonymous messaging, private voting, or access control without identity leakage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Means to Build in the Open
&lt;/h2&gt;

&lt;p&gt;Speaking personally, I’ve spent most of my DevRel career working in open source. But this is the first time I’ve been part of a company transitioning into it.&lt;/p&gt;

&lt;p&gt;Open sourcing code isn’t just a technical milestone. It’s a culture shift. Releasing code publicly changes how a team thinks and operates.&lt;/p&gt;

&lt;p&gt;It means moving from perfectionism to progress. From private Slack threads to public GitHub Issues. From “we’ll fix it internally” to “anyone can help improve it.”&lt;/p&gt;

&lt;p&gt;It’s a commitment to building alongside others, not just for them.&lt;/p&gt;

&lt;p&gt;These first example repos mark the beginning of that shift for Midnight. They’re designed to help others learn by doing and to demonstrate that &lt;strong&gt;privacy and collaboration can coexist&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Docs Are Up Next
&lt;/h2&gt;

&lt;p&gt;We’re also preparing to open source our &lt;a href="https://github.com/midnightntwrk/midnight-docs" rel="noopener noreferrer"&gt;Midnight Docs repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is a major step toward transparency, trust, and co-creation. We want the documentation to grow alongside the ecosystem, which means making it easier for contributors to suggest improvements, fix issues, and help shape the developer experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Next?
&lt;/h2&gt;

&lt;p&gt;This is just the start. In the coming months, the DevRel team will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Publish more example dApps (and build them from scratch in the open)
&lt;/li&gt;
&lt;li&gt;Create reusable components and templates
&lt;/li&gt;
&lt;li&gt;Contribute improvements upstream to core tooling
&lt;/li&gt;
&lt;li&gt;Document real-world use cases for easier onboarding
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We’re building in the open, for those who want to build with us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explore the Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/midnightntwrk/example-counter" rel="noopener noreferrer"&gt;&lt;code&gt;example-counter&lt;/code&gt;&lt;/a&gt;  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/midnightntwrk/example-bboard" rel="noopener noreferrer"&gt;&lt;code&gt;example-bboard&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join the Conversation
&lt;/h2&gt;

&lt;p&gt;We’d love to hear your feedback, contributions, and ideas. Drop into &lt;a href="https://discord.gg/midnightnetwork" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;, open an issue, or fork a repo and show us what you’ve built.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>opensource</category>
      <category>blockchain</category>
      <category>privacy</category>
    </item>
    <item>
      <title>Learning Web3 from the Ground Up: Smart Contracts and the Compact Language</title>
      <dc:creator>Samantha Holstine</dc:creator>
      <pubDate>Fri, 20 Jun 2025 16:39:59 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-smart-contracts-and-the-compact-language-1meb</link>
      <guid>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-smart-contracts-and-the-compact-language-1meb</guid>
      <description>&lt;p&gt;As I continue my journey through the world of Web3, I’ve been digging into the building blocks that make privacy-first platforms like Midnight possible (you can catch up on previous posts in the Midnight Dev Diaries!). This week, I focused on two foundational pieces that go hand in hand: smart contracts on Midnight and the Compact language that powers them.&lt;/p&gt;

&lt;p&gt;Smart contracts aren’t new to blockchain, but Midnight’s approach is unique. Instead of executing code directly on-chain, Midnight uses smart contracts to define rules that are enforced off-chain through zero-knowledge proofs. At the center of this system is &lt;a href="https://docs.midnight.network/develop/reference/compact/lang-ref" rel="noopener noreferrer"&gt;Compact&lt;/a&gt;—a purpose-built language designed to make writing these privacy-preserving contracts both secure and practical.&lt;/p&gt;

&lt;p&gt;To better understand how this works in practice, I also worked through &lt;a href="https://docs.midnight.network/academy/module-2" rel="noopener noreferrer"&gt;Module 2 of the Midnight Developer Academy&lt;/a&gt;, which covers key concepts such as contract structure, circuit types, and the relationship between the contract and the external logic that executes it.&lt;/p&gt;

&lt;p&gt;In this post, I’ll break down what makes smart contracts on Midnight different, how Compact is structured, and how the two work together to enable provable logic without exposing sensitive data.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Smart Contract on Midnight?
&lt;/h2&gt;

&lt;p&gt;At a high level, a smart contract is an autonomous program stored on the blockchain. It defines rules for interaction, checks that those rules are met, and records results—all without needing a trusted third party to enforce them.&lt;/p&gt;

&lt;p&gt;But Midnight isn’t just any blockchain. It’s a privacy-first platform built with compliance in mind, and that means its smart contracts need to do more than just run logic. They need to protect private data, enable selective disclosure, and uphold security and trust even in adversarial environments.&lt;/p&gt;

&lt;p&gt;That’s where Compact comes in—a custom domain-specific language explicitly designed to write smart contracts on Midnight.&lt;/p&gt;

&lt;p&gt;Instead of executing logic directly on-chain like many traditional smart contracts, Compact contracts define the logic to be proven, not the execution environment itself. The contract encodes the rules that must be followed, which are then used as the foundation for a zero-knowledge proof. The actual execution—like processing a transaction, generating a credential, or submitting a vote—happens externally, often in a DApp, backend service, or API.&lt;/p&gt;

&lt;p&gt;That external system runs the necessary logic and &lt;strong&gt;proves&lt;/strong&gt; it followed the contract’s rules by generating a cryptographic proof. The blockchain doesn’t need to know the details—it just verifies that the proof is valid. This separation is what makes Midnight’s model both scalable and privacy-preserving.&lt;/p&gt;

&lt;p&gt;In other words: the contract sets the rules, your app runs the logic, and the blockchain verifies the outcome, without ever seeing the sensitive inputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Compact?
&lt;/h2&gt;

&lt;p&gt;Compact is a statically typed, privacy-focused smart contract language tailored to the unique goals of the Midnight network. If you've worked with JavaScript or TypeScript before, you'll find Compact refreshingly approachable. It’s a domain-specific language (DSL) designed to define zero-knowledge proof logic using statically typed circuits that map to off-chain computations. But don’t let the simple syntax fool you—Compact is engineered for privacy-preserving computation using zero-knowledge proofs (ZKPs) under the hood. (For a more technical deep dive into compact, check out part 1 of Kevin Millikin's Compact Deep Dive &lt;a href="https://docs.midnight.network/blog/compact" rel="noopener noreferrer"&gt;here&lt;/a&gt;!)&lt;/p&gt;

&lt;p&gt;A Compact contract is made up of three core components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ledger&lt;/strong&gt;: The public, on-chain state of the contract.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Circuits&lt;/strong&gt;: Off-chain logic that can manipulate data, produce proofs, and interact with the ledger.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Witnesses&lt;/strong&gt;: Privately held data, only known to the entity executing the contract.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compact also supports &lt;a href="https://docs.midnight.network/develop/reference/compact/explicit_disclosure#conclusion" rel="noopener noreferrer"&gt;explicit disclosure&lt;/a&gt;, meaning developers can define exactly what data gets revealed (and to whom). This provides fine-grained control over what is visible on-chain and what remains private, essential for use cases such as private asset transfers, age-gated access, or confidential voting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Circuits and Privacy
&lt;/h2&gt;

&lt;p&gt;One of the most essential takeaways from Module 2 of the Midnight Developer Academy is how circuits work. In Compact, circuits are the functions that users or systems can call to trigger actions. But unlike Web2 APIs or EVM contract functions, these circuits don’t execute logic directly on the blockchain. Instead, they run off-chain and generate zero-knowledge proofs that the logic was followed.&lt;/p&gt;

&lt;p&gt;In practice, that means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The contract logic is public.
&lt;/li&gt;
&lt;li&gt;The data used during execution is private.
&lt;/li&gt;
&lt;li&gt;The outcome of the logic (e.g., “the rules were followed”) is publicly verifiable using a proof.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where Midnight’s model shows its strength—users can prove they followed the rules without revealing the exact data that triggered the result. Think “I proved I’m eligible to vote” without revealing who I am or what I voted for.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Theory to Practice
&lt;/h2&gt;

&lt;p&gt;In traditional smart contract platforms, everything you do is public by default: data, logic, inputs, outputs. That’s useful for transparency, but it's not always practical, especially for sensitive use cases like health data, financial records, or identity verification.&lt;/p&gt;

&lt;p&gt;Midnight flips that default. Privacy is built in, and developers opt into disclosure only when it’s needed.&lt;/p&gt;

&lt;p&gt;Some examples of what you might build with Compact on Midnight:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A voting system where only the outcome is public.
&lt;/li&gt;
&lt;li&gt;An access control system that verifies user attributes without revealing identities.
&lt;/li&gt;
&lt;li&gt;A token transfer app that hides amounts or senders while still allowing public verification.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Smart contracts are the foundation of decentralized applications—but at Midnight, they’re built for a privacy-first future. Instead of executing every piece of logic on-chain, Midnight separates the contract's logic from its execution. With Compact, developers define the rules of a zero-knowledge proof system, enabling applications to prove facts without exposing sensitive data. It’s a practical shift toward secure, scalable, and user-protective Web3 design.&lt;/p&gt;

&lt;p&gt;At Midnight, this isn’t just a theoretical improvement—it’s core to how the platform operates. Compact smart contracts let developers write verifiable, auditable logic while keeping inputs and execution off-chain. Combined with ZKPs and shielded transactions, they create an infrastructure that supports real-world use cases without compromising on privacy or decentralization.&lt;/p&gt;

&lt;p&gt;If you're learning how to build smart contracts in Web3—or just curious how these pieces fit together—I highly recommend diving into &lt;a href="https://docs.midnight.network/academy/module-2" rel="noopener noreferrer"&gt;Module 2 of the Midnight Developer Academy&lt;/a&gt; and reviewing the &lt;a href="https://docs.midnight.network/develop/reference/compact/lang-ref" rel="noopener noreferrer"&gt;Compact Language Reference&lt;/a&gt;. These resources break down the concepts step by step and show how Midnight’s architecture turns advanced cryptography into practical developer tools.&lt;/p&gt;

&lt;p&gt;I’ll be back next week with more insights as I continue to unpack the pieces that make privacy-first systems work in the decentralized world.  &lt;/p&gt;

</description>
      <category>midnightnetwork</category>
      <category>blockchain</category>
      <category>web3</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Learning Web3 From the Ground Up: Understanding Selective Disclosure</title>
      <dc:creator>Samantha Holstine</dc:creator>
      <pubDate>Fri, 13 Jun 2025 20:44:47 +0000</pubDate>
      <link>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-understanding-selective-disclosure-4n7</link>
      <guid>https://forem.com/devsofmidnight/learning-web3-from-the-ground-up-understanding-selective-disclosure-4n7</guid>
      <description>&lt;p&gt;As I delve deeper into the world of Web3, I've been working my way through foundational concepts to have a better understanding of the industry (check out my last five posts on the &lt;a href="https://docs.midnight.network/blog" rel="noopener noreferrer"&gt;Midnight Dev Diaries&lt;/a&gt;!). This week, I dove into one of the most practical and privacy-focused ideas I’ve encountered so far: &lt;strong&gt;selective disclosure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Selective disclosure is more than just a technical feature—it’s the working expression of a broader idea known as &lt;strong&gt;rational privacy&lt;/strong&gt;. It allows individuals to prove or reveal only what’s necessary in a given interaction, keeping everything else private. In an ecosystem where trust must be earned without a central authority, this ability to protect personal data while still meeting legal or operational requirements is critical.&lt;/p&gt;

&lt;p&gt;This post examines how selective disclosure operates, its benefits, and how platforms like Midnight are implementing it through privacy-first smart contracts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Selective Disclosure?
&lt;/h2&gt;

&lt;p&gt;In the Web3 world, privacy doesn’t mean keeping everything secret—it means sharing only what’s necessary. &lt;a href="https://www.identity.com/what-is-selective-disclosure/" rel="noopener noreferrer"&gt;&lt;strong&gt;Selective disclosure&lt;/strong&gt;&lt;/a&gt; is a privacy-preserving technique that enables individuals to disclose specific information for a given interaction while keeping all other personal data confidential.&lt;/p&gt;

&lt;p&gt;This approach is a practical expression of a broader concept known as &lt;a href="https://midnight.network/blog/midnight-at-consensus-2025-building-the-future-of-rational-privacy" rel="noopener noreferrer"&gt;&lt;strong&gt;rational privacy&lt;/strong&gt;&lt;/a&gt;. Rational privacy is the idea that privacy shouldn’t be absolute or all-or-nothing—it should be contextual. It recognizes that in many real-world scenarios, users want to share &lt;em&gt;some&lt;/em&gt; data to gain access to services or meet legal obligations, but they shouldn't be forced to give up all privacy and security in the process. It’s about striking a balance between personal control, usability, and regulatory compliance.&lt;/p&gt;

&lt;p&gt;Selective disclosure is the technical implementation of rational privacy. It gives users and developers the cryptographic tools to protect sensitive information by default, while still enabling the right level of transparency when it’s required. This makes it especially relevant for public blockchain networks, where data is immutable and visible by design.&lt;/p&gt;

&lt;p&gt;A typical example of selective disclosure in action is the use of Verifiable Credentials (VCs). VCs allow users to prove attributes—like age, residency, or educational background—without revealing the entire credential. This aligns with the principles of data minimization and privacy by design, ensuring individuals remain in control of their information.&lt;/p&gt;

&lt;p&gt;This balance between usability and privacy is what makes selective disclosure so powerful—and so relevant for real-world blockchain applications. But beyond the technical implementation, it's worth asking: what are the practical benefits of using selective disclosure in the first place?&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Selective Disclosure
&lt;/h2&gt;

&lt;p&gt;When integrated thoughtfully, selective disclosure brings both technical and human-centric advantages to decentralized systems. It enables individuals and organizations to meet privacy expectations and compliance standards without sacrificing functionality. Implementing selective disclosure offers several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced Privacy&lt;/strong&gt;: Selective disclosure enables users to share only the data necessary for a specific interaction, rather than disclosing full credentials or identity documents. This dramatically reduces the surface area for privacy breaches and surveillance. Whether you’re accessing a service, submitting a form, or interacting with a smart contract, your unnecessary personal data stays out of view.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Minimization and Compliance&lt;/strong&gt;: This principle, core to privacy laws such as GDPR and HIPAA, requires that only the minimum amount of personal data necessary for a task is collected or processed. Selective disclosure naturally enforces this, making it easier for developers and organizations to design privacy-respecting systems by default.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Empowerment and Control&lt;/strong&gt;: In traditional systems, users often hand over their entire dataset for one small verification (e.g., uploading an entire ID just to prove their age). Selective disclosure flips that dynamic, giving users the power to control what they share, when, and with whom. This supports a more user-centric data model, where individuals become the custodians of their credentials.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reduced Risk of Data Misuse&lt;/strong&gt;: The less information that’s exposed, the lower the risk of that data being lost, stolen, or misused. Selective disclosure reduces the need for centralized data storage (e.g., big ID databases), limiting attack vectors for fraud and identity theft. Even if a transaction or credential presentation is intercepted, only the minimum disclosed attribute is visible, keeping the rest safe.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lower Liability and Operational Overhead for Businesses:&lt;/strong&gt; Many organizations would prefer not to collect or store sensitive user data due to the associated risks, regulatory requirements, and administrative burdens. Selective disclosure offers a path forward, enabling users to demonstrate eligibility or compliance without requiring businesses to retain or manage that data. This can reduce costs, simplify operations, and improve overall data security posture.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While selective disclosure introduces a powerful model for user-centric privacy, it also comes with its own set of technical and usability challenges. Understanding these limitations is essential for builders and organizations aiming to adopt it responsibly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Potential Drawbacks
&lt;/h2&gt;

&lt;p&gt;While selective disclosure strengthens privacy and control, implementing it in real-world systems isn’t always straightforward. Here are some of the common challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Complexity in Implementation&lt;/strong&gt;: Selective disclosure relies on advanced cryptographic techniques, often zero-knowledge proofs or similar privacy-preserving protocols. These require careful design, precise execution, and deep security expertise. For developers new to Web3 or cryptography, like myself, the learning curve can be steep, and mistakes in implementation could compromise the intended privacy protections.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verification Difficulties&lt;/strong&gt;: When only a fragment of a credential or statement is revealed, verifying its authenticity can become more complicated. Systems must be designed to ensure that partial disclosures can be trusted without needing access to the complete original data. This often requires additional metadata or proofs to be included, which can increase the overall complexity of the system and potentially slow down the verification process.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interoperability Challenges&lt;/strong&gt;: Not all decentralized identity systems follow the same formats or standards. As a result, credentials issued by one platform may not be easily verifiable on another, especially when using advanced features like selective disclosure. Without widely adopted protocols and infrastructure, cross-platform compatibility can be limited, reducing the broader utility of selectively disclosed data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While these challenges are real, they’re not insurmountable. Much of the current work in privacy-preserving blockchain development, including projects like Midnight, focuses on making selective disclosure more practical, developer-friendly, and interoperable across various ecosystems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases of Selective Disclosure
&lt;/h2&gt;

&lt;p&gt;Selective disclosure has powerful, real-world applications wherever individuals or organizations need to prove something without oversharing. It’s beneficial in systems that handle sensitive data but also require compliance, trust, and transparency. Here are a few domains where it shines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Digital Identity Verification&lt;/strong&gt;: Imagine proving you're over 18 to access a service—without uploading your driver's license or disclosing your full birthdate and address. Selective disclosure lets you present only the relevant fact (e.g., “over 18”) as a verifiable statement, not the whole credential.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial Transactions&lt;/strong&gt;: Financial platforms often need to confirm identity or transaction legitimacy (for KYC/AML compliance), but users shouldn’t have to share their entire financial history or wallet activity. Selective disclosure enables sharing only what’s legally necessary—no more, no less.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Healthcare&lt;/strong&gt;: Patients may need to prove their vaccination status or medical eligibility without disclosing their entire health record. Selective disclosure lets them share only the required attribute (e.g., “vaccinated for X”) while keeping the rest private.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access Control&lt;/strong&gt;: Whether entering a venue or accessing online services, users may be granted or denied access based on attributes like membership, role, or credentials. Selective disclosure can enforce this access logic without revealing unnecessary identifying information.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Selective Disclosure in the Midnight Network
&lt;/h3&gt;

&lt;p&gt;At Midnight, selective disclosure isn’t just a privacy feature—it’s a core design principle grounded in rational privacy. Rational privacy recognizes that while sensitive data must be protected, real-world applications also require controlled visibility for regulatory, legal, or operational reasons.&lt;/p&gt;

&lt;p&gt;Take financial transactions, for example. A decentralized financial platform built on Midnight may want to keep user balances, transfers, and transaction histories private. However, under anti-money laundering (AML) or know-your-customer (KYC) regulations, certain information may need to be revealed—but only to authorized parties, and only under specific legal conditions.&lt;/p&gt;

&lt;p&gt;This is where selective disclosure and zero-knowledge proofs come together. Using Midnight's Compact smart contract language, developers can build logic that proves a transaction is valid (e.g., below a certain threshold, or compliant with regulatory filters) without revealing the full transaction details. Meanwhile, if a regulatory audit is triggered, users or auditors could selectively disclose the required pieces of information—nothing more.&lt;/p&gt;

&lt;p&gt;In this way, Midnight enables builders to create applications that respect individual privacy &lt;em&gt;and&lt;/em&gt; comply with regulatory requirements. It’s a practical application of selective disclosure that mirrors how real-world trust operates: share only what’s needed, only when it’s needed, and only with the right people.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Selective disclosure offers a flexible and powerful approach to privacy—one that meets people where they are, allowing them to control their information. It enables individuals to share just enough information to satisfy requirements, without exposing more than necessary. Whether you're verifying an identity, proving a credential, or complying with financial regulations, selective disclosure makes privacy practical and effective.&lt;/p&gt;

&lt;p&gt;At Midnight, this concept becomes more than theoretical. It’s embedded into the platform’s architecture through Compact smart contracts and zero-knowledge proofs, allowing builders to create systems that balance user protection with real-world needs. It’s rational privacy in action.&lt;/p&gt;

&lt;p&gt;If you're exploring how to build for privacy in Web3—or just learning how these systems work—I encourage you to check out the &lt;a href="https://docs.midnight.network/" rel="noopener noreferrer"&gt;Midnight docs&lt;/a&gt; and &lt;a href="https://docs.midnight.network/academy" rel="noopener noreferrer"&gt;Academy&lt;/a&gt; for more examples and technical insight, as well as a detailed list of further reading about selective disclosure below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.identity.com/what-is-selective-disclosure/" rel="noopener noreferrer"&gt;What Is Selective Disclosure? – Identity.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.dock.io/post/selective-disclosure" rel="noopener noreferrer"&gt;Selective Disclosure Guide – Dock.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://frostbrowntodd.com/a-refresher-on-selective-disclosure-and-anti-fraud-rules/" rel="noopener noreferrer"&gt;A Refresher on Selective Disclosure and Anti-Fraud Rules – Frost Brown Todd&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.midnight.network/academy/module-3" rel="noopener noreferrer"&gt;Midnight Academy Module 3 – Midnight Docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.midnight.network/develop/reference/compact/explicit_disclosure" rel="noopener noreferrer"&gt;Explicit Disclosure Reference – Midnight Docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.midnight.network/learn/introduction/use-cases/digital-assets" rel="noopener noreferrer"&gt;Digital Assets Use Cases – Midnight Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And, as always, if you’ve come across any great learning resources on privacy or identity in Web3, I’d love to see them—drop a comment or reply with your favorites!&lt;/p&gt;

&lt;p&gt;I'll be back next week with more insights as I continue unpacking the key building blocks that make decentralized systems work.  &lt;/p&gt;

</description>
      <category>midnightnetwork</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
