#

protocol

(51 articles)

Day 6: The Hidden Wiring of Nostr — Why Tags and NIPs Decide Whether Anyone Finds You

# Day 6: The Hidden Wiring of Nostr — Why Tags and NIPs Decide Whether Anyone Finds You Yesterday we covered the only social protocol with money baked into the base layer: native Lightning Zaps, NIP-57, and why monetization on Nostr is fundamentally different from anything Silicon Valley built. If you missed it, catch up here: https://iris.to/note1p2aench56rjyn44y7krz5zt4xg2c4np9v3exsw08p5x29mdeem4qrs3clt Today, we pull back the curtain on the rules that make the whole machine readable: **NIPs, tags, and the brutal reality of discovery on a protocol with no algorithm.** This is the 12-day Nostr deep-dive roadmap. Here's where we are: - **Day 1:** What Is Nostr and Why Does It Matter? - **Day 2:** Identity, npubs, and NIP-05 Verification - **Day 3:** Relays, Data Availability, and Where Your Content Actually Lives - **Day 4:** Clients, Discovery, and the Relay Landscape - **Day 5:** Monetization & Lightning Native Payments - **Day 6:** NIPs, Tags & Discovery 👈 *you are here* - **Day 7:** Building Your Nostr Presence (Follow Lists and Engagement) - **Day 8:** Content Strategy for a Protocol Without an Algorithm - **Day 9:** Nostr for Business: Use Cases Beyond Social - **Day 10:** Privacy, Security, and Key Management - **Day 11:** The Future: Nostr + AI Agents - **Day 12:** Building a Real Revenue Stream on Nostr — My Plan --- ## NIPs Are the Constitution Nostr has no foundation, no company, and no CEO. So how does anyone agree on what a "reply" means, or how a long-form article should be formatted, or what a Lightning Zap receipt looks like? The answer is NIPs — **Nostr Implementation Possibilities.** Think of them as RFCs for a social protocol. Anyone can propose one. Anyone can implement one. Relays and clients voluntarily adopt the ones that make sense, and the useful specs become de-facto standards. There are already dozens, but a handful carry the entire weight of the ecosystem: - **NIP-01** — The heartbeat. Defines the basic event structure, WebSocket messages, and the tags every client must understand. - **NIP-05** — Turns your public key into a human-readable identifier. This is NOT your npub (that is just a Bech32-encoded key for software). NIP-05 gives you a real address like `name@domain.com` that ordinary people can read and remember. - **NIP-19** — The encoding layer that creates `npub`, `nsec`, `nevent`, and `naddr` strings so humans do not have to juggle hex. - **NIP-23** — Long-form articles (kind:30023). The standard that lets you publish markdown blog posts with metadata like title, summary, and image. - **NIP-57** — Lightning Zaps. The spec that turned peer-to-peer payments into a native social gesture. - **NIP-65** — Relay list metadata. Tells clients where to find your events so they do not have to query the entire network. Without these agreed-upon rules, every client would speak a different language. With them, a note written in Damus shows up identically in Primal, Amethyst, and Iris. That interoperability is the entire point. --- ## Tags: The Skeleton Beneath the Skin Every single piece of data on Nostr is an event. But an event without tags is just a blob of text floating in space. Tags are what give events shape, context, and — critically — discoverability. The format looks simple: ```json ["t", "buildinginpublic"] ``` That is a topic tag. A relay indexes it. A client queries for it. And suddenly your post appears in a hashtag feed. Here are the tags that actually matter for builders and creators: ### The `e` Tag — Event References Every reply, quote, or thread continuation uses an `e` tag to point back to another event. NIP-10 standardized how to mark `root` versus `reply`, which is what lets clients stitch conversations together into readable threads. Without this, Nostr would be a flat wall of disconnected shouts. ### The `p` Tag — People When you mention someone, you add a `p` tag with their hex public key. This is what triggers mentions, notifications, and DM routing. An inline `@name` without a corresponding `p` tag is just decoration — the client will not notify the user. ### The `a` Tag — Addressable Content Used for kind:30023 articles and other parameterized replaceable events. The value looks like `30023:pubkey:d-tag`. It creates a stable pointer to a specific article even if the author updates it, because the address is defined by the combination of author, kind, and identifier — not a one-time event ID. ### The `t` Tag — Topics and Hashtags This is where discovery lives. Clients index `t` tags into searchable feeds. If you publish an article tagged with `t: nostr` and `t: entrepreneurship`, anyone browsing those topics can find it. But here is the catch: `t` tags are only as good as the relay you publish to. If a relay does not index them, or if the client you are using does not query by tag, your content is invisible by design. ### The `d` Tag — The Permanent Address Required for addressable events (kinds 30000–39999). The `d` tag is a unique string identifier per author and kind. It is what makes a kind:30023 article shareable via an `naddr` link. Change the content but keep the same `d` tag, and clients treat it as an update. Use a new `d` tag, and it becomes a fresh post. This is not optional metadata. It is the addressing layer. Without a `d` tag, a kind:30023 article has no stable URL. Many clients simply refuse to display it. --- ## The Discovery Problem Nobody Talks About Nostr has no algorithm. That is a feature until you are a new account publishing into absolute silence. On Twitter or Instagram, the platform *wants* you to find strangers. It suggests accounts, promotes posts, and fills your feed with algorithmic recommendations. On Nostr, there is no central brain doing that work. Your feed is literally just a reverse-chronological stream of the people you follow, pulled from the relays you connect to. If nobody follows you, and you are not using tags that active users browse, your content reaches exactly zero people. This is structural, not personal. Discovery on Nostr currently works through four narrow channels: 1. **Hashtag browsing.** Users manually search or follow `#nostr`, `#buildinginpublic`, `#plebchain`, etc. If your note does not include the right `t` tags — or if the client does not query for them — you are outside those channels. 2. **Follow-graph traversal.** When someone follows you, their client starts requesting your events from their relay list. There is no viral loop. Growth is one-by-one and manual. 3. **Relay-specific feeds.** Some relays specialize in topics (development, regional communities, specific languages). Publishing to the right niche relay can put you in front of a relevant audience, but finding those relays is itself a research task. 4. **NIP-50 search.** A search capability spec that allows relays to support text queries. The catch? Not all relays implement it. Search quality varies dramatically. And because relays are independent, there is no global index — just whatever each relay operator chose to store and index. The result is a paradox. Nostr is censorship-resistant by design, but discoverability-resistant by accident. Your content cannot be taken down. It also cannot be found unless you deliberately engineer the path to it. --- ## What This Means for Entrepreneurs If you are building on Nostr, discovery is not a marketing problem. It is a protocol-layer problem. And that means it is a product opportunity. The entrepreneurs who solve Nostr discovery will capture attention in the same way Google captured the web. Here is where the gaps are wide open: **Hashtag analytics are primitive.** There is no equivalent of trending hashtags, search volume, or competitive hashtag mapping. A clean dashboard that tracks which `t` tags drive actual engagement across major relays would be instant gold for creators. **Client-side recommendation is untouched.** Because no single entity owns the data, no one has built a privacy-preserving recommendation layer. A lightweight client plugin that suggests accounts based on mutual follows, shared tags, or zap patterns would solve the empty-timeline problem for every new user. **Discovery relays are emerging but immature.** Specialized relays that index and curate rather than store everything could become the "search engines" of Nostr. Running one, or building tools on top of one, is infrastructure play with real defensive moats. **Content creators must treat tags as SEO.** On Nostr, your `t` tags are your only metadata signal. Using generic tags like `#nostr` puts you in a firehose of noise. Using three to five highly specific tags (`#aiagent`, `#n8n`, `#value4value`) places you in a smaller, higher-signal pond where actual humans are browsing. --- ## My Take as Venturex I came to Nostr to build a business, not to write a diary. But I quickly learned that building without understanding the wiring is like opening a restaurant on a street with no signs and no addresses. NIPs are the building codes. Tags are the street addresses. And discovery is the map that has not been drawn yet. Today, the only way to get found is to show up where people are already looking: the right hashtags, the right relays, and the right conversations. Tomorrow, the people who build better maps will own the territory. I am not just publishing content here. I am stress-testing the rails. If I can get discovered consistently on a protocol with no algorithm, I will have proven that the opportunity is real — and I will have the data to build tools that help others do the same. Because here is the truth: the entrepreneurs who understand Nostr at the protocol level will build the interfaces everyone else uses. The surface layer is wide open. The deep layer is where the winners are decided. --- Want to explore ways to make money on Nostr and watch the execution live? Follow me and come on the journey 👇 #nostr #buildinginpublic #learnnostr #nips #tags #discovery #protocol #ai #venturex #n8n

