深度观点 | 让马斯克都害怕的「Nostr」协议是什么?
2023-02-16 20:07
LegalDAO
2023-02-16 20:07
订阅此专栏
收藏此文章

▍本期作者:

先从名字说起,nostr 是 Notes and Other Stuff Transmitted by Relays 的缩写,直译过来就是通过中继传输的笔记和其它。名字很清楚的说明了,这是一个传输协议,并且,有中继存在,说明这并不是一个 P2P 传输协议


nostr 的协议由两种参与者:客户端(client)和中继服务器(relay),客户端之间不能直接交流,必须通过中继。客户端 A 把信息发给中继 1,客户端 B 可以从中继 1 中取得信息,这样就完成了客户端 A 把信息发给客户端 B 的这样一个过程。如果只讲 nostr 协议本身而不讲它出现的背景,难免会得出“nostr 是个很简单的协议”这样的草率结论。所以,让我们先跳出 nostr,来看看 web 技术发展的历史以及每一代技术带来的问题,会更好的理解 nostr 的设计思路。


web1 由于互联网技术刚刚出现,网站大多数是静态的,交互性基本没有,一句话带过。


在 web2 时代中,大型互联网公司以及平台应用的出现,使得 web2 和 web1 有本质的区别,其主要特征可概括为:


UGC(用户生成内容)是 web2 内容的绝大多数

UGC 和用户的账号,本质上是 web2 公司的资产,并不属于用户自己

广告是平台型应用的主要营收方式

web2 应用是中心化的,运营公司可以任意删除用户的内容,封禁其账号

免费应用是主流


web2 平台的“用户”,其实不是真正的用户,因为这些用户不付费。付费的是广告商,广告商才是 web2 平台真正服务的对象。所以平台希望免费用户上传的内容,尽量吸引更多的广告受众来观看。平台也会审查不符合主流价值观(或者对平台 / 广告商利益有影响)的上传内容,所谓的没有言论自由。


web3 的一些社交 / 内容项目希望借助区块链的去中心化特性来构建免于审查的 DApp,mirror.xyz 就是其中的佼佼者。在 mirror 写文章有两种状态,草稿状态和发布状态。在草稿状态中,文章内容是中心化存储的,和 web2 写作平台区别不大。发布过程包含用户和 mirror 平台的一系列操作:


首先,mirror 会把文章中的图片使用 IPFS(分散式文件存储网络)存储,文章内容存储在 Arweave(永久化存储网络);


其次,mirror 平台会生成包含图片和文章的链接,编码为 json 格式的 metadata(元信息);


最后,用户需要使用钱包把包含 metadata 的 NFT 合约部署在 Optimism 网络上。在这个过程中,IPFS,Arweave 的使用费用是 mirror 平台承担,文章上链到 Optimize 的 gas 费用是用户承担(文章发布时刻为 1.6 美元)。


这种发布文章的方式的确做到了去中心化,即文章内容去中心化,作为文章索引的NFT 也是去中心化的。但这一系列过程费用相当昂贵,更不用提用户需要操作加密钱包来登陆平台,这进一步增加了使用门槛


一个健壮的区块链网络,是由众多的节点来维持的。这些节点通过共识算法来保证状态的一致性。简单来说,一个发布的文章会同时存在于“所有”的节点之中。这么多份冗余的记录,占用的资源是相当多的,这是使用区块链如此昂贵的原因之一。另外,节点之间达成共识状态是需要时间的,大多数区块链的 TPS 非常低。以上两点导致区块链基础设施暂无法支持比如像发推,即时通讯这样的高频使用场景。


另外一些 SocialFi 类型的 DApp 则走了更奇怪的路线:web2 的发帖,加上 web3 的代币经济系统,post 2 earn。DApp 希望通过代币激励让更多的用户使用,从而提高项目的估值以及代币的价格,在项目上升期间,或者币圈牛市的时候,也许能让平台暂时起飞。但是币价不可能一直向上走,代币价格下降必然会导致用户的流失和活跃度的降低。如果遭遇熊市,那项目可谓九死一生。我个人认为 SocialFi 的过度金融化带来的问题多于解决的问题。总之,web3 也没有很好的解决社交应用的易用性和抗审查性的问题。


2022 年 10 月 27 日,马斯克成功收购 twitter,万众期待的言论自由却没有这么轻易的被实现。在这情况下,nostr 的 IOS 客户端 Damus,以 twitter 挑战者的姿态出现在公众的视线中,引起了广泛的讨论。那么 nostr 是如何做到它声称的易用,去中心化,抗审查等等特性呢,接下来我们回归到协议本身上来。


