PAY-AS-YOU-LISTEN
A podcast listener pays the podcaster while they listen — through one Cashu Spilman channel instead of a separate invoice every minute.
Today's Value4Value streaming pays per interval, so a 90-minute episode means 90 round trips to a mint. We replaced all of them with a single prepaid channel that the listener re-signs and the server verifies locally, without asking anyone. Whatever the listener does not spend comes back on close.
The amount is chosen by the listener, not the server: the podcaster advertises no price, only a minimum channel size, which is what Value4Value means. We built both sides from source — the Rust channel core with PyO3 bindings for the Python server and WASM for the browser player — because Spilman is a still-open specification with no released package on PyPI, npm or crates.io. All of it was proven end to end against a real mint: real keysets, real signatures, a full open-pay-close cycle.
The same mechanism fits anything billed by usage — streaming video, API calls, metered compute. Sovereigncast and the Nodesignal Cashu Player are both self-hosted: no third party, no listener account, and the mint sees two swaps instead of a hundred.
A podcast player for exactly one podcast that shows that value-for-value with Ecash works. The listener loads a local wallet containing a Cashu token and When listened to, it sends Nutzaps to NIP-61.
Basis:docs/spezifikation-nodesignal-showcase.md. Derived fromactionsslave/cashu-player(SFR-01).Payment source: local wallet
The only payment source is thelocal wallet on this device. Charge goes via a Cashu token from each mint the browser can reach; Nodesignal exchanges other people's mints for the trusted list. Boosts and Streaming, on the other hand, is running. Every Nutzap(kind:9321) requires a Nostr signature; The player generates them using a local key in IndexedDB. One Browser extension is not necessary.
Without tokens, the episode list and playback remain free; payments require credit in the local wallet (SFR-12).
The former NIP-60 source (nostr wallet including session float) was accessed on September 14, 2026 cancel. The deleted requirements remain in the specification.
How this handle channel state persistence across browser sessions?
Cashu for pay-per-listen is one of those ideas that's obviously right once you see it. Streaming pays artists fractions of a cent per play through layers of intermediaries. Direct micropayments cut all of that out. The UX challenge is making it invisible — nobody wants to approve a payment per song. If the wallet handles it in the background with a spending budget, this could actually work.
Cashu for pay-per-listen is one of those ideas that's obviously right once you see it. Streaming pays artists fractions of a cent per play through layers of intermediaries. Direct micropayments cut all of that out. The UX challenge is making it invisible — nobody wants to approve a payment per song. If the wallet handles it in the background with a spending budget, this could actually work.