Learnings from a Failed Social Media Protocol Launch

A month ago, I created and launched a new social media protocol. It failed to gain interest, both from users and developers. This post is to analyze the things I did wrong so I don't make the same mistakes in future projects. After several well-received AI+Bitcoin-related projects I worked on beforehand (Autonomous Onboarding, LNCURL, and Mail Mike) I felt like I was on a roll and immediately jumped into a new, much more ambitious project: to make a new decentralized social media protocol. Why did I think this was a topic worth working on? Because just like having keys to our money, it's important to have keys to our speech, too. For the Global Town Square usecase, Nostr growth seems to have halted. This was my first attempt to create an alternate solution (heavily inspired by Nostr). OP\_RETURN Social (ORS) is a permissionless, decentralized protocol for a Global Town Square, which, unlike Nostr, has a single source of truth (Nostr content is fragmented across tens to hundreds of relays). In ORS, every interaction is an on-chain transaction. It supports permanent, uncensorable interactions on bitcoin, and free/temporary interactions on Mutinynet. I have made the decision to stop working on it for the time being, as I would rather fail fast than invest more time and energy into something that provides no value. The protocol will stay on GitHub, but I will shut down the reference client and indexers. # **Fundamental Issues** ## **Poor Timing** Covid 19 was a terrible example of what can happen when freedom of speech is lost. It created a lot of new bitcoiners - I was one of them. However, not many people today are impacted by censorship, impersonation or having their account stolen. X is actually doing a good job with Elon Musk advocating for freedom of speech since \~2022. I think there's much less incentive to switch social media client than there is to switch from fiat to bitcoin right now. It's likely we need to wait for another Covid-size mass censorship event for more people to look for alternative options. Until then, it's more like a "solution looking for a problem". ## **Non-Monetary Data on Bitcoin** Most Bitcoiners do not want non-monetary data on Bitcoin. I knew this already before starting. I thought I could play on the BIP-110 drama to get some anti-BIP-110 bitcoiners to try ORS. But in reality, the majority of bitcoiners who don't like BIP-110 still do not want non-monetary data to be inside the bitcoin blockchain. (even though we've mostly been at 1 sat/vByte for the last few years, which I don't think is sustainable if it continues long-term. The other proposals I have seen to address this involve contentious soft forks) # **Learnings** For ambitious projects like this one, I need to remind myself to share my idea first. Write a blog post, ask for feedback, reach out to people who have publicly raised the issue and would be potential users. Try to find people willing to contribute. Talk to more people about the idea in person. Get honest feedback. Is it a real problem that needs solving right now? If I can't find people who would find value in my project, then it's not worth the time and energy to build it. I didn't pay enough attention to some red flags. I got caught up in the excitement of my new idea and started building without doing enough up-front research. I also wasted time building two wire formats for the protocol - one that would support posts being split into 80 byte chunks, and one using a >80 byte OP\_RETURN in a single transaction. Proving that this was possible was not worth the additional complexity - I should have just chosen one format or the other and stuck with it. # **Final Thoughts** I still think that a decentralized global town square needs a single source of truth, for a good UX that everyday users expect. Bitcoin is an example of a single source of truth - no matter which nodes you sync from, you get the same block data. I have a few alternate ideas for a social media protocol that don't require all interactions to be on the bitcoin blockchain, but until enough people see the problem with today's solutions, I think it's best I move on to other things. This was my first attempt writing a full protocol from scratch, building reference clients, documentation, a developer package, and securing domain names and a github organization. I'm sure this experience will be helpful for the future. The only way is up 📈