Lunaria brings stealth-address payment privacy to Litecoin's Virtual Machine. Share one payment address for zkLTC and tokens — each sender pays a fresh recipient address controlled by you.
Lunaria uses stealth addresses — the same cryptography standardized in ERC-5564 — to break the link between your public identity and the payments you receive.
Connect your wallet and sign a single message. That derives your stealth keys and produces one shareable payment address — put it in your bio, invoice, or payment link.
When someone pays you, their wallet derives a brand-new one-time address only you can spend from. The payment is public on-chain, without exposing its connection to your shared identity.
Your wallet scans the chain locally with your viewing key — it never leaves your device — finds your payments, and withdraws them wherever you want.
Litecoin pioneered mainstream payment privacy with MWEB. But MWEB lives on the base layer — its privacy can't cross into LitVM. Lunaria restores it on the smart-contract side, with hard-money pragmatism: no pools, no anonymity sets, no custody.
No pooled funds, no anonymity set, nothing to launder. Every payment is a direct transfer both counterparties can fully account for. Receiving privacy — the digital equivalent of handing out a fresh address, automatically.
Your keys derive from your own wallet signature and never leave your device. Lunaria's infrastructure serves public announcements but cannot associate them with you or touch your funds.
Built on canonical ERC-5564 / ERC-6538 contracts audited by Trail of Bits and cross-validated against the reference SDK. The optional ERC-20 router is separate custom testnet software and is not audited.
An SDK, a public announcement indexer, and reference contracts — free for every wallet, merchant tool, and payment app on LitVM to build on. Lunaria is a public good for the Litecoin ecosystem.
Lunaria's stealth-address protocol is open and permissionless. The payment router is an optional convenience contract for conventional ERC-20 tokens: it bundles the privacy announcement, token split, and the recipient's withdrawal gas into one all-or-nothing payment. Native zkLTC payments do not use the router and do not pay its fee.
Withdrawal gas is included separately. The payer supplies a small zkLTC reserve so the fresh recipient address can later withdraw its tokens.
The announcement, 99% recipient transfer, 1% fee, and zkLTC gas reserve all succeed together or the complete payment reverts. A successful normal call leaves no funds in the router.
Developers can send ERC-20s to stealth addresses without the router and without its fee. That path requires two carefully ordered transactions, is not atomic, and does not fund the recipient's withdrawal gas.
The deployed v1 fee is fixed at 1% and cannot be changed. It supports fresh EOA recipients only. There is no owner, pause switch, token allowlist, or upgrade proxy.
One dependency. Derive keys from a wallet signature, generate stealth addresses for your users, scan with view-tag filtering. Payment links, invoicing, payroll — anything that receives funds can receive them privately.
import { deriveStealthKeys, generateStealthAddress }
from "@lunaria/sdk";
// recipient: one signature, reusable forever
const keys = deriveStealthKeys(await wallet.signMessage(MSG));
// sender: fresh unlinkable address per payment
const { stealthAddress, ephemeralPublicKey, viewTag } =
generateStealthAddress(recipient.metaAddress);
// → pay stealthAddress, announce on-chain. done.
The canonical contracts and ERC-20 router are live on LiteForge. The reference app is completing connected-wallet and multi-token acceptance before public testnet promotion.