首页 > 极速快讯 > 矿圈资讯 > 比特币开发者解读Nostr怎么构建去中心化社交网络

比特币开发者解读Nostr怎么构建去中心化社交网络

时间: 2023-02-05 来源:极速科技
文/ Raj arshimaitra,比特币开发者,Rust-Nostr作者;译/金色财经xiaozou

1、Nostr根本介绍

Nostr是一个十分轻量级的敞开协议,它“有望”(据其项目文档描绘)成为去中心化的交际媒体渠道。蚂蚁矿机

该协议的根底是一个WebSocket服务器(称为nostr中继器),它处理和存储一个名为Event的简略数据结构。如下图所示:

event(事情)总能获签(运用Schnorr签名),它们包含有语义含义的结构化数据。在BIP340中界说的Schnorr类型XOnlyPubkey(现在与Bitcoin Taproot一同运用)作为“身份”(identities)运用于整个协议。 蚂蚁L7矿机

nostr客户端是一个能够与nostr中继器通讯的运用程序,能够运用Subscription Filter(订阅过滤器)订阅任何事情集。过滤器可供给客户端感爱好的一切nostr事情集。

客户端不需求注册或创立帐户。客户端用它们的pubkey进行身份认证。每逢客户端与中继器衔接时,它都会提交其订阅过滤器,只需它们处于衔接状况,中继器会将“感爱好的事情”传输给客户端。

中继器能够缓存客户端订阅,但却不有必要这样做。客户端应该在“客户这端”处理一切事务,而中继器则能够像块愚钝的石头。

客户端之间互不通讯。可是中继器能够。这答应中继器为客户端获取它所缺少的数据。客户端能够订阅与之相联的中继器之外的事情。

乍一看,Nostr协议好像没有什么用(为什么不直接签署并dump原始JSON,让客户端来处理呢?),但深入研究就会发现,“dumb-server, smart client”(傻瓜式服务器,聪明的客户端)模型有某些巨大的工程优势,特别是在去中心化的协议规划中。

本文概述了这些傻瓜式服务器、聪明的客户端,以及比特币网络、端到端加密是怎么结合在一同处理“去中心化交际网络”(DSN)问题的。

2、问题概述

假如曩昔的两年你不是与世隔绝的话,想必你已对现在商场上出现的“Twitter代替品”的紧急激烈的呼声有所耳闻。交际媒体渠道不会与用户动机各走各路。

这种需求催生了像Gab和Mastodon这样的交际媒体代替渠道。前Twitter CEOJack曾发表的声明现已暗示,这将是下一个需求处理的重大问题。免责声明:我并不是说这是一个简单处理的问题,我也不以为Nostr能处理一切问题。但它至少“有望”处理问题。

创立去中心化媒体渠道的中心问题不在于技术,而在于交际。

创立一个交际媒体(或聊天运用程序)或许是你作为一个新的软件开发人员需求处理的最典型的应战。体系中心结构适当简略。

· 一个存储数据的数据库。

· 与客户端通讯的网络接口。

· 进行过滤筛选以赶快获取查询数据。

当然,实践情况要比这复杂得多。但此规划的要害点关于一切交际媒体规划来说都是相同的。

那么为什么咱们不能直接开发,把它完成呢?

问题是,它有必要是一个“去中心化”的体系,只要经过“网络效应”以及开发者生态就一组协议形成工程共识才能成功。不然,咱们制造出的问题,恰会与咱们想要处理的问题相同。

这就产生了紊乱。假如你今天创立出了完美的交际媒体,你要怎么压服其他开发者在此根底上进行开发建造?假如开发者不开宣布功用,用户为什么会用呢?假如用户不来运用,媒体渠道还有什么含义呢?

Gab和Mastodon的比如清楚地表明,只要代码开源是远远不行的。开发进程和标准规划也有必要是揭露的。不然,一个人就会变成一个小团队(根本都是自愿参加一个活泼的项目),终究会成为这个渠道“仁慈的独裁者”。

由于他们有必要受这类渠道的现实规划制约,在大规模供给产品的一同,他们终究创立了一个小团队,专门规划渠道的运行办法。这使得客户端开发人员很难在该渠道开发休闲有趣的运用程序。在某些时分,他们还或许会决定规划一些小协议,但终究,他们会碰到相同的障碍。没有人乐意主动在你为特定利基商场规划的渠道上进行开发。

此外,存储数据的本钱很高。关于“服务器一切者”来说,这需求资源、维护和时刻。现在托管Mastodon instance的一切人都是自愿的,用户单纯依靠他们的友好,不会封闭instance。“知识同享”(creative commons)的老问题出现了。

那么咱们能做得更好吗?

3、另一种办法:Dumb Nostr

假如咱们不开发完美的交际媒体,而仅仅开发最根本的乐高积木,让开发者就根本标准单元揭露达到共识,会怎样?

这便是Nostr所做的。

这么做要经过以下办法:

规矩交际数据格式的最小单元(一个event),让开发人员在此根底上自然达到共识。这便是协议的中心。这是每个人参加网络都需求赞同的最根本的支撑。

