<oembed><type>rich</type><version>1.0</version><title>charliesurf wrote</title><author_name>charliesurf (npub15w…tpy0d)</author_name><author_url>https://nostr.now/npub15wtwxm5k92v3mtppwvwaghdzaclajfjavhuc88q4s3effmyeruwqmtpy0d</author_url><provider_name>njump</provider_name><provider_url>https://nostr.now</provider_url><html>how does nostr track who zaps who? #asknostr &#xA;&#xA;Nostr doesn’t track zaps at the protocol level.&#xA;Zaps are inferred by clients by correlating Lightning payments with Nostr events.&#xA;&#xA;Here’s the exact flow,&#xA;&#xA;1. Zap request (Nostr side)&#xA;&#xA;User A clicks “zap” on User B’s note or profile.&#xA;&#xA;User A’s client creates a zap request event:&#xA;&#xA;kind 9734&#xA;&#xA;Contains:&#xA;&#xA;pubkey of zapper&#xA;&#xA;pubkey of recipient&#xA;&#xA;note ID (optional)&#xA;&#xA;amount (msats)&#xA;&#xA;comment (optional)&#xA;&#xA;This event is signed and sent to relays.&#xA;&#xA;&#xA;2. Invoice generation (LNURL)&#xA;&#xA;User B’s profile has an LNURL / Lightning address in metadata.&#xA;&#xA;User A’s client calls that LNURL endpoint.&#xA;&#xA;The endpoint returns a Lightning invoice that includes:&#xA;&#xA;The zap request event encoded in the invoice description or metadata.&#xA;&#xA;&#xA;3. Payment (Lightning side)&#xA;&#xA;User A pays the invoice.&#xA;&#xA;Lightning itself is blind — it doesn’t know about Nostr.&#xA;&#xA;No identity is revealed on Lightning.&#xA;&#xA;&#xA;4. Zap receipt (bridge back to Nostr)&#xA;&#xA;After payment:&#xA;&#xA;The LNURL server verifies payment.&#xA;&#xA;It publishes a zap receipt event:&#xA;&#xA;kind 9735&#xA;&#xA;References:&#xA;&#xA;the original zap request (9734)&#xA;&#xA;the invoice / preimage&#xA;&#xA;recipient pubkey&#xA;&#xA;This receipt is sent to Nostr relays.&#xA;&#xA;&#xA;5. Client-side reconstruction (this is the key)&#xA;&#xA;Clients infer “who zapped who” by:&#xA;&#xA;Matching 9735 (receipt) → 9734 (request)&#xA;&#xA;Verifying signatures&#xA;&#xA;Checking pubkeys and note IDs&#xA;&#xA;Summing amounts per pubkey&#xA;&#xA;There is no global ledger.&#xA;&#xA;Each client independently reconstructs zap history from events it sees.&#xA;&#xA;&#xA;Important implications:&#xA;&#xA;Zaps are soft-consensus, not canonical.&#xA;&#xA;Relays don’t enforce zap validity.&#xA;&#xA;Different clients may show different zap counts.&#xA;&#xA;Fake zap receipts are possible, but good clients verify:&#xA;&#xA;-invoice hash&#xA;&#xA;-preimage&#xA;&#xA;-LNURL domain&#xA;&#xA;-signature chain&#xA;&#xA;&#xA;&#xA;Nostr = intent + attribution&#xA;Lightning = payment&#xA;Clients = accountants&#xA;&#xA;you can create custom zap analytics, trust scores, weighted zaps, or verified-only modes without touching the protocol.</html></oembed>