1import{a as l,f as b,i as D,c as q,d as z}from"../chunks/XAY_w4zK.js";import"../chunks/CZbXoZu8.js";import{p as ce,h as ve,B as V,t as N,G as de,s as e,i as s,$ as pe,j as t,n as K,g as a}from"../chunks/ogozgDVj.js";import{s as h}from"../chunks/C8L8rAxM.js";import{e as M,s as c,i as S,b as he}from"../chunks/kt8enD8-.js";import{h as ue}from"../chunks/DnXNj3MZ.js";import{h as ge}from"../chunks/C8O1we8Q.js";import{i as xe}from"../chunks/DHb7wbpH.js";import{F as me}from"../chunks/Cpi8tHhV.js";import"../chunks/9oMDpo41.js";import"../chunks/WRShoR3F.js";import{S as x}from"../chunks/BKAcNsqV.js";const ye=!0,Re=Object.freeze(Object.defineProperty({__proto__:null,prerender:ye},Symbol.toStringTag,{value:"Module"}));var je=b('<meta name="description"/> <link rel="canonical"/> <meta property="og:type" content="article"/> <meta property="og:site_name"/> <meta property="og:title"/> <meta property="og:description"/> <meta property="og:url"/> <meta property="og:image"/> <meta property="og:image:width" content="512"/> <meta property="og:image:height" content="512"/> <meta property="og:image:alt"/> <meta property="og:locale"/> <meta name="twitter:card" content="summary_large_image"/> <meta name="twitter:site"/> <meta name="twitter:title"/> <meta name="twitter:description"/> <meta name="twitter:image"/> <meta name="twitter:image:alt"/> <meta name="robots" content="index, follow"/> <!>',1),fe=z('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94"></path><path d="M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19"></path><path d="M1 1l22 22"></path></svg>'),we=z('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><line x1="18" y1="8" x2="23" y2="13"></line><line x1="23" y1="8" x2="18" y2="13"></line></svg>'),ke=z('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18.84 12.25l1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"></path><path d="M5.17 11.75l-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"></path><line x1="8" y1="2" x2="8" y2="5"></line><line x1="2" y1="8" x2="5" y2="8"></line><line x1="16" y1="19" x2="16" y2="22"></line><line x1="19" y1="16" x2="22" y2="16"></line></svg>'),be=z('<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M7 2h10a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z"></path><path d="M7 14h10a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2z"></path><line x1="1" y1="1" x2="23" y2="23"></line></svg>'),_e=b('<div class="principle-card svelte-1ocjnnx"><div class="principle-icon svelte-1ocjnnx"><!></div> <h3 class="svelte-1ocjnnx"> </h3> <p class="svelte-1ocjnnx"> </p></div>'),Pe=b('<div class="step-item svelte-1ocjnnx"><div class="step-number svelte-1ocjnnx"> </div> <div class="step-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx"> </h3> <p class="svelte-1ocjnnx"> </p></div></div>'),Ce=b('<div class="wallet-card svelte-1ocjnnx"><h3 class="svelte-1ocjnnx"> </h3> <p class="svelte-1ocjnnx"> </p></div>'),Be=b('<li class="svelte-1ocjnnx"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-1ocjnnx"><polyline points="20 6 9 17 4 12"></polyline></svg> </li>'),Ne=b('<div class="protocol-card svelte-1ocjnnx"><div class="protocol-header svelte-1ocjnnx"><h3 class="svelte-1ocjnnx"> </h3> <span> </span></div> <p class="protocol-description svelte-1ocjnnx"> </p> <ul class="protocol-features svelte-1ocjnnx"></ul> <div class="protocol-usecase svelte-1ocjnnx"><strong> </strong></div></div>'),Me=b(`<div class="privacy-architecture-page svelte-1ocjnnx"><header class="page-header svelte-1ocjnnx"><a href="/" class="back-link svelte-1ocjnnx"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 12H5M12 19l-7-7 7-7"></path></svg> Back to Search</a></header> <section class="hero-section svelte-1ocjnnx"><div class="hero-content svelte-1ocjnnx"><div class="hero-badge svelte-1ocjnnx">mooncloak VPN</div> <h1 class="svelte-1ocjnnx">Privacy Architecture</h1> <p class="hero-subtitle svelte-1ocjnnx">A deep dive into how the mooncloak VPN app protects your privacy through cryptographic protocols,
2 decentralized infrastructure, and privacy-by-design architecture.</p> <p class="hero-tagline svelte-1ocjnnx"><strong>Our goal:</strong> Make it technically impossible for us to know who you are or what you do.</p></div></section> <section class="principles-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Core Principles</h2> <p class="svelte-1ocjnnx">The foundations of our privacy-first approach</p></div> <div class="principles-grid svelte-1ocjnnx"></div></section> <section class="signatures-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Blind Signature Protocol</h2> <p class="svelte-1ocjnnx">How we authenticate you without knowing who you are</p></div> <div class="signatures-intro svelte-1ocjnnx"><p class="svelte-1ocjnnx">Blind signatures are a cryptographic technique invented by David Chaum in 1982. They allow 3 us to sign a token proving it's valid, without ever seeing the token itself. This breaks 4 the link between your payment and your usage.</p></div> <div class="steps-timeline svelte-1ocjnnx"></div> <div class="signatures-result svelte-1ocjnnx"><div class="result-icon svelte-1ocjnnx"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg></div> <div class="result-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">The Result: Perfect Unlinkability</h3> <p class="svelte-1ocjnnx">Even if compelled by law, we cannot link your purchase to your VPN usage. The cryptography 5 makes it mathematically impossible. This isn't a policy choiceâit's a technical guarantee.</p></div></div></section> <section class="wallet-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">HD Wallet & Ephemeral Keys</h2> <p class="svelte-1ocjnnx">Your credits stay on your device, always</p></div> <div class="wallet-grid svelte-1ocjnnx"></div> <div class="wallet-diagram svelte-1ocjnnx"><div class="diagram-title svelte-1ocjnnx">How It Works</div> <div class="diagram-flow svelte-1ocjnnx"><div class="diagram-item svelte-1ocjnnx"><div class="diagram-icon svelte-1ocjnnx">ð±</div> <span class="svelte-1ocjnnx">Master Seed</span></div> <div class="diagram-arrow svelte-1ocjnnx">â</div> <div class="diagram-item svelte-1ocjnnx"><div class="diagram-icon svelte-1ocjnnx">ð</div> <span class="svelte-1ocjnnx">HD Derivation</span></div> <div class="diagram-arrow svelte-1ocjnnx">â</div> <div class="diagram-item svelte-1ocjnnx"><div class="diagram-icon svelte-1ocjnnx">ð³</div> <span class="svelte-1ocjnnx">Ephemeral Wallet 1</span></div></div> <div class="diagram-flow secondary svelte-1ocjnnx"><div class="diagram-spacer svelte-1ocjnnx"></div> <div class="diagram-arrow svelte-1ocjnnx">â</div> <div class="diagram-item svelte-1ocjnnx"><div class="diagram-icon svelte-1ocjnnx">ð³</div> <span class="svelte-1ocjnnx">Ephemeral Wallet 2</span></div></div> <div class="diagram-flow secondary svelte-1ocjnnx"><div class="diagram-spacer svelte-1ocjnnx"></div> <div class="diagram-arrow svelte-1ocjnnx">â</div> <div class="diagram-item svelte-1ocjnnx"><div class="diagram-icon svelte-1ocjnnx">ð³</div> <span class="svelte-1ocjnnx">Ephemeral Wallet N...</span></div></div></div></section> <section class="credits-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Credit Issuance & Redemption</h2> <p class="svelte-1ocjnnx">Anonymous, unlinkable access to VPN services</p></div> <div class="credits-flow svelte-1ocjnnx"><div class="credits-phase svelte-1ocjnnx"><div class="phase-header svelte-1ocjnnx"><span class="phase-badge svelte-1ocjnnx">Phase 1</span> <h3 class="svelte-1ocjnnx">Issuance</h3></div> <div class="phase-content svelte-1ocjnnx"><p class="svelte-1ocjnnx">When you purchase credits, our issuance server receives blinded tokens from your device. 6 We sign them and return themânever seeing the actual token values.</p> <ul class="svelte-1ocjnnx"><li class="svelte-1ocjnnx">Payment processed normally (linked to payment method)</li> <li class="svelte-1ocjnnx">Blinded tokens signed by our issuance key</li> <li class="svelte-1ocjnnx">Signed tokens returned to your device</li> <li class="svelte-1ocjnnx">Your device unblinds and stores them locally</li></ul></div></div> <div class="credits-divider svelte-1ocjnnx"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline></svg> <span class="svelte-1ocjnnx">Cryptographic Barrier</span> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><polyline points="19 12 12 19 5 12"></polyline></svg></div> <div class="credits-phase svelte-1ocjnnx"><div class="phase-header svelte-1ocjnnx"><span class="phase-badge svelte-1ocjnnx">Phase 2</span> <h3 class="svelte-1ocjnnx">Redemption</h3></div> <div class="phase-content svelte-1ocjnnx"><p class="svelte-1ocjnnx">When you connect to the VPN, you present an unblinded token. Our redemption server 7 verifies the signature but has no way to link it to any purchase.</p> <ul class="svelte-1ocjnnx"><li class="svelte-1ocjnnx">Token presented to redemption server</li> <li class="svelte-1ocjnnx">Server verifies signature is valid</li> <li class="svelte-1ocjnnx">Token marked as used (prevents double-spending)</li> <li class="svelte-1ocjnnx">Connection grantedâno identity known</li></ul></div></div></div> <div class="credits-note svelte-1ocjnnx"><strong>Key insight:</strong>
7 Even though issuance and redemption happen on the same API server, 8 our blind signature implementation makes it cryptographically impossible to link purchases to usage. 9 The server never sees the actual token during issuance, so it cannot recognize it during redemption.</div></section> <section class="protocols-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Supported Protocols</h2> <p class="svelte-1ocjnnx">Multiple paths to privacy, each with unique strengths</p></div> <div class="protocols-grid svelte-1ocjnnx"></div></section> <section class="cloak-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Cloak Protocol</h2> <p class="svelte-1ocjnnx">Our next-generation privacy protocol (Coming Soon)</p></div> <div class="cloak-intro svelte-1ocjnnx"><p class="svelte-1ocjnnx">Cloak Protocol represents the future of privacy-preserving networking. By combining 10 decentralized server discovery using DIDs and AT Protocol handles, onion routing, and verifiable 11 presentations, we're building a protocol that offers maximum privacy through a truly 12 decentralized network of VPN nodes.</p></div> <div class="cloak-features svelte-1ocjnnx"><div class="cloak-feature svelte-1ocjnnx"><div class="cloak-feature-icon svelte-1ocjnnx"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path><path d="M12 8v4l3 3"></path></svg></div> <div class="cloak-feature-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Decentralized Server Discovery</h3> <p class="svelte-1ocjnnx">VPN server nodes use Decentralized Identifiers (DIDs) for self-sovereign identity 13 on the network. No central authority controls which nodes can participate, enabling 14 a truly censorship-resistant infrastructure.</p></div></div> <div class="cloak-feature svelte-1ocjnnx"><div class="cloak-feature-icon svelte-1ocjnnx"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"></circle><path d="M12 1v6m0 6v10"></path><path d="M21 12h-6m-6 0H1"></path></svg></div> <div class="cloak-feature-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">AT Protocol Integration</h3> <p class="svelte-1ocjnnx">Server nodes can be discovered through AT Protocol handles, making the decentralized 15 network easily navigable. Find and connect to nodes using human-readable identifiers 16 while maintaining your privacy as a user.</p></div></div> <div class="cloak-feature svelte-1ocjnnx"><div class="cloak-feature-icon svelte-1ocjnnx"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><circle cx="12" cy="12" r="6"></circle><circle cx="12" cy="12" r="2"></circle></svg></div> <div class="cloak-feature-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Onion Routing</h3> <p class="svelte-1ocjnnx">Multi-layer encryption where each hop only knows the previous and next node. 17 No single point in the network knows both source and destination.</p></div></div> <div class="cloak-feature svelte-1ocjnnx"><div class="cloak-feature-icon svelte-1ocjnnx"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M9 15l2 2 4-4"></path></svg></div> <div class="cloak-feature-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Verifiable Presentations</h3> <p class="svelte-1ocjnnx">Selectively disclose credentials without revealing your full identity. 18 Prove you're over 18 without sharing your birthdate. Prove membership without 19 revealing your name.</p></div></div></div></section> <section class="nologs-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Zero Logs Architecture</h2> <p class="svelte-1ocjnnx">What we don't collect, we cannot share</p></div> <div class="nologs-grid svelte-1ocjnnx"><div class="nologs-card not-collected svelte-1ocjnnx"><h3 class="svelte-1ocjnnx"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg> We Never Collect</h3> <ul class="svelte-1ocjnnx"><li class="svelte-1ocjnnx">IP addresses (yours or destinations)</li> <li class="svelte-1ocjnnx">Connection timestamps</li> <li class="svelte-1ocjnnx">Session duration</li> <li class="svelte-1ocjnnx">Bandwidth usage</li> <li class="svelte-1ocjnnx">DNS queries</li> <li class="svelte-1ocjnnx">Browsing history</li> <li class="svelte-1ocjnnx">Traffic content</li> <li class="svelte-1ocjnnx">User identity information</li></ul></div> <div class="nologs-card minimal-data svelte-1ocjnnx"><h3 class="svelte-1ocjnnx"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg> Minimal Operational Data</h3> <ul class="svelte-1ocjnnx"><li class="svelte-1ocjnnx">Payment records (separate from usage)</li> <li class="svelte-1ocjnnx">Token redemption status (spent/unspent)</li> <li class="svelte-1ocjnnx">Aggregate network statistics</li></ul> <p class="nologs-note svelte-1ocjnnx">This data cannot be linked to any individual user or session due to our 20 blind signature protocol.</p></div></div> <div class="nologs-guarantee svelte-1ocjnnx"><div class="guarantee-icon svelte-1ocjnnx"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg></div> <div class="guarantee-content svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Our Guarantee</h3> <p class="svelte-1ocjnnx">Even if served with a legal request, we have no logs to provide. Our architecture 21 makes it technically impossible to comply with surveillance requestsânot because 22 we refuse, but because we never collected the data in the first place.</p></div></div></section> <section class="trust-section svelte-1ocjnnx"><div class="section-header svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Don't TrustâVerify</h2> <p class="svelte-1ocjnnx">Privacy through mathematics, not promises</p></div> <div class="trust-content svelte-1ocjnnx"><div class="trust-item svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Open Cryptographic Standards</h3> <p class="svelte-1ocjnnx">We use well-established cryptographic protocols that have been peer-reviewed and 23 battle-tested. Blind signatures (RSA-based), HD wallets (BIP-32/39), and standard 24 encryption algorithms.</p></div> <div class="trust-item svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">
24Decentralized Infrastructure</h3> <p class="svelte-1ocjnnx">By supporting decentralized protocols like Nym and Mysterium, we remove ourselves 25 as a single point of trust. No central authority controls the network.</p></div> <div class="trust-item svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Client-Side Verification</h3> <p class="svelte-1ocjnnx">Your app performs cryptographic verification locally. You don't need to trust 26 our servers to tell the truthâthe math proves it.</p></div> <div class="trust-item svelte-1ocjnnx"><h3 class="svelte-1ocjnnx">Cryptographic Separation</h3> <p class="svelte-1ocjnnx">Even though issuance and redemption happen on the same server, blind signatures 27 ensure these operations cannot be correlated. No system has enough information to identify users.</p></div></div></section> <section class="summary-section svelte-1ocjnnx"><div class="summary-card svelte-1ocjnnx"><h2 class="svelte-1ocjnnx">Privacy Is Not Optional</h2> <p class="svelte-1ocjnnx">At mooncloak, privacy isn't a featureâit's the foundation. Every architectural 28 decision we make is guided by one question: "Can this be used to identify or track 29 our users?" If the answer is yes, we redesign it.</p> <p class="svelte-1ocjnnx">The result is a VPN service that doesn't just promise privacyâit mathematically 30 guarantees it. We've built a system where surveillance is impossible by design, 31 not just by policy.</p> <div class="summary-cta svelte-1ocjnnx"><a href="/" class="cta-button svelte-1ocjnnx">Try mooncloak <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg></a></div></div></section> <!></div>`);function Ue(Z,$){ce($,!1);const W="VPN Privacy Architecture - mooncloak",T="A technical overview of how the mooncloak VPN app protects your privacy through blind signatures, ephemeral wallets, decentralized protocols, and privacy-by-design architecture.",Q={"@context":"https://schema.org","@type":"TechArticle",name:W,description:T,url:`${x.baseUrl}/privacy-architecture`,publisher:{"@type":"Organization",name:x.siteName}},X=[{icon:"eye-off",title:"Privacy by Design",description:"We built mooncloak so we cannot collect your data, even if compelled. Our architecture makes surveillance impossible, not just policy."},{icon:"user-x",title:"No Accounts Required",description:"No email, no phone number, no personal information. Just download and connect. Your identity stays yours."},{icon:"unlink",title:"Unlinkable Sessions",description:"Each connection is cryptographically unlinkable. We cannot correlate your sessions, usage patterns, or activity."},{icon:"server-off",title:"Zero Logs",description:"We do not log connection times, IP addresses, bandwidth, or any metadata. What we don't collect, we cannot share."}],ee=[{name:"Nym Mixnet",status:"Available",description:"Maximum privacy through multi-hop routing and traffic mixing. Your packets are encrypted in layers and mixed with others, making traffic analysis impossible.",features:["Multi-hop encryption (similar to Tor, but with timing protection)","Traffic mixing to defeat timing analysis","Decentralized network of mix nodes","Resistant to global adversaries"],useCases:"Best for: Maximum anonymity, sensitive communications, protection against sophisticated adversaries."},{name:"Mysterium Network",status:"Available",description:"Decentralized VPN marketplace with peer-to-peer connections. Your traffic is routed through independent node operators worldwide.",features:["Peer-to-peer VPN connections","Decentralized node marketplace","No central point of failure","Censorship-resistant infrastructure"],useCases:"Best for: General privacy, accessing geo-restricted content, decentralized infrastructure."},{name:"Cloak Protocol",status:"Coming Soon",description:"Our custom protocol combining decentralized server discovery, onion routing, and verifiable presentations for the next generation of privacy.",features:["DIDs and AT Protocol handles for server node discoverability","Decentralized network of VPN n
31odes","Multi-layer onion encryption","Verifiable presentations for selective disclosure"],useCases:"Best for: Users wanting cutting-edge privacy with decentralized infrastructure."}],te=[{step:1,title:"Purchase Credits",description:"You purchase credits through standard payment methods. This creates a record of payment, but not of usage."},{step:2,title:"Blind Your Token",description:'Your app generates a random token and "blinds" it using cryptographic blinding. We cannot see the original token.'},{step:3,title:"Server Signs Blind Token",description:"Our server signs the blinded token, proving it's valid, without ever seeing the actual token value."},{step:4,title:"Unblind & Store Locally",description:"Your app unblinds the signature. Now you have a valid, signed token that we've never seen and cannot link to your purchase."},{step:5,title:"Redeem Anonymously",description:"When you connect, you present the unblinded token. We verify the signature but cannot link it to the original purchase."}],se=[{title:"HD Wallet Architecture",description:"Your credits are stored in a hierarchical deterministic wallet on your device. A single seed generates unlimited ephemeral wallets for maximum privacy."},{title:"Ephemeral Wallets",description:"Each VPN session can use a fresh wallet address. This prevents correlation of your activity across sessions."},{title:"Local Storage Only",description:"Your wallet and credits never leave your device. We have no server-side record of your balance or transactions."},{title:"Backup & Recovery",description:"Export your encrypted wallet seed to recover your credits on a new device. Only you control access."}];xe();var I=Me();ge("1ocjnnx",j=>{var n=je(),o=V(n);c(o,"content",T);var i=e(o,2),d=e(i,4),p=e(d,2);c(p,"content",W);var r=e(p,2);c(r,"content",T);var u=e(r,2),f=e(u,2),g=e(f,6),_=e(g,2),v=e(_,4),m=e(v,2);c(m,"content",W);var k=e(m,2);c(k,"content",T);var P=e(k,2),C=e(P,2),y=e(C,4);ue(y,()=>`<script type="application/ld+json">${JSON.stringify(Q)}<\/script>`),N(()=>{c(i,"href",`${x.baseUrl}/privacy-architecture`),c(d,"content",x.siteName),c(u,"content",`${x.baseUrl}/privacy-architecture`),c(f,"content",x.defaultImage),c(g,"content",x.defaultImageAlt),c(_,"content",x.locale),c(v,"content",x.twitterHandle),c(P,"content",x.defaultImage),c(C,"content",x.defaultImageAlt)}),de(()=>{pe.title="VPN Privacy Architecture - mooncloak"}),l(j,n)});var O=e(s(I),4),L=e(s(O),2);M(L,5,()=>X,S,(j,n)=>{var o=_e(),i=s(o),d=s(i);{var p=v=>{var m=fe();l(v,m)},r=v=>{var m=q(),k=V(m);{var P=y=>{var w=we();l(y,w)},C=y=>{var w=q(),R=V(w);{var oe=B=>{var A=ke();l(B,A)},ie=B=>{var A=q(),ae=V(A);{var re=U=>{var le=be();l(U,le)};D(ae,U=>{a(n).icon==="server-off"&&U(re)},!0)}l(B,A)};D(R,B=>{a(n).icon==="unlink"?B(oe):B(ie,!1)},!0)}l(y,w)};D(k,y=>{a(n).icon==="user-x"?y(P):y(C,!1)},!0)}l(v,m)};D(d,v=>{a(n).icon==="eye-off"?v(p):v(r,!1)})}t(i);var u=e(i,2),f=s(u,!0);t(u);var g=e(u,2),_=s(g,!0);t(g),t(o),N(()=>{h(f,a(n).title),h(_,a(n).description)}),l(j,o)}),t(L),t(O);var E=e(O,2),F=e(s(E),4);M(F,5,()=>te,S,(j,n)=>{var o=Pe(),i=s(o),d=s(i,!0);t(i);var p=e(i,2),r=s(p),u=s(r,!0);t(r);var f=e(r,2),g=s(f,!0);t(f),t(p),t(o),N(()=>{h(d,a(n).step),h(u,a(n).title),h(g,a(n).description)}),l(j,o)}),t(F),K(2),t(E);var H=e(E,2),G=e(s(H),2);M(G,5,()=>se,S,(j,n)=>{var o=Ce(),i=s(o),d=s(i,!0);t(i);var p=e(i,2),r=s(p,!0);t(p),t(o),N(()=>{h(d,a(n).title),h(r,a(n).description)}),l(j,o)}),t(G),K(2),t(H);var Y=e(H,4),J=e(s(Y),2);M(J,5,()=>ee,S,(j,n)=>{var o=Ne(),i=s(o),d=s(i),p=s(d,!0);t(d);var r=e(d,2);let u;var f=s(r,!0);t(r),t(i);var g=e(i,2),_=s(g,!0);t(g);var v=e(g,2);M(v,5,()=>a(n).features,S,(C,y)=>{var w=Be(),R=e(s(w));t(w),N(()=>h(R,` ${a(y)??""}`)),l(C,w)}),t(v);var m=e(v,2),k=s(m),P=s(k,!0);t(k),t(m),t(o),N(()=>{h(p,a(n).name),u=he(r,1,"protocol-status svelte-1ocjnnx",null,u,{"coming-soon":a(n).status==="Coming Soon"}),h(f,a(n).status),h(_,a(n).description),h(P,a(n).useCases)}),l(j,o)}),t(J),t(Y);var ne=e(Y,10);me(ne,{}),t(I),l(Z,I),ve()}export{Ue as component,Re as universal};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.