Nostr将这些协议规矩界说为NIP,进行了一组指令性NIP陈说,规矩了与Nostr协议通讯需求完成的规矩。

在这些指令性NIP之上,任何人都能够界说可选NIP。中继器能够自由挑选它们支撑的NIP集。

event数据能够经过未来NIP界说更多的标记项,在标记字段中扩展。

而Events能够看作是一个通用的数据存储。关于能够放入其中的内容没有任何限制。

虽然看起来很古怪,但如此简略的协议比许多“精心规划”的现有交际媒体代替计划获得了更多开发者的关注。

这个项目现已引起了许多开发人员的爱好,社区简直瞬间开宣布了一个丰厚的包括库、运用程序和中继器在内的生态体系,而且每天都在发展壮大。

Nostr的Telegram群组大约有400个开发成员,而且每天都在增加。

为什么?“由于它十分简略”。

这种简略性使任何感爱好的人都能够轻松编写JSON streamer,立即让协议与任何现有中继器通讯。

人们简直经常会在根本NIP的根底上增加一些新细节。

协议的简略性答应开发人员快速就敞开标准达到共识,并将一切的复杂性放到客户端。整个运用程序体会将由客户端担任,中继器仍将是傻瓜式数据服务器。这答应开发人员在客户端运用程序上快速开发和迭代,一同与任何可用中继器兼容。

这也增强了客户端的兼容性。有或许有两个不同的运用程序,但依然能够看到互相的帖子。该渠道的中心能够是去中心化的,客户端经过一个简略的存储协议互相兼容。这便是“dumb server, smart client”模型的奇妙之处。快速达到根本标准,快速迭代客户端运用。

复杂性能够在客户端层定制,而互操作性能够在中继层完成。

4、还需做什么?

一旦咱们完成了中心乐高的建造,余下要做的还有DOS维护、中继鼓励和一些完成用户间nostr订阅数据通讯的办法。

 将比特币整合进Nostr

多亏了比特币,中继鼓励和DOS维护才能够同步完成。

假如根底设施建立在软弱的“自愿主义”根底上,那么就不或许开宣布一个强大的交际网络。正如咱们知道的那句话,“假如产品是免费的,那么你自己便是产品”。这些未来的媒体渠道应该与比特币进行原生整合。

有个完成比特币与Nostr整合的一站式处理计划,便是运用BDK。一个高性能的比特币钱包库,可足够灵敏地处理多种比特币接口和数据库。增加了新的NIP来界说付出请求和付出呼应Event类型。

关于发布的每个event,付出能够是一次性的链上交易,也能够是客户端和中继器之间的LN(闪电网络)付出流。(将需求BDK + LDK,现在正在积极开发中)。中继器能够在sats/byte中设置feerate(费率),假如想要责任“自愿”,能够挑选将费率设置为0。

这为高度维护的公共中继器供给了一个很好的服务变现办法,一同维护它们免受DOS攻击。

端到端加密订阅同享

请注意,Nostr中继器仅仅简略JSON数据的转储,经过订阅过滤器获取。这使得nostr成为客户端之间的通用数据同享渠道。集成了比特币,现在咱们要评论的是比特币scripts、descriptors、DLC合约和其他经过nostr中继网络同享的比特币DeFi信息。但这些或许是灵敏信息,不该该在公共渠道上以明文方法同享。

为此,需求一种加密的nostr订阅同享机制。能够是另一个服务器,只用于促进参加者之间的加密订阅数据同享。

能够经过以下办法完成:

· 运用来自目标接纳者pubkey的DH同享隐秘进行“订阅+中继地址”加密。

· 将加密数据连同接纳者的pubkey一同发布到此服务器。

· 接纳客户端收到音讯,下载并解密数据,获取订阅以从nostr获取实践数据。

· 实践数据也是由相同的同享隐秘加密的密文,因而接纳方知道怎么解密。

这些服务器能够是十分轻量级的,由于它们不需求存储一切历史订阅数据。它们能够定时铲除旧数据,乃至能够在知道接纳方下载了数据后实时铲除数据。这将使服务器本钱十分低,而且不需求忧虑鼓励问题。

它们不需求遵循任何通用协议,能够经过任一规划自由完成。它们只需求有一种与客户端衔接的办法,并知道当发生与客户端相关的事情时何时通知他们。

这些服务器也像nostr中继器相同是抗审查的。假如某个服务器停机,任何人都能够再造一个。由于它们不需求保存历史记录,所以从一个服务器切换到另一个服务器并不会对整个信息流造成影响。

这些服务器也不能利用数据,由于它们所看到的仅仅一组加密随机数据,所以它们不需求很高的安全性。

终究结果

所以现在把一切这些(Nostr,比特币和加密订阅同享)相结合,咱们得到了一个十分强大和默许设置的私家交际网络,能够运用一些十分通用和大局性的协议在参加者之间同享数据。

这使得隐秘的交际网络有或许挑选性地向特定的可信实体揭露他们的发帖内容。

这些帖子能够是DLC合约、描绘多方间多签机制的descriptor、仅向订阅会员发布的DLC预言机,等等。

