diff --git a/src/components/slides/ZapReceiptSlide.vue b/src/components/slides/ZapReceiptSlide.vue new file mode 100644 index 0000000..1ef1fad --- /dev/null +++ b/src/components/slides/ZapReceiptSlide.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/components/slides/ZapSlide.vue b/src/components/slides/ZapSlide.vue index ba72b33..99fe0ff 100644 --- a/src/components/slides/ZapSlide.vue +++ b/src/components/slides/ZapSlide.vue @@ -29,10 +29,12 @@ import SlideShell from './SlideShell.vue' The receipt · the Nostr part -

Their Lightning server publishes a signed zap receipt.

+

Their Lightning provider signs a zap receipt.

- Once the invoice clears, the server signs a receipt proving payment and posts it to relays. - Now the zap shows up publicly under the note — amount, sender, comment. + The provider has its own Nostr key. When the invoice clears it + signs a kind 9735 event — tagged with + who was zapped and embedding your signed request (which says who + zapped, how much, and any comment) — then posts it to the relays you named.

@@ -47,10 +49,11 @@ import SlideShell from './SlideShell.vue'

- Under the hood (NIP-57): your client attaches a signed - zap request (kind 9734); the recipient’s server returns a - zap receipt (kind 9735). The server must opt in via - allowsNostr. + Under the hood (NIP-57): your signed + zap request (kind 9734) rides along with the LNURL-pay invoice; the + provider advertises allowsNostr + its + nostrPubkey, and clients only trust a + 9735 receipt signed by that key. (Next: its anatomy →)

diff --git a/src/features/slides/slides.ts b/src/features/slides/slides.ts index 6229036..9425035 100644 --- a/src/features/slides/slides.ts +++ b/src/features/slides/slides.ts @@ -10,6 +10,7 @@ import OutboxSlide from '@/components/slides/OutboxSlide.vue' import RelayCategoriesSlide from '@/components/slides/RelayCategoriesSlide.vue' import RelayAccessSlide from '@/components/slides/RelayAccessSlide.vue' import ZapSlide from '@/components/slides/ZapSlide.vue' +import ZapReceiptSlide from '@/components/slides/ZapReceiptSlide.vue' import ResourcesSlide from '@/components/slides/ResourcesSlide.vue' /** @@ -205,6 +206,11 @@ export const slides: Slide[] = [ label: 'How a zap works', component: ZapSlide, }, + { + id: 'zap-receipt', + label: 'Zap receipt anatomy', + component: ZapReceiptSlide, + }, { id: 'recap', label: 'Recap',