Threat model
Privacy that only looks right is worse than none, because people rely on it. Here is the whole picture.
After an organiser purges a settled event, only aggregate counts remain: how many RSVPed, came, were refunded and were forfeited.
The same address at two events would link one person's attendance across both.
Mitigation · The server refuses any address it has seen before and returns the deposit.
Loading a page reveals an IP address to the web host and the API host, and their providers may log it.
Mitigation · The API itself keeps no access logs. Confirmation checks download every ticket hash, so no request points at one ticket, and your ticket list never asks about all your events at once. For high-risk groups, open the pages over Tor.
To read a deposit's memo, the server's wallet fetches that transaction from a lightwalletd server. Its operator would learn which transactions are RSVPs, and could match them to attendees' own wallets broadcasting through the same server.
Mitigation · The wallet reaches lightwalletd through Tor, with a fresh circuit for every transaction it fetches. Operators can also run their own lightwalletd.
Memos stay in a wallet's history for good, and anyone who later sees the wallet can read them.
Mitigation · Refunds and returns carry a fixed memo that never names the event, and purging wipes the event's name, so the event id in your deposit memo leads nowhere.
A unique deposit amount could stand out.
Mitigation · Every RSVP must pay exactly the same deposit, so inside the shielded pool they all look alike. Anything else is returned. Organisers should pick a round amount.
Paying from a transparent (t-address) balance shows the payer's address and the exact deposit amount on the public chain, which can tie them to the event.
Mitigation · Event addresses are Orchard-only and refunds are sent with the wallet's FullPrivacy policy. Attendees should pay from a shielded balance.
Whoever holds the QR code can use it once.
Mitigation · Treat it like a physical ticket. It is stored only on the attendee's device, and the saved image doesn't name the event. Remove tickets for past events from your ticket list.