python3 kademlia覆盖网络实现。

little-bird的Python项目详细描述


Little Bird Kademlia P2P DHT网络

python3 kademlia覆盖网络实现。

Build StatusMIT license

演示。

安装。

来自PYPI(稳定版本)

$ mkdir tmp &&cd tmp

$ pip3 install little-bird

来自Github(最新/开发版本)

$ git clone https://github.com/ZigmundVonZaun/little-bird.git

$ python3 -m virtualenv venv

$ pip3 install -r requirements.txt

设置。

将根目录上的.env.dist复制到.env 并根据需要进行编辑。

$ cp .env.dist .env && nano .env

简介。

kademlia是一个纯粹的p2p覆盖网络,同时也是dht(分布式散列表)的一部分。

本文提出了该算法:

https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf

通常与糕点和和弦相比,它被用于网络中的许多项目中 包括但不限于BitTorrent、以太坊、Gnutella、IPFS。

常见问题解答:这是kademlia的实现吗?

是匿名的吗?

没有。节点使用裸IP地址来定位彼此并共享信息 在网络中

共享信息是否加密?

不。信息在网络中共享,无需任何加密。但是,添加 加密机制很简单。

这可以通过向send_message()逻辑添加一些逻辑并实现自定义 消息接收处理程序。

这个实现在公共互联网上有效吗?

由于nat打孔的复杂性,我们决定放弃一个可以在internet上工作的实现。

然而,这仍然是我们未来的计划。

这也是一个数据库吗?

是的。故障率很低的分布式故障。 您可以随意存储和检索值

为什么故障率低?

密钥会自动复制到网络中的不同节点中正常运行时间较长的节点 在此设置中也受欢迎。

事实上,失败的概率低于节点离开 网络。节点离开网络的事件不会影响中的数据库。

是否有中央跟踪器服务器,如主协调器?

不。每个节点在网络中共享相同的权重

每个节点都包含大量信息,这些信息在节点和密钥查找中非常有用

配置信息也会作为密钥查找的副作用自动传播。

尽管缺少跟踪器,但所有跟踪器功能都由Kademlia提供

FeatureCentral Tracker NetworkDHT Based Network
Node Lookups[x][x]
Key Lookups[x][x]
Performance Increases With Load[ ][x]
Susceptible to DDOS attacks[x][ ]
Low failure rate[ ][x]

你为什么坚持认为卡德姆利娅的表现更出色你想把它卖给我吗?

因为节点数量的增加会提高网络的性能。 查找要快得多。

而在集中式网络中,追踪器可能是 不堪重负,摧毁了整个网络。

但是较高数量的节点是否会有效地拒绝服务?

不。kademlia更喜欢旧节点而不是新节点。

DDoS攻击只会将攻击节点置于网络上 等候名单恶作剧地笑着

测试

python -m unittest

幕后

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓从Java线程调用JNI并返回requestPermissions   正在实例化java自定义枚举转换器,但未调用   safari在通过代码浏览URL时释放java小程序资源   Java:为什么在一个函数中更改数组的地址,在我们从该函数返回时不更改它的地址?   java调用安卓活动的方法   java在Debian Jessie上安装Apache Wave   java如何等待一段时间,然后返回默认值?   java For循环只打印最后一个值   用户界面如何在Java中创建这样复杂的GUI?   java CreateProcess error=2,系统找不到指定的文件   java如何使用事件解耦networkmanager?   java我们如何将REST服务部署为jar?   java Jersey:无法反序列化字符串外的ArrayList实例   在mac中构建aosp时发生java编译错误   java将UNIXTIMESTAMP与ummalquracalendar库一起使用   java回滚Spring批处理作业