去中心化的SNS工具

2012-06-30 20:12:47 +08:00
 rockxie
最近关注BITCOIN,发现这种P2P的方式的确很有魅力。

去中心化的SNS工具,不用专门建立服务器,用户承担一定的数据存储服务。

是否也可以做出这样一个工具,可以用来像FACEBOOK那样,发布自己的文字,和别人聊天,发布照片?

所有人都有一个加密之后的联系地址——唯一性(类似钱包地址)。

为了解决同步数据量过大的问题,可以让朋友之间相互存储数据,这样,只要网络上还有人存储了你的数据,不论在哪里都不会消失。

当加对方为好友之后,就会自动将对方的所有数据(博文,照片,好友的地址)下载到本地。

考虑到体积的问题,也可以有选择的保存。

即时通信就如同是给对方打钱一样,对方可以很快收到消息。(这部分内容可以选择本地保存或者上传到网络。)

大家推演一下其中的难度和实现方式
7678 次点击
所在节点    奇思妙想
40 条回复
jybox
2012-07-01 13:01:37 +08:00
比特币网络也有些问题,就是网络规模(订单数量)大了之后,客户端之间的流量会多到无法承受,这点上有很多专家分析过了...

其实,我也在酝酿一个去中心化的即时通讯,我感觉,难点主要在于好友之间的发现上,发现好友是关键,一旦发现了,两者建立连接,就干什么都可以了。更复杂的,比如组建“群”,等等。

还有就是投票的问题,很多地方都需要投票。比如,我们不可能用一个HASH串做用户名,需要有一个机制把可以记忆的用户名与HASH对应起来,这时,判断用户名的归属就需要投票了。
比特币选择了让每一笔交易经过每一个客户端,这样就不会出现交易丢失的情况了,但是也造成了上文提到的效率问题。
我们需要一种可靠的、分布式的投票方式——我还没啥好主意
jybox
2012-07-01 13:07:54 +08:00
关于每个人都充当存储服务,存储好友的信息:

如果存储的是双方的聊天记录、对方的公开日志和消息。可能没什么不妥,还会方便离线阅读。
但如果是经过加密的、与自己无关、私密的内容呢?不是每个人都愿意替别人存储吧?
人家不可能24小时在线,所以数据必须冗余地存储,必须要去存储于自己无关的数据。

我还有个不太成熟的想法:
开发各种插件,例如Dropbox、快盘,等等网盘的插件,用户可以自由选择。也有插件可以架设在自己的Web服务器或VPS上。
利用它们来存储自己的数据。
用户可以自由地从它们之间切换,这样应该也可以说是去中心化吧..
rockxie
2012-07-01 13:33:03 +08:00
@jybox 看了一下你的零毫秒,不知道第一个版本是否已经释放出来了?

我觉得前期功能多少并不重要,重要的是将它做出来。
有什么问题也不重要,重要的还是先做出来,后期可以慢慢进行改进。

看到你在论坛上纠结于界面,这点前期完全没有必要。QQ当年界面一样惨不忍睹。
ryon
2012-07-01 13:36:00 +08:00
http://pagecookery.com/
有这样的概念。:D相互关注博主,会自动更新
anyliz
2012-07-01 14:18:47 +08:00
这样数据的安全性不好吧,即使是加密的,应该也有方法破解,何况客户端本身要看数据,除非的话加密和服务器端结合起来,验证做在服务器端。
其实数据丢失的问题,如果一个人的好友较少,那么他的数据丢失的可能性也越大吧。
流量方面其实是依赖客户端方面的上行流量,流量方面的问题上面有人说到了。
另外分析下这样做有什么好处?
减少带宽和服务器开支?这样做无非是将成本分摊到每个客户端头上了。
防止封锁?统一的端口本身很好封的,协议也不例外吧。
jybox
2012-07-01 15:04:48 +08:00
@rockxie 你怎么找到我的零毫秒的........

情况比较乱,听我细细说,在写去中心化的即时通讯(3.0版本)之前,我要先写两个中心化的即时通讯(1.0版本和2.0版本)来练手,现在1.0已经完成了,但是实在惨不忍睹。2.0正在写