首先是账户体系,nostr 是无需注册的,用户靠公钥 / 私钥对来登陆客户端,或者通过 Alby 这样的钱包插件来管理私钥。这一点类似于区块链应用,其好处是用户的账号不会被封禁,缺点当然是用户需要自己妥善管理好私钥


▲作者的密钥对


用户可以使用同一个私钥来同时登陆多个 / 多种客户端,客户端的作用是把用户的消息(Event)发送到订阅的中继服务器中,如下图所示:


▲接受这条信息的中继


每次发消息的时候,客户端尝试把这个消息推送到所有订阅的中继服务器中,但是如上图所示,只有其中一部分(红圈)中继接受了这个消息。一旦某个中继存储了我的消息,订阅了同一个中继的别人的客户端,就能查询到我的消息,这个过程就完成了类似 twitter 的推送功能。没有订阅同样中继服务器的客户端,是无法取得我的消息,也不知道我发过消息。


在目前版本的 nostr 协议中,中继之间是不会通讯的,我发送的信息不会在多个中继之间传播,从这一点可以看出,中继和区块链节点有本质的不同。由于 nostr 协议没有共识层,也就不会被“区块打包”,“同步”等拖累效率,能支持任何高频应用。目前,有基于 nostr 的发推、即时通讯、在线战棋、笔记等等应用出现。


既然 nostr 协议中,中继是不同步信息的,挑选中继的任务落在了用户头上。问题来了,中继有没有可能作恶?答案是肯定的。在 nostr 协议中,客户端和中继之间无需信任,中继可以删除用户数据,停止服务,或者停止为一部分用户提供服务,但中继无法伪造用户的消息,因为用户的消息是被私钥签名过的,伪造消息几近不可能。


如果用户发现中继提供的服务有问题,他可以换一批中继,甚至自己架设中继来继续为自己提供服务。这就 nostr 协议抗审查的原理——用户需要为自己的账号、消息和消息发布渠道负责。nostr 协议也没有涉及中继的激励问题,上图中的中继都是免费中继,提供的服务质量参差不齐。nostr 希望生态自己解决中继激励的问题,无论是简单的付费订阅或者使用了代币经济学。


nostr 协议的流程可以用两个图来总结(没有考证来源):


▲发消息的过程


▲订阅中继


nostr 协议有一系列的 NIP(Nostr Implementation Possibilities),即在基础协议之上扩展的功能,客户端 / 中继可以选择性的实现,其中比较有趣的包括:


NIP-04:消息加密,利用 secp256k1 算法来完成 Diffie-Hellman 密钥交换,点对点加密

NIP-05:映射公钥到域名,方便记忆,比如作者的公钥是

npub10jprg9n3ecjlpez0fyg7y7yvpl66drtjv8rv0hfllxpdxhesuwzs4c2kw6,映射到了@NomandJames 这个域名上面

NIP-06:助记词,和加密货币钱包的助记词类似

NIP-13:工作量证明。此概念的提出早于比特币的出现,现被广泛应用在区块链 POW 共识层中,以太坊 whisper 协议中也有应用。它的原理是在客户端发送消息之前,要先完成一个计算密集型的工作量证明,接受信息的中继服务器会验证这个证明的有效性。提供这个证明意味着花费了算力,提高了发送垃圾信息堵塞中继的门槛。

NIP-22:消息时间戳。告知中继服务器消息创造的时间,以便中继选择性的接收消息。时间戳可以设置为过去或者未来。

NIP-40:过期时间。告知中继服务器消息过期的时间,以便中继删除。

NIP-57:闪电网络打赏链接

NIP-65:中继服务推荐列表


以上是我理解的 nostr 协议。我认为,nostr 协议为我们展示了一个不使用区块链技术的去中心化,抗审查的通讯类 DApp 的可能性,也许在未来会有很长远的发展和广泛的应用。nostr 的发展还非常早期,我想到了几个问题,期待 nostr 生态会在未来逐步解决:


1.客户端信息备份的问题。目前各种客户端都没提过用户备份信息到本地的功能

2.中继间信息迁移问题。假如一个中继拒绝给我提供服务,我当然可以换一个中继来使用,但是历史消息如何转移?

3.信息先后顺序的问题。由于 nostr 协议没有共识层,客户端可以在现在伪造时间戳为一天前的消息,来达到“预言”的效果。对于时间戳和 UNIX 时间差距很大的消息,一些中继并没有进行处理

4.中继服务质量的问题。未来也许中继服务器众多,如何挑选中继服务器是一个难题,也许会有一个专门的中继市场出现


总结:我个人是非常看好 nostr 协议发展的,言论自由是人类一直追求的目标。DApp 也不一定非得使用区块链技术,nostr 开了一个好头


责编:Mercy

排版:Sara




【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

LegalDAO
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开