在这个结构中,“身份”的根本单元是pubkey。pubkey类似于现实国际里的昵称。任何人都能够有随意数量的昵称。假如一个昵称被泄露,能够迅速创立出另一个,就像咱们每次付款都要创立一个新的比特币地址相同。

运用pubkey作为昵称,然后能够挑选性地向自己的私家可信网络敞开。你能够将一个pubkey与你的大局昵称相关(每个人都知道的Twitter操作),然后持有恣意数量的并行昵称,仅在特定人群间通讯,或许运用特定的运用程序。

与一切这些pubkey相关的数据间坚持彻底不相关性,能够跨多个nostr中继器散布。

终究模型总结如下:

· 一个高度互操作的、极端简略的中继协议——nostr。

· 一个灵敏的结构,可经过中继器可选的升级选项增加新的中继功用。

· 用于传递nostr订阅的加密订阅同享机制。

· 比特币原生集成,方便“钱银互联网”和DOS维护一同进行。

· 一个去中心化的发行层,客户端能够发布公共和私有内容。

· 有较好的客户端复杂性来诠释这些内容,并具有运用比特币功用的可生成原生金融合约的UI。

与web3.0不同的是,这一切并不会涉及到另一个“区块链”。

5、前路剖析

虽然听起来不错,但咱们还没走到那一步。完成这些主意需求许多的工程规划。前进的道路上还有未知问题需求处理。这些中继器和客户端的规划决策需求细心规划。仅有一个简略的协议是不行的。

中继器应该高效、可靠,经过揭露严厉的同行评审,并保证根本安全。作业有必要揭露展开,而且组件应该规划得尽或许灵敏,以满足不同的客户端开发人者需求。

假如这个进程需求扩展到专业化的服务,人们能够在自己的服务器上布置这些服务,并会基于此开宣布像样的产品,那么咱们需求的就不仅仅是业余代码和示例运用程序了。

咱们需求的不是另一个很帅的nostr运用程序,而是一个经过深思熟虑的规划杰出的根底设施库,能够让隐秘的超级程序员运用它来开发下一个很帅的集成比特币的nostr运用程序。

6、引进rust-nostr

rust-nostr是一个处于主意阶段的项目,旨在处理上述问题。咱们的主意是供给一个完整的nostr根底设施一站式套件,它是模块化的,易于扩展的,具有强大的安全保障,有杰出的文档,十分简单让开发人员依据自己的需求进行定制,十分简单下载、布置服务器,易于办理。

整个结构仍处于TBD阶段,但rust-nostr的大约容貌如下:

· 一个生成nostrd的binary crate。Nost中继器的轻量级、高效的rust完成。nostrd将附带一组支撑的NIP。默许情况下可包含根本的NIP。额外的NIP能够在构建时经过feature flag指定。

· 一个能够用作服务器端nostrd办理器的nostrd-cli。它还能够让nostr协议与任何其他中继器通讯,并可作为一个cli nostr客户端被运用。能够经过根自身份验证或cookie身份验证向中继器供给维护进口。

· 一个丰厚的nost-API库,包含在项目中,可作为开发人员开发nostr客户端的简便开发东西。然后,这些API能够经过ffi向其他言语揭露,并为开发人员供给一站式东西来建造他们的优秀Nostr客户端。

portal是一个加密的nostr订阅同享服务器。portal标准不是项目的组成部分,由于它是一个已处理的问题。这在密码学文献中现已得到了很好的解释,而且有许多开源的候选完成计划。Signal App自身便是portal的一个比如,虽然在这个用例中很难运用。印度的一支本地团队一直专心于这个问题,针对p2p比特币交易的特定用例(称为CypherPost),这已是一个十分合适的portal完成。终究,rust候选完成计划的精简版本将被增加到项目库中。可是人们能够自由地开发并运用他们自己的portal,且依然与网络的其他部分兼容。

一切这些(portal除外)都将经过BDK和LDK进行原生比特币和闪电网络集成。

为了确保根底设施的一切部分都能始终坚持同步,他们将在项目的CI pipeline进行严厉的集成测试。

一旦一切这些都安排妥当,就能够运用rust-nostr套件开发各种更复杂的客户端,在各客户端之间展开比特币DeFi业务。

7、结语

到现在为止,这仅仅一个开始主意,我乃至不知道未来有或许面对什么样的应战,但我估计应战不会少。常言道:“细节决定胜败”。这好像是一个雄心勃勃的项目,但并非如此。

经过限制项目范围以供给十分具体的开发东西,这简直能够经过若干积极的rust开发人员来完成。Rust也是最适合用于此类开发的言语,由于它答应咱们在编译器级别严厉界说协议规矩,然后减少过错空间,一同生成十分简洁且易于审计的代码。

不搭建“产品”,只处理乐高积木的问题,我以为经过这一办法,咱们的主意是彻底能够完成的。

这个项目能够为比特币创业家开发各种运用铺平道路。运用空间的边境只受想象力的限制。
分享到:
共执行 178 个查询,用时 0.329688 秒,在线 8 人,Gzip 已启用,占用内存 4.324 MB