随着 amethyst 支持 outbox model,主流客户端只差 damus 还没支持了。但中国的网络环境很不适合使用 outbox model,因为 outbox model 下,你查询某个用户的帖子时用的是他的 write relays,而大概率在墙内连不上他的 relays。如果没有探索出适合中国的策略,形成自己的网络,那大概率 nostr 会从中国慢慢消失
Discussion
inbox,outbox的优势是什么?省流量,过滤垃圾信息吗?
早期 nostr 你想看到别人发的帖子,需要至少使用一个他使用 relay。outbox model 是一个策略,你签署的事件都发布到你的 write relays 上,别人提及你的事件都发送到你的 read relays 上。
客户端根据场景使用合适的 relays。比如查询通知时使用自己的 read relays;当你要提及某人(点赞、回复)时,发送到某人的 read relays;查询某人发的帖子时使用他的 write relays。其实它不应该叫 outbox model,有些让人误解。
在这种策略下你只需要设置一两个 relays 就可以了,但这个策略的缺点在于需要所有客户端都这么做
是不是有个服务器专门收集这些设置?不然怎么知道我的inbox,outbox是哪个relay?比如我设置的outbox是全新建的relay地址
没有专门服务器收集这个,这个就是你设置的 **中继列表**。
我一直有计划做一个专门收集这种数据的中继,但是算了,我开的坑够多了~~~
时间不够了
Coracle 有这么个 index relay,但我忘记地址是啥了哈哈
还是没懂😂。如果使用全新的relay地址作为outbox,别人怎么知道去这个relay读取?
先从大 relay 查询并更新这个人的配置,然后去新的 relay 读取。所以不要频繁更换 relay,因为大部分客户端都有缓存,不会实时去更新你的配置。并且理想情况下,你更换 relay 应该将数据从旧的 relay 迁移到新的 relay。否则别人查询不到你以前的数据
你做Jumble应该能有这方面数据估计吧,现在中继中心化或者局部中心化程度高么?还有数据重复率?
老实说,做 APP 现在还没做过数据统计。。。
比较老外对数据收集比较敏感。
Jumble 是纯静态网页,没有后端的,所以也没有收集数据哈哈。感觉上来说还是非常中心化的,主要依赖几个大中继器。但是确实越来越多的人有在运行个人中继器
个人中继更多还是为了备份自己帖子吧。
设计Outbox是为了去中心化,但nostr不是同步网络,用对点拓扑分发内容效率不高,这种大量连接开销就不小。
测试过,amethyst 应该连接的中继也不是很多,我只有9个。其他中继是有需要的时候,再去连接的。
如果只有 inbox 用户是不回去你的个人中继拉取数据的。但是 outbox 的话,客户端会尝试从你的个人中继中拉取数据。
是的,以现在大中继的中心化程度,还有聚合中继,用到的场合应该不多。
如果浏览关注人 feed 的话,你关注了一百多个人,不太可能只用到 9 个中继器
😂 原来其他中继还都是一直在重试链接,就是连不上而已
以现在的数据重复率,估计绝大部分情况即使连不上用户声明的outbox,也能取到几乎所有用户贴文。
以前是从十几个甚至是几十个中继中获取重复的数据,现在是从若干个用户的outbox中继中获取数据 按理说,流量是不是节省了?
只是维护巨量中继列表需要耗费不少资源吧?
以前都不用连十几个,几个就可以,比如relay.nostr.band一个就能覆盖的七七八八,使用outbox机制要连接的才会更多,数据更分散了,outbox机制耗费的资源远超过旧机制,还引入隐私问题。
在以前,使用 relay.nostr.band 确实可以让你看到大部分的内容,但是当你提及某人的时候,如果他没有使用 relay.nostr.band 就收不到你的通知。所以最终就会引导用户都使用 relay.nostr.band。那为什么我们不用 X 呢
嗯,我理解outbox产生的过程背景,但个人看法和社区主流不太一样,outbox是dumb relay理念下的产物,这是很莫名其妙的口号。nostr就是nostr,不会因为relay的局部中心化变成X,原来的机制下relay不论免费收费都受到博弈资源限制不可能绝对中心化,去中心化是给予用户平等权利,而不是义务,比如比特币,用户可以去运行矿机或节点,但不是必须运行矿机或节点,去中心化的用户行为都是博弈出来的,而不是设计出来的。
我觉得不能类比比特币,因为比特币只要你运行节点就对网络有影响。而在 nostr 以前的逻辑下,你运行自己的 relay 几乎是毫无意义的,你需要有足够的影响力说服足够多的人加入你。更像是现在大家都用微信,你有权利开发新的聊天软件,但是没有人加入你,你最终还是要留在微信的圈子里
比特币的确是目前最成功的去中心化现象。但相比用户数量,节点和矿机数量远远地少,个人节点和小矿机同样没什么意义,这还是一个准同步网络的前提下。健壮的去中心化系统一定会广泛存在局部中心化,否则无法产生抗扰能力。
我觉得我们能容忍比特币出现局部中心化的关键在于必要时全世界的用户可以参与进网络对抗大节点。outbox model 也是为了必要时所有用户可以运行自己的节点。如果继续使用以前的策略,我们没有退路,你运行自己的节点也没有人能找到你。推广 outbox model 不代表每个人都要运行自己的节点,我们依然可以继续使用那几个大节点
这种系统的个体不具备全局视野,只有博弈行为,统计行为只会按成本梯度走。非同步网络数据则有博弈权重,并不追求数据到处可达,也就是说如果有帖子始终看不到,那么这个帖子对该用户也没什么价值。我是觉得outbox为了边缘数据能被找到,引入额外开销和隐私风险,性价比低。而用户基于关注链的数据再广播是这种非同步网络的关键行为。
别介意,我习惯关注系统动力学,角度比较小众,纯发牢骚,哈哈哈。我前面还挖过很多奇怪坑,比如引用取代回复,取消赞,取消关注者数量,用ecash取代闪电,把dm改造成private timeline等一堆,下个档期我也想做个先锋实验性质的客户端,把这些牢骚坑填一填。
其实也没所谓,我一直都是旧机制兼容用法,读写relay都设置成相同的两三个大中继,哈哈哈
我也是用的几个大中继,然后搭配一个我本地的中继。可以保证哪天我不用这几个大中继了,也不需要费尽心思转移我的数据,大家依然可以从我的本地中继获取到我以前的数据
正确 🙆 问题在于长连接太多了。如果真要节省流量,应该每个客户端都集成一个中继,这可以大量减少重复数据的获取。点赞、转发数量如果有更高效的获取方式,也可以减少很多流量
像 fiatjaf 这样的用户,使用的中继很冷门,9 个必然覆盖不到的。如果要用 outbox 又要数据完整的话,目前保守估计 50 个连接起跳。随着去中心化的趋势越来越强,所需的连接只会越来越多。这也是 fiatjaf 最近在推浏览中继而不是关注人的原因。保持关注人在 50 以内,主要是用精选中继浏览内容
开销是不小,所以我不推荐使用 jumble 浏览关注人 feed。如果你关注一百多个人,大概需要发起 50 个连接。我在探索使用个人中继做聚合操作,定时拉取关注人的事件,当需要看关注人 feed 时,只需要浏览这个个人中继即可。
找到了 wss://indexer.coracle.social/