d71d6de05f
A single Bitcoin transaction with N outputs now produces a single kind 8333 onchain-zap event listing every recipient under its own `p` tag, instead of one event per recipient. The `amount` tag carries the total sats paid to the listed recipients (the full donation, excluding the donor's change). This is straight-forward forward-compatibility: legacy single-recipient events are just the degenerate case (one `p` tag, amount equal to the one recipient's slice). Aggregators (`useCampaignDonations`, `useGlobalDonations`) simplify to summing the `amount` tag across every matching event — under both schemas an event's `amount` is the total paid to the recipients listed in that event, so the sum across all events for a campaign is the campaign total either way. The verifier (`verifyOnchainZap`) now sums tx outputs paying any listed recipient's derived Taproot address and strips the sender from the recipient set so a tx that includes the sender plus legitimate recipients still verifies. The notifications surface uses a new `getZapAmountSatsForRecipient` helper to attribute only the viewer's estimated slice (amount / p_count) rather than crediting them with the full multi-recipient donation. `CampaignDetailPage` keeps its group-by-(txid, donor) reply rendering so legacy multi-event donations still collapse to a single donation card.