Mastodon 的原理是什么?怎么理解? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zqlcrow
V2EX    Mastodon

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

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

    有人用邮件,来比喻 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     Solana     2368 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 15:38 PVG 23:38 LAX 07:38 JFK 10:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86