问题标签 [go-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 回答
236 浏览

go - 如何从主机获取 PeerInfo?

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

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

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

0 投票
1 回答
356 浏览

ipfs - 保存到 IPFS 之前使用 Buffer

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

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

0 投票
0 回答
45 浏览

go - 尝试编组和解组 libp2p AddrInfo

我正在使用 libp2p Go 库来制作 p2p 网络堆栈。

我需要将消息单播给我网络上的其他对等方。我想将 AddrInfo 结构存储在我单播的消息中,以便我可以发回响应。

以下是 libp2p 库代码:

AddrInfo 结构包含

多地址如下

这是我使用 libp2p 库的代码:

我像这样将它包含在我的消息结构中

当我编组我的消息结构然后尝试解组时,我收到以下错误:

我无法编辑 libp2p 源代码,但需要在我的结构中添加 AddrInfo。

0 投票
0 回答
23 浏览

server - 创建 go-libp2p 出口网关

我有一个应用场景,期望一对传统的客户端和服务器通过P2P集群相互通信。最简单的设置是客户端和服务器对通过 2 个中间 P2P 代理进行交互。因此,网络拓扑是客户端 <--> peer1 <--> peer2 <--> server

使用 go-libp2p/http_proxy/proxy.go 可以很容易的让客户端实现客户端 <--> peer1 <--> peer2 的部分路径。但是,目前还不清楚如何实现 peer2 <--> 服务器。困难在于服务器不是p2p主机。因此,如果无法为非 p2p 服务器正确创建 multiaddr,则 peer2 无法连接到非 p2p 对等体。本质上,我希望 peer2 充当出口网关,在 P2P 网络和非 P2P 主机之间架起桥梁。

有什么解决这个问题的建议吗?谢谢。

0 投票
0 回答
52 浏览

erlang - 客户端之间的 libp2p yamux 协议协商不成功(go-libp2p 和 erlang-libp2p)

我是 libp2p 的新手,我正在尝试通过标准 TCP 传输建立从一个 libp2p 对等体 (erlang-p2p) 到另一个 (go-libp2p) 的成功连接。erlang 客户端是稳定和维护的客户端,我正在尝试在 golang 中复制所述客户端。

两个 erlang 客户端之间的初始协商过程类似于基于读取正在发送/接收的原始数据(客户端 A 正在连接到客户端 B):

注意:yamux 协议 id 中前导反斜杠的省略是有意的,因为那是 erlang 客户端发送的内容。

上述建立后,就可以创建会话了。但是,将客户端 B 换成我的简单 go-libp2p 主机,我无法成功协商步骤 2。我用于简单 go-libp2p 客户端的代码如下:

当erlang客户端尝试连接go客户端时,多流协议协商成功,但是在收到yamux协议id后,go客户端发回na表示不支持该协议,尽管我已经明确声明了libp2p在配置选项中使用 yamux。此外,根据此处的文档,即使使用默认配置选项,似乎也应该支持 yamux/1.0.0。

我觉得我可能遗漏了一些基本的东西,感谢您的帮助。

我已经尝试过的东西:

  • 删除所有配置并使用默认的 libp2p 设置
  • NoSecurity选项添加到配置中(看起来 erlang 客户端似乎没有就我所知的任何安全性进行协商)
  • 将 Muxer ID 更改"yamux/1.0.0""/yamux/1.0.0"
0 投票
0 回答
26 浏览

libp2p - Libp2p 中的协议到底是什么?

我刚刚阅读了此处文档中的协议部分,我不得不说它给我留下的问题多于答案。

我从中得到的基本上是该协议允许节点以特定方式进行通信。但我知道它已经被称为协议,我不必阅读这篇文章。有关协议 ID 和协议协商的信息也没有提供太多价值。

我认为我缺少的是:

  • libp2p中的协议结构是什么?它提供什么接口,遵循什么规则等
  • 不要只列出内置协议(Ping、Identify、secio 等)的示例,而是展示如何使用它们并将其与它们提供的接口相关联。
  • 也许还有一个快速展示如何编写自定义协议的高级部分。

有人愿意提供更好的解释吗?

0 投票
1 回答
49 浏览

go - 未定义:运行 go libp2p 时遇到 ctx

代码如下,它是go-libp2p的官方演示。我没有遇到任何其他引用或未定义的错误

导入如下:

0 投票
2 回答
42 浏览

go - 运行 go-libp2p-http 示例时的错误

问题在于go func。错误消息是go 中的表达式必须是函数调用

错误是

命令行参数
.\sever.go:18:5: go 中的表达式必须是函数调用

0 投票
1 回答
19 浏览

http - 使用 libp2p-http 构建 HLS 的问题

我打算用libp2p实现一个经典的HLS示例,如下 https://hackernoon.com/building-a-media-streaming-server-using-go-and-hls-protocol-j85h3wem 但是我遇到了以下错误:</p>

404页面不存在

我构建 linsten 的代码:

我的代码构建客户端:

我的代码构建服务器:

新主机: