V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
oxogenesis
V2EX  ›  奇思妙想

一定程度上对标所有聊天型、帖子型应用系统,不知道有没有描述清楚,有没有人能够看得懂

  •  
  •   oxogenesis · 2019-07-27 10:39:01 +08:00 · 4014 次点击
    这是一个创建于 1951 天前的主题,其中的信息可能已经有所发展或是发生改变。
    35 条回复    2019-08-02 18:49:45 +08:00
    dawn009
        1
    dawn009  
       2019-07-27 11:06:49 +08:00
    没有描述清楚。
    大概知道你想干嘛,但无法建立起直观概念。宏观概览被淹没在了技术细节里面。
    hyyou2010
        2
    hyyou2010  
       2019-07-27 11:21:01 +08:00   ❤️ 1
    先赞了。欣赏探索与创新以及个体权利意识。

    赞同一楼所说,宏观概念应该提取出来做简明说明,半页篇幅,让人几分钟即看懂。
    oxogenesis
        3
    oxogenesis  
    OP
       2019-07-27 11:46:12 +08:00
    嗯嗯,后续再梳理下思路,好好表述一下

    想法比较简单
    聊天型、帖子型的应用系统,本身并不生产内容,只是提供了一个网络存储服务
    就开始滥用权利,删号、封号、删帖、看帖子要满足各种条件

    那我就使用逻辑账号,把数据都存在本地,然后开一个公网数据中继服务,
    要获取我发的、收藏的帖子,借助公网中继从我的本地获取
    促进数据的自由流动

    聊天也是同样的道理,我用企业提供的服务和客户端,我与朋友聊天内容的保密性完全没有保障,
    使用公网数据中介,我和朋友可以做到端到端加密,
    而不是使用互联网企业,我与服务器端到端加密,服务器知道、存储我的私人聊天
    oxogenesis
        4
    oxogenesis  
    OP
       2019-07-27 11:48:03 +08:00
    这样人人都是内容服务器
    dawn009
        5
    dawn009  
       2019-07-27 11:53:51 +08:00
    和 Solid 相比,有哪些异同?
    oxogenesis
        6
    oxogenesis  
    OP
       2019-07-27 12:05:39 +08:00
    solid 指的是? https://learnsolid.cn/#about
    SoLiD (源自「社交链接数据」,Social Linked Data )是一组约定和工具,主要用于构建基于关联数据的分布式社交应用。Solid 是模块化和可扩展的,它尽可能地依赖于现有的 W3C 标准和协议。
    真正的数据所有权
    用户可以自由选择数据存储的地方以及谁可以访问数据,Solid 通过将数据与应用程序分离达到了这一效果。

    模块化设计
    由于用户产生的数据与应用程序是分离的,所以用户能够避免互联网服务提供商随意锁定、删除数据,从而在各个应用之间无缝切换而且不会丢失任何数据或社交关系。

    数据重复利用
    开发者在创建新应用或改进现有应用时,可以重用现有的数据,其中有些数据可能是由其他程序创建的(但要得到用户的许可才能使用)。

    =========================
    我的目标是面向普通个人提供可用的
    1、本地生产的账号,基于这个账号实现以下两个业务功能
    2、与其他个体网上加密聊天,个体到个体的端到端加密,而不是客户端到服务器的加密
    3、发布公告供其他个体浏览,无人可以过滤个体的内容

    所有数据存放在受个体控制的本地环境
    oxogenesis
        7
    oxogenesis  
    OP
       2019-07-27 12:16:35 +08:00
    先定义数据后设计系统,与他的数据程序分离思路类似
    不丢失数据和关系,是显然的,所有系统这都是最基本的
    他是技术规范、底层设计?面向的是开发者,不知道要解决啥问题
    我要直接解决现实问题
    oxogenesis
        8
    oxogenesis  
    OP
       2019-07-27 12:23:03 +08:00
    再补充一点
    这样做并不是为了盈利,可能需要自己部数据中继节点,规模不大的情况下,个人完全可以负担
    如果数据量大,也有可能会有商业机构愿意做公告聚合服务,这样他们就需要部署服务能力强的中继节点,服务质量好的节点能够旁听到大量公告内容

    整体上具有完全的可持续性
    dawn009
        9
    dawn009  
       2019-07-27 12:24:14 +08:00
    来自维基百科:

    Solid (中文:社交互联数据)[1]是由万维网发明者蒂姆·伯纳斯-李( Tim Berners-Lee )领导的网络去中心化项目,由麻省理工学院 ( MIT )运行。该项目为需要链接数据的应用程序开发了一个分布式网络平台,这个平台完全由用户控制,而不是由其他组织或个人控制。它“旨在从根本上改变网络应用程序的工作方式,从而实现让每个人拥有真正的数据所有权,并且改善隐私状况”[2]。


    历史

    在伯纳斯-李于 1989 年发明万维网二十年之后,他在为万维网联盟撰写的草稿中概述了万维网的设计问题,并提出了 Solid 项目[3][4]。伯纳斯-李越来越沮丧地看到他发明的万维网被滥用,例如:俄罗斯黑客涉嫌干扰 2016 年美国大选,2018 年 Facebook 用户数据泄露风波,Facebook 在 2012 年秘密对近 70 万用户进行心理实验,谷歌和亚马逊为可以识别人类声音情绪变化的设备申请专利[5]。

    伯纳斯-李想要改变目前互联网的运行现状,Solid 项目是改变它的第一步,以让个人用户完全控制自己的数据[6]。伯纳斯-李欢迎任何人加入和贡献 Solid 项目[7]。

    2015 年,該項目收到万事达为支持 Solid 的开发而捐贈的一百萬美元。伯纳斯-李的 Solid 项目研究团队与卡塔尔计算研究所和牛津大学合作[8]。2018 年,伯纳斯-李创立了商业合资企业 Inrupt 以支持 Solid 的发展[9]。
    设计

    要实现分布式网络,需要克服许多技术挑战[10]。应用程序和数据必须分开,允许人们将个人数据存储在他们想要的地方。身份验证程序必须正确识别数据所有者,同时确保隐私。与传统的分散的 P2P 网络(如 BitTorrent )相比,Solid 应该增加更多控制权和功能,而不是使用传统的集中式网络 。最后,系统必须易于使用,速度快,并且允许开发人员快捷地开发应用程序[10]。

    Solid 的核心是在保护隐私的前提下共享信息。用户将个人数据存储在任何自己想要的“ pods ”( 个人在线数据储存器 )中。在用户授予应用程序权限后,Solid 认证的应用程序可以请求数据。用户可以在几个 pod 之间分发个人信息,例如,不同的 pod 可能包含个人简介、联系方式、财务信息、健康状况、旅行计划或其他信息。用户在注册经认证的社交账户时,可以通过授予其访问特定 pod 中的信息的权限来,以完成账户注册。用户保留对用户 pod 中数据的完全所有权和控制权:用户可以控制每个 pod 包含什么数据、每个 pod 的存储位置以及哪些应用程序有权使用这些数据[1]。

    Solid 由以下几部分组成[11]:

    一个特定格式的数据库:它包含有个人数据,例如身份证明、权限认证、登录信息、权限列表、联系人、消息、订阅、评论等(与集中式社交媒体服务功能相同)。
    一个描述 REST API 的规范文档,以指导开发人员构建服务器或应用程序。
    一个用来实现 Solid 规范的服务器。
    一个用于测试和验证 Solid 实现的测试套件。
    一个由在 Solid 平台上运行的社交应用、身份提供程序和帮助库组成的生态系统。
    一个可以互相交流、发布文档和教程的社区。
    oxogenesis
        10
    oxogenesis  
    OP
       2019-07-27 12:29:41 +08:00
    “用户在注册经认证的社交账户时,可以通过授予其访问特定 pod 中的信息的权限来,以完成账户注册。”
    向谁注册,注册账户就相当于把蛋蛋让人捏在手里,还怎么活

    在这一点就完全不同,我的这个系统,所有账号都是在本地生产的,同时能被其他用户识别
    oxogenesis
        11
    oxogenesis  
    OP
       2019-07-27 12:30:31 +08:00
    老打错字。。。

    在这一点就完全不同,我的这个系统,所有账号都是在本地生成的,同时能被其他用户识别
    dawn009
        12
    dawn009  
       2019-07-27 13:30:40 +08:00
    @oxogenesis #10 可以自建 server,自己选择存放在哪里,当然也包括存放在本地。所以我认为你想要的,Solid 已经做了。
    lhx2008
        13
    lhx2008  
       2019-07-27 13:43:19 +08:00 via Android
    如果发消息不用付费,那么最终会不会淹没在垃圾和广告的洪流中。
    niubee1
        14
    niubee1  
       2019-07-27 13:47:26 +08:00
    端对端加密通讯不基于中心服务器做中转的 IM 我实现了一套出来,绝对私密, 绝对安全, 我觉的很适合矫情的 v 站用户, 我们都是一挂的
    oxogenesis
        15
    oxogenesis  
    OP
       2019-07-27 14:08:02 +08:00
    @lhx2008 不会
    默认过滤器
    所有消息都需要校验 Json 格式、签名有效性、To 字段是否为本地系统所使用的账号,识别所有消息的来源账号
    公告过滤器
    本地系统只向关注个体表内的账号发送连续的公告请求消息,直至获取全部公告消息
    根据公告消息的引用关系,向引用账号发送离散的公告请求消息,获取被引用的单条公告消息
    TODO:单条被引用消息的获取来源,不应该局限于引用账号
    聊天过滤器
    本地系统只与好友个体表内的账号,发送和接收密钥协商消息、聊天消息、聊天同步消息

    本地系统会过滤,在白名单中的才会被个体看到
    如果你看到了大量广告和垃圾,只有一种可能,你订阅了大量广告和垃圾的发布账号
    oxogenesis
        16
    oxogenesis  
    OP
       2019-07-27 14:15:57 +08:00
    @dawn009 我已经说了,“向谁注册账号?就相当于把蛋蛋给谁捏着。”
    自建 server 只是一个表象,
    他的 server 是 server
    我的 server 只是数据中继,只对消息进行形式化验证,不处理具体的身份认证,不知道用户邮箱、用户密码
    你是属于没看懂那一伙的
    niubee1
        17
    niubee1  
       2019-07-27 14:25:27 +08:00
    个人觉得你这个原型有一个悖论在其中, 如果是针对点对点私密通讯, 那么点对点的加密机制就是必须的,但是你这里又要对标发帖子的, 帖子信息是属于公开或者半公开的信息, 即使加密了, 我通过公告获取到后,最后也是能得到明文的信息, 那么加密还有什么意义?另外看得出来你的原型受了 BTC 很大的影响, 但是区块链块存储的意义是在于批量打包确认, 你这里又不需要公式机制来确认打包, 搞得有点奇怪了。聊天和发帖子是两种不同形式的信息共享机制, 我觉得你想要合二为一的想法并不合理
    oxogenesis
        18
    oxogenesis  
    OP
       2019-07-27 14:35:14 +08:00
    @niubee1 没有合二为一,而是将数据分为两类:
    1、绝对公开的,叫公告,对标的是帖子型,只希望传播的越广越好,怕的是被封杀、被过滤、传播受阻,不做加密处理,发表言论是自由,言论被传播也是自由,但是每次传播是基于每个人的选择,没有人可以对其他人定向广播,只有别人来你这拉取公告;
    2、绝对不公开(只对聊天的当事人公开),不对服务器公开;
    niubee1
        19
    niubee1  
       2019-07-27 14:35:59 +08:00
    另, 基于区块链技术来聊天的话, 效率及其低下, 这个东西可以存在于理论上, 但是无法实用化。如果如果要实用, 直接用 ETH 架设私链,用 DAPP 也完全能实现类似的功能
    lscho
        20
    lscho  
       2019-07-27 14:39:59 +08:00 via Android
    看三楼描述的不就是区块链吗。。。。

    你是没搞明白啊,并不是没人想吧端到端加密应用到聊天、论坛上,而是政策不允许啊。想提供聊天、内容发布服务的话,内容必须要能被审查的。
    oxogenesis
        21
    oxogenesis  
    OP
       2019-07-27 14:43:58 +08:00
    @niubee1
    引入区块链思想是为了增强信任,减少系统滥用

    一个账号的公告消息链,是为了防止这个账号修改、否认、删除已经发布的公告
    一个账号的公告消息链如果分叉、不一致,这个账户就丧失了信用,你还关注他干什么
    niubee1
        22
    niubee1  
       2019-07-27 14:56:29 +08:00
    @oxogenesis 信任是基于共识的, 如果共识机制不完整的话, 本身就不可信了,BTC 的共识机制是经过时间验证的, 你如果只取用一小部分那还不如不用, 因为反正也是不可信的嘛
    oxogenesis
        23
    oxogenesis  
    OP
       2019-07-27 14:57:28 +08:00
    @lscho 想和做是两码事
    《中华人民共和国网络安全法》第二十四条规定,网络运营者为用户办理网络接入、域名注册服务,办理固定电话、移动电话等入网手续,或者为用户提供信息发布、即时通讯等服务,在与用户签订协议或者确认提供服务时,应当要求用户提供真实身份信息。用户不提供真实身份信息的,网络运营者不得为其提供相关服务。

    为个体提供信息发布、即时通讯服务的是个体的本地系统,每个人都是使用自己的本地系统,一个系统一个人身份还不够真实?实在不行加个功能,供个体录入实名信息(但永远不向外发送),不就行了。
    数据中继服务器就像网络设备处理 ip 数据包一样,是感知不到用户和内容的
    oxogenesis
        24
    oxogenesis  
    OP
       2019-07-27 15:02:26 +08:00
    @niubee1 只是借用区块链部分思想,如果做公链账本,需要全网同步数据,效率当然低
    比如我只关注 500 个人(这已经不少),我只需要同步 500 个链,每个人关注的人,同步的内容不一样,我只需要校验这 500 个链是否有效,取关、封杀伪造数据的账号即可
    只不过是把微博所有关注浏览的信息移到本地了,并且随时可以删,并不是要把微博整站下载到本地
    oxogenesis
        25
    oxogenesis  
    OP
       2019-07-27 15:04:03 +08:00
    @niubee1 公链信任需要共识
    个体账号单链不需要共识,谁愿意信就信
    niubee1
        26
    niubee1  
       2019-07-27 15:08:37 +08:00
    @oxogenesis 既然爱信不信,还搞这么些麻烦事情
    oxogenesis
        27
    oxogenesis  
    OP
       2019-07-27 15:12:43 +08:00
    @niubee1 “因为反正也是不可信的嘛”
    程序只能保证 json 格式、签名、消息接收账号等形式话校验,序号、前消息哈希值等数据链校验,从技术上保证数据不可伪造,不可伪造就是可信的数据
    信任是人类行为

    你说的不可信是:你可以伪造他人账号的数据?
    oxogenesis
        28
    oxogenesis  
    OP
       2019-07-27 15:47:13 +08:00
    @niubee1 爱信不信是人的自由选择,搞工具是为了人选择时有依据

    “创建新回复过程中遇到一些问题:
    你回复过于频繁了,请稍等 1800 秒之后再试”
    每当这种时候发生,我就深深感觉到,作为一个人打了这么多字,竟然被一个网站限制自由,很悲哀
    我又不是回复给你网站,我是回复给 niubee1 这么一个人
    谁写的这个程序给我站出来

    当然 niubee1 这个人也是没有整体全面的思维能力,东伊缀西医追,概念混淆泛泛而谈,不能聚焦于具体问题,展现了 v2 普通用户的一般水平

    水平高的大佬都是默默的收藏
    dawn009
        29
    dawn009  
       2019-07-27 16:20:41 +08:00
    @oxogenesis #16 并不是表象。自建 server 时就是向自己注册,所以你当然可以把卵蛋捏在自己手里。

    给我的感觉,你在做这个之前对同类型的工具了解不够。不知道你在决定造轮子之前都调查过哪些已有轮子。

    沟通成本有点高。
    oxogenesis
        30
    oxogenesis  
    OP
       2019-07-27 16:27:54 +08:00
    @dawn009 我对 solid 确实不了解,按你说的
    那么我有一个问题,比如你自建了一个 server,其他人如何使用这个 server ?需要账号吗?账号是你的 server 存储管理的吗,其他人的蛋蛋是不是被你捏住了?
    Teamo
        31
    Teamo  
       2019-07-30 14:43:20 +08:00
    我看懂了 po 说的啥了
    简化一下,举个例子
    用户即 server,好比每个人都有一个扩音器,每个人说的东西都可以到达其他人的耳朵中( client )
    但是每个人都能选择听还是不听这个人说的内容。
    问题是,要是有大量 bot 实行信息炸弹怎么办?
    可信度几乎没有的公共信息最后都筛选不出来,会导致大量用户选择弃用吧
    要不就是最后导致小圈子成立,这圈子可能产生大量非法信息
    希望能给出解答
    oxogenesis
        32
    oxogenesis  
    OP
       2019-07-30 21:33:47 +08:00
    @dawn009 应该是回答不上来了
    @Teamo
    这种每个人都是 server 的模式,强就强在不怕暴力攻击
    歹徒可以去抢劫富户、钱庄、银行,但是歹徒不会一个农民一个农民的抢,歹徒的人手是有限的
    每家都有点钱,歹徒也抢不过来,总比大家把钱都放在银行,被黑客一锅端了强

    技术手段只是保证每个小电台是可以被区分识别的,初期可以把接听电台设定为现实生活中认识的人,然后再通过关系传递,去发现其他不认识但优质的内容提供者

    人与人之间成立小圈子还是大圈子,合法信息还是非法信息,跟技术没啥关系,谁来判定小圈子不好不行,每个人身上装个监控就好了?
    如果有人利用技术干了坏事,就跟有人用棒球棍干了坏事一样,有警察叔叔
    dawn009
        33
    dawn009  
       2019-07-31 04:45:55 +08:00
    @oxogenesis #32 因为不想和你说话了。

    「 server 与 server 之间是如何通信的?如果每个人都自建 server,互相之间可以通信吗?」答案是肯定的。

    这个问题稍微调查一下就可以明白,没必要问我。

    本来是你向大家介绍自己的系统,应该是你来比较与现有系统的异同,体现自己的设计有哪些优点。现在反过来需要我给你介绍其他系统,责任倒置了。所以算了,沟通成本太高。
    linhua
        34
    linhua  
       2019-08-02 10:51:41 +08:00
    和 Twister 差不多

    "
    Twister 是一款测试性的 P2P 微型博客自由软件。它是完全分布式的,所以没有什么单独的位置可以攻击,进而无人可以让它停止工作。这个软件系统使用端对端加密以保护信息交互安全。[6] 软件基于 BitTorrent 和比特币,并且意图创建一个分布式的 Twitter 克隆。
    "
    oxogenesis
        35
    oxogenesis  
    OP
       2019-08-02 18:49:45 +08:00
    @linhua 对 p2p 并不强调,重点在“账号在本地系统”,因此服务器只做数据中继,从而重要性被大大弱化,降低垄断、权利滥用等对个人不利的情况发生
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2768 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:38 · PVG 23:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.