当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

libp2p-rs

基于 Rust 的 p2p 底层网络
授权协议 MIT
开发语言 Rust
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 不详
投 递 者 拓拔弘亮
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Netwarps 团队参考 libp2p 实现了一个基于Rust语言的 p2p 底层网络—libp2p-rs。libp2p-rs大量使用了最新的 async/await 语法,是一个简洁的高性能、轻量化的 p2p 网络方案。

libp2p-rs 摈弃传统的 poll 方式,尝试完全使用 async/await 书写异步代码,系统框架主要参考 go-libp2p,部分代码重用 rust-libp2p,以此探索使用 async/await 方式开发大型网络项目的可行性。短期目标为 go-libp2p 中 BasicHost 对应的功能,不涉及 Routing,因此可以看作为 libp2p 的一个子集。

libp2p-rs 已经开源,目前发布的版本是 v0.1.0,大体上完成了相当于 Go 语言版本发布中的 basic host 功能,实现了不同语言之间互联互通,可以用来构建基于 Rust 的网络应用程序,计划在接下来的一段时间继续完善一些缺失的功能,包括异步并行协议升级处理,多地址同时连接,完整的统计,同时会积极探索如何实现路由等高级功能,最终完成一个全功能的版本,这部分主要包括 DHT 分布式哈希表, Gossip 协议以及 mDns 等等,是 libp2p 网络寻址,特别是基于内容寻址的基础设施,也是 IPFS 所依赖的重要功能。由于功能的复杂性,相应地工作量也是巨大的。未来会和各个开源组织合作,推广这个项目,不断完善去中心化网络的技术生态,帮助各种去中心化应用场景快速实现和落地。推动 IOT 和区块链技术的快速发展。Netwarps 欢迎感兴趣的 Rust 爱好者一起参与到这个开源项目的开发和维护中来。

  • 前言: 本文以floodsub为例,讨论如何在libp2p-rs上开发新协议,详细代码请查看源码。 实现两个trait 在libp2p-rs中,swarm提供了两个trait: Notifiee用于接收swarm的通知,当有新的连接创建或者连接关闭时,swarm会调用connected()或者disconnected(); ProtocolHandler用于读写协议的数据,协议协商成功后,swar

  • Netwarps 一直在做去中心化的存储和计算平台,目标是物联网,甚至 NDN 网络。因此我们需要构建一个简洁的高性能的底层网络。之前 Netwarps 使用 C 语言实现了一套基本的 P2P 网络,然后在这个网络上搭建了去中心化文件存储系统(DFS)和去中心化计算平台(DCP)。 但是随着技术的发展,我们越来越觉得基于 C 语言构建的 P2P 底层网络存在很多问题: 1、C 语言实现的异步框架维

  • 前言 libp2p-rs v0.2.0已经支持Kad-DHT,支持节点通过DHT网络发现节点和内容。 本文主要展示如何在libp2p-rs使用DHT,以及罗列出swarm和kad的部分API。 使用kad step1: 创建swarm let sec = secio::Config::new(keys.clone()); let mux = yamux::Config::new(); let

  • Libp2p学习 参考资料:libp2p-specifications : https://github.com/libp2p/specs 持续更新ing 1. 介绍 Libp2p的实现目标是: 支持各种各样的传输方式: 传输:TCP,UDP,SCTP,UDP,uTP,QUIC,SSH,etc. 安全传输:TLS,DTLS,CurveCP,SSH 有效使用sockets(连接重用) 允许端点之间的

  • GO-LIBP2P入门 这是有关使用libp2p的Go实现go-libp2p的一系列教程中的第一篇。 我们将介绍安装Go,设置新的Go模块,启动libp2p节点以及在它们之间发送ping消息。 安装Go go-libp2p建议使用包含模块功能的Go版本,这意味着您需要的Go版本至少为1.11。 您可以按照官方安装说明安装 Go的最新版本。 安装后,您应该可以运行go version并查看> = 1

  • 目前进度为80%, 持续更新... 1 介绍 在开发IPFS(星际文件系统)的过程中,我们遇到了很多在异构设备之上运行分布式文件系统所带来的若干挑战,这些设备具有不同的网络设置和能力。在这个过程中,我们必须重新审视整个网络堆栈和详细的解决方案,以克服由多个网络层级和多种协议设计所施加的障碍,而不打破兼容性或再造技术。 为了构建这个库,我们专注于独立解决问题,创建具有复杂抽象的复杂的解决方案,当把关

  • 以太坊 对应代码位置 github.com\ethereum\go-ethereum\p2p\discover 概述 以太坊实现了udpv4和udpv6两种节点发现。 他们都包含一个table结构体来存储node信息。 会从table 、discovery两个方面叙述。 table 以太坊的定义是 a Kademlia-like index of neighbor nodes 是一个table但不

  • libp2p在比特币,以太坊,filecoin中是去中心化网络层面的核心技术。 golang有开源一个libp2p的框架。似乎看起来好难。…… 我研究问题的方式是:剥离皮肉,留下骨干,然后再把皮肉贴回去,调试的方式去进一步研究。不然隔着那么多的东西,你很难看清楚是怎么实现的。 libp2p 其实贼简单只是比较绕一些,本质上跟http一样简单。 libp2p要素: 节点拓扑,用kademlia算法的

 相关资料
  • ARP(地址解析协议) 基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的。 当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可;如果在AR

  • 1 P2P网络介绍 ​ 对等网络(P2P网络)是分布式系统和计算机网络相结合的产物。可以定义为:网络的参与者共享他们所拥有的一部分硬件资源(处理能力,存储能力,网络连接能力,打印机等),这些共享资源通过 网络提供服务和内容,能被其他对等节点直接访问而无需经过中间实体。在此网络中的参与者即是资源,服务和内容的提供者,又是资源,服务和内容的获取者。 ​ 在HPB主网网络中,是由运行HPB公链程序的计算

  • 我正在做一个移动项目,需要用两个设备进行P2P通信。 和我面临的问题。(因为智能手机很少有公共ip) 我找到了一些答案。它是'UDP打孔‘。 我想我对'UDP打孔‘有100%的概念上的理解,并且写了一些代码。但不管用。 这是我的情况。 但不管用。(实际上是断断续续地工作。也许10次就有一次?我不知道为什么成功和失败。没有任何微小的共同关系。) 我认为这不是NAT类型的问题。我测试了韩国,韩国90%

  • 所有 Keras 网络层都有很多共同的函数: layer.get_weights(): 以含有Numpy矩阵的列表形式返回层的权重。 layer.set_weights(weights): 从含有Numpy矩阵的列表中设置层的权重(与get_weights的输出形状相同)。 layer.get_config(): 返回包含层配置的字典。此图层可以通过以下方式重置: layer = Dense(32

  • P2P 网络 比特币网络使用简单的方法来执行对等节点的发现和节点间的通信。以下章节适用于全节点和SPV客户端,不同的是SPV通过布鲁姆过滤器(Bloom filters )执行块的发现。 对等节点发现 比特币的核心部分维护一个在启动时可以连接的对等节点列表。当一个完整的节点第一次启动时,它必须被自举(bootstrapped)到网络。这个过程如今在比特币的核心部分通过一个短名单上的DNS种子自动执

  • 在本书中我们也遇到了不少底层的命令。 我们遇到的第一个底层命令是在 合并请求引用 中的 ls-remote 命令。我们用它来查看服务端的原始引用。 我们在 手动文件再合并、 Rerere 及 索引 章节中使用 ls-files 来查看暂存区的更原始的样子。 我们同样在 分支引用 一节中提到了 rev-parse 命令,它可以接受任意字符串,并将其转成一个对象的 SHA-1 值。 我们在 Git 内