Contracts live on LitVM LiteForge testnet

One address in public.
A fresh address
every payment.

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.

Non-custodial · No mixer, no pool · Canonical ERC-5564 / ERC-6538 contracts audited by Trail of Bits
How it works

Privacy from one signature.
No new seed phrase. No mixer.

Lunaria uses stealth addresses — the same cryptography standardized in ERC-5564 — to break the link between your public identity and the payments you receive.

01 / RECEIVE

Sign once, share anywhere

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.

st:litvm:0x0317…91f0
02 / SEND

Every payment, a fresh address

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.

→ 0xe840…93ea  (never seen before)
03 / SPEND

Scan and withdraw, privately

Your wallet scans the chain locally with your viewing key — it never leaves your device — finds your payments, and withdraws them wherever you want.

3 payments found · 412.50 zkLTC
Senderknows only their payment
Fresh stealth addressunlinkable, one-time
Youthe only one who can detect & spend
Observersees public data, not the recipient link
Why Lunaria

Litecoin's privacy ethos,
extended to its Virtual Machine

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.

Not a mixer

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.

Non-custodial, always

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.

Standards-based foundation

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.

Open infrastructure

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.

ERC-5564 + 6538
canonical audited contracts
0 custody
keys and scanning stay client-side
1% optional router
transparent ERC-20 atomic settlement
ERC-20 payments on testnet

Atomic token payments,
with the trade-offs in plain sight

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.

Example · gross payment

What happens to 100 TOKEN

Payer authorizes100.00 TOKEN
Recipient receives99.00 TOKEN
Lunaria routing fee1.00 TOKEN

Withdrawal gas is included separately. The payer supplies a small zkLTC reserve so the fresh recipient address can later withdraw its tokens.

One atomic settlement

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.

Optional by design

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.

Immutable testnet boundaries

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.

Compatibility: v1 requires exact ERC-20 balance accounting. Fee-on-transfer, rebasing, paused, blacklisted, malformed, or adversarial tokens may revert safely. The custom router is unaudited and intended only for LiteForge testnet evaluation. Verify the deployed router ↗
For builders

Add private receiving in an afternoon

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.

Public SDK docs in preparation
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.

Hard money deserves
quiet payments.

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.