# NOSTR,一个可以构建丰富去中心化生态的协议 **Published by:** [Alpha 观察室](https://paragraph.com/@hold1btc/) **Published on:** 2023-01-10 **URL:** https://paragraph.com/@hold1btc/nostr ## Content 首先Nostr不是一个应用程序。它是一个轻量级的、简单但可扩展的开放协议,可以基于它从而建立真正一个抗审查和去中心化(不基于区块链技术)的社交网络。 该协议基于中继器。中继器可以由任何人建立和运行的服务器。通过连接中继器,用户可通过客户端(或应用程序)实现实时推送和接收事件。 内容摘要 1. 账户 2.事件 3. 中继器 4. Nostr可以做什么? 1. 账户(Account) 在nostr中,你不需要通过使用个人数据来注册一个账户。而像比特币一样,你需要有一套秘钥。准确地说,是两把钥匙。 一个是公钥:相当于用户名。它可以对所有人公开。 一个是私钥:就像你的密码。你需要对它进行保密。此外,这个密钥将允许你在任何由nostr支持的平台(客户端)上访问你的账户。 获得一套秘钥是非常容易的! 你只需要选择一个nostr协议的客户端,如anigma、coracle或 astral,它就会为你生成。 为了增加安全性,建议使用外部签名程序,如Alby browser extension或nos2x extension。你也可以用rana等工具生成一个独立的私钥。 你需要妥善保存你的私钥,因为这是将来恢复和重新登录你的账户的唯一方法。 2. 事件(Event) nostr中唯一存在的对象类型是事件。事件是小型的纯文本结构。这些是客户端发送给中继器的内容。一个事件的内容如下: { "id": "c011...4c43", "pubkey": "dec1...4fb3", "created_at": 1671551112, "kind": 1, "tags": [], "content": "good morning!", "sig": "e1dc...5f1" } id 是事件的唯一标识符。它是一种在网络中唯一引用该事件的方式。 pubkey字段,包含创建该事件的公钥(用户)。 created_at字段指内容创建的时间。 kind字段是nostr最有趣的部分之一,指定它是哪种事件。你可能会问为什么这很有趣... 好吧,最好的部分是,事件种类不受限制,所以我们可以设计任何我们想要的种类。 例如,有一个事件种类1,它只是一个纯文本笔记。如果你想这样称呼它的话,就是一条 "推特"。但我们也有第4种,是端到端的加密信息。 tag字段可以包含我们想要的任何任意的标签。这给开发者提供了很多可能性! 例如,一个常见的用法是,当你回复某个消息(事件)时,该事件的id被设置为一个叫做 "e标签 "的标签。 content字段只是该事件包含的内容,这个事件的内容就是“Good Morning!” sig字段(签名)是一个加密证明,证明发布该事件的人是与该公钥相关的私钥的所有者。 3. 中继器 中继器是nostr协议的主要部分。它们存储从客户端那里收到的事件。 中继器之间互不通信。只有你所连接的中继器才会接收和存储你的事件。 这是Nostr的一个重要方面。中继器之间不交流。出于这个原因,你应该连接到你想发送数据的尽可能多的中继器。 客户端(应该总是)允许用户连接到他们想要的任意数量的中继器。用户还可以选择他们是否想从/到他们所连接的中继器中读取、写入或同时读取。这意味着我可以连接到某个中继来检索内容,但我可以选择不在那里发布我的事件,或者反过来。 如果我连接到一个中继器A,而你连接到一个中继器B,尽管我们都在使用nostr,但我们将无法看到对方的事件。 为了看到对方的事件,2个用户必须至少连接到同一个中继器上。这意味着,在上面的例子中,如果我想看到你的事件,我需要连接到中继器B上(或者你可以连接到中继A),然后我们就可以看到对方的事件了。 乍看起来有点难以理解,但它却有一个非常强大的方面。你可以运作一个从不与任何人分享的中继器,并在那里发布你的所有事件(以及许多其他中继站)。这样,您就可以在自己的中继器中只备份您的事件。 也许有一个中继器只关注和讨论足球,而你不想成为它的一部分,所以你可以不把它添加到你的客户端中。但是你仍然可以和一个关注足球中继器的用户建立连接,前提是你们在同一个其他的普通中继器中。 Nostr有很强的抗审查性:想象一下,你有能力在任何地方创建一个门户。如果有人试图关停你的内容,你可以简单地创建一个新的门户并绕过他。Nostr让这一切变成可能,因为建立一个中继器既便宜又容易。事实上,一个中继器可以在一个低端智能手机上运行! 此外,中继站之间不相互交谈的事实也有助于此:审查一个中继站不会影响到其他中继站! 目前有100多个继电器分布在全球各地,而且还在不断增加。 教程:如何建立一个中继器 4. Nostr可以做什么? 如前所述,Nostr是一个非常强大的数据共享协议。这意味着人们可以利用它建立任何他们想要的应用。 Nostr还很年轻,还有很多地方待完善,但这里有一些已经实现的和可以工作的可能性。 4.1 去中心化的Twitter Nostr的诞生是为了建立一个去中心化的社交协议。因此,有很多客户端都在努力实现这个愿景。 为了实现这个目标,这些客户端利用了第1类的事件,即纯文本。这些客户端包括:coracle, astral, nostr.ch, branle, damus, alphaama.com, Nostros 和其他类似的客户端 4.2 去中心化Telegram 通过使用kind 4X (其中X是0到9之间的数字),可以像Telegram一样实现公共频道。 Anigma.io 是实现Telegram克隆的网络应用。你可以创建公共频道,任何人都可以加入并聊天。在anigma中,你也可以向用户发送私人的端到端加密信息。这是通过使用 kind 4事件实现的。 4.3 去中心化Reddit 在这里你可以发布帖子,用户可以对这些帖子投票。nvote是nostr中这类平台的一个应用。 4.4 在线游戏 nostr的另一个有趣用途是创建简单的在线多人游戏。这种概念的一个用例是Jester,在这个平台上,你可以通过Nostr与其他用户进行在线下棋。 4.5 文本共享 Sendstr 是一个在线工具,你可以通过nostr协议在两个设备之间分享端到端的加密文本数据。 这里还有一些非常有用的资源可以供开发者使用。 Nostr协议规范 Nostr NIPS Nostr列表 Nostr中继器列表 ## Publication Information - [Alpha 观察室](https://paragraph.com/@hold1btc/): Publication homepage - [All Posts](https://paragraph.com/@hold1btc/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@hold1btc): Subscribe to updates - [Twitter](https://twitter.com/nickhuang1001): Follow on Twitter