Open protocols
Listings, files and zaps run on open protocols, outside any Zapstore database. Here is how Zapstore uses each one.
Because this data lives on open protocols, anyone can read it, mirror it or run a replacement catalog without asking Zapstore. A developer dropped from one catalog can publish to another, and people can switch catalogs inside the same app.
Nostr
Nostr carries everything that describes an app. A listing is a set of signed events, a developer is a pubkey, and a catalog is a relay that serves the events. Anyone can read them and check their signatures, whichever relay served them.
Listings
An app, its releases and its files are three kinds of event. A catalog relay accepts them, and the Android app reads them from the relay or from a bundle, the whole catalog in one download.
- NIP-82 Software Applications. Kinds
32267(app),30063(release), and3063(asset). - NIP-A5 App Stacks. Kind
30267. - NIP-AC App Catalog Relay List. Kind
10067. - NIP-C1 Cryptographic Identity Proofs. Kind
30509.
Identity and signing
A developer signs listings with their pubkey, and links it to the APK signing certificate with a claim (NIP-C1). A signed-in user has the same kind of pubkey.
Blossom
Blossom stores files by the SHA-256 of their bytes. Zapstore uses it for the files a listing points to: the APK, the icon and the screenshots. The catalog's Blossom server is https://cdn.zapstore.dev.
- A file is named by its hash. An asset event carries the file's SHA-256. When it has no
url, clients find the file by that hash on a Blossom server. - Where the file lives is the developer's choice. zsp takes the APK from the developer's release source, such as a code forge. It uploads the APK to Blossom only when there is no public source, and uploads the icon and screenshots.
- The app checks the file, not the server. Whoever serves a file, Zapstore checks the download against the listing before it installs. See Security.
- Uploads follow the same rules as publishing. A pubkey that may publish may upload. The catalog’s Blossom server accepts only APKs and images.
Lightning
Zaps pay developers directly over Bitcoin's Lightning network.
- Zap receipts are how the app shows an app’s total and the people who zapped.
- A zap goes to the pubkey on the app's current claim, not through Zapstore, with no fee. It is paid to the Lightning address (
lud16) on that pubkey's profile. - With no current claim, the zap goes to the catalog that supplied the app, and the app says so. A listing has no zap field.
More on zaps for users is in Social, and for developers in Publishing apps.