专为解决各种感慨“世界真小”而制作的开源项目“涌现”介绍

总览

这个项目目前只能在Windows中运行,并且我向开源社区寻求开发帮助,希望大家可以一起把这个项目做起来

你是否曾经发问过,哎ta是怎么认识ta的?比如你高中同学的邻居是你初中同学,这种情况在朋友圈中尤其多见,点赞和评论架起了我们之间的桥梁。而此时你会感慨:“世界真小!”而这个开源项目“涌现”则旨在解决这类问题

“涌现”这个词来源于凯文凯利的《失控》,他强调了“自生自发地涌现出秩序”。而kademlia这个分布式哈希表的算法和涌现特别像,很多节点只是遵循简单的规则,却涌现出了一个复杂的网络系统

为了保护个人隐私,使用者可以在新建关系时决定是否公开关系,如果不公开的话,就会用RSA算法生成一个公钥私钥对,将私钥存储在本地的钥匙串中,而公钥用来加密这个关系并广播(没有私钥解密,得到的不过是一堆乱码),如果公开的话,就会直接广播到全网,这意味着,所有人都有可能在查询认识关系路径时查询到这一个关系。而如果不公开的话,只有有这个私钥的人才能查到

举个例子,现在有一个简单的关系图:

1. Sam<--(小时候的邻居)--> Kevin
2. Sam<--(高中同学)--> Jacob
3. Jacob<--(网友)--> Jaycee
4. Kevin<--(NOIP春季训练队友)--> Paul

第三和第四个关系是公开的,所有所有人都有可能在检索自己的关系是查到这条路径

比如你是Sam,你公开了关系2,而关系1被你锁定了,锁定的公钥是 p k pk pk ,其相应的私钥是 s k sk sk,私钥会存在本地钥匙串上,没有你本地的私钥,任何人都无法查询到这个关系,包括我们开发者

如果Paul想要查他和Sam的关系,他是查不到的,因为他没有获得关系1的权限,所以这个认识路径链在关系1断开了。

如果Jaycee想要知道她和Sam是怎么认识的,因为关系2、3、4是公开的,所以她能查到:

Sam<--(高中同学)-->Jacob<--(网友)--> Jaycee

如果Paul和Sam是好友而Sam想让他知道关系1的话,那么Paul可以把针对关系1的 s k sk sk发给Sam,而此时Paul就可以查到了

开源地址:

https://github.com/MegaGimen/The-Emergence

几个文件的描述

主程序是main.py

所有和内网穿透有关的都在“connect”这个文件夹下

**注意!**我在原生的rpcudp和kademlia这两个库上进行了一些修改(主要是因为有很多bug,比如rpcudp中有可能缓存是none而不是空的双端队列

future development roadmap(使用“roadmap”是为了纪念sunorange)

目前,我们还没有开发使用弹窗显示输出的功能(也就是目前还是在控制台中输出)。而且现在的返回字符串还是一个列表,比如[“高中同学”,“网友”]这种,希望可以优化

同时,我希望能引入一些机制让p2p网络更灵活地处理节点快速进出,因为没人会把自己的电脑一直打开着来当一个节点

我也希望让它支持更多的UI语言,包括中文、英文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值