问题标签 [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 投票
0 回答
201 浏览

go - 为什么我在此 libp2p 代码中收到类型错误?

我正在尝试初始化两个libp2p.Host实例之间的连接。为此,我需要获得一个peerstore.PeerInfo. 显而易见的方法是获取由multiaddr.Multiaddr返回的实例Host.Addrs并将其传递给peerstore.InfoFromP2pAddr.

很简单,对吧?

这是一些可以做到这一点的代码:

上面的代码不会编译。编译器返回以下错误:

这似乎与gx的路径管理有关,但我不确定如何。我唯一的交互gx是在以推荐的方式安装 libp2p 时,即make && make deps从 libp2p 根目录运行,这在语义上等同于:

是什么赋予了? 为了编译我的程序,我必须做什么?

0 投票
1 回答
558 浏览

ipfs - 如何让 libp2p 集合服务器运行?

我正在尝试让libp2p 集合服务器正常工作。有人能在这里做到这一点吗?我很想得到一些帮助。我按照他们的建议安装了 docker 版本:

日志说它在 0.0.0.0:9090 运行,但是当我尝试通过 IPFS 或通过简单的 javascript 调用连接到它时,都不起作用。它返回一个 ERR_CONN_REFUSED。

注意:我有自己的 URL,但我现在只使用示例中的 URL。

在客户端,我得到一个简单的验证错误:2 “0”必须是 IPFS 格式

在服务器上,我在日志中一无所获并拒绝连接。这主要是“开箱即用”,根本没有代码更改。

GH问题在这里更详细。帮助!

0 投票
1 回答
236 浏览

go - 如何从主机获取 PeerInfo?

我正在尝试PeerInfo从一个libp2p.Host实例中获取一个。我可以multiaddr.Multiaddr通过调用获取 s列表Host.Addrs(),但我无法将它们转换为有效的peerstore.PeerInfo.

这是我的尝试,它因错误而恐慌panic: invalid p2p multiaddr

我怎样才能peerstore.PeerInfo从 a 中得到 a libp2p.Host

0 投票
2 回答
2303 浏览

node.js - IPFS-如何从对等点向另一个点发送消息?

我正在寻找一种将消息从 IPFS 对等方发送到另一个的解决方案

github 文档中,我发现了将一个对等点连接到另一个对等点的代码:

但根据文档,连接后无事可做。

有一个名为ipfs-pubsub-room的解决方案处理对等点之间的消息传递,但没有用于浏览器的 CDN。

0 投票
1 回答
571 浏览

ipfs - ipfs 节点可以查询远程对等点以列出其引脚吗?

IPFS cli/http api 有一个ipfs pin ls列出固定哈希的命令。但是,这仅适用于查询本地节点。有没有办法对远程节点运行相同的命令,例如,类似

哪个会像ipfs pin ls但在由 Peer ID 标识的节点上列出引脚?

强烈不鼓励运行 ipfs 节点的人(出于良好的安全原因)允许远程访问 http api(它提供/api/v0/pin/ls)。

是否有内部 ipfs 函数或 libp2p 函数可以使 ipfs 节点以这种方式查询远程对等点?

或者相反,是否有将本地引脚列表(即哈希列表)发送到已识别的远程对等方的功能?

谢谢

0 投票
1 回答
598 浏览

libp2p - 多路复用和多流之间的区别

多流(yamux,多流选择,..)和多路复用(mplex)有什么区别?我想为 RPC、HTTP 等使用一个 TCP 连接(一个客户端位于防火墙后面),如下所示:

哪一个适合这个案子?

0 投票
1 回答
1081 浏览

go - 如何使用 libp2p 在 golang 中处理缓冲的读写流到对等点?

我正在关注本教程:

https://github.com/libp2p/go-libp2p-examples/tree/master/chat-with-mdns

简而言之,它:

  1. 配置 p2p 主机
  2. 为传入连接设置默认处理函数(3. 不是必需的)
  3. 并向连接的对等方打开一个流:

stream, err := host.NewStream(ctx, peer.ID, protocol.ID(cfg.ProtocolID))

之后,创建了一个缓冲流/读写变量:

rw := bufio.NewReadWriter(bufio.NewReader(stream), bufio.NewWriter(stream))

现在这个流用于在对等点之间发送和接收数据。这是使用两个以 rw 作为输入的 goroutine 函数完成的:

go writeData(rw) go readData(rw)

我的问题是:

  1. 我想向我的同行发送数据并需要他们的反馈:例如,在 rw 中有一个问题,他们需要回答是/否。我怎样才能回传这个答案并处理它(启用一些交互)?

  2. 我想在 rw 中发送的数据并不总是相同的。有时它是一个只包含名称的字符串,有时它是一个包含整个块的字符串等。我该如何区分?

我想到了这些解决方案。但是我是golang的新手,所以也许你有一个更好的:

  • 我是否需要为每个不同的内容创建一个新的流: stream, err := host.NewStream(ctx, peer.ID, protocol.ID(cfg.ProtocolID))

  • 我是否需要为每个不同的内容打开更多缓冲的 rw 变量: rw := bufio.NewReadWriter(bufio.NewReader(stream), bufio.NewWriter(stream))

  • 还有其他解决方案吗?

感谢您为解决此问题提供的任何帮助!!

0 投票
3 回答
1758 浏览

node.js - IPFS 中两个节点之间的 Pubsub

我正在尝试在两个 IPFS 节点之间发送消息。我正在运行的守护进程基于 go-ipfs,并使用以下标志运行:

我编写了两个 .js 文件,一个用于订阅者:

一个是给出版商的:

我已经运行了 .js 脚本:

但是订阅者没有收到订阅者的任何消息,我不知道为什么。

在这种情况下连接两个节点的正确方法是什么?

0 投票
1 回答
873 浏览

go - 如何使用 golang libp2p 流向多个主机发送数据?

我的问题是指golang中的libp2p库:https ://github.com/libp2p/go-libp2p

该视频解释了背景:https ://www.youtube.com/watch?v=hP0hSZ7E7_Y

网络中的对等点通过缓冲流进行通信rw。对于每个新的连接对等点,都会创建一个新流,使用地址将他连接到现有对等点。这意味着有多个流,但并非所有对等点都直接相互连接。使用这些流,对等点可以通过以下方式从中读取和写入数据

rw := bufio.NewReadWriter(bufio.NewReader(stream),bufio.NewWriter(stream))

通过写消息`rw.WriteString("message") ,rw.Flush()`

并通过阅读此消息message := rw.ReadString(rw)

由于对等点并非全部连接,因此它们仅从直接连接的对等点接收消息,如果有多个连接,它们甚至不会接收所有对等点。

09:45 左右的视频中恰好提到了这个问题。视频的作者说,这可以很容易地修改,不仅可以向直接连接的对等点发送消息,还可以向多个主机发送消息。但这怎么能做到呢?

我的目标是从一个对等点发送消息,并且网络中的所有其他对等点,包括未直接连接的对等点,都可以接收(并回答)它。

0 投票
0 回答
53 浏览

libp2p - 关于在 libp2p 主机中启动新流的一些问题

第一个问题是:当主机尝试使用 libp2p 中的某个流处理程序向远程启动一个新流时,似乎远程对等方会自动启动一个 goroutine 来处理这个流,而本地对等方需要手动启动这个处理程序。这种设计的目的是什么?

第二个问题是:如果某个远程对等点启动新流或连接我的本地主机,我可以监控入站流或获取入站流吗?像 net.Listener.Accept() 这样的东西。如果是这样,我应该使用哪种方法。

谢谢你。