问题标签 [libp2p]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
74 浏览

ipfs - IPFS 应用程序在向请求者呈现内容时可以隐藏 CID 吗?

假设有一个 IPFS 应用程序充当中间人从 IPFS 网络检索内容并将其呈现给请求者。当 IPFS 应用程序收到一个请求(没有 CID)时,它会根据请求找到 CID,使用 CID 检索并呈现给请求者。当向请求者提供内容时,应用程序是否可以隐藏 CID?与某些在线搜索类似,生成的 URL 不是人类可读的,它有效地隐藏了页面的真实位置。

0 投票
1 回答
155 浏览

rust - 如何从派生的 NetworkBehaviour 发出 SwarmEvent::Behaviour?

我正在寻找使用 mDNS、floodsub 和 kademlia DHT 编写网络行为。到目前为止,我已经让这些服务中的每一个都可以工作,但是还不能将这些服务的响应用于任何有意义的事情。

理想情况下,我能够将来自行为过程事件的数据(例如为 Kad DHT 实现的事件)传输到主 Swarmpoll循环中。例如,在我的例子中,我引用了一个结构,该结构表示通过sled数据库持久化到磁盘的图形。该结构的所有权存在于轮询 swarm 的方法中。收到a 后,我将如何更新此图表(例如添加条目)KademliaEvent

我尝试过的解决方案:

  • 将我想要更新的数据结构的所有权转移到ClientBehavior结构中,这样我就可以self.my_data_structure.add(result);KademliaEvent inject_event方法 中获取
    • #[derive(NetworkBehaviour)]根本不喜欢这个
    • Graph只是一个结构,不会发出任何事件/实现NetworkBehaviour
  • 创建一个Context结构体,derive该结构体可用于在轮询方法和相应方法 NetworkBehaviour之间来回传递响应inject_event
    • #[derive(NetworkBehaviour)]不适合Arcs / Mutexes

这是我的 NetworkBehavior 的样子:

以及我的 KademliaNetworkBehaviourEventProceess实现是什么样的:

以及我如何产生我Swarm的和我的ClientBehavior

以及我如何轮询群体:

我只需要实现NetworkBehaviour自己吗?

0 投票
1 回答
356 浏览

ipfs - 保存到 IPFS 之前使用 Buffer

我正在按照 IPFS github示例保存到 IPFS:

Buffer我注意到字符串在保存之前被转换为二进制。有人可以解释一下这里的用法Buffer吗?保存图像或视频文件怎么样?

0 投票
1 回答
73 浏览

node.js - JS-libp2p 教程文档“错误:找不到模块‘libp2p’”

我想开始学习使用 libp2p,因此启动了教程文档并立即遇到了问题。

文档:https ://docs.libp2p.io/tutorials/getting-started/javascript/

跟着我到了“Run Libp2p”标题。运行脚本我收到错误消息Error: Cannot find module 'libp2p'

安装模块时sudo npm install libp2p出现错误读数:

ursaNative bindings compilation fail. This is not an issue. Modules that depend on it will use fallbacks. fs.js:115 throw err; ^

`

我不太确定为什么错误的权限被拒绝部分,因为它是作为 sudo 运行的。问题似乎围绕着那个 ursa 脚本。虽然它可能是可选的,但我不确定。使用过 libp2p 的人以前见过这个吗?

我在 ubuntu 19.10 上使用 node12.16.1 和 npm6.13.4

0 投票
1 回答
340 浏览

javascript - 如何让 go-ipfs 使用 ws-star 进行 punsub

当我在中使用 wss 时go-ipfs,它会抛出不支持 wss

所以我不能用 /dns4/ws-star.discovery.libp2p.io/tcp/443/wss/p2p-websocket-star

我想让 js-ipfs 和 go-ipfs 可以加入同一个 pubsub 主题

是否有任何其他地址可以实现或如何使 go-ipfs 支持它

0 投票
1 回答
76 浏览

substrate - 使用 Substrate Libp2p 宣传其他信息?

Substrate 使用 libp2p 进行对等发现和传输。

是否有使用该层从对等点发布附加信息的功能?或者,使用基板来宣传信息而不需要将该信息下沉到链中?

例如,附加到轻客户端的其他 RPC 端点的位置。

0 投票
1 回答
270 浏览

p2p - 我对 IPFS 响应时间的期望是什么?

IPFS-服务器

我有一个 go-ipfs 守护程序,配置有标准 ipfs“服务器”配置文件,运行在由大型云提供商托管的 linux 服务器上。

IPFS 客户端

我有一个 go-ipfs 守护程序,配置了 ipfs“默认”配置文件,在我 SOHO 的 Windows 10 笔记本电脑上运行,在 NAT 后面。

观察#1

当我通过 CLI 或 API(ipfs 名称发布...)“发布”来自“IPFS-SERVER”的小文本文件的多重哈希时,该命令大约需要 120 秒到 150 秒才能完成。

当我从“IPFS-CLIENT”通过 CLI 或 API(ipfs cat /ipns/multihash)“cat”时,该命令大约需要 60 秒到 120 秒才能完成。

问题

这些是这些命令的典型或预期响应时间吗?

是否可以对客户端和/或服务器上的 ipfs 配置进行调整以减少这些响应时间?

观察#2

当我使用相同的设置但使用“私人群”时,响应时间几乎是瞬时的。

我尝试过的事情

  1. 我尝试将“IPFS-SERVER”添加到“IPFS-CLIENT”引导列表,但没有任何改进
  2. 我尝试了从“IPFS-CLIENT”到“IPFS-SERVER”的“swarm connect”,但没有任何改进

我怀疑成为“公共群体”的一部分会带来这种性能损失,因为 DHT 更大,因此解析时间更长?还是这里有其他机制在起作用?- 谢谢你!!!

0 投票
1 回答
1093 浏览

ipfs - 如何在 IPFS/libp2p 中获取 WebRTC 对等体的 IP 地址?

我正在使用此代码在浏览器中使用 IPFS。我想知道如何访问 webRTC 对等方的 IP 地址?甚至知道对等点实际上是 webRTC 还是 http 对等点?

node.swarm.peers()给了我一个同行列表,但它似乎不包括 IP 地址。

0 投票
1 回答
357 浏览

ipfs - 如何在浏览器的 IPFS/libp2p 中记录对等消息?

我做了一个测试,看看如果我尝试获取一个不存在的 CID 会发生什么,看看我是否可以不断地询问 IPFS 中的每个对等点。它似乎不起作用。我“连接”到大约 10 个同行,然后它放弃了。我不确定我是否真的在“连接”。我不确定发生了什么。我不知道我实际上是在连接到任何对等点并要求他们提供 CID。我似乎连接到星型服务器,并看到一个对等点列表,但不确定我是否连接到任何这些对等点。

我应该听其他事件来调试正在发生的事情吗?如何收听我发送给同行的消息?

我对 Bittorrent DHT 工作原理的假设是,如果 CID 不存在,我最终应该询问网络上的每个对等方是否有这个 CID。全网只有10个peer吗?还是那台明星服务器上只有 10 个对等点?没有星服务器发现吗?如何找到“忙碌”的明星服务器?

0 投票
1 回答
216 浏览

node.js - 电子手柄优雅地崩溃

我正在尝试在电子应用程序中实现 libp2p,该应用程序(显然)已打开节点支持。

我尝试使用以下代码捕获错误:

但是,如果我故意或意外抛出错误,应用程序会崩溃并重新加载,并且我看不到错误,因为 chrome devtools 会清除其控制台,并打印出“Devtools 已断开连接”消息。

2个错误抛出的例子:

我怎样才能正确处理错误,所以电子(或节点)不会崩溃?