同时现在也在做去中心化(3.0版本)的调研,解决一些理论问题。
chuck911
2012-07-01 15:07:06 +08:00
说的就是OStatus
jybox
2012-07-01 15:08:43 +08:00
@anyliz 加密算法选择得当,密钥长到一定程度,就可以认为是无法破解的了...

关于端口,很好办啊。每个人都可以使用随机的版本号啊。你在首次使用时,程序内置一组比较稳定的服务器IP和端口,通过他们连接到网络,然后在本地缓存使用过程中遇到的其他客户端的IP和端口。供下一次登录时连接。

即使“内置的一组比较稳定的服务器”被封锁了,你也只需要向其他用户索要一个正在运转的客户端的IP和端口就可以。

比特币网络就是这样的。
rockxie
2012-07-01 16:07:26 +08:00
@jybox 从你的域名进去的,下载了客户端,不过登录不上。 可以聊聊啊,我对你的3.0版本很感兴趣。
jybox
2012-07-01 16:18:41 +08:00
@rockxie 能下载到的那是1.0,中心化的,功能很烂,现在服务器被我关掉了......

过几天就期末考试了,等放暑假的。既然你感兴趣,以后我有什么进展都在这里发一下好了。
luztak
2012-07-01 17:00:49 +08:00
@jybox 看来看过BTC原理啊.不错哟.
delectate
2012-07-01 17:35:23 +08:00
行了,大家都散了吧。去中心化只是梦想。比特币也是意淫。

先不说数据安全性,就说数据存储吧,你们知道fb存储了多少数据吗?假如说只和好友同步,那好友的信息怎么才能即时到达?信息的延迟性是显而易见的。

其次是好友,没有node列表,你怎么去发现?去中心化im也不可能。之所以要中心化,是因为要审查,还有各种协议的弱点、内网通信。而且好友列表也只能中心服务器去获取;如果是每个人都保存一份,且不论安全性,就是数据体积,再压缩也不是pc可以承受的。
jybox
2012-07-02 23:08:08 +08:00
@delectate 每个人的数据量不是很大的,你不能看总量啊
delectate
2012-07-02 23:14:59 +08:00
@jybox ,每个人 的数据量都要随着sns的扩大而倍增。仅算好友列表的,已经十分庞杂。而其他数据更是不可想象,图片、视频、音乐都是重头。数据的延迟性更不可估量。

手机版的,怎么应对高能耗?
jybox
2012-07-02 23:21:16 +08:00
@delectate 数据存储参见22楼,可以自己存储到网盘/自己的服务器上。虽然有点违背去中心化,但是至少自己有选择余地。

关于手机:可以构建有层次的网络,像手机这种计算能力很低的终端,可以不参与网络转发等工作。有其他有计算能力的节点协助通讯。当然,选择协助的节点的过程是随机的。
delectate
2012-07-02 23:24:54 +08:00
@jybox ,你还是没有发现问题根源。

我一直强调信息的实时性。因为延迟是最不能接受的,尤其是对于fb这样的sns,还有qq这样的im。你不想发个微博一天没有转发,看记录才发现卡在某个关键节点吧?或者qq发一句,从来没有回应……

电骡之所以没问题,是因为文件发布了就永久存活,不怕。
delectate
2012-07-02 23:26:36 +08:00
电骡发布文件,也需要simplecd这样的索引站,和kad的搜索,不然很那做到实时。
jybox
2012-07-02 23:28:35 +08:00
@delectate 实时性有些困难,但是不是不可能解决..
delectate
2012-07-03 00:01:37 +08:00
@jybox ,不过还需要一个中心服务器push信息了。有些违背初衷。

楼主的想法是好的,不过前提是,很困难实现。也许你的网络环境很好,但是还有拨号上网的,甚至还有只能uc浏览器上网的,不可不考虑。
firsthym
2012-08-01 14:13:03 +08:00
对于用户来说,这完全是透明的,剩下的只有技术人员的YY了 -- 仅仅是吐槽。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/41027

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX