p2p客户端 给数据加密_想法:通用的P2P网络客户端

p2p客户端 给数据加密

对于某个项目,时不时地会有一个半生半熟的想法,因为时间不足,他们不太可能做。 之前我已经写过关于这种随机应用程序的想法 ,但是它们主要是关于小型应用程序的。

在这里,我想分享一个更大的东西(因此很难节省时间)的想法-一个通用的P2P网络客户端。 P2P网络在各个领域都很流行,最著名的是文件共享和加密货币。 但是,从理论上讲,它们可以应用于更多问题,社交网络,搜索引擎,乘车共享,分布式AI等。所有这些示例都已在p2p上下文中实现,它们甚至可以正常工作,但缺乏普及性。

普及实际上是这些应用程序的最大问题–为了使服务流行,在许多情况下您需要网络效果 –与100个用户共享的p2p文件不会从p2p中受益。 一个拥有100个用户的社交网络毫无用处。 这些p2p服务很难吸引,因为它们需要额外的步骤-安装软件。 您不仅可以打开网页并注册,还必须安装一些自定义软件,这些软件将用于加入p2p网络。

P2P网络是分布式的,即没有中央节点可以控制发生的事情。 该控件保留在已安装的二进制文件上,并且通常是开源的。 并且您需要该二进制文件才能建立覆盖网络 。 这些网络重用了Internet的传输层,但不依赖于万维网标准,而且最重要的是,它们不高度依赖DNS(除了, 它们在首次运行时实际上是为了发现一些已知的种子而这样做)节点)。 因此,一旦连接到网络,就无需进行HTTP或DNS查询,所有内容都将保留在特定协议(例如bittorrent)中。

但是,不仅您必须信任并安装某些软件,而且还必须成为网络的一部分并定期与对等方交换数据,这一事实。 因此,如果您想成为数十个p2p网络的一部分,那确实无法扩展-每个网络可能都渴望资源,您必须始终保持数十个应用程序运行(并在启动时启动)。

这就是想法–为什么我们没有通用的p2p客户端。 建立与其他对等方的链接并且与要传输的数据无关的软件。 据我所知,p2p层在不同的产品中非常相似–您尝试在您的直接网络中查找对等节点,如果找不到,则连接到已知的种子节点(首先是使用DNS轮询的DNS,然后按一列硬编码的IP),然后在您连接种子节点时,会为您提供要连接的对等节点的列表。 每个对等节点都具有其他对等节点的知识,因此您可以快速连接到大量对等节点(我显然是在简化流程,但这大致就是它的工作方式)。

一旦建立了对等方列表,就可以开始执行特定于应用程序的工作-共享文件,下载加密货币分类帐,共享搜索索引,共享社交网络配置文件数据库等。但是p2p网络部分可以是,广义的。

因此,我们可以拥有该通用客户端并使之可插入–每个应用程序开发人员都可以在其之上编写自己的应用程序。 客户端不仅是用户的单点服务,还可以自动管理资源-入站和出站流量,CPU / GPU使用情况(例如,在加密货币挖矿的情况下)。 所有这些应用程序(即插件)都可以通过从供应商的网站上下载来安装(有点类似于原始问题),也可以从客户本身可用的市场上下载。 除非市场本身是客户端内置的p2p应用程序,否则这显然意味着集中的市场。

因此,有效地,您将能够插入下一个文件共享解决方案,下一个加密货币,加密消息传递或下一个分布式社交网络。 而且您的用户将不会再安装其他桌面应用程序。 仅凭这一点并不能解决网络效应,因为您仍然需要足够的用户才能将插件添加到他们的客户端中(并且许多人都需要从客户端开始),但这肯定会使他们更容易。 想象一下,如果我们没有Android和Apple应用程序商店,而不得不通过其他方式找到相关的应用程序。

该通用客户端甚至可能是浏览器插件,因此当您在线时它始终处于打开状态。 它不是必须的,但是可以简化采用。 尽管将其编写为插件会很复杂,但肯定有可能–已经有p2p解决方案用作浏览器插件。

实际上,许多人认为区块链智能合约正是做到这一点的一种方法-拥有分布式应用程序。 但是它们有不必要的限制-它们处理在区块链上共享的数据。 在某些情况下,您不需要。 您不需要在加密货币意义上达成共识。 例如,在文件共享中,您要做的就是计算文件(及其块)的哈希,然后开始将它们发送给感兴趣的对等方。 无需将文件存储在区块链上。 与即时消息传递相同–您无需将消息存储在共享的不可变数据库中,只需将其发送给收件人。 因此,智能合约不像我建议的那样通用。

通用客户端是否可以容纳无限数量的不同协议和用例,通信协议的外观如何,其应支持的编程语言以及对客户端的安全性有何影响(例如,客户端提供的沙盒是什么),所有将要使用的UI标记都是重要的操作细节,但是除了本文的重点之外。

您可能想知道是否还没有完成任何类似的工作。 好吧,我找不到一个。 但是有很多工作可以支持这样的项目: Telehash (网格协议), JXTA (p2p协议)及其Chaupal实现libp2pChimera (p2p库), Kademlia (分布式哈希表)。

这样的项目是否可行–当然。 是否不可避免地采用它-并不是那么肯定,因为首先安装它需要立即有用。 因此,由于每个“平台”都将遇到鸡与蛋的问题–如果没有有用的插件,人们将安装它,而如果没有用户安装,人们将编写插件。 这可以通过多种方式解决(例如,最初向开发人员付款以编写插件,捆绑一些标准应用程序(例如文件共享和即时消息)),这可能是一个商机(通过市场或订阅获利)以及社区项目。 。

我只是在分享这个想法,希望有更多时间和对分布式网络有更多了解的人可以借鉴并充分利用它。 如果不是这样,那么思考一下互联网的未来将永远是一件好事。 集中化是不可避免的,因此我看不到p2p会很快(或永远)摆脱集中化服务,但是当真正分散时,可以说有些事情会更好,更安全。

翻译自: https://www.javacodegeeks.com/2019/07/idea-a-generic-p2p-network-client.html

p2p客户端 给数据加密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值