V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zqlcrow
V2EX  ›  Mastodon

Mastodon 的原理是什么?怎么理解?

  •  
  •   zqlcrow · 2022-11-04 11:21:11 +08:00 · 3395 次点击
    这是一个创建于 748 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有人用邮件,来比喻 Mastodon 。说邮箱被封,但你还是可以换个邮箱,照样给朋友发邮件。

    但比如我用 [email protected] 和人成为朋友,哪天 a.com 消失了。
    我重新注册 [email protected] 给朋友们发邮件,我如何证明我就是以前的 A ?
    朋友们如何知道现在找 [email protected] ,要去找 [email protected]

    我当然可以下载备份我的内容,再重新上传,但这和去中心化好像没有关系。
    毕竟有些古老的博客,甚至都支持备份为 txt 的功能。

    我看 Mastodon 的账号,又是和实例深深绑定的。
    实例 a.com 的账号 [email protected] ,它关闭之后。
    我能拿 [email protected] 去实例 b.com 登陆吗?

    还是说 Mastodon 的去中心化,指的是:
    1 、不同实例相互可以沟通。
    2 、数据可以备份上传。
    但实例关闭了,只能重新注册,重新上传。相当于一个克隆人?

    另外,不同实例之前可以相互查看交流,又是如何做到的呢?
    不同实例相互间的同步数据,速度非常慢吧?

    20 条回复    2022-11-24 06:30:49 +08:00
    mschultz
        1
    mschultz  
       2022-11-04 11:27:16 +08:00
    是这样的。邮件也是一样的:如果你邮箱 A 被封了,换个邮箱 B ,你如何证明你是以前的 A ?朋友收到你新邮箱发来的邮件,朋友们如何知道要联系 A ,现在应该找 B ?

    不过你可以使用自己的域名(无论是邮箱后缀还是 Mastodon 后缀),域名被封的可能因素会少一些、概率会小一些。如果邮件 /Mastodon 服务器被封,你可以用同样的域名换家服务商继续。
    mschultz
        2
    mschultz  
       2022-11-04 11:31:31 +08:00
    关于去中心化的要素举几个例子:

    每个实例可以自定义自己站内的规则(例如禁止什么样的话题),但不会影响联邦宇宙的其他实例;一个实例宕机不会影响其他实例;没有一个人可以轻易删光全联邦宇宙上的信息,因为不同实例所在的服务器在不同人手里
    zqlcrow
        3
    zqlcrow  
    OP
       2022-11-04 11:31:55 +08:00
    @mschultz 哦哦。那就是和实例深刻绑定。
    找个靠谱的实例,很重要了。
    zqlcrow
        4
    zqlcrow  
    OP
       2022-11-04 11:35:15 +08:00
    @mschultz

    另外再请教下,时效性的问题。

    A 实例的文字,B 、C 、D 实例都能看到,技术上是可行的。
    但时效性让我很困惑。

    这个问题又是怎么样的呢?
    随着数据量的增加,同步数据的耗时就会不断增加。


    最终岂不是,A 实例的文字,D 实例可能几天后才能看到?
    meeop
        5
    meeop  
       2022-11-04 11:43:10 +08:00
    b 实例能看到 a 实例的信息,必然需要 a 实例信息曾经发给 b
    那么信息延时就取决于多长时间更新一次

    数据量小的话,比如你 1 分钟遍历一遍你所有好友信息
    数量大的话,由于网络耗时和你自己电脑存储容量有限,实际上是永远也收不到全网信息的

    不过实践上,你的好友数量有限,这个很快就能遍历一遍
    zqlcrow
        6
    zqlcrow  
    OP
       2022-11-04 11:44:30 +08:00
    @meeop

    嗯?只能看到自己好友发的文章?不是能看到所有公开的文章吗?
    meeop
        7
    meeop  
       2022-11-04 11:45:51 +08:00
    如何证明 b 是 a?

    两个方案:
    1b 和 a 有另一个渠道通信,在另一个渠道 a 告诉好友说我电话号码改了,另一个渠道可以是面对面,微信,dns
    2 用数字签名,b 可以直接证明自己是 a
    meeop
        8
    meeop  
       2022-11-04 11:46:30 +08:00
    @zqlcrow 理论上能,你就把互联网全网下载下来就行.实际上你电脑容量不够
    zqlcrow
        9
    zqlcrow  
    OP
       2022-11-04 11:49:10 +08:00
    @meeop
    你这说的,脱离了长毛象的场景。
    我当然知道,我和朋友之间,怎么证明了。。。。
    mschultz
        10
    mschultz  
       2022-11-04 11:49:12 +08:00
    @zqlcrow #6 不是「只能」,是「只」。就好比你上 Twitter ,你的浏览器看到的都是你关注的(和 Twitter 给你推的)部分推文,但你的电脑不可能一打开 Twitter 就把 Twitter 服务器上所有数据都下载下来。

    但你是「可以」看全 Twitter 上任何公开的推文的的。
    chowhong
        11
    chowhong  
       2022-11-04 11:53:37 +08:00 via Android
    数据只能备份,不能上传。所以一个实例关了,你的消息就没了。
    lithiumii
        12
    lithiumii  
       2022-11-04 11:59:36 +08:00
    用邮箱类比很合适啊。
    a[at]gmail.com 被封了,只能再注册个 b[at]qq.com ,除非有额外的渠道或者邮件内容里有暗号,不然朋友就是不能知道 a[at]qq.com 就是 b[at]gmail.com 。而且之后发给 a[at]gmail.com 的邮件,b[at]qq.com 当然是收不到的。假如有天 Gmail 倒闭了你没来得及备份所有邮件,那数据就是丢失了。


    Mastodon 的去中心化体现在“联邦化”,意思是不同的站点靠共通的协议可以通信。实际上 Mastodon 只是 ActivityPub 协议的一个实现,其他的还有 Misskey 也是微博形式,然后还有 Pixelfed 是发图片为主的,PeerTube 发视频的,等等。联邦化的另一个意思当然是你作为用户还是属于联邦(实例站点的运营方),你所在的实例倒了,没本地备份的数据就是没了。联邦化的好处在于,如果你谁都不信,那你可以建立自己的实例,甚至单用户实例。

    不过单用户的 Mastodon 实例显然违背了 Mastodon 设计三条时间线的初衷了,本站时间轴就会只有自己发的内容,世界时间轴和关注时间轴会完全重合。Mastodon 的世界时间轴只是本站其他用户也关注的站点的内容,如果本站没有其他用户,除了手动输入地址关注之外不能获取未知实例上的内容。
    Roanapur
        13
    Roanapur  
       2022-11-04 12:19:16 +08:00
    @lithiumii

    感谢。还有一个问题,不同实例之间,同步数据不会很慢吗?
    随着实例越来越多,用户越来越多,A 实例的内容,B 实例岂不是要很久才能同步过来?
    Roanapur
        14
    Roanapur  
       2022-11-04 12:23:38 +08:00
    @lithiumii
    再请教一个问题,那如果,twitter 之类的开放备份的话,长毛象还有什么优点?
    (早年微博是可以备份的审核也没那么过分,甚至还能微博反腐,现在不知道了)

    毕竟实例关闭的可能性,远远高于能获利的中心( twitter 、weibo ),另外发的内容也受到实例约束。
    vbe
        15
    vbe  
       2022-11-04 12:32:40 +08:00
    生成一对 gpg 密钥和公钥,其中公钥用于 mastodon 上面的各个实例,但是太长怎么办呢,就把指纹写在自己的用户名后面
    lithiumii
        16
    lithiumii  
       2022-11-04 12:51:15 +08:00
    @Roanapur

    数据不是“同步”的,每个实例应该只是缓存一部分其他实例的内容,不会拷贝。跨实例关注的是账号,不是实例,所以首先数据就会小一个量级。加载速度就取决于各个站点有多少能力咯。

    推特微博都开放备份,联邦宇宙的社交网站还是有存在价值啊。推特和微博,就俩公司,按照两种价值观和两国的法律各自封号。联邦宇宙成百上千个站点,总有一个适合你。就好比电子邮件 99%的人都是谷歌微软或者腾讯网易了,但还是有无数的自部署和第三方的邮箱服务。
    Roanapur
        17
    Roanapur  
       2022-11-04 13:29:58 +08:00
    @lithiumii 感谢
    azukipanda
        18
    azukipanda  
       2022-11-18 17:08:42 +08:00
    Discuz
    wgsgyes
        19
    wgsgyes  
       2022-11-23 21:05:38 +08:00
    目前,Mastodon 是采用了 @me@1234.ms 的形式,一旦 @1234.ms 站点关闭,则账号 @me@1234.ms 失效。

    但个人假设自有域名的单用户 Mastodon 实例 ,服务器成本又太高了。

    那么,有没有可能将自有域名的 Mastodon 实例,挂靠在其他大型 Mastodon 实例上呢?比如 @me@mydomian.xyz, 实际上链接 @me@1234.ms 。只要自己的域名 mydomian.xyz 有效,就永远不担心 @me@mydomian.xyz 失效了。

    这就好比域名邮箱。个人可申请域名,挂靠在其他邮箱服务(如 outlook ),保持域名邮箱的相对独立性。
    sunshineg
        20
    sunshineg  
       2022-11-24 06:30:49 +08:00 via iPhone
    可以查 ActivityPub 协议相关的内容 https://www.w3.org/TR/activitypub/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:33 · PVG 20:33 · LAX 04:33 · JFK 07:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.