<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Blockchain on Sooraj Sathyanarayanan</title>
  <link rel="alternate" href="https://profincognito.me/tags/blockchain/" />
  <link rel="self" href="https://profincognito.me/tags/blockchain/index.xml" />
  <subtitle>Recent content in Blockchain on Sooraj Sathyanarayanan</subtitle>
  <id>https://profincognito.me/tags/blockchain/</id>
  <generator uri="http://gohugo.io" version="0.147.8">Hugo</generator>
  <language>en-us</language>
  <updated>2026-05-25T14:44:10-07:00</updated>
  <author>
    <name>Sooraj Sathyanarayanan</name>
    
  </author>
  <rights>[CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)</rights>
      <entry>
        <title>Decentralized Identity Research: A Comprehensive Analysis</title>
        <link rel="alternate" href="https://profincognito.me/research/decentralized-identity/" />
        <id>https://profincognito.me/research/decentralized-identity/</id>
        <published>2026-03-04T00:00:00Z</published>
        <updated>2026-05-25T14:44:10-07:00</updated>
        <summary type="html">An in-depth exploration of decentralized identity systems, their challenges, and future directions, based on research leadership at Superscrypt</summary>
          <content type="html"><![CDATA[<h2 id="introduction">Introduction</h2>
<p>In an era where digital interactions are integral to daily life, managing digital identities has become a critical concern. Traditional centralized identity systems are vulnerable to security breaches, data misuse, and privacy violations.</p>
<p><strong>Decentralized Identity (DID) systems offer a promising alternative</strong> by empowering users with control over their personal data and reducing reliance on centralized authorities.</p>
<p>This comprehensive analysis delves into the state of decentralized identity systems. We examine technical architectures, user adoption challenges, regulatory considerations, and future directions. The research was spearheaded by the NEU Blockchain Club in collaboration with Superscrypt, aiming to contribute valuable insights to the evolving landscape of digital identity.</p>
<h2 id="research-context">Research Context</h2>
<p>As the research lead for the NEU Blockchain Club&rsquo;s collaborative project with Superscrypt—a crypto-native venture capital firm focused on infrastructure and emerging use cases in Web3—we embarked on an extensive investigation into decentralized identity systems.</p>
<p>Superscrypt&rsquo;s mission to onboard the next wave of builders and users into Web3 aligned seamlessly with our research focus on identity and credentials.</p>
<p>Our multidisciplinary team, comprising members Shaan, Maria, Lin, Arshia, and collaborative inputs from Andy, conducted a thorough examination of the digital identity landscape. We analyzed the shift from Web2 to Web3 paradigms, exploring how decentralized technologies can redefine identity management.</p>
<h2 id="executive-summary">Executive Summary</h2>
<p>Our research uncovered a multifaceted landscape where decentralized identity systems represent a significant advancement in digital identity management but also present considerable implementation challenges.</p>
<p><strong>Key findings highlight:</strong></p>
<ul>
<li>The evolution of digital identity systems</li>
<li>Critical technical and adoption barriers</li>
<li>Regulatory complexities</li>
<li>Emerging innovation opportunities, particularly at the intersection of decentralized identity and artificial intelligence (AI)</li>
</ul>
<h2 id="key-research-findings">Key Research Findings</h2>
<h3 id="evolution-of-digital-identity-systems">Evolution of Digital Identity Systems</h3>
<p>The transition from Web2 to Web3 identity systems is characterized by several pivotal shifts:</p>
<ul>
<li>
<p><strong>Architectural Changes</strong>: Moving from centralized databases to distributed ledger technologies (DLTs) like blockchain, enabling decentralized storage and verification of identity data.</p>
</li>
<li>
<p><strong>User Control</strong>: Enhancing user sovereignty over personal data through self-sovereign identity (SSI) frameworks, allowing individuals to own and manage their identity credentials without intermediaries.</p>
</li>
<li>
<p><strong>Security Model</strong>: Transitioning from single points of failure inherent in centralized systems to distributed trust models that reduce vulnerability to attacks.</p>
</li>
<li>
<p><strong>Privacy Framework</strong>: Implementing advanced cryptographic techniques, such as zero-knowledge proofs, to enable selective disclosure of identity attributes while preserving user privacy.</p>
</li>
</ul>
<p><img loading="lazy" src="/images/content/research-decentralized-identity-d9a9ec97-4586-460e-82fa-f10d8e682a93.png" alt="Evolution of Identity Systems" />
</p>
<h3 id="critical-challenges-identified">Critical Challenges Identified</h3>
<h4 id="technical-implementation">Technical Implementation</h4>
<ul>
<li>
<p><strong>Scalability Constraints</strong>: Current blockchain platforms face limitations in transaction throughput, impacting the scalability of DID solutions for mass adoption.</p>
</li>
<li>
<p><strong>Interoperability Issues</strong>: Lack of standardization leads to compatibility problems between different DID systems and protocols.</p>
</li>
<li>
<p><strong>Key Management Complexity</strong>: Users must securely manage private keys, and recovery mechanisms are often complex or inadequate.</p>
</li>
<li>
<p><strong>Performance Limitations</strong>: High latency and transaction costs in some blockchain networks hinder real-time identity verification.</p>
</li>
</ul>
<blockquote>
<p><strong>Note:</strong></p>
<p><strong>Key Management Complexity is a Major Barrier</strong></p>
<p>Simplifying key management is crucial for user adoption, as losing access to private keys can result in permanent loss of identity credentials.</p></blockquote>
<h4 id="adoption-barriers">Adoption Barriers</h4>
<ul>
<li>
<p><strong>User Experience Complexity</strong>: Non-intuitive interfaces and processes deter mainstream users unfamiliar with blockchain technology.</p>
</li>
<li>
<p><strong>Educational Gaps</strong>: Limited public understanding of the benefits and functionalities of DIDs hampers adoption.</p>
</li>
<li>
<p><strong>Integration Costs</strong>: Enterprises face significant costs and technical challenges when integrating DID solutions with legacy systems.</p>
</li>
<li>
<p><strong>Incumbent Resistance</strong>: Established identity providers may resist decentralized models that disrupt traditional business practices.</p>
</li>
</ul>
<blockquote>
<p><strong>Note:</strong></p>
<p><strong>User Experience is Key to Adoption</strong></p>
<p>Enhancing usability can significantly accelerate the adoption of decentralized identity solutions among mainstream users.</p></blockquote>
<h4 id="regulatory-landscape">Regulatory Landscape</h4>
<ul>
<li>
<p><strong>Compliance Challenges</strong>: Ensuring that DID systems comply with data protection regulations like GDPR and CCPA is complex due to the immutable nature of blockchain.</p>
</li>
<li>
<p><strong>Legal Recognition</strong>: DID-based credentials may lack legal status in certain jurisdictions, affecting their acceptance.</p>
</li>
<li>
<p><strong>Cross-Border Verification</strong>: Variations in international regulations complicate cross-border identity verification and data sharing.</p>
</li>
<li>
<p><strong>Regulatory Uncertainty</strong>: Ambiguity in emerging markets regarding blockchain technologies creates compliance risks.</p>
</li>
</ul>
<h2 id="in-depth-analysis">In-Depth Analysis</h2>
<h3 id="technical-implementation-challenges">Technical Implementation Challenges</h3>
<p>The technical hurdles in implementing DIDs are significant. Scalability remains a core issue, as blockchain networks like Ethereum struggle with high transaction fees and limited throughput.</p>
<p>Layer 2 solutions and alternative consensus mechanisms are being explored to mitigate these issues.</p>
<p><strong>Interoperability</strong> is another critical challenge. The proliferation of various DID methods and standards (e.g., <code>did:btc:</code>, <code>did:eth:</code>) without a unified framework leads to fragmentation.</p>
<p>Initiatives like the World Wide Web Consortium&rsquo;s (W3C) DID standards aim to address this, but widespread adoption is pending.</p>
<p><strong>Key management</strong> is perhaps the most user-centric technical challenge. The reliance on users to manage private keys introduces risks of loss or theft.</p>
<p>Solutions like social recovery mechanisms and hardware wallets offer mitigation but add complexity.</p>
<h3 id="adoption-barriers-1">Adoption Barriers</h3>
<p>User experience is a decisive factor in the adoption of DID systems. The complexity of current solutions often requires a steep learning curve, which is a deterrent for non-technical users.</p>
<p>Simplifying interfaces and abstracting underlying blockchain complexities are essential steps toward broader adoption.</p>
<p><strong>Educational initiatives</strong> are crucial to bridge the knowledge gap. Users and organizations need to understand the benefits of DIDs over traditional systems.</p>
<p>Case studies demonstrating successful implementations can serve as persuasive tools.</p>
<p><strong>Integration costs</strong> and technical hurdles also pose significant barriers for organizations. Developing middleware solutions and APIs that facilitate seamless integration with existing systems can alleviate some of these challenges.</p>
<h3 id="regulatory-landscape-1">Regulatory Landscape</h3>
<p>Compliance with regulations like GDPR introduces complexities due to the immutable nature of blockchain. The &ldquo;right to be forgotten&rdquo; is challenging to implement when data cannot be altered or deleted.</p>
<p>Solutions involving off-chain storage and on-chain references are being explored.</p>
<p><strong>Legal recognition</strong> of DID-based credentials is another hurdle. Without official acknowledgment, these credentials may not be accepted by governmental and institutional entities.</p>
<p>Advocacy and collaboration with regulatory bodies are necessary to advance legal frameworks.</p>
<p><strong>Cross-border identity verification</strong> is complicated by differing regulations and standards. Establishing international standards and mutual recognition agreements can facilitate smoother cross-border interactions.</p>
<h2 id="innovation-opportunities">Innovation Opportunities</h2>
<h3 id="decentralized-ai-integration">Decentralized AI Integration</h3>
<p>The convergence of decentralized identity and AI presents novel opportunities:</p>
<ul>
<li>
<p><strong>Identity Verification for AI Systems</strong>: Ensuring that AI agents interacting in decentralized networks have verified identities to prevent malicious activities.</p>
</li>
<li>
<p><strong>Privacy-Preserving Data Sharing</strong>: Enabling users to share data with AI systems securely and privately, enhancing data quality while respecting user privacy.</p>
</li>
<li>
<p><strong>Reputation Systems</strong>: Developing decentralized reputation mechanisms for AI models to assess their reliability and performance transparently.</p>
</li>
<li>
<p><strong>Automated Compliance</strong>: Implementing smart contracts that automatically enforce compliance with regulatory requirements during data transactions.</p>
</li>
</ul>
<p><img loading="lazy" src="/images/content/research-decentralized-identity-1a14f4cf-d9e6-42e4-94f7-90d6d2213138.png" alt="Decentralized Identity and AI Integration Flow" />
</p>
<h3 id="market-applications">Market Applications</h3>
<p>Decentralized identity systems have the potential to revolutionize various industries:</p>
<ol>
<li>
<p><strong>Financial Services</strong>: Streamlining KYC/AML processes, reducing fraud, and enhancing customer onboarding experiences.</p>
</li>
<li>
<p><strong>Healthcare</strong>: Empowering patients with control over their medical records, facilitating secure sharing with providers.</p>
</li>
<li>
<p><strong>Supply Chain</strong>: Enhancing traceability and authenticity verification of products through immutable identity credentials.</p>
</li>
<li>
<p><strong>Education</strong>: Issuing tamper-proof academic credentials and certifications that are easily verifiable.</p>
</li>
<li>
<p><strong>Professional Licensing</strong>: Simplifying verification of professional qualifications and licenses across jurisdictions.</p>
</li>
</ol>
<h2 id="research-insights">Research Insights</h2>
<h3 id="profit-vs-decentralization-trade-offs">Profit vs. Decentralization Trade-offs</h3>
<p>Balancing commercial viability with decentralization principles involves navigating several tensions.</p>
<h4 id="revenue-models">Revenue Models</h4>
<ul>
<li>
<p><strong>Sustainable Business Models</strong>: Developing revenue streams without resorting to centralized control requires innovative approaches, such as service fees, token economies, or value-added services.</p>
</li>
<li>
<p><strong>User Incentives</strong>: Aligning incentives so that users benefit directly from the value they contribute to the network is essential for participation.</p>
</li>
</ul>
<h4 id="governance-structures">Governance Structures</h4>
<ul>
<li>
<p><strong>Decentralized Decision-Making</strong>: Implementing governance models that allow for community input while ensuring efficient decision-making processes.</p>
</li>
<li>
<p><strong>Stakeholder Alignment</strong>: Balancing the interests of developers, users, investors, and other stakeholders to foster a healthy ecosystem.</p>
</li>
<li>
<p><strong>Protocol Upgrades</strong>: Establishing mechanisms for protocol evolution that are transparent and minimize disruptions.</p>
</li>
</ul>
<h3 id="success-factors-for-did-systems">Success Factors for DID Systems</h3>
<p>Successful implementation of decentralized identity systems hinges on several key factors.</p>
<h4 id="technical-architecture">Technical Architecture</h4>
<ul>
<li>
<p><strong>Modularity</strong>: Designing systems that can adapt and scale by incorporating modular components.</p>
</li>
<li>
<p><strong>Privacy</strong>: Employing advanced cryptographic methods to protect user data.</p>
</li>
<li>
<p><strong>Key Management</strong>: Simplifying key management with user-friendly recovery options.</p>
</li>
<li>
<p><strong>Standards Compliance</strong>: Adhering to and contributing to interoperable standards.</p>
</li>
</ul>
<h4 id="user-experience">User Experience</h4>
<ul>
<li>
<p><strong>Simplicity</strong>: Creating intuitive interfaces that abstract technical complexities.</p>
</li>
<li>
<p><strong>Onboarding</strong>: Streamlining the process to reduce friction for new users.</p>
</li>
<li>
<p><strong>Value Proposition</strong>: Clearly communicating the benefits to encourage adoption.</p>
</li>
<li>
<p><strong>Support Systems</strong>: Providing robust customer support and educational resources.</p>
</li>
</ul>
<h4 id="ecosystem-development">Ecosystem Development</h4>
<ul>
<li>
<p><strong>Developer Tools</strong>: Offering comprehensive SDKs and APIs to encourage third-party development.</p>
</li>
<li>
<p><strong>Community Engagement</strong>: Fostering an active community through forums, events, and collaborative projects.</p>
</li>
<li>
<p><strong>Governance</strong>: Implementing transparent governance models that encourage participation.</p>
</li>
<li>
<p><strong>Incentives</strong>: Designing tokenomics or reward systems that motivate desired behaviors.</p>
</li>
</ul>
<h2 id="future-directions">Future Directions</h2>
<h3 id="emerging-trends">Emerging Trends</h3>
<h4 id="technical-innovation">Technical Innovation</h4>
<ul>
<li>
<p><strong>Advanced Cryptography</strong>: Exploring homomorphic encryption and secure multi-party computation to enhance privacy.</p>
</li>
<li>
<p><strong>Scalability Solutions</strong>: Implementing Layer 2 protocols and sharding to increase transaction throughput.</p>
</li>
<li>
<p><strong>Cross-Chain Identity</strong>: Developing solutions that allow identities to be recognized across different blockchain networks.</p>
</li>
<li>
<p><strong>Decentralized Identifiers (DIDs)</strong>: Promoting universal adoption of W3C-compliant DIDs for interoperability.</p>
</li>
</ul>
<h4 id="market-evolution">Market Evolution</h4>
<ul>
<li>
<p><strong>Integration with Legacy Systems</strong>: Bridging the gap between traditional identity systems and decentralized models.</p>
</li>
<li>
<p><strong>Emerging Markets</strong>: Leveraging DIDs to provide identities to the unbanked and underrepresented populations.</p>
</li>
<li>
<p><strong>Regulatory Developments</strong>: Monitoring and influencing policy changes that affect decentralized identity.</p>
</li>
<li>
<p><strong>Standardization Efforts</strong>: Contributing to international standards to ensure compatibility and recognition.</p>
</li>
</ul>
<h3 id="research-recommendations">Research Recommendations</h3>
<h4 id="technical-development">Technical Development</h4>
<ul>
<li>
<p><strong>Scalable Architectures</strong>: Prioritize research into scalable blockchain technologies and off-chain solutions.</p>
</li>
<li>
<p><strong>User-Centric Design</strong>: Invest in UX/UI research to create accessible applications.</p>
</li>
<li>
<p><strong>Privacy Enhancements</strong>: Develop robust privacy-preserving techniques to meet regulatory standards.</p>
</li>
<li>
<p><strong>Interoperability</strong>: Advocate for and adopt interoperable standards to prevent ecosystem fragmentation.</p>
</li>
</ul>
<h4 id="market-approach">Market Approach</h4>
<ul>
<li>
<p><strong>Strategic Partnerships</strong>: Collaborate with industry leaders, governments, and standard bodies.</p>
</li>
<li>
<p><strong>Regulatory Engagement</strong>: Proactively engage with regulators to shape favorable policies.</p>
</li>
<li>
<p><strong>Education Initiatives</strong>: Launch programs to educate users, developers, and enterprises about DIDs.</p>
</li>
<li>
<p><strong>Community Building</strong>: Support community-led projects and open-source contributions to foster innovation.</p>
</li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>Decentralized identity systems stand at the forefront of redefining how individuals and organizations manage digital identities. While challenges in technical implementation, user adoption, and regulatory compliance are significant, the potential benefits in security, privacy, and user empowerment are compelling.</p>
<p><strong>Success in this domain requires a holistic approach</strong> that combines technical innovation with user-centric design and proactive market engagement. Balancing the ideals of decentralization with practical business considerations will be crucial in developing sustainable and widely adopted DID systems.</p>
<p>As we advance, continued collaboration between academia, industry, and regulatory bodies will be essential. By addressing the identified challenges and seizing the outlined opportunities, decentralized identity can become a foundational element of the next-generation internet infrastructure.</p>
<h2 id="acknowledgments">Acknowledgments</h2>
<p>This research was conducted by the <a href="https://www.khoury.northeastern.edu/clubs_and_orgs/northeastern-blockchain-organization">NEU Blockchain Club</a> in collaboration with <a href="https://www.superscrypt.xyz">Superscrypt</a>, a crypto-native venture capital firm composed of founders with decades of experience in building and scaling technology businesses.</p>
<p>We extend our gratitude to all team members and collaborators who contributed to this project, exemplifying the potential of academic-industry partnerships in advancing Web3 infrastructure and emerging use cases.</p>
<hr>
<p><strong>For further inquiries or to participate in ongoing research initiatives, please contact the NEU Blockchain Club or Superscrypt.</strong></p>
]]></content>
      </entry>
      <entry>
        <title>Setting Up a Decentralized Web Presence: A Complete Guide</title>
        <link rel="alternate" href="https://profincognito.me/projects/web3/" />
        <id>https://profincognito.me/projects/web3/</id>
        <published>2026-03-04T00:00:00Z</published>
        <updated>2026-05-25T14:44:10-07:00</updated>
        <summary type="html">Learn how to create a fully decentralized website using Cloudflare Web3 Gateways and Unstoppable Domains, with step-by-step instructions for building a resilient and censorship-resistant web presence.</summary>
          <content type="html"><![CDATA[<p>Building a decentralized web presence is more than just following a trend—it&rsquo;s about reclaiming control over your digital identity, ensuring your content is always accessible, and embracing the future of the internet. In this comprehensive guide, we&rsquo;ll walk you through the process of creating a decentralized website using Cloudflare Web3 Gateways and Unstoppable Domains. Let&rsquo;s embark on this journey to a more open and resilient web.</p>
<h2 id="why-choose-decentralization">Why Choose Decentralization?</h2>
<p>Before we dive into the technical steps, it&rsquo;s essential to understand the benefits of a decentralized website:</p>
<ul>
<li><strong>Complete Ownership</strong>: You retain full control over your domain and content without relying on traditional hosting providers.</li>
<li><strong>Enhanced Resilience</strong>: Decentralized hosting eliminates single points of failure, ensuring your site remains accessible even if individual nodes go down.</li>
<li><strong>Censorship Resistance</strong>: Your content is free from central authority control, promoting freedom of expression.</li>
<li><strong>Privacy &amp; Security</strong>: Improved data protection and ownership reduce the risk of data breaches and unauthorized access.</li>
<li><strong>Web3 Ready</strong>: Native blockchain integration opens doors to advanced features like smart contracts and decentralized applications (dApps).</li>
</ul>
<h3 id="understanding-the-architecture">Understanding the Architecture</h3>
<p>Before we dive into the technical steps, let&rsquo;s understand how all the pieces fit together:</p>
<p><img loading="lazy" src="/images/content/projects-web3-89968305-c25c-4492-8a9f-efd036b4b10a.png" alt="Decentralized Web Architecture" />
</p>
<p><em>Architecture of a Decentralized Website using Unstoppable Domains, IPFS, and Cloudflare Web3 Gateways.</em></p>
<p>This architecture ensures your content remains accessible through multiple pathways, making your website resilient against failures and censorship.</p>
<h2 id="prerequisites">Prerequisites</h2>
<p>Before starting, make sure you have the following:</p>
<ul>
<li><strong>Brave Browser</strong>: <a href="https://brave.com">Download here</a>. Brave comes with a built-in wallet, ideal for Web3 interactions.</li>
<li><strong>Ethereum (ETH)</strong>: You&rsquo;ll need some ETH in your wallet to purchase a domain.</li>
<li><strong>Cloudflare Account</strong>: Sign up at <a href="https://dash.cloudflare.com/sign-up">Cloudflare</a>.</li>
<li><strong>Website Content</strong>: Have your site&rsquo;s content ready to deploy.</li>
<li><strong>IPFS Desktop or Command-Line Tool</strong>: <a href="https://ipfs.io/#install">Download IPFS</a> to upload your content to the network.</li>
</ul>
<blockquote>
<p><strong>Tip:</strong> Accessing <code>.crypto</code> domains directly requires a Web3-enabled browser like Brave or a browser extension that supports Unstoppable Domains.</p></blockquote>
<h2 id="domain-acquisition">Domain Acquisition</h2>
<h3 id="setting-up-your-unstoppable-domain">Setting Up Your Unstoppable Domain</h3>
<ol>
<li><strong>Visit Unstoppable Domains</strong>: Go to <a href="https://unstoppabledomains.com">unstoppabledomains.com</a>.</li>
<li><strong>Search for Your Domain</strong>: Use the search bar to find an available domain (e.g., <code>yourname.crypto</code>).</li>
<li><strong>Purchase the Domain</strong>: Add it to your cart and proceed to checkout.</li>
<li><strong>Connect Your Wallet</strong>: When prompted, connect your Brave Wallet to complete the transaction.</li>
</ol>
<blockquote>
<p><strong>Tip:</strong> Keep an eye out for promotions—Unstoppable Domains often offers discounts or free domains for new users.</p></blockquote>
<p>Once purchased, your domain can be resolved via:</p>
<ul>
<li><strong>Direct Access</strong> (with a compatible browser): <code>https://yourname.crypto</code></li>
<li><strong>Gateway Access</strong>: <code>https://ud.me/yourname.crypto</code></li>
</ul>
<p><strong>Example:</strong></p>
<p>For instance, if you registered the domain <code>profincognito.unstoppable</code>, you can access it via:</p>
<ul>
<li><code>https://ud.me/profincognito.unstoppable</code></li>
</ul>
<h2 id="cloudflare-web3-gateway-configuration">Cloudflare Web3 Gateway Configuration</h2>
<h3 id="ipfs-gateway-setup">IPFS Gateway Setup</h3>
<ol>
<li><strong>Access Cloudflare Dashboard</strong>: Log in to your <a href="https://dash.cloudflare.com/">Cloudflare account</a>.</li>
<li><strong>Navigate to Web3</strong>: In the dashboard, select the <strong>Web3</strong> tab.</li>
<li><strong>Create a New IPFS Gateway</strong>:
<ul>
<li><strong>Gateway Type</strong>: IPFS DNSLink</li>
<li><strong>Hostname</strong>: <code>ipfs.yourdomain.com</code> (e.g., <code>ipfs.profincognito.me</code>)</li>
</ul>
</li>
</ol>
<p>Your gateway URL will look like:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-plaintext" data-lang="plaintext"><span style="display:flex;"><span>https://ipfs.yourdomain.com/
</span></span></code></pre></div><p><strong>Example:</strong></p>
<ul>
<li><code>https://ipfs.profincognito.me/</code></li>
</ul>
<h3 id="dns-records-configuration">DNS Records Configuration</h3>
<p>Add the following records to your Cloudflare DNS settings:</p>
<ul>
<li><strong>CNAME Record</strong>:
<ul>
<li><strong>Type</strong>: CNAME</li>
<li><strong>Name</strong>: <code>ipfs.yourdomain.com</code></li>
<li><strong>Content</strong>: <code>cloudflare-ipfs.com</code></li>
</ul>
</li>
<li><strong>TXT Record</strong>:
<ul>
<li><strong>Type</strong>: TXT</li>
<li><strong>Name</strong>: <code>_dnslink.ipfs.yourdomain.com</code></li>
<li><strong>Content</strong>: <code>&quot;dnslink=/ipfs/YourContentHash&quot;</code></li>
</ul>
</li>
</ul>
<p>Replace <code>YourContentHash</code> with the actual IPFS hash (CID) of your website content.</p>
<p><strong>Example:</strong></p>
<p>If your content hash is <code>QmdzAcJAapp51CMSYPWepAdktxgWX9C1NTyCeLx2dAVw9i</code>, your TXT record would be:</p>
<ul>
<li><strong>Content</strong>: <code>&quot;dnslink=/ipfs/QmdzAcJAapp51CMSYPWepAdktxgWX9C1NTyCeLx2dAVw9i&quot;</code></li>
</ul>
<h2 id="content-publication">Content Publication</h2>
<h3 id="website-preparation-checklist">Website Preparation Checklist</h3>
<p>Before uploading, ensure:</p>
<ul>
<li><input checked="" disabled="" type="checkbox"> <strong>All Files Organized</strong>: Your website files are neatly organized in folders.</li>
<li><input checked="" disabled="" type="checkbox"> <strong>Local Testing Complete</strong>: Test your site locally to catch any issues.</li>
<li><input checked="" disabled="" type="checkbox"> <strong>Assets Optimized</strong>: Compress images and minify code for faster loading.</li>
<li><input checked="" disabled="" type="checkbox"> <strong>Ready for IPFS</strong>: Your content is packaged and ready for distribution.</li>
</ul>
<h3 id="uploading-to-ipfs">Uploading to IPFS</h3>
<p>You have several options to host your content on IPFS:</p>
<h4 id="1-using-ipfs-desktop-or-command-line-tool">1. <strong>Using IPFS Desktop or Command-Line Tool</strong></h4>
<ul>
<li>
<p><strong>Install IPFS</strong>: Download and install <a href="https://ipfs.io/#install">IPFS Desktop</a> or the <a href="https://docs.ipfs.tech/install/command-line/#official-distributions">command-line tool</a>.</p>
</li>
<li>
<p><strong>Add Your Files</strong>:</p>
<ul>
<li>
<p>For IPFS Desktop: Click on &ldquo;Add to IPFS&rdquo; and select your website folder.</p>
</li>
<li>
<p>For CLI:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>ipfs add -r /path/to/your/website
</span></span></code></pre></div></li>
</ul>
</li>
<li>
<p><strong>Note Your Content Hash</strong>: After uploading, you&rsquo;ll receive a CID (Content Identifier). This is your <code>YourContentHash</code>.</p>
</li>
</ul>
<h4 id="2-using-pinning-services">2. <strong>Using Pinning Services</strong></h4>
<ul>
<li><strong>Sign Up for a Service</strong>: Create an account with services like <a href="https://pinata.cloud/">Pinata</a> or <a href="https://infura.io/">Infura</a>.</li>
<li><strong>Upload Your Content</strong>: Follow the service&rsquo;s instructions to upload your website files.</li>
<li><strong>Retrieve Your Content Hash</strong>: After uploading, note the CID provided.</li>
</ul>
<blockquote>
<p><strong>Pros and Cons</strong></p></blockquote>
<ul>
<li><strong>Self-Hosted Node</strong>:
<ul>
<li><em>Pros</em>: Maximum control and true decentralization.</li>
<li><em>Cons</em>: Requires technical expertise and constant uptime.</li>
</ul>
</li>
<li><strong>Pinning Services</strong>:
<ul>
<li><em>Pros</em>: Easier to manage; services handle hosting.</li>
<li><em>Cons</em>: Introduces a level of trust in third-party services.</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>Tip:</strong> Always verify your uploads through multiple gateways before updating your DNS records to ensure proper distribution across the IPFS network.</p></blockquote>
<p><strong>Testing Your Upload Across Gateways:</strong></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#6272a4"># Replace $SITE_HASH with your actual content hash</span>
</span></span><span style="display:flex;"><span>curl -I https://ipfs.io/ipfs/<span style="color:#8be9fd;font-style:italic">$SITE_HASH</span>
</span></span><span style="display:flex;"><span>curl -I https://cloudflare-ipfs.com/ipfs/<span style="color:#8be9fd;font-style:italic">$SITE_HASH</span>
</span></span><span style="display:flex;"><span>curl -I https://gateway.pinata.cloud/ipfs/<span style="color:#8be9fd;font-style:italic">$SITE_HASH</span>
</span></span></code></pre></div><p><strong>Example:</strong></p>
<p>Using the content hash <code>QmdzAcJAapp51CMSYPWepAdktxgWX9C1NTyCeLx2dAVw9i</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -I https://ipfs.io/ipfs/QmdzAcJAapp51CMSYPWepAdktxgWX9C1NTyCeLx2dAVw9i/
</span></span></code></pre></div><h2 id="access-methods">Access Methods</h2>
<p>Your decentralized site will be accessible through multiple pathways:</p>
<ul>
<li><strong>Primary Domain</strong>:
<ul>
<li><code>https://yourname.crypto</code> (Requires a Web3-enabled browser like Brave or an extension)</li>
</ul>
</li>
<li><strong>Cloudflare Gateway</strong>:
<ul>
<li><code>https://ipfs.yourdomain.com</code></li>
</ul>
</li>
<li><strong>Unstoppable Domains Gateway</strong>:
<ul>
<li><code>https://ud.me/yourname.crypto</code></li>
</ul>
</li>
<li><strong>Direct IPFS Access</strong>:
<ul>
<li><code>https://ipfs.io/ipfs/YourContentHash</code></li>
</ul>
</li>
</ul>
<p><strong>Example:</strong></p>
<ul>
<li><strong>Primary Domain</strong>:
<ul>
<li><code>https://profincognito.unstoppable</code></li>
</ul>
</li>
<li><strong>Cloudflare Gateway</strong>:
<ul>
<li><code>https://ipfs.profincognito.me/</code></li>
</ul>
</li>
<li><strong>Direct IPFS Access</strong>:
<ul>
<li><code>https://ipfs.io/ipfs/QmdzAcJAapp51CMSYPWepAdktxgWX9C1NTyCeLx2dAVw9i/</code></li>
</ul>
</li>
</ul>
<h2 id="security-best-practices">Security Best Practices</h2>
<h3 id="protection-measures">Protection Measures</h3>
<ol>
<li>
<p><strong>Wallet Security</strong>:</p>
<ul>
<li>Enable all security features in Brave Wallet.</li>
<li>Securely store your recovery phrases offline.</li>
<li>Consider using a hardware wallet for significant assets.</li>
</ul>
</li>
<li>
<p><strong>Infrastructure Security</strong>:</p>
<ul>
<li>Activate Cloudflare&rsquo;s security features like SSL/TLS encryption and firewall rules.</li>
<li>Document all configurations for future reference.</li>
<li>Maintain regular backups of your site and configurations.</li>
</ul>
</li>
</ol>
<h3 id="content-resilience">Content Resilience</h3>
<ul>
<li><strong>Pin Content</strong>: Use multiple pinning services to ensure your content stays available.</li>
<li><strong>Local Backups</strong>: Always keep a local copy of your website files.</li>
<li><strong>Documentation</strong>: Keep detailed notes on your setup and configurations.</li>
<li><strong>Regular Testing</strong>: Periodically test your site&rsquo;s accessibility from different gateways.</li>
</ul>
<h2 id="troubleshooting-guide">Troubleshooting Guide</h2>
<h3 id="content-updates-not-appearing">Content Updates Not Appearing?</h3>
<ol>
<li><strong>Verify DNSLink Record</strong>: Ensure your TXT record points to the correct IPFS hash.</li>
<li><strong>Confirm IPFS Hash</strong>: Double-check that you&rsquo;re using the latest content hash.</li>
<li><strong>Propagation Time</strong>: Wait for DNS changes to propagate (can take up to 24 hours).</li>
<li><strong>Clear Caches</strong>: Clear your browser and DNS cache.</li>
</ol>
<h3 id="domain-resolution-issues">Domain Resolution Issues?</h3>
<ol>
<li><strong>Check Wallet Connection</strong>: Make sure your Brave Wallet is connected and functioning.</li>
<li><strong>Review DNS Configurations</strong>: Ensure all DNS records are correctly set up in Cloudflare.</li>
<li><strong>Wait for Updates</strong>: DNS changes may take time to propagate globally.</li>
<li><strong>Test Alternative Access</strong>: Try accessing via different gateways or devices.</li>
</ol>
<h2 id="future-enhancements">Future Enhancements</h2>
<p>Consider implementing advanced features to enhance your decentralized site:</p>
<ol>
<li><strong>Automated Deployment</strong>: Use CI/CD pipelines for seamless updates.</li>
<li><strong>Content Update Automation</strong>: Automate IPFS pinning and DNS updates.</li>
<li><strong>Web3 Integration</strong>: Incorporate smart contracts or dApps for interactive experiences.</li>
<li><strong>Additional Decentralized Services</strong>: Explore decentralized storage or compute services for a fully decentralized stack.</li>
</ol>
<h2 id="essential-resources">Essential Resources</h2>
<ul>
<li><strong>Unstoppable Domains Documentation</strong>: <a href="https://support.unstoppabledomains.com/">support.unstoppabledomains.com</a></li>
<li><strong>Cloudflare Web3 Documentation</strong>: <a href="https://developers.cloudflare.com/web3/">developers.cloudflare.com/web3/</a></li>
<li><strong>IPFS Documentation</strong>: <a href="https://docs.ipfs.tech/">docs.ipfs.tech</a></li>
<li><strong>Brave Wallet Guide</strong>: <a href="https://brave.com/wallet/">brave.com/wallet/</a></li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>You&rsquo;ve taken a significant step toward embracing the future of the internet by setting up a decentralized web presence. Remember:</p>
<ul>
<li><strong>Secure Integration</strong>: Brave Wallet ensures safe interactions with Web3 technologies.</li>
<li><strong>Multiple Access Paths</strong>: Diversify access methods for maximum resilience.</li>
<li><strong>Inherent Resilience</strong>: Decentralization offers robustness against failures and censorship.</li>
<li><strong>Complete Control</strong>: You own your domain and content outright.</li>
</ul>
<p>Welcome to the new era of the web!</p>
<blockquote>
<p><strong>Warning:</strong> The Web3 ecosystem evolves rapidly. Always refer to the latest documentation and best practices to stay updated and maintain security.</p></blockquote>
]]></content>
      </entry>
      <entry>
        <title>Zcash Protocol Deep Dive: The Cryptography Behind Financial Privacy</title>
        <link rel="alternate" href="https://profincognito.me/blog/privacy/zcash-protocol/" />
        <id>https://profincognito.me/blog/privacy/zcash-protocol/</id>
        <published>2025-11-25T00:00:00Z</published>
        <updated>2026-05-25T14:44:10-07:00</updated>
        <summary type="html">A comprehensive technical analysis of the Zcash protocol (v2025.6.3), covering zk-SNARKs, Halo 2, the Lockbox funding model, and the evolution of privacy from Sprout to Orchard.</summary>
          <content type="html"><![CDATA[<h2 id="abstract">Abstract</h2>
<p>Zcash represents one of the most sophisticated implementations of cryptographic privacy in production blockchain systems. Built on the theoretical foundations of the Zerocash protocol, Zcash employs zero-knowledge succinct non-interactive arguments of knowledge (zk-SNARKs) to enable fully private transactions while maintaining the integrity guarantees of a public ledger.</p>
<p>This technical deep dive examines the Zcash protocol specification (Version 2025.6.3), covering its cryptographic primitives, privacy architecture, zero-knowledge proof systems, and the evolution from Sprout through Sapling to Orchard. We analyze the mathematical foundations, security properties, and design decisions that make Zcash a reference implementation for blockchain privacy.</p>
<hr>
<h2 id="table-of-contents">Table of Contents</h2>
<ul>
<li><a href="#1-introduction-the-privacy-problem">1. Introduction: The Privacy Problem</a></li>
<li><a href="#2-zcash-architecture-overview">2. Zcash Architecture Overview</a></li>
<li><a href="#3-the-dual-payment-system">3. The Dual Payment System</a></li>
<li><a href="#4-core-privacy-primitives">4. Core Privacy Primitives</a></li>
<li><a href="#5-the-three-shielded-protocols">5. The Three Shielded Protocols</a></li>
<li><a href="#6-zero-knowledge-proof-systems">6. Zero-Knowledge Proof Systems</a></li>
<li><a href="#7-key-architecture-and-derivation">7. Key Architecture and Derivation</a></li>
<li><a href="#8-unified-addresses-and-memo-fields">8. Unified Addresses and Memo Fields</a></li>
<li><a href="#9-cryptographic-building-blocks">9. Cryptographic Building Blocks</a></li>
<li><a href="#10-transaction-structure-and-validation">10. Transaction Structure and Validation</a></li>
<li><a href="#11-security-analysis">11. Security Analysis</a></li>
<li><a href="#12-network-upgrades">12. Network Upgrades</a></li>
<li><a href="#13-conclusion">13. Conclusion</a></li>
</ul>
<hr>
<h2 id="1-introduction-the-privacy-problem">1. Introduction: The Privacy Problem</h2>
<h3 id="11-bitcoins-transparency-problem">1.1 Bitcoin&rsquo;s Transparency Problem</h3>
<p>Bitcoin, despite popular misconception, is not anonymous. It is pseudonymous. Every transaction is permanently recorded on a public ledger, creating a complete transaction graph that links addresses through their spending patterns. Research has repeatedly demonstrated that this transparency, combined with off-chain data sources, enables deanonymization of users through:</p>
<ul>
<li><strong>Transaction graph analysis</strong>: Clustering algorithms identify addresses controlled by the same entity</li>
<li><strong>Amount correlation</strong>: Matching input/output amounts across transactions</li>
<li><strong>Timing analysis</strong>: Transaction timing patterns reveal behavioral signatures</li>
<li><strong>Exchange KYC linkage</strong>: On-ramps and off-ramps connect pseudonyms to identities</li>
</ul>
<p>The implications extend beyond individual privacy. Financial surveillance at scale becomes trivial, and the fungibility of Bitcoin is compromised, since coins with &ldquo;tainted&rdquo; histories may be rejected or discounted.</p>
<h3 id="12-the-zerocash-solution">1.2 The Zerocash Solution</h3>
<p>In 2014, Eli Ben-Sasson, Alessandro Chiesa, Christina Garman, Matthew Green, Ian Miers, Eran Tromer, and Madars Virza published the Zerocash paper, proposing a cryptocurrency protocol that achieves:</p>
<ul>
<li><strong>Payment anonymity</strong>: Transactions reveal nothing about sender, recipient, or amount</li>
<li><strong>Full fungibility</strong>: All coins are cryptographically indistinguishable</li>
<li><strong>Decentralization</strong>: No trusted parties required for transaction validation</li>
<li><strong>Efficiency</strong>: Practical proof generation and verification times</li>
</ul>
<p>Zcash launched on October 28, 2016, as the first production implementation of these ideas, with significant security fixes and performance improvements over the original paper.</p>
<h3 id="13-the-zcash-ecosystem-2025">1.3 The Zcash Ecosystem (2025)</h3>
<p>The Zcash ecosystem has matured into a multi-organization structure:</p>
<table>
  <thead>
      <tr>
          <th>Organization</th>
          <th>Focus</th>
          <th>Key Projects</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Electric Coin Company (ECC)</strong></td>
          <td>Wallet UX, US regulatory engagement</td>
          <td>Zashi (reference wallet), protocol R&amp;D</td>
      </tr>
      <tr>
          <td><strong>Zcash Foundation</strong></td>
          <td>Node infrastructure, governance</td>
          <td>Zebra (Rust node), FROST threshold signatures</td>
      </tr>
      <tr>
          <td><strong>Shielded Labs</strong></td>
          <td>Protocol evolution, consensus R&amp;D</td>
          <td>Crosslink (hybrid PoS), network upgrades</td>
      </tr>
  </tbody>
</table>
<p><strong>Reference Implementations:</strong></p>
<ul>
<li><strong>Zashi</strong>: ECC&rsquo;s modern wallet emphasizing usability; the primary user-facing reference for shielded transactions</li>
<li><strong>Zebra</strong>: The Foundation&rsquo;s Rust implementation of a full node, now fully consensus-compatible and serving as the primary node software going forward</li>
<li><strong>Zallet</strong>: The successor wallet to zcashd&rsquo;s wallet functionality, designed to work with Zebra</li>
<li><strong>zcashd</strong>: The original C++ node (ECC), now being deprecated in favor of Zebra and Zallet</li>
</ul>
<h3 id="14-document-scope">1.4 Document Scope</h3>
<p>This analysis is based on the Zcash Protocol Specification Version 2025.6.3 [NU6.1], the authoritative technical document maintained collaboratively by Zcash ecosystem contributors. We examine the protocol as implemented through the NU6 network upgrade (activated November 2024) and NU6.1 (activated November 2025).</p>
<hr>
<h2 id="2-zcash-architecture-overview">2. Zcash Architecture Overview</h2>
<h3 id="21-high-level-design">2.1 High-Level Design</h3>
<p>Zcash extends Bitcoin&rsquo;s architecture with a parallel shielded payment system. The key insight is that while Bitcoin transactions explicitly encode value transfers (input addresses → output addresses with amounts), Zcash shielded transactions prove that a valid transfer occurred without revealing any details.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>┌─────────────────────────────────────────────────────────────────────────┐
</span></span><span style="display:flex;"><span>│                         ZCASH BLOCKCHAIN                                │
</span></span><span style="display:flex;"><span>├─────────────────────────────────────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│                                                                         │
</span></span><span style="display:flex;"><span>│   ┌─────────────────────┐         ┌─────────────────────────────────┐   │
</span></span><span style="display:flex;"><span>│   │  TRANSPARENT POOL   │         │        SHIELDED POOLS           │   │
</span></span><span style="display:flex;"><span>│   │                     │         │                                 │   │
</span></span><span style="display:flex;"><span>│   │  • Bitcoin-style    │◄───────►│  ┌─────────┐     ┌─────────┐    │   │
</span></span><span style="display:flex;"><span>│   │  • Public amounts   │ (amount │  │ Sprout  │     │ Sapling │    │   │
</span></span><span style="display:flex;"><span>│   │  • Visible addresses│ visible)│  │(legacy) │     │(active) │    │   │
</span></span><span style="display:flex;"><span>│   │  • Traceable        │         │  └────┬────┘     └────┬────┘    │   │
</span></span><span style="display:flex;"><span>│   │                     │         │       │               │         │   │
</span></span><span style="display:flex;"><span>│   └─────────────────────┘         │       │  ┌─────────┐  │         │   │
</span></span><span style="display:flex;"><span>│            ▲                      │       └──│ Orchard │──┘         │   │
</span></span><span style="display:flex;"><span>│            │                      │          │(current)│            │   │
</span></span><span style="display:flex;"><span>│            │                      │          └─────────┘            │   │
</span></span><span style="display:flex;"><span>│            │                      │     (inter-pool: amount visible)│   │
</span></span><span style="display:flex;"><span>│            │                      │                                 │   │
</span></span><span style="display:flex;"><span>│            │                      │  • Hidden amounts               │   │
</span></span><span style="display:flex;"><span>│            │                      │  • Hidden addresses             │   │
</span></span><span style="display:flex;"><span>│            │                      │  • Unlinkable transfers         │   │
</span></span><span style="display:flex;"><span>│            │                      └─────────────────────────────────┘   │
</span></span><span style="display:flex;"><span>│            │                                                            │
</span></span><span style="display:flex;"><span>│   ┌────────┴────────┐                                                   │
</span></span><span style="display:flex;"><span>│   │ LOCKBOX (ZIP2001)│  ◄── 20% of block rewards (NU6+)                 │
</span></span><span style="display:flex;"><span>│   │                 │                                                   │
</span></span><span style="display:flex;"><span>│   │ Protocol-controlled; awaits decentralized grant distribution        │
</span></span><span style="display:flex;"><span>│   └─────────────────┘                                                   │
</span></span><span style="display:flex;"><span>│                                                                         │
</span></span><span style="display:flex;"><span>└─────────────────────────────────────────────────────────────────────────┘
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>PRIVACY GUARANTEES BY TRANSACTION TYPE:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  Transparent → Transparent:  No privacy (fully public, like Bitcoin)
</span></span><span style="display:flex;"><span>  Transparent → Shielded:     Amount visible at entry point only
</span></span><span style="display:flex;"><span>  Shielded → Shielded:        Full privacy (same pool)
</span></span><span style="display:flex;"><span>  Shielded → Shielded:        Amount visible (cross-pool, e.g., Sapling→Orchard)
</span></span><span style="display:flex;"><span>  Shielded → Transparent:     Amount visible at exit point only
</span></span></code></pre></div><h3 id="22-chain-value-pools">2.2 Chain Value Pools</h3>
<p>Zcash maintains separate <strong>chain value pools</strong>:</p>
<table>
  <thead>
      <tr>
          <th>Pool</th>
          <th>Description</th>
          <th>Privacy Level</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Transparent</strong></td>
          <td>Bitcoin-compatible UTXOs</td>
          <td>None (fully public)</td>
      </tr>
      <tr>
          <td><strong>Sprout</strong></td>
          <td>Original shielded pool (deprecated; quarantined in modern wallets)</td>
          <td>Full</td>
      </tr>
      <tr>
          <td><strong>Sapling</strong></td>
          <td>Primary shielded pool for most users</td>
          <td>Full</td>
      </tr>
      <tr>
          <td><strong>Orchard</strong></td>
          <td>Latest shielded pool (NU5+), preferred for new transactions</td>
          <td>Full</td>
      </tr>
      <tr>
          <td><strong>Lockbox (ZIP 2001)</strong></td>
          <td>Protocol-controlled fund accumulating development funding</td>
          <td>N/A</td>
      </tr>
  </tbody>
</table>
<p>The <strong>Lockbox</strong> (introduced in NU6) is distinct from user-accessible pools. It accumulates a portion of block rewards for future development grants, effectively holding funds in a &ldquo;holding pattern&rdquo; until a decentralized grant mechanism (per ZIP 1016) distributes them. Unlike Sprout/Sapling/Orchard, users cannot directly transact with the Lockbox.</p>
<p>Value can move between user pools, but <strong>cross-pool transfers always reveal the amount transferred</strong>. This is a fundamental constraint because the system cannot hide what doesn&rsquo;t exist in the destination pool&rsquo;s commitment tree.</p>
<h3 id="23-consensus-model">2.3 Consensus Model</h3>
<p>Zcash inherits Bitcoin&rsquo;s Nakamoto consensus with modifications:</p>
<ul>
<li><strong>Proof of Work</strong>: Equihash (memory-hard; originally designed for ASIC resistance, though specialized ASICs have since been developed)</li>
<li><strong>Block Time</strong>: 75 seconds (post-Blossom)</li>
<li><strong>Difficulty Adjustment</strong>: Per-block adjustment with damping</li>
<li><strong>Supply</strong>: 21 million ZEC maximum, with halving schedule</li>
</ul>
<hr>
<h2 id="3-the-dual-payment-system">3. The Dual Payment System</h2>
<h3 id="31-transparent-transactions">3.1 Transparent Transactions</h3>
<p>Transparent transactions operate identically to Bitcoin:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Transparent Input(s)          Transparent Output(s)
</span></span><span style="display:flex;"><span>┌──────────────────┐          ┌──────────────────┐
</span></span><span style="display:flex;"><span>│ Previous TxID    │          │ Value (satoshis) │
</span></span><span style="display:flex;"><span>│ Output Index     │    ───►  │ scriptPubKey     │
</span></span><span style="display:flex;"><span>│ scriptSig        │          └──────────────────┘
</span></span><span style="display:flex;"><span>│ Sequence         │
</span></span><span style="display:flex;"><span>└──────────────────┘
</span></span></code></pre></div><p>These use standard Bitcoin script for authorization (P2PKH, P2SH, etc.) and provide no privacy beyond pseudonymity.</p>
<h3 id="32-shielded-transactions">3.2 Shielded Transactions</h3>
<p>Shielded transactions replace explicit value transfers with cryptographic proofs:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Shielded Input(s)             Shielded Output(s)
</span></span><span style="display:flex;"><span>┌──────────────────┐          ┌──────────────────┐
</span></span><span style="display:flex;"><span>│ Nullifier        │          │ Note Commitment  │
</span></span><span style="display:flex;"><span>│ Anchor           │    ───►  │ Encrypted Note   │
</span></span><span style="display:flex;"><span>│ zk-SNARK Proof   │          │ Ephemeral Key    │
</span></span><span style="display:flex;"><span>│ Signatures       │          └──────────────────┘
</span></span><span style="display:flex;"><span>└──────────────────┘
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>What&#39;s proven (not revealed):
</span></span><span style="display:flex;"><span>• Input notes exist in the commitment tree
</span></span><span style="display:flex;"><span>• Prover knows the spending keys
</span></span><span style="display:flex;"><span>• Input values = Output values + fees
</span></span><span style="display:flex;"><span>• Nullifiers computed correctly
</span></span></code></pre></div><h3 id="33-transaction-value-balance">3.3 Transaction Value Balance</h3>
<p>For any valid transaction, the following invariant holds:</p>
$$\sum_{i} v_{in,i}^{transparent} + \sum_{j} v_{in,j}^{shielded} = \sum_{k} v_{out,k}^{transparent} + \sum_{l} v_{out,l}^{shielded} + fee$$<p>In practice, v5 transactions handle this through the <code>valueBalance</code> fields in each shielded bundle. The <code>valueBalanceSapling</code> and <code>valueBalanceOrchard</code> fields represent the net value flowing <em>out of</em> each shielded pool into the transparent pool. A positive <code>valueBalance</code> means shielded value is being unshielded; a negative value means transparent value is being shielded. The transaction fee is implicitly the remaining transparent value not consumed by outputs:</p>
$$fee = \sum_{i} v_{in,i}^{transparent} - \sum_{k} v_{out,k}^{transparent} + valueBalance^{Sapling} + valueBalance^{Orchard}$$<p>The shielded components use <strong>homomorphic commitments</strong> (Sapling/Orchard) or <strong>explicit balance proofs</strong> (Sprout) to verify this equation without revealing individual values.</p>
<hr>
<h2 id="4-core-privacy-primitives">4. Core Privacy Primitives</h2>
<h3 id="41-notes">4.1 Notes</h3>
<p>In Zcash, value is carried by <strong>notes</strong>, the shielded equivalent of UTXOs. A note is not a &ldquo;coin&rdquo; in the physical sense but a tuple of cryptographic values that represent spendable funds.</p>
<h4 id="sprout-note-structure">Sprout Note Structure</h4>
$$n_{Sprout} = (a_{pk}, v, \rho, rcm)$$<p>Where:</p>
<ul>
<li>$a_{pk} \in \mathbb{B}^{256}$: paying key of recipient&rsquo;s address</li>
<li>$v \in \lbrace 0, \ldots, MAX\_MONEY \rbrace$: value in zatoshi (1 ZEC = $10^8$ zatoshi)</li>
<li>$\rho \in \mathbb{B}^{256}$: nullifier randomness</li>
<li>$rcm$: random commitment trapdoor</li>
</ul>
<h4 id="sapling-note-structure">Sapling Note Structure</h4>
$$n_{Sapling} = (d, pk_d, v, rcm)$$<p>Where:</p>
<ul>
<li>$d \in \mathbb{B}^{88}$: diversifier</li>
<li>$pk_d \in \mathbb{J}^{(r)*}$: diversified transmission key (Jubjub curve point)</li>
<li>$v \in \lbrace 0, \ldots, MAX\_MONEY \rbrace$: value in zatoshi</li>
<li>$rcm \in \mathbb{F}_{r_{\mathbb{J}}}$: commitment trapdoor</li>
</ul>
<h4 id="orchard-note-structure">Orchard Note Structure</h4>
$$n_{Orchard} = (d, pk_d, v, \rho, \psi, rcm)$$<p>Where:</p>
<ul>
<li>$d \in \mathbb{B}^{88}$: diversifier</li>
<li>$pk_d \in \mathbb{P}$: diversified transmission key (Pallas curve point)</li>
<li>$v \in \lbrace 0, \ldots, 2^{64}-1 \rbrace$: value in zatoshi (64-bit field; consensus rules further constrain to MAX_MONEY)</li>
<li>$\rho \in \mathbb{F}_{q_{\mathbb{P}}}$: nullifier randomness</li>
<li>$\psi \in \mathbb{F}_{q_{\mathbb{P}}}$: additional nullifier randomness</li>
<li>$rcm$: commitment trapdoor</li>
</ul>
<h3 id="42-note-commitments">4.2 Note Commitments</h3>
<p>When a note is created, only a <strong>commitment</strong> to its contents is published on-chain. This commitment is:</p>
<ol>
<li><strong>Binding</strong>: Cannot find two different notes with the same commitment</li>
<li><strong>Hiding</strong>: Commitment reveals nothing about the note contents</li>
</ol>
<h4 id="sprout-note-commitment">Sprout Note Commitment</h4>
$$cm = NoteCommit_{rcm}^{Sprout}(a_{pk}, v, \rho)$$<p>Using SHA-256 compression:</p>
$$cm = SHA256Compress(SHA256Compress([1]^{192} \| a_{pk}[0..63]) \| a_{pk}[64..255] \| v \| \rho)[0..255]$$<p>Then:</p>
$$cm = SHA256Compress(cm \| rcm)$$<h4 id="sapling-note-commitment">Sapling Note Commitment</h4>
$$cm = NoteCommit_{rcm}^{Sapling}(repr_{\mathbb{J}}(g_d), repr_{\mathbb{J}}(pk_d), v)$$<p>Where:</p>
<ul>
<li>$g_d = DiversifyHash^{Sapling}(d)$: the diversified base point</li>
<li>The commitment uses <strong>Windowed Pedersen Commitments</strong> for efficiency</li>
</ul>
<p>The Pedersen commitment has the form:</p>
$$cm = [rcm] \cdot \mathcal{H} + Pedersen(repr_{\mathbb{J}}(g_d) \| repr_{\mathbb{J}}(pk_d) \| v)$$<p>Where $\mathcal{H}$ is a nothing-up-my-sleeve generator point.</p>
<h4 id="orchard-note-commitment">Orchard Note Commitment</h4>
$$cm = NoteCommit_{rcm}^{Orchard}(repr_{\mathbb{P}}(g_d), repr_{\mathbb{P}}(pk_d), v, \rho, \psi)$$<p>Using <strong>Sinsemilla</strong> hash function for improved circuit efficiency:</p>
$$cm = SinsemillaCommit_{rcm}(repr_{\mathbb{P}}(g_d) \| repr_{\mathbb{P}}(pk_d) \| I2LEBSP_{64}(v) \| \rho \| \psi)$$<h3 id="43-note-commitment-trees">4.3 Note Commitment Trees</h3>
<p>All note commitments are inserted into an <strong>incremental Merkle tree</strong>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>                    Root (Anchor)
</span></span><span style="display:flex;"><span>                    /            \
</span></span><span style="display:flex;"><span>                   /              \
</span></span><span style="display:flex;"><span>               H(0,1)            H(2,3)
</span></span><span style="display:flex;"><span>               /    \            /    \
</span></span><span style="display:flex;"><span>            H(0)   H(1)       H(2)   H(3)
</span></span><span style="display:flex;"><span>             |      |          |      |
</span></span><span style="display:flex;"><span>           cm_0   cm_1       cm_2   cm_3
</span></span></code></pre></div><p>Each protocol maintains its own tree:</p>
<table>
  <thead>
      <tr>
          <th>Protocol</th>
          <th>Tree Depth</th>
          <th>Max Notes</th>
          <th>Hash Function</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Sprout</td>
          <td>29</td>
          <td>~537 million</td>
          <td>SHA-256</td>
      </tr>
      <tr>
          <td>Sapling</td>
          <td>32</td>
          <td>~4.3 billion</td>
          <td>Pedersen Hash</td>
      </tr>
      <tr>
          <td>Orchard</td>
          <td>32</td>
          <td>~4.3 billion</td>
          <td>Sinsemilla</td>
      </tr>
  </tbody>
</table>
<p>The <strong>Merkle root</strong> (called an <strong>anchor</strong>) uniquely identifies the state of the commitment tree at a point in time.</p>
<h4 id="merkle-path-verification">Merkle Path Verification</h4>
<p>To prove a commitment exists in the tree, the spender provides a <strong>Merkle path</strong>, the sequence of sibling hashes from leaf to root:</p>
$$path = \left[ M_{sibling(h,i)}^h \text{ for } h \text{ from } MerkleDepth \text{ down to } 1 \right]$$<p>Where:</p>
$$sibling(h, i) = \left\lfloor \frac{i}{2^{MerkleDepth-h}} \right\rfloor \oplus 1$$<p>Verification recomputes the root from the leaf:</p>
$$M_i^h = MerkleCRH(h, M_{2i}^{h+1}, M_{2i+1}^{h+1})$$<h3 id="44-nullifiers">4.4 Nullifiers</h3>
<p>The <strong>nullifier</strong> is the key innovation enabling double-spend prevention without linkability. Each note has exactly one valid nullifier, computed from secret values known only to the note&rsquo;s owner.</p>
<h4 id="the-double-spend-problem">The Double-Spend Problem</h4>
<p>Without nullifiers, preventing double-spends would require either:</p>
<ol>
<li>Revealing which commitment is being spent (breaks privacy)</li>
<li>Trusting a central party to track spent notes (breaks decentralization)</li>
</ol>
<h4 id="nullifier-construction">Nullifier Construction</h4>
<p><strong>Sprout:</strong></p>
$$nf = PRF_{a_{sk}}^{nf}(\rho)$$<p><strong>Sapling:</strong></p>
$$nf = PRF_{nk^{\ast}}^{nfSapling}(\rho^{\ast})$$<p>Where:</p>
<ul>
<li>$nk^{\ast} = repr_{\mathbb{J}}(nk)$: serialized nullifier deriving key</li>
<li>$\rho^{\ast} = repr_{\mathbb{J}}(MixingPedersenHash(cm, pos))$</li>
<li>$pos$: the note&rsquo;s position in the commitment tree</li>
</ul>
<p><strong>Orchard:</strong></p>
$$nf = DeriveNullifier_{nk}(\rho, \psi, cm)$$<p>Using Poseidon hash:</p>
$$nf = Extract_{\mathbb{P}}([PRF_{nk}^{nfOrchard}(\rho) + \psi] \cdot \mathcal{K} + cm)$$<p>Where $\mathcal{K}$ is a generator point for the nullifier base.</p>
<h4 id="nullifier-set">Nullifier Set</h4>
<p>The blockchain maintains a <strong>nullifier set</strong> for each shielded protocol. When a transaction is mined:</p>
<ol>
<li>All nullifiers in the transaction are checked against the set</li>
<li>If any nullifier already exists → <strong>reject</strong> (double-spend attempt)</li>
<li>Otherwise, add all nullifiers to the set</li>
</ol>
<p>This ensures each note can only be spent once, without revealing which commitment corresponds to which nullifier.</p>
<h3 id="45-note-traceability-sets">4.5 Note Traceability Sets</h3>
<p>A critical privacy property is the <strong>note traceability set</strong>, the set of possible source notes for any given spend.</p>
<p>In Zcash, when spending a note, the spender proves knowledge of:</p>
<ul>
<li>A valid note commitment somewhere in the tree</li>
<li>The spending authority for that note</li>
<li>Correct nullifier computation</li>
</ul>
<p>But the proof does <strong>not</strong> reveal which commitment. From an observer&rsquo;s perspective, the spent note could be <strong>any</strong> note in the commitment tree that the observer doesn&rsquo;t know to be spent.</p>
<p><strong>Comparison with other privacy schemes:</strong></p>
<table>
  <thead>
      <tr>
          <th>System</th>
          <th>Anonymity Set Size</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Bitcoin (no mixing)</td>
          <td>1</td>
      </tr>
      <tr>
          <td>CoinJoin</td>
          <td>Participants in mix (~3-100)</td>
      </tr>
      <tr>
          <td>CryptoNote/Monero</td>
          <td>Ring size (fixed at 16)</td>
      </tr>
      <tr>
          <td><strong>Zcash</strong></td>
          <td><strong>All unspent shielded notes</strong> (~millions)</td>
      </tr>
  </tbody>
</table>
<p>This is a fundamental architectural advantage: Zcash&rsquo;s anonymity set grows with every shielded transaction ever made.</p>
<hr>
<h2 id="5-the-three-shielded-protocols">5. The Three Shielded Protocols</h2>
<h3 id="51-sprout-2016-2018">5.1 Sprout (2016-2018)</h3>
<p>Sprout was Zcash&rsquo;s original shielded protocol, designed for correctness over efficiency.</p>
<h4 id="joinsplit-transfers">JoinSplit Transfers</h4>
<p>Sprout uses <strong>JoinSplit</strong> operations that consume up to 2 input notes and produce up to 2 output notes:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>            JoinSplit Transfer
</span></span><span style="display:flex;"><span>     ┌─────────────────────────────┐
</span></span><span style="display:flex;"><span>     │                             │
</span></span><span style="display:flex;"><span> n_1 ──►┌─────────────────────┐    │
</span></span><span style="display:flex;"><span>     │  │                     │────►── n&#39;_1
</span></span><span style="display:flex;"><span> n_2 ──►│   zk-SNARK Proof    │    │
</span></span><span style="display:flex;"><span>     │  │                     │────►── n&#39;_2
</span></span><span style="display:flex;"><span>v_pub^old──►│                     │    │
</span></span><span style="display:flex;"><span>     │  │   Proves:           │────►── v_pub^new
</span></span><span style="display:flex;"><span>     │  │   • Notes exist     │    │
</span></span><span style="display:flex;"><span>     │  │   • Know spend key  │    │
</span></span><span style="display:flex;"><span>     │  │   • Values balance  │    │
</span></span><span style="display:flex;"><span>     │  └─────────────────────┘    │
</span></span><span style="display:flex;"><span>     │                             │
</span></span><span style="display:flex;"><span>     └─────────────────────────────┘
</span></span></code></pre></div><h4 id="balance-equation-inside-proof">Balance Equation (Inside Proof)</h4>
$$v_1^{old} + v_2^{old} + v_{pub}^{old} = v_1^{new} + v_2^{new} + v_{pub}^{new}$$<p>The transparent values $v_{pub}^{old}$ and $v_{pub}^{new}$ allow value to enter/exit the shielded pool.</p>
<h4 id="sprout-limitations">Sprout Limitations</h4>
<ol>
<li><strong>Performance</strong>: Proof generation took ~40 seconds</li>
<li><strong>Circuit size</strong>: ~2 million constraints</li>
<li><strong>No viewing keys</strong>: Cannot delegate read access without spending authority</li>
<li><strong>Fixed structure</strong>: Always 2 inputs, 2 outputs (dummy notes required for padding)</li>
</ol>
<h3 id="52-sapling-2018-2020">5.2 Sapling (2018-2020)</h3>
<p>The Sapling upgrade (activated October 2018) was a complete redesign optimizing for performance and functionality.</p>
<h4 id="key-improvements">Key Improvements</h4>
<table>
  <thead>
      <tr>
          <th>Aspect</th>
          <th>Sprout</th>
          <th>Sapling</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Proof time</td>
          <td>~40 seconds</td>
          <td>~7 seconds</td>
      </tr>
      <tr>
          <td>Proof size</td>
          <td>296 bytes</td>
          <td>192 bytes</td>
      </tr>
      <tr>
          <td>Memory (proving)</td>
          <td>~3 GB</td>
          <td>~40 MB</td>
      </tr>
      <tr>
          <td>Viewing keys</td>
          <td>No</td>
          <td>Yes</td>
      </tr>
      <tr>
          <td>Diversified addresses</td>
          <td>No</td>
          <td>Yes</td>
      </tr>
  </tbody>
</table>
<h4 id="separated-spend-and-output-proofs">Separated Spend and Output Proofs</h4>
<p>Instead of JoinSplit&rsquo;s monolithic proof, Sapling uses separate circuits:</p>
<p><strong>Spend Description</strong> (one per input):</p>
<ul>
<li>Proves knowledge of a spendable note</li>
<li>Reveals: nullifier, value commitment, anchor</li>
</ul>
<p><strong>Output Description</strong> (one per output):</p>
<ul>
<li>Proves correct note construction</li>
<li>Reveals: note commitment, value commitment, encrypted note</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Transaction with 3 inputs, 2 outputs:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>┌─────────────────────────────────────────────────────────┐
</span></span><span style="display:flex;"><span>│                    Sapling Bundle                        │
</span></span><span style="display:flex;"><span>├─────────────────────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Spend Description 1    │  Output Description 1         │
</span></span><span style="display:flex;"><span>│  ├─ nullifier          │  ├─ note commitment (cm_u)    │
</span></span><span style="display:flex;"><span>│  ├─ value commitment   │  ├─ value commitment          │
</span></span><span style="display:flex;"><span>│  ├─ anchor             │  ├─ ephemeral key             │
</span></span><span style="display:flex;"><span>│  ├─ zk-SNARK proof     │  ├─ encrypted note            │
</span></span><span style="display:flex;"><span>│  └─ spend auth sig     │  └─ zk-SNARK proof            │
</span></span><span style="display:flex;"><span>├─────────────────────────┼───────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Spend Description 2    │  Output Description 2         │
</span></span><span style="display:flex;"><span>│  └─ ...                │  └─ ...                       │
</span></span><span style="display:flex;"><span>├─────────────────────────┼───────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Spend Description 3    │                               │
</span></span><span style="display:flex;"><span>│  └─ ...                │                               │
</span></span><span style="display:flex;"><span>├─────────────────────────┴───────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Binding Signature (proves balance)                     │
</span></span><span style="display:flex;"><span>│  valueBalance (transparent value change)                │
</span></span><span style="display:flex;"><span>└─────────────────────────────────────────────────────────┘
</span></span></code></pre></div><h4 id="homomorphic-value-commitments">Homomorphic Value Commitments</h4>
<p>Sapling&rsquo;s balance is verified using Pedersen commitments&rsquo; homomorphic property:</p>
$$ValueCommit_{rcv}^{Sapling}(v) = [rcv] \cdot \mathcal{R} + [v] \cdot \mathcal{V}$$<p>Where:</p>
<ul>
<li>$\mathcal{R}, \mathcal{V}$ are generator points on Jubjub</li>
<li>$rcv$ is a random commitment trapdoor</li>
</ul>
<p><strong>Homomorphic property:</strong></p>
$$Commit(v_1) + Commit(v_2) = Commit(v_1 + v_2)$$<p>This allows balance verification without individual value revelation:</p>
$$\sum_i cv_i^{spend} - \sum_j cv_j^{output} = [bsk] \cdot \mathcal{R} + [v_{balance}] \cdot \mathcal{V}$$<p>The <strong>binding signature</strong> proves knowledge of $bsk = \sum rcv^{spend} - \sum rcv^{output}$, confirming balance.</p>
<h3 id="53-orchard-2021-present">5.3 Orchard (2021-Present)</h3>
<p>Orchard, activated with NU5 (May 2022), introduces Halo 2 and eliminates trusted setup requirements.</p>
<h4 id="action-based-design">Action-Based Design</h4>
<p>Orchard merges spends and outputs into <strong>Actions</strong>, each potentially containing one spend and one output:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>┌────────────────────────────────────────┐
</span></span><span style="display:flex;"><span>│            Action Description           │
</span></span><span style="display:flex;"><span>├────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Spend-side:          Output-side:     │
</span></span><span style="display:flex;"><span>│  ├─ nullifier         ├─ cm_x          │
</span></span><span style="display:flex;"><span>│  ├─ rk (randomized    ├─ ephemeral key │
</span></span><span style="display:flex;"><span>│  │   validating key)  ├─ encrypted note│
</span></span><span style="display:flex;"><span>│  └─ spend auth sig    └─ encrypted out │
</span></span><span style="display:flex;"><span>├────────────────────────────────────────┤
</span></span><span style="display:flex;"><span>│  Shared:                               │
</span></span><span style="display:flex;"><span>│  ├─ cv_net (net value commitment)      │
</span></span><span style="display:flex;"><span>│  └─ (proof aggregated separately)      │
</span></span><span style="display:flex;"><span>└────────────────────────────────────────┘
</span></span></code></pre></div><p><strong>Key difference</strong>: Each Action has a <strong>net value commitment</strong> (input value minus output value), rather than separate commitments. This provides additional privacy by hiding which Actions are &ldquo;mostly spends&rdquo; vs &ldquo;mostly outputs.&rdquo;</p>
<h4 id="halo-2-no-trusted-setup">Halo 2: No Trusted Setup</h4>
<p>The most significant change is the proving system. While BCTV14 and Groth16 require a <strong>trusted setup ceremony</strong> (where toxic waste must be destroyed), Halo 2 uses a <strong>transparent setup</strong>:</p>
<table>
  <thead>
      <tr>
          <th>Property</th>
          <th>Groth16</th>
          <th>Halo 2</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Trusted setup</td>
          <td>Required</td>
          <td><strong>Not required</strong></td>
      </tr>
      <tr>
          <td>Proof size</td>
          <td>192 bytes</td>
          <td>~5 KB base + ~2.3 KB per action</td>
      </tr>
      <tr>
          <td>Verification</td>
          <td>~6 ms</td>
          <td>~variable</td>
      </tr>
      <tr>
          <td>Quantum resistance</td>
          <td>None</td>
          <td>None</td>
      </tr>
      <tr>
          <td>Curve</td>
          <td>BLS12-381</td>
          <td>Pallas/Vesta</td>
      </tr>
  </tbody>
</table>
<h4 id="circuit-changes">Circuit Changes</h4>
<p>Orchard&rsquo;s Action circuit proves (for each Action):</p>
<ol>
<li>
<p><strong>Spend side</strong> (if enabled):</p>
<ul>
<li>Note exists in commitment tree with anchor $rt^{Orchard}$</li>
<li>Prover knows the spending key for the note</li>
<li>Nullifier computed correctly</li>
</ul>
</li>
<li>
<p><strong>Output side</strong> (if enabled):</p>
<ul>
<li>Note commitment computed correctly</li>
<li>Encrypted note matches commitment</li>
</ul>
</li>
<li>
<p><strong>Both</strong>:</p>
<ul>
<li>Net value commitment is correct: $cv_{net} = Commit(v_{spend} - v_{output})$</li>
</ul>
</li>
</ol>
<hr>
<h2 id="6-zero-knowledge-proof-systems">6. Zero-Knowledge Proof Systems</h2>
<h3 id="61-what-zk-snarks-prove">6.1 What zk-SNARKs Prove</h3>
<p>A zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) allows a prover to convince a verifier that:</p>
<ol>
<li>The prover knows a secret <strong>witness</strong> $w$</li>
<li>A public <strong>statement</strong> $x$ is true with respect to $w$</li>
<li><strong>Without revealing</strong> $w$</li>
</ol>
<p>Formally, for a relation $\mathcal{R}$:</p>
<ul>
<li>Prover has $(x, w)$ such that $(x, w) \in \mathcal{R}$</li>
<li>Verifier learns only that $\exists w: (x, w) \in \mathcal{R}$</li>
</ul>
<h3 id="62-security-properties">6.2 Security Properties</h3>
<p>Zcash&rsquo;s proving systems satisfy:</p>
<h4 id="completeness">Completeness</h4>
<p>An honest prover always convinces an honest verifier:</p>
$$\forall (x, w) \in \mathcal{R}: \Pr[Verify(vk, x, Prove(pk, x, w)) = 1] = 1$$<h4 id="knowledge-soundness">Knowledge Soundness</h4>
<p>A cheating prover cannot convince without knowing a valid witness:</p>
$$\forall \mathcal{A}: \Pr[Verify(vk, x, \pi) = 1 \land \nexists w: (x, w) \in \mathcal{R}] \approx 0$$<p>More precisely, there exists an <strong>extractor</strong> that can recover $w$ from any successful prover.</p>
<h4 id="statistical-zero-knowledge">Statistical Zero Knowledge</h4>
<p>Proofs reveal nothing beyond statement truth. There exists a simulator $\mathcal{S}$ producing indistinguishable &ldquo;fake&rdquo; proofs:</p>
$$\lbrace Prove(pk, x, w) \rbrace_{(x,w) \in \mathcal{R}} \approx \lbrace Simulate(x) \rbrace_{x}$$<h3 id="63-bctv14-sprout-pre-sapling">6.3 BCTV14 (Sprout, pre-Sapling)</h3>
<p>The original Zcash used BCTV14 [Ben-Sasson et al., 2014] with the BN-254 pairing curve.</p>
<p><strong>Characteristics:</strong></p>
<ul>
<li>Proof size: 296 bytes (8 group elements)</li>
<li>Verification: 3 pairings + multi-exponentiation</li>
<li>Trusted setup: Required (Powers of Tau + circuit-specific)</li>
</ul>
<p><strong>Security assumption</strong>: Hardness of the q-Power Knowledge of Exponent (q-PKE) assumption.</p>
<h3 id="64-groth16-sprout-post-sapling-sapling">6.4 Groth16 (Sprout post-Sapling, Sapling)</h3>
<p>Groth16 [Groth, 2016] replaced BCTV14 for improved efficiency:</p>
<p><strong>Proof structure:</strong></p>
$$\pi = (A, B, C) \in \mathbb{G}_1 \times \mathbb{G}_2 \times \mathbb{G}_1$$<p><strong>Verification equation:</strong></p>
$$e(A, B) = e(\alpha, \beta) \cdot e(L, \gamma) \cdot e(C, \delta)$$<p>Where:</p>
<ul>
<li>$e: \mathbb{G}_1 \times \mathbb{G}_2 \rightarrow \mathbb{G}_T$ is the pairing</li>
<li>$L$ encodes the public inputs</li>
<li>$\alpha, \beta, \gamma, \delta$ are from the trusted setup</li>
</ul>
<p><strong>Improvements over BCTV14:</strong></p>
<ul>
<li>Proof size: 192 bytes (3 group elements)</li>
<li>Verification: 3 pairings (more efficient)</li>
<li>Proving: ~3x faster</li>
</ul>
<p>Zcash uses Groth16 with <strong>BLS12-381</strong>, a pairing-friendly curve with 128-bit security.</p>
<h3 id="65-halo-2-orchard">6.5 Halo 2 (Orchard)</h3>
<p>Halo 2 [Bowe et al., 2019] is a recursive proof composition scheme using:</p>
<ol>
<li><strong>PLONKish arithmetization</strong>: More flexible than R1CS</li>
<li><strong>Polynomial commitment</strong>: Based on Inner Product Argument (IPA)</li>
<li><strong>Pasta curves</strong>: Pallas and Vesta (a 2-cycle for efficient recursion)</li>
</ol>
<h4 id="no-trusted-setup">No Trusted Setup</h4>
<p>The key breakthrough is replacing pairings with IPA:</p>
<ul>
<li>Pairings require structured reference strings (toxic waste)</li>
<li>IPA requires only a random group element (can be derived from hash)</li>
</ul>
<p><strong>Trade-off</strong>: Larger proofs (~5 KB base + ~2.3 KB per action, vs 192 bytes for Groth16), but:</p>
<ul>
<li>A single proof covers an entire bundle of actions (amortizing the base cost)</li>
<li>No trusted setup ceremony required</li>
<li>Enables future <strong>recursive proofs</strong> (proofs that verify other proofs)</li>
</ul>
<h3 id="66-circuit-sizes">6.6 Circuit Sizes</h3>
<table>
  <thead>
      <tr>
          <th>Circuit</th>
          <th>Constraints</th>
          <th>Purpose</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>JoinSplit (Sprout)</td>
          <td>~2,000,000</td>
          <td>2-in, 2-out transfer</td>
      </tr>
      <tr>
          <td>Spend (Sapling)</td>
          <td>~98,000</td>
          <td>Single spend</td>
      </tr>
      <tr>
          <td>Output (Sapling)</td>
          <td>~26,000</td>
          <td>Single output</td>
      </tr>
      <tr>
          <td>Action (Orchard)</td>
          <td>~variable</td>
          <td>Single action</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="7-key-architecture-and-derivation">7. Key Architecture and Derivation</h2>
<h3 id="71-overview">7.1 Overview</h3>
<p>Zcash&rsquo;s key hierarchy enables flexible access control:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>                    ┌──────────────────┐
</span></span><span style="display:flex;"><span>                    │   Spending Key   │
</span></span><span style="display:flex;"><span>                    │       (sk)       │
</span></span><span style="display:flex;"><span>                    └────────┬─────────┘
</span></span><span style="display:flex;"><span>                             │
</span></span><span style="display:flex;"><span>            ┌────────────────┼────────────────┐
</span></span><span style="display:flex;"><span>            ▼                ▼                ▼
</span></span><span style="display:flex;"><span>    ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
</span></span><span style="display:flex;"><span>    │ Spend Auth Key│ │ Nullifier Key │ │  Outgoing VK  │
</span></span><span style="display:flex;"><span>    │    (ask)      │ │    (nsk/nk)   │ │    (ovk)      │
</span></span><span style="display:flex;"><span>    └───────┬───────┘ └───────┬───────┘ └───────────────┘
</span></span><span style="display:flex;"><span>            │                 │
</span></span><span style="display:flex;"><span>            ▼                 ▼
</span></span><span style="display:flex;"><span>    ┌───────────────┐ ┌───────────────┐
</span></span><span style="display:flex;"><span>    │ Spend Valid.  │ │  Nullifier    │
</span></span><span style="display:flex;"><span>    │  Key (ak)     │ │ Deriving Key  │
</span></span><span style="display:flex;"><span>    └───────┬───────┘ └───────┬───────┘
</span></span><span style="display:flex;"><span>            │                 │
</span></span><span style="display:flex;"><span>            └────────┬────────┘
</span></span><span style="display:flex;"><span>                     ▼
</span></span><span style="display:flex;"><span>            ┌───────────────────┐
</span></span><span style="display:flex;"><span>            │ Full Viewing Key  │
</span></span><span style="display:flex;"><span>            │   (ak, nk, ovk)   │
</span></span><span style="display:flex;"><span>            └────────┬──────────┘
</span></span><span style="display:flex;"><span>                     │
</span></span><span style="display:flex;"><span>                     ▼
</span></span><span style="display:flex;"><span>            ┌───────────────────┐
</span></span><span style="display:flex;"><span>            │ Incoming Viewing  │
</span></span><span style="display:flex;"><span>            │    Key (ivk)      │
</span></span><span style="display:flex;"><span>            └────────┬──────────┘
</span></span><span style="display:flex;"><span>                     │
</span></span><span style="display:flex;"><span>           ┌─────────┴──────────┐
</span></span><span style="display:flex;"><span>           │   + diversifier d  │
</span></span><span style="display:flex;"><span>           ▼                    ▼
</span></span><span style="display:flex;"><span>    ┌──────────────┐    ┌──────────────┐
</span></span><span style="display:flex;"><span>    │  Payment     │    │  Payment     │
</span></span><span style="display:flex;"><span>    │ Address (d₁) │    │ Address (d₂) │  ... (unlimited)
</span></span><span style="display:flex;"><span>    └──────────────┘    └──────────────┘
</span></span></code></pre></div><h3 id="72-sapling-key-derivation">7.2 Sapling Key Derivation</h3>
<p>Starting from a random spending key $sk \in \mathbb{B}^{256}$:</p>
<h4 id="expanded-spending-key">Expanded Spending Key</h4>
$$ask = ToScalar^{Sapling}(PRF^{expand}_{sk}([0x00]))$$$$nsk = ToScalar^{Sapling}(PRF^{expand}_{sk}([0x01]))$$$$ovk = truncate_{32}(PRF^{expand}_{sk}([0x02]))$$<p>Where $ToScalar^{Sapling}(x) = LEOS2IP_{512}(x) \mod r_{\mathbb{J}}$</p>
<h4 id="proof-authorizing-key">Proof Authorizing Key</h4>
$$ak = SpendAuthSig^{Sapling}.DerivePublic(ask) = [ask] \cdot \mathcal{P}^{Sapling}_{G}$$$$nk = [nsk] \cdot \mathcal{H}^{Sapling}$$<h4 id="incoming-viewing-key">Incoming Viewing Key</h4>
$$ivk = CRH^{ivk}(repr_{\mathbb{J}}(ak), repr_{\mathbb{J}}(nk))$$<p>Using BLAKE2s with parameter block modifications:</p>
$$ivk = BLAKE2s_{256}(\text{"Zcash\_ivk"}, ak \| nk) \mod 2^{251}$$<h4 id="diversified-payment-address">Diversified Payment Address</h4>
<p>For diversifier $d \in \mathbb{B}^{88}$:</p>
$$g_d = DiversifyHash^{Sapling}(d)$$$$pk_d = [ivk] \cdot g_d$$$$addr = (d, pk_d)$$<p>The diversifier is hashed to a curve point using:</p>
$$g_d = GroupHash^{\mathbb{J}}(\text{"Zcash\_gd"}, \text{"Zcash\_G\_"}, d)$$<p>If $g_d = \bot$ (not on curve), choose a different $d$.</p>
<h3 id="73-orchard-key-derivation">7.3 Orchard Key Derivation</h3>
<p>Orchard modifies the structure for Halo 2 compatibility:</p>
$$ask = ToScalar^{Orchard}(PRF^{expand}_{sk}([0x06]))$$$$nk = ToBase^{Orchard}(PRF^{expand}_{sk}([0x07]))$$$$rivk = ToScalar^{Orchard}(PRF^{expand}_{sk}([0x08]))$$<p>Where:</p>
<ul>
<li>$ToBase^{Orchard}(x) = LEOS2IP_{512}(x) \mod q_{\mathbb{P}}$</li>
<li>$ToScalar^{Orchard}(x) = LEOS2IP_{512}(x) \mod r_{\mathbb{P}}$</li>
</ul>
<h4 id="full-viewing-key">Full Viewing Key</h4>
$$ak = [ask] \cdot \mathcal{P}^{Orchard}_{G}$$$$fvk = (ak, nk, rivk)$$<h4 id="incoming-viewing-key-1">Incoming Viewing Key</h4>
$$dk = truncate_{32}(PRF^{expand}_{sk}([0x07]))$$$$ivk = Commit^{ivk}_{rivk}(ak, nk) \mod r_{\mathbb{P}}$$<h3 id="74-viewing-key-capabilities">7.4 Viewing Key Capabilities</h3>
<table>
  <thead>
      <tr>
          <th>Key Type</th>
          <th>Can View Incoming</th>
          <th>Can View Outgoing</th>
          <th>Can Spend</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Spending Key</td>
          <td>✓</td>
          <td>✓</td>
          <td>✓</td>
      </tr>
      <tr>
          <td>Full Viewing Key</td>
          <td>✓</td>
          <td>✓</td>
          <td>✗</td>
      </tr>
      <tr>
          <td>Incoming Viewing Key</td>
          <td>✓</td>
          <td>✗</td>
          <td>✗</td>
      </tr>
      <tr>
          <td>Payment Address</td>
          <td>✗</td>
          <td>✗</td>
          <td>✗</td>
      </tr>
  </tbody>
</table>
<p><strong>Use cases:</strong></p>
<ul>
<li><strong>Full Viewing Key</strong>: Auditors, tax compliance, business accounting</li>
<li><strong>Incoming Viewing Key</strong>: Watch-only wallets, payment verification</li>
<li><strong>Diversified Addresses</strong>: Unlinkable receiving addresses per payer</li>
</ul>
<hr>
<h2 id="8-unified-addresses-and-memo-fields">8. Unified Addresses and Memo Fields</h2>
<h3 id="81-unified-addresses-zip-316">8.1 Unified Addresses (ZIP 316)</h3>
<p>Introduced with NU5, <strong>Unified Addresses (UAs)</strong> solve a longstanding UX problem: users previously needed separate addresses for each pool (transparent, Sapling, Orchard), creating confusion and fragmentation.</p>
<p>A Unified Address encodes multiple <strong>receivers</strong> in a single address string:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Unified Address
</span></span><span style="display:flex;"><span>┌───────────────────────────────────────────┐
</span></span><span style="display:flex;"><span>│  Orchard Receiver (preferred)             │
</span></span><span style="display:flex;"><span>│  Sapling Receiver (fallback)              │
</span></span><span style="display:flex;"><span>│  Transparent Receiver (optional fallback) │
</span></span><span style="display:flex;"><span>└───────────────────────────────────────────┘
</span></span></code></pre></div><p>When a sender creates a transaction to a UA, the wallet selects the most private receiver that both sender and recipient support. This means:</p>
<ul>
<li>If both parties support Orchard, the transaction uses Orchard (best privacy)</li>
<li>If the sender only supports Sapling, it falls back to the Sapling receiver</li>
<li>The transparent receiver is used only as a last resort</li>
</ul>
<p>UAs use the <strong>F4Jumble</strong> encoding algorithm to ensure that the address cannot be partially parsed, preventing wallets from selectively ignoring shielded receivers.</p>
<h3 id="82-encrypted-memo-fields">8.2 Encrypted Memo Fields</h3>
<p>Every shielded output includes a <strong>512-byte encrypted memo field</strong>, a distinctive feature not found in most other cryptocurrencies. The memo is encrypted alongside the note and is only visible to the recipient (or anyone with the appropriate viewing key).</p>
<p><strong>Common uses:</strong></p>
<ul>
<li>Payment references and invoice numbers</li>
<li>Return addresses for refunds</li>
<li>Encrypted messaging between parties</li>
<li>Compliance metadata (shared selectively via viewing keys)</li>
</ul>
<p><strong>Encryption layers:</strong></p>
<p>Each shielded output contains two encrypted components:</p>
<ol>
<li><strong>$C^{enc}$</strong> (encrypted to the recipient): Contains the note plaintext and memo, encrypted using the recipient&rsquo;s diversified transmission key via a KDF derived from Diffie-Hellman key agreement, then encrypted with ChaCha20-Poly1305 AEAD</li>
<li><strong>$C^{out}$</strong> (encrypted to the sender): Contains key material allowing the sender to decrypt the output later using their outgoing viewing key</li>
</ol>
<p>The key agreement uses the ephemeral secret key $esk$ and the recipient&rsquo;s $pk_d$:</p>
$$K^{enc} = KDF(DH(esk, pk_d), epk)$$<p>This design ensures forward secrecy: compromising $esk$ after the transaction is mined does not help an attacker, since $esk$ is ephemeral and discarded.</p>
<h3 id="83-zip-317-proportional-fee-mechanism">8.3 ZIP 317: Proportional Fee Mechanism</h3>
<p>Traditional Zcash used a flat fee of 1,000 zatoshis regardless of transaction complexity. ZIP 317 introduced a <strong>proportional fee model</strong> where the fee scales with the number of logical actions (inputs and outputs) in a transaction.</p>
<p>The conventional fee under ZIP 317 is:</p>
$$fee = max(marginal\_fee \cdot max(grace\_actions, logical\_actions), marginal\_fee)$$<p>Where $marginal\_fee = 5000$ zatoshis and $grace\_actions = 2$.</p>
<p>This prevents abuse by high-output transactions (previously, a transaction with 1,100 outputs paid the same fee as one with 2 outputs) while keeping simple transactions inexpensive. A standard two-action transaction pays 10,000 zatoshis (0.0001 ZEC).</p>
<hr>
<h2 id="9-cryptographic-building-blocks">9. Cryptographic Building Blocks</h2>
<h3 id="91-hash-functions">9.1 Hash Functions</h3>
<h4 id="sha-256-and-blake2">SHA-256 and BLAKE2</h4>
<p><strong>SHA-256</strong> (Sprout): Standard NIST hash</p>
$$H: \lbrace 0,1 \rbrace^{\ast} \rightarrow \lbrace 0,1 \rbrace^{256}$$<p><strong>BLAKE2b</strong> (Sapling): Personalized keyed hash</p>
$$BLAKE2b_{512}(\text{"Zcash\_..."}, x)$$<p><strong>BLAKE2s</strong> (Sapling): For shorter outputs</p>
$$BLAKE2s_{256}(\text{"Zcash\_..."}, x)$$<h4 id="pedersen-hash-sapling">Pedersen Hash (Sapling)</h4>
<p>Pedersen hashing maps bit strings to curve points:</p>
$$PedersenHash(D, M) = \sum_{i=0}^{n-1} [enc(m_i)] \cdot \mathcal{P}_{D,i}$$<p>Where:</p>
<ul>
<li>$M$ is split into 3-bit chunks $m_i$</li>
<li>$enc(m) = m - 4$ for $m \in \lbrace 0,\ldots,7 \rbrace$ (range $[-4, 3]$)</li>
<li>$\mathcal{P}_{D,i}$ are independent generator points</li>
</ul>
<p>The window structure uses 4 generators per segment:</p>
$$Segment_j = \sum_{k=0}^{c-1} [enc(m_{jc+k}) \cdot 2^{4k}] \cdot \mathcal{P}_{D,j}$$<h4 id="sinsemilla-hash-orchard">Sinsemilla Hash (Orchard)</h4>
<p>Sinsemilla is optimized for circuit efficiency using incomplete addition:</p>
$$SinsemillaHash(D, M) = Q + \sum_{i=0}^{n-1} hash\_to\_curve(m_i)$$<p>Where:</p>
<ul>
<li>$M$ is split into 10-bit chunks</li>
<li>Each chunk indexes into a precomputed table of curve points</li>
<li>$Q$ is a domain-specific generator</li>
</ul>
<p><strong>Advantage</strong>: No complete addition required in-circuit, reducing constraints.</p>
<h4 id="poseidon-hash-orchard">Poseidon Hash (Orchard)</h4>
<p>Poseidon is an algebraic hash optimized for zkSNARKs:</p>
$$Poseidon_{width}(x_1, \ldots, x_w) = ARK \circ S \circ MDS \circ \ldots \circ ARK(x_1, \ldots, x_w)$$<p>Where:</p>
<ul>
<li>ARK: Add Round Key (constants)</li>
<li>S: S-box ($x \mapsto x^5$)</li>
<li>MDS: Maximum Distance Separable mixing matrix</li>
</ul>
<p>Orchard uses Poseidon for PRF operations where algebraic structure is advantageous.</p>
<h3 id="92-elliptic-curves">9.2 Elliptic Curves</h3>
<h4 id="bn-254-sprout">BN-254 (Sprout)</h4>
<p>A pairing-friendly curve with embedding degree 12:</p>
$$y^2 = x^3 + 3$$<p>Over $\mathbb{F}_p$ where $p$ is a 254-bit prime.</p>
<p><strong>Security note</strong>: BN-254 provides approximately 100 bits of security due to advances in discrete log attacks on pairing curves (notably the Kim-Barbulescu attack). This reduced security margin, combined with the deprecated status of the Sprout protocol, means that <strong>modern wallets like Zashi effectively quarantine Sprout funds</strong>. Users are strongly encouraged to migrate any remaining Sprout ZEC to Sapling or Orchard pools.</p>
<h4 id="bls12-381-sapling">BLS12-381 (Sapling)</h4>
<p>A more secure pairing curve:</p>
$$E: y^2 = x^3 + 4$$<p>Parameters:</p>
<ul>
<li>$p$: 381-bit prime</li>
<li>$r$: 255-bit subgroup order</li>
<li>Security: ~128 bits</li>
</ul>
<h4 id="jubjub-sapling">Jubjub (Sapling)</h4>
<p>A twisted Edwards curve embedded in BLS12-381&rsquo;s scalar field:</p>
$$-u^2 + v^2 = 1 + d \cdot u^2 \cdot v^2$$<p>Where $d = -(10240/10241)$ over $\mathbb{F}_r$ (BLS12-381 scalar field).</p>
<p><strong>Properties:</strong></p>
<ul>
<li>Complete addition formula (no exceptional cases)</li>
<li>Efficient in-circuit arithmetic</li>
<li>Cofactor $h = 8$</li>
</ul>
<h4 id="pallas-and-vesta-orchard">Pallas and Vesta (Orchard)</h4>
<p>A <strong>2-cycle</strong> of curves for recursive proofs:</p>
<p><strong>Pallas</strong> (primary):</p>
$$E_p: y^2 = x^3 + 5$$<p> over $\mathbb{F}_p$</p>
<p><strong>Vesta</strong>:</p>
$$E_q: y^2 = x^3 + 5$$<p> over $\mathbb{F}_q$</p>
<p>Where $q = r_p$ (Vesta&rsquo;s base field = Pallas&rsquo;s scalar field) and vice versa.</p>
<p>This cycle enables <strong>recursive composition</strong>: a Pallas proof can verify a Vesta proof, and vice versa.</p>
<h3 id="93-commitment-schemes">9.3 Commitment Schemes</h3>
<h4 id="windowed-pedersen-commitment-sapling">Windowed Pedersen Commitment (Sapling)</h4>
$$Commit_r(x) = [r] \cdot \mathcal{H} + PedersenHash(D, x)$$<p><strong>Properties:</strong></p>
<ul>
<li>Computationally hiding (under DLog assumption)</li>
<li>Perfectly binding</li>
<li>Homomorphic: $Commit_r(x) + Commit_s(y) = Commit_{r+s}(x+y)$</li>
</ul>
<h4 id="sinsemilla-commitment-orchard">Sinsemilla Commitment (Orchard)</h4>
$$SinsemillaCommit_r(D, M) = SinsemillaHash(D, M) + [r] \cdot \mathcal{R}$$<h3 id="94-signature-schemes">9.4 Signature Schemes</h3>
<h4 id="reddsa-saplingorchard">RedDSA (Sapling/Orchard)</h4>
<p>A Schnorr-based signature with re-randomizable keys:</p>
<p><strong>Key Generation:</strong></p>
$$sk \leftarrow \lbrace 1, \ldots, r-1 \rbrace$$$$pk = [sk] \cdot \mathcal{B}$$<p><strong>Signing:</strong></p>
$$T \leftarrow random()$$$$r = H(T \| pk \| M)$$$$R = [r] \cdot \mathcal{B}$$$$S = r + H(R \| pk \| M) \cdot sk$$$$\sigma = (R, S)$$<p><strong>Verification:</strong></p>
$$[S] \cdot \mathcal{B} \stackrel{?}{=} R + [H(R \| pk \| M)] \cdot pk$$<p><strong>Re-randomization:</strong></p>
<p>For randomizer $\alpha$:</p>
$$pk' = pk + [\alpha] \cdot \mathcal{B}$$$$sk' = sk + \alpha$$<p>This enables <strong>spend authorization signatures</strong> that cannot be linked to the original key.</p>
<hr>
<h2 id="10-transaction-structure-and-validation">10. Transaction Structure and Validation</h2>
<h3 id="101-transaction-versions">10.1 Transaction Versions</h3>
<table>
  <thead>
      <tr>
          <th>Version</th>
          <th>Introduced</th>
          <th>Features</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>Bitcoin</td>
          <td>Transparent only</td>
      </tr>
      <tr>
          <td>2</td>
          <td>Zcash launch</td>
          <td>+ JoinSplit (Sprout)</td>
      </tr>
      <tr>
          <td>3</td>
          <td>Overwinter</td>
          <td>+ expiry height, version group</td>
      </tr>
      <tr>
          <td>4</td>
          <td>Sapling</td>
          <td>+ Spend/Output descriptions</td>
      </tr>
      <tr>
          <td>5</td>
          <td>NU5</td>
          <td>+ Action descriptions, nonmalleable txid</td>
      </tr>
  </tbody>
</table>
<h3 id="102-version-5-transaction-structure">10.2 Version 5 Transaction Structure</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Transaction v5:
</span></span><span style="display:flex;"><span>├── header (4 bytes)
</span></span><span style="display:flex;"><span>│   ├── version (4 bits) = 5
</span></span><span style="display:flex;"><span>│   └── overwintered flag (1 bit) = 1
</span></span><span style="display:flex;"><span>├── nVersionGroupId (4 bytes)
</span></span><span style="display:flex;"><span>├── nConsensusBranchId (4 bytes)
</span></span><span style="display:flex;"><span>├── nLockTime (4 bytes)
</span></span><span style="display:flex;"><span>├── nExpiryHeight (4 bytes)
</span></span><span style="display:flex;"><span>├── Transparent Bundle
</span></span><span style="display:flex;"><span>│   ├── tx_in_count (compactSize)
</span></span><span style="display:flex;"><span>│   ├── tx_in[] 
</span></span><span style="display:flex;"><span>│   ├── tx_out_count (compactSize)
</span></span><span style="display:flex;"><span>│   └── tx_out[]
</span></span><span style="display:flex;"><span>├── Sapling Bundle
</span></span><span style="display:flex;"><span>│   ├── nSpendsSapling (compactSize)
</span></span><span style="display:flex;"><span>│   ├── vSpendsSapling[]
</span></span><span style="display:flex;"><span>│   ├── nOutputsSapling (compactSize)
</span></span><span style="display:flex;"><span>│   ├── vOutputsSapling[]
</span></span><span style="display:flex;"><span>│   ├── valueBalanceSapling (int64)
</span></span><span style="display:flex;"><span>│   ├── anchorSapling (32 bytes)
</span></span><span style="display:flex;"><span>│   ├── vSpendProofsSapling[]
</span></span><span style="display:flex;"><span>│   ├── vSpendAuthSigsSapling[]
</span></span><span style="display:flex;"><span>│   ├── vOutputProofsSapling[]
</span></span><span style="display:flex;"><span>│   └── bindingSigSapling (64 bytes)
</span></span><span style="display:flex;"><span>└── Orchard Bundle
</span></span><span style="display:flex;"><span>    ├── nActionsOrchard (compactSize)
</span></span><span style="display:flex;"><span>    ├── vActionsOrchard[]
</span></span><span style="display:flex;"><span>    ├── flagsOrchard (1 byte)
</span></span><span style="display:flex;"><span>    ├── valueBalanceOrchard (int64)
</span></span><span style="display:flex;"><span>    ├── anchorOrchard (32 bytes)
</span></span><span style="display:flex;"><span>    ├── sizeProofsOrchard (compactSize)
</span></span><span style="display:flex;"><span>    ├── proofsOrchard[]
</span></span><span style="display:flex;"><span>    └── bindingSigOrchard (64 bytes)
</span></span></code></pre></div><h3 id="103-consensus-rules">10.3 Consensus Rules</h3>
<h4 id="general-rules">General Rules</h4>
<ol>
<li><strong>Encoding validity</strong>: All fields must be valid encodings</li>
<li><strong>No overflow</strong>: Sum of inputs cannot exceed MAX_MONEY</li>
<li><strong>Positive value balance</strong>: Transparent pool cannot go negative</li>
<li><strong>Expiry</strong>: Transaction must be mined before nExpiryHeight</li>
</ol>
<h4 id="shielded-rules">Shielded Rules</h4>
<ol>
<li><strong>Anchor validity</strong>: Must reference a previous block&rsquo;s treestate</li>
<li><strong>Nullifier uniqueness</strong>: No nullifier already in the set</li>
<li><strong>Proof validity</strong>: All zk-SNARK proofs must verify</li>
<li><strong>Signature validity</strong>: All spend auth and binding signatures must verify</li>
<li><strong>Value balance</strong>: Commitments must balance with transparent change</li>
</ol>
<h3 id="104-sighash-algorithm">10.4 SIGHASH Algorithm</h3>
<p>Transaction authorization requires binding signatures to specific transactions. The SIGHASH algorithm creates a digest covering:</p>
<p><strong>Version 5 (NU5+):</strong></p>
<p>Using BLAKE2b-256 with personalization (per ZIP 244):</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>SIGHASH = BLAKE2b-256(&#34;ZcashTxHash_V5&#34;, 
</span></span><span style="display:flex;"><span>    header_digest ||
</span></span><span style="display:flex;"><span>    transparent_digest ||
</span></span><span style="display:flex;"><span>    sapling_digest ||
</span></span><span style="display:flex;"><span>    orchard_digest
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p>Each sub-digest covers specific transaction components, providing flexibility for partial signing while preventing malleability.</p>
<hr>
<h2 id="11-security-analysis">11. Security Analysis</h2>
<h3 id="111-cryptographic-assumptions">11.1 Cryptographic Assumptions</h3>
<p>Zcash security relies on:</p>
<table>
  <thead>
      <tr>
          <th>Assumption</th>
          <th>Used For</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Discrete Log (DL)</td>
          <td>Pedersen commitments, signatures</td>
      </tr>
      <tr>
          <td>Collision Resistance</td>
          <td>Hash functions, Merkle trees</td>
      </tr>
      <tr>
          <td>PRF Security</td>
          <td>Key derivation, nullifiers</td>
      </tr>
      <tr>
          <td>Knowledge of Exponent</td>
          <td>zk-SNARKs (BCTV14, Groth16)</td>
      </tr>
      <tr>
          <td>Algebraic Group Model</td>
          <td>Halo 2 soundness</td>
      </tr>
  </tbody>
</table>
<h3 id="112-historical-vulnerabilities">11.2 Historical Vulnerabilities</h3>
<h4 id="faerie-gold-attack-fixed-pre-launch">Faerie Gold Attack (Fixed pre-launch)</h4>
<p><strong>Vulnerability</strong>: In original Zerocash, the uniqueness of nullifiers wasn&rsquo;t enforced correctly, allowing potential creation of notes that multiple parties could spend.</p>
<p><strong>Fix</strong>: Modified nullifier computation to include the spending key:</p>
$$nf = PRF_{a_{sk}}^{nf}(\rho)$$<p>This ensures only the legitimate recipient can compute the valid nullifier.</p>
<h4 id="internalh-collision-attack-fixed-pre-launch">InternalH Collision Attack (Fixed pre-launch)</h4>
<p><strong>Vulnerability</strong>: Potential hash collisions in internal circuit operations could allow proof forgery.</p>
<p><strong>Fix</strong>: Added domain separation and uniqueness constraints in the circuit.</p>
<h4 id="value-overflow-fixed-2018">Value Overflow (Fixed 2018)</h4>
<p><strong>Vulnerability</strong>: CVE-2018-17144 (inherited from Bitcoin) allowed inflation through duplicate transaction processing.</p>
<p><strong>Fix</strong>: Enhanced duplicate detection in transaction validation.</p>
<h3 id="113-trusted-setup-considerations">11.3 Trusted Setup Considerations</h3>
<p><strong>BCTV14/Groth16 Requirement:</strong></p>
<p>The proving/verifying keys contain:</p>
$$pk = (g^{\alpha}, g^{\beta}, \ldots, g^{\tau^d})$$<p>Where $\tau$ (the &ldquo;toxic waste&rdquo;) must be destroyed. If any party knows $\tau$, they can forge proofs and create counterfeit ZEC.</p>
<p><strong>Zcash Ceremonies:</strong></p>
<ol>
<li><strong>Sprout</strong> (2016): 6 participants</li>
<li><strong>Powers of Tau</strong> (2017-2018): 87 participants</li>
<li><strong>Sapling MPC</strong> (2018): 100+ participants</li>
</ol>
<p>Security requires that at least one participant honestly destroyed their contribution.</p>
<p><strong>Halo 2 Elimination:</strong></p>
<p>Orchard&rsquo;s Halo 2 requires no trusted setup. The &ldquo;setup&rdquo; is just a hash of a random string, publicly verifiable.</p>
<h3 id="114-privacy-limitations">11.4 Privacy Limitations</h3>
<h4 id="timing-analysis">Timing Analysis</h4>
<p>Transaction timing patterns can leak information:</p>
<ul>
<li>Regular payment schedules → behavioral fingerprinting</li>
<li>Immediate spend after receipt → linking in/out transactions</li>
</ul>
<h4 id="amount-correlation">Amount Correlation</h4>
<p>When moving between transparent and shielded:</p>
<ul>
<li>Unique amounts are linkable</li>
<li>Round numbers may indicate user behavior</li>
</ul>
<h4 id="graph-analysis">Graph Analysis</h4>
<p>Transaction graph heuristics can narrow anonymity sets:</p>
<ul>
<li>One-input-one-output transactions</li>
<li>Change output patterns</li>
<li>Pool transitions</li>
</ul>
<h4 id="metadata-leakage">Metadata Leakage</h4>
<p>Non-transaction data may deanonymize:</p>
<ul>
<li>IP addresses during broadcast</li>
<li>Timing of wallet connections</li>
<li>Exchange deposit/withdrawal records</li>
</ul>
<h3 id="115-quantum-considerations">11.5 Quantum Considerations</h3>
<p>Current Zcash is <strong>not quantum-resistant</strong>:</p>
<table>
  <thead>
      <tr>
          <th>Component</th>
          <th>Quantum Attack</th>
          <th>Impact</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>ECDSA (transparent)</td>
          <td>Shor&rsquo;s algorithm</td>
          <td>Funds theft</td>
      </tr>
      <tr>
          <td>Pedersen commitments</td>
          <td>Shor&rsquo;s algorithm</td>
          <td>Commitment opening</td>
      </tr>
      <tr>
          <td>zk-SNARKs</td>
          <td>Varies</td>
          <td>Proof forgery</td>
      </tr>
      <tr>
          <td>Hash functions</td>
          <td>Grover&rsquo;s algorithm</td>
          <td>Reduced security</td>
      </tr>
  </tbody>
</table>
<p>The Zcash community is researching post-quantum alternatives, including lattice-based commitments and hash-based signatures.</p>
<hr>
<h2 id="12-network-upgrades">12. Network Upgrades</h2>
<h3 id="121-upgrade-history">12.1 Upgrade History</h3>
<table>
  <thead>
      <tr>
          <th>Upgrade</th>
          <th>Height</th>
          <th>Date</th>
          <th>Key Changes</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Sprout</strong></td>
          <td>0</td>
          <td>Oct 2016</td>
          <td>Initial launch</td>
      </tr>
      <tr>
          <td><strong>Overwinter</strong></td>
          <td>347,500</td>
          <td>Jun 2018</td>
          <td>Transaction versioning, replay protection</td>
      </tr>
      <tr>
          <td><strong>Sapling</strong></td>
          <td>419,200</td>
          <td>Oct 2018</td>
          <td>New shielded protocol, Groth16</td>
      </tr>
      <tr>
          <td><strong>Blossom</strong></td>
          <td>653,600</td>
          <td>Dec 2019</td>
          <td>75s block time</td>
      </tr>
      <tr>
          <td><strong>Heartwood</strong></td>
          <td>903,000</td>
          <td>Jul 2020</td>
          <td>Shielded coinbase, ZIP-221</td>
      </tr>
      <tr>
          <td><strong>Canopy</strong></td>
          <td>1,046,400</td>
          <td>Nov 2020</td>
          <td>Dev fund, deprecate Sprout</td>
      </tr>
      <tr>
          <td><strong>NU5</strong></td>
          <td>1,687,104</td>
          <td>May 2022</td>
          <td>Orchard, Halo 2, unified addresses</td>
      </tr>
      <tr>
          <td><strong>NU6</strong></td>
          <td>2,726,400</td>
          <td>Nov 2024</td>
          <td>Lockbox (ZIP 2001), second halving, new funding model</td>
      </tr>
      <tr>
          <td><strong>NU6.1</strong></td>
          <td>3,146,400</td>
          <td>Nov 2025</td>
          <td>ZIP 1016 C&amp;C funding model, v5 default transactions, Orchard balance fixes</td>
      </tr>
  </tbody>
</table>
<p>NU6 marked a significant milestone, coinciding with the second Zcash halving (block reward reduced from 3.125 ZEC to 1.5625 ZEC) and the expiration of the original Dev Fund. The Lockbox mechanism (ZIP 2001) accumulates 20% of block rewards. NU6.1 subsequently introduced the Community and Coinholder (C&amp;C) funding model via ZIP 1016, which preserves 8% for Zcash Community Grants and directs the remaining 12% to the protocol-controlled Lockbox for future decentralized distribution.</p>
<h3 id="122-upgrade-mechanism">12.2 Upgrade Mechanism</h3>
<p>Zcash uses <strong>coordinated network upgrades</strong>:</p>
<ol>
<li>Specification published as ZIPs (Zcash Improvement Proposals)</li>
<li>Implementation in reference client (zcashd/zebra)</li>
<li>Activation at predetermined block height</li>
<li>Old transaction formats remain valid (backward compatibility)</li>
</ol>
<h3 id="123-future-directions">12.3 Future Directions</h3>
<p>The Zcash ecosystem continues active development across multiple organizations. Key initiatives for 2025 and beyond include:</p>
<h4 id="crosslink-hybrid-consensus">Crosslink (Hybrid Consensus)</h4>
<p>The most significant architectural change under development is <strong>Crosslink</strong>, led by Shielded Labs. This proposed upgrade introduces a <strong>finality layer atop Proof-of-Work</strong>:</p>
<ul>
<li><strong>Mechanism</strong>: Validators stake ZEC to participate in block finalization</li>
<li><strong>Security</strong>: Mitigates 51% attacks by requiring both PoW and stake-weighted consensus</li>
<li><strong>Finality</strong>: Enables faster &ldquo;safe&rdquo; transaction acceptance without waiting for deep confirmations</li>
<li><strong>Timeline</strong>: Active development; testnet deployment expected in 2026</li>
</ul>
<p>Crosslink represents Zcash&rsquo;s path toward hybrid PoW/PoS, addressing long-standing concerns about mining centralization and network security.</p>
<h4 id="zcash-shielded-assets-zsa">Zcash Shielded Assets (ZSA)</h4>
<p>ZSA would enable <strong>user-defined tokens</strong> within shielded pools, extending Zcash&rsquo;s privacy guarantees to arbitrary assets. Developed by QEDIT and funded by Zcash Community Grants:</p>
<ul>
<li><strong>ZIP 226</strong>: Transfer and burn mechanics for shielded assets within the Orchard pool</li>
<li><strong>ZIP 227</strong>: Issuance protocol with issuer key pairs and transparent supply tracking</li>
<li><strong>Status</strong>: Audited and live on testnet; candidate for inclusion in NU7, though community debate continues over scope</li>
<li><strong>Use cases</strong>: Stablecoins, NFTs, wrapped assets, all with Zcash-grade privacy</li>
</ul>
<h4 id="frost-threshold-signatures">FROST Threshold Signatures</h4>
<p>The Zcash Foundation has released a production-ready implementation of <strong>FROST (Flexible Round-Optimized Schnorr Threshold signatures)</strong>, enabling $t$-of-$n$ multisignature schemes for Zcash shielded transactions (ZIP 312). FROST allows a group of participants to collaboratively sign transactions without any single party holding the complete spending key, using only two communication rounds.</p>
<p>Because Zcash already uses Schnorr-based signatures (RedDSA) for spend authorization, FROST integrates naturally with the existing key architecture. The re-randomization property of RedDSA is preserved through FROST&rsquo;s rerandomized variant, maintaining unlinkability of spend authorization signatures.</p>
<h4 id="sprout-pool-removal-nu7">Sprout Pool Removal (NU7)</h4>
<p>The upcoming NU7 network upgrade is expected to fully deprecate the Sprout pool by disallowing v4 transactions (only v5 and later will be supported). Any remaining Sprout funds will be burned at the activation height. Users with Sprout ZEC should migrate to Sapling or Orchard before NU7 activation.</p>
<h4 id="post-quantum-migration">Post-Quantum Migration</h4>
<p>Current Zcash cryptography (ECDSA, Pedersen commitments, zk-SNARKs) is vulnerable to quantum attacks. Research areas include:</p>
<ul>
<li><strong>Lattice-based commitments</strong>: Replacing Pedersen with quantum-resistant alternatives</li>
<li><strong>Hash-based signatures</strong>: SPHINCS+ or similar for spending authorization</li>
<li><strong>Timeline</strong>: Long-term research; no immediate threat from current quantum computers</li>
</ul>
<h4 id="recursive-proof-composition">Recursive Proof Composition</h4>
<p>Halo 2&rsquo;s architecture enables proofs that verify other proofs, opening possibilities for:</p>
<ul>
<li><strong>Transaction aggregation</strong>: Batching many transactions into single proofs</li>
<li><strong>Light client efficiency</strong>: Compact proofs of chain validity</li>
<li><strong>Cross-chain bridges</strong>: Trustless verification of Zcash state on other chains</li>
</ul>
<hr>
<h2 id="13-conclusion">13. Conclusion</h2>
<h3 id="131-summary">13.1 Summary</h3>
<p>Zcash represents the state of the art in blockchain privacy, implementing zero-knowledge proofs at scale to provide:</p>
<ul>
<li><strong>Unconditional anonymity</strong>: Transaction details hidden by cryptographic proofs</li>
<li><strong>Selective disclosure</strong>: Viewing keys enable controlled transparency</li>
<li><strong>Strong fungibility</strong>: All shielded ZEC are cryptographically identical</li>
<li><strong>Decentralized trust</strong>: No trusted parties required for transaction validation</li>
</ul>
<p>The evolution from Sprout to Sapling to Orchard demonstrates continuous improvement in efficiency, security, and usability, culminating in Halo 2&rsquo;s elimination of trusted setup requirements. With NU6&rsquo;s activation in late 2024 and ongoing NU6.1 refinements, the protocol continues to mature.</p>
<h3 id="132-privacy-in-context">13.2 Privacy in Context</h3>
<p>Zcash exists within a broader ecosystem:</p>
<ul>
<li>Complements transparent cryptocurrencies for privacy-sensitive use cases</li>
<li>Enables legitimate financial privacy (competitive confidentiality, personal security)</li>
<li>Provides a research platform for zero-knowledge cryptography</li>
<li>Demonstrates that privacy and auditability can coexist (viewing keys)</li>
</ul>
<p>The multi-organization structure (ECC, Zcash Foundation, Shielded Labs) ensures resilience and diverse perspectives on protocol evolution.</p>
<h3 id="133-looking-forward">13.3 Looking Forward</h3>
<p>The Zcash protocol stands at an inflection point. Key developments to watch:</p>
<ul>
<li><strong>Crosslink</strong>: The proposed hybrid PoW/PoS system addresses 51% attack concerns and could fundamentally change Zcash&rsquo;s consensus model</li>
<li><strong>ZSA (Zcash Shielded Assets)</strong>: User-defined tokens with full privacy would expand Zcash&rsquo;s utility beyond simple value transfer</li>
<li><strong>FROST multisignatures</strong>: Production-ready threshold signatures enable institutional custody and multisig workflows for shielded transactions</li>
<li><strong>Sprout removal (NU7)</strong>: Full deprecation of the legacy Sprout pool simplifies the protocol and removes the weakest cryptographic link</li>
<li><strong>zcashd to Zebra migration</strong>: The transition from zcashd to Zebra (Rust) and Zallet improves code quality and long-term maintainability</li>
<li><strong>Continued decentralization</strong>: The C&amp;C funding model and Lockbox mechanism aim to reduce reliance on any single organization</li>
<li><strong>Post-quantum preparedness</strong>: Long-term research ensures Zcash remains secure against emerging threats</li>
</ul>
<p>As privacy becomes increasingly valuable in digital economies, Zcash&rsquo;s cryptographic foundations provide a blueprint for financial systems that respect user sovereignty without sacrificing security guarantees.</p>
<hr>
<h2 id="references">References</h2>
<ol>
<li>
<p>Ben-Sasson, E., Chiesa, A., Garman, C., Green, M., Miers, I., Tromer, E., &amp; Virza, M. (2014). <em>Zerocash: Decentralized Anonymous Payments from Bitcoin</em>. IEEE Symposium on Security and Privacy.</p>
</li>
<li>
<p>Hopwood, D., Bowe, S., Hornby, T., &amp; Wilcox, N. (2025). <em>Zcash Protocol Specification</em>. Version 2025.6.3 [NU6.1].</p>
</li>
<li>
<p>Groth, J. (2016). <em>On the Size of Pairing-Based Non-interactive Arguments</em>. EUROCRYPT 2016.</p>
</li>
<li>
<p>Bowe, S., Grigg, J., &amp; Hopwood, D. (2019). <em>Recursive Proof Composition without a Trusted Setup</em>.</p>
</li>
<li>
<p>Electric Coin Company. <em>Zcash Improvement Proposals (ZIPs)</em>. <a href="https://zips.z.cash">https://zips.z.cash</a></p>
</li>
<li>
<p>Komlo, C., &amp; Goldberg, I. (2020). <em>FROST: Flexible Round-Optimized Schnorr Threshold Signatures</em>. Selected Areas in Cryptography (SAC).</p>
</li>
<li>
<p>Nakamoto, S. (2008). <em>Bitcoin: A Peer-to-Peer Electronic Cash System</em>.</p>
</li>
</ol>
<hr>
<h2 id="appendix-a-mathematical-notation-reference">Appendix A: Mathematical Notation Reference</h2>
<table>
  <thead>
      <tr>
          <th>Symbol</th>
          <th>Meaning</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>$\mathbb{B}$</td>
          <td>Bit values $\lbrace 0, 1 \rbrace$</td>
      </tr>
      <tr>
          <td>$\mathbb{B}^n$</td>
          <td>Bit sequences of length $n$</td>
      </tr>
      <tr>
          <td>$\mathbb{F}_p$</td>
          <td>Finite field with $p$ elements</td>
      </tr>
      <tr>
          <td>$\mathbb{G}$</td>
          <td>Elliptic curve group</td>
      </tr>
      <tr>
          <td>$[k] \cdot P$</td>
          <td>Scalar multiplication: $P + P + \ldots + P$ ($k$ times)</td>
      </tr>
      <tr>
          <td>$e(P, Q)$</td>
          <td>Pairing function</td>
      </tr>
      <tr>
          <td>$\mathcal{O}$</td>
          <td>Point at infinity (group identity)</td>
      </tr>
      <tr>
          <td>$r$</td>
          <td>Subgroup order</td>
      </tr>
      <tr>
          <td>$h$</td>
          <td>Cofactor</td>
      </tr>
      <tr>
          <td>$\oplus$</td>
          <td>XOR operation</td>
      </tr>
      <tr>
          <td>$\|$</td>
          <td>Concatenation</td>
      </tr>
      <tr>
          <td>$\leftarrow$</td>
          <td>Random sampling</td>
      </tr>
      <tr>
          <td>$:=$</td>
          <td>Definition</td>
      </tr>
  </tbody>
</table>
<h2 id="appendix-b-glossary">Appendix B: Glossary</h2>
<p><strong>Action</strong>: Orchard&rsquo;s combined spend/output operation</p>
<p><strong>Anchor</strong>: Merkle root identifying a treestate</p>
<p><strong>Binding Signature</strong>: Proves transaction value balance</p>
<p><strong>Chain Value Pool</strong>: Total value in a transaction type</p>
<p><strong>Commitment</strong>: Cryptographic hiding of note contents</p>
<p><strong>Diversifier</strong>: Randomness enabling multiple addresses per key</p>
<p><strong>Full Viewing Key</strong>: Enables viewing incoming and outgoing transactions</p>
<p><strong>JoinSplit</strong>: Sprout&rsquo;s atomic spend/create operation</p>
<p><strong>Note</strong>: Shielded representation of value</p>
<p><strong>Nullifier</strong>: Unique identifier revealed when spending</p>
<p><strong>Proving Key</strong>: Secret parameters for proof generation</p>
<p><strong>Shielded Pool</strong>: Aggregated private value in a protocol</p>
<p><strong>Spend Authority</strong>: Ability to transfer value</p>
<p><strong>Treestate</strong>: State of commitment tree and nullifier set</p>
<p><strong>Verifying Key</strong>: Public parameters for proof verification</p>
<p><strong>Viewing Key</strong>: Key enabling transaction visibility without spend authority</p>
<p><strong>zk-SNARK</strong>: Zero-Knowledge Succinct Non-interactive Argument of Knowledge</p>
<hr>
<p><em>This analysis was prepared based on the Zcash Protocol Specification Version 2025.6.3 [NU6.1]. For the authoritative protocol definition, consult the official specification maintained at <a href="https://zips.z.cash">zips.z.cash</a>. For implementation details, refer to Zebra (Zcash Foundation), Zashi wallet (ECC), and Zallet.</em></p>
]]></content>
      </entry>

</feed>
