Nostr vs Emojery

Both sign every reaction with your own key. Nostr is built for portable, uncensorable posting; Emojery is built for a count that means something.

The same first step, different goals

Nostr is an open protocol: you hold a key pair, your client signs each post or reaction with it, and sends it to any number of independent servers called relays. Nobody can post in your name, and no single company can switch your account off.

Emojery starts the same way: every reaction is signed by a key on your device, so the server can't react for you. From there the 2 designs want different things. Nostr wants your voice to be portable and hard to silence. Emojery wants the number under a post to be worth reading: 1 account adds 1 to it, and anyone can recount it. Those goals pull in opposite directions, and the table below shows where.

Side by side

Question Nostr Emojery
Who signs a reaction Your key A key on your device
Can the server forge your reaction No No
Cost of 1 fake reaction A new key, which is free A real account at a sign-in provider
One account, one reaction Per key, and 1 person can hold any number of keys Per provider account, with a public proof that each account is real
Does everyone see the same count No: each client adds up whatever its relays returned Yes: 1 public log, anchored in Sigstore Rekor and mirrored
Can you show nothing was left out No: a relay can skip events without leaving a trace Yes for the published log: a count must equal a recount of every entry, and an entry can't vanish without breaking the signed history
Showing a count under a post Fetch every reaction to that post from several relays and add them up, or trust 1 relay's own total 1 cached request
Dealing with fake votes Each client and relay filters on its own A public reversal of the account's whole history, recorded in the log
Deleting your reactions A deletion request that relays may ignore Deleting your account takes your reactions out of the counts
Who runs it Anyone can run a relay; there is no central operator Emojery runs the service; the log, its copies, and the verifier are public
Sign-in None: the key is the account 1 provider sign-in, needed only to react; reading counts takes none
Works in other apps Any Nostr client The Emojery extension; the log is open to any tool that reads it

Why the Nostr model doesn't fit a reaction count

A key costs nothing, so a count of keys means nothing

Making a Nostr key takes milliseconds. That is the point of the protocol, and it is fine for posting: a reader decides whom to follow. A reaction count is different. If 10,000 new keys can each add 1, the number measures how many keys someone made. Nostr's spam defences (paid relays, proof of work in NIP-13, trust in people you follow) help a feed. They don't help a stranger reading the count under a post on X or YouTube, who has no Nostr follow list to lean on.

Emojery prices a vote at 1 real provider account, and the log shows every account that was opened. Someone with many accounts still gets many votes, but each one costs a real sign-in and is visible to anyone who recounts.

No relay can prove it showed you everything

A relay returns the events it chooses to return. If it skips some reactions, nothing in the protocol tells you, and 2 clients connected to different relays will show different numbers for the same post. Relays can also report a total directly (NIP-45), but then you are trusting that relay's word.

Emojery's log is a single append-only history. Its signed checkpoints are anchored in Sigstore Rekor and copied to a public mirror, so everyone is shown the same history, and the open-source verifier recomputes every count from it. A count that doesn't match the entries fails the check.

Counting is left to every reader

Reactions in Nostr are individual events (NIP-25). To show a number, a client fetches every reaction to that item from each relay it uses and adds them up. A feed on X shows 20 to 40 posts per screen, so that becomes a stream of queries on every scroll. Emojery answers 1 request per post from a short cache, and the counting is done once, in the open, where anyone can redo it.

Deletion is a request, not a guarantee

A Nostr deletion (NIP-09) asks relays to drop an event; a relay that already copied it can keep serving it. In Emojery, deleting your account always takes your reactions out of the counts, and that reversal is itself a public entry anyone can check. The same goes for fake votes: removing them is a visible reversal of an account's whole history, never a quiet edit.

Where Nostr is stronger

No single operator

Nostr has no company in the middle. If 1 relay refuses you, you post to another. Emojery is run by 1 operator: if the service stops, new reactions stop. What survives is the public log and its copies, which keep every count checkable after we are gone.

An identity you carry everywhere

A Nostr key works in any Nostr client, for posts, messages and reactions alike. An Emojery account exists for reactions in the Emojery extension.

No sign-in with a provider

Nostr asks for nothing but a key. Emojery asks for 1 sign-in with a provider you already use, and that provider learns that you signed in to Emojery. It never learns what you react to; How sign-in works covers exactly what each side sees.

The bottom line

Nostr is a good answer to "who owns my account and my posts". It is a poor answer to "how many real people reacted to this", because keys are free and no relay can show it gave you everything. Emojery keeps the part they share, a reaction signed on your device, and adds the 2 things a count needs: a real account behind every vote, and 1 public history anyone can recount.