问题标签 [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.
go - 为什么我在此 libp2p 代码中收到类型错误?
我正在尝试初始化两个libp2p.Host
实例之间的连接。为此,我需要获得一个peerstore.PeerInfo
. 显而易见的方法是获取由multiaddr.Multiaddr
返回的实例Host.Addrs
并将其传递给peerstore.InfoFromP2pAddr
.
很简单,对吧?
这是一些可以做到这一点的代码:
上面的代码不会编译。编译器返回以下错误:
这似乎与gx
的路径管理有关,但我不确定如何。我唯一的交互gx
是在以推荐的方式安装 libp2p 时,即make && make deps
从 libp2p 根目录运行,这在语义上等同于:
是什么赋予了? 为了编译我的程序,我必须做什么?
ipfs - 如何让 libp2p 集合服务器运行?
我正在尝试让libp2p 集合服务器正常工作。有人能在这里做到这一点吗?我很想得到一些帮助。我按照他们的建议安装了 docker 版本:
日志说它在 0.0.0.0:9090 运行,但是当我尝试通过 IPFS 或通过简单的 javascript 调用连接到它时,都不起作用。它返回一个 ERR_CONN_REFUSED。
注意:我有自己的 URL,但我现在只使用示例中的 URL。
在客户端,我得到一个简单的验证错误:2 “0”必须是 IPFS 格式
在服务器上,我在日志中一无所获并拒绝连接。这主要是“开箱即用”,根本没有代码更改。
GH问题在这里更详细。帮助!
go - 如何从主机获取 PeerInfo?
我正在尝试PeerInfo
从一个libp2p.Host
实例中获取一个。我可以multiaddr.Multiaddr
通过调用获取 s列表Host.Addrs()
,但我无法将它们转换为有效的peerstore.PeerInfo
.
这是我的尝试,它因错误而恐慌panic: invalid p2p multiaddr
。
我怎样才能peerstore.PeerInfo
从 a 中得到 a libp2p.Host
?
node.js - IPFS-如何从对等点向另一个点发送消息?
我正在寻找一种将消息从 IPFS 对等方发送到另一个的解决方案
在github 文档中,我发现了将一个对等点连接到另一个对等点的代码:
但根据文档,连接后无事可做。
有一个名为ipfs-pubsub-room的解决方案处理对等点之间的消息传递,但没有用于浏览器的 CDN。
ipfs - ipfs 节点可以查询远程对等点以列出其引脚吗?
IPFS cli/http api 有一个ipfs pin ls
列出固定哈希的命令。但是,这仅适用于查询本地节点。有没有办法对远程节点运行相同的命令,例如,类似
哪个会像ipfs pin ls
但在由 Peer ID 标识的节点上列出引脚?
强烈不鼓励运行 ipfs 节点的人(出于良好的安全原因)允许远程访问 http api(它提供/api/v0/pin/ls
)。
是否有内部 ipfs 函数或 libp2p 函数可以使 ipfs 节点以这种方式查询远程对等点?
或者相反,是否有将本地引脚列表(即哈希列表)发送到已识别的远程对等方的功能?
谢谢
libp2p - 多路复用和多流之间的区别
多流(yamux,多流选择,..)和多路复用(mplex)有什么区别?我想为 RPC、HTTP 等使用一个 TCP 连接(一个客户端位于防火墙后面),如下所示:
哪一个适合这个案子?
go - 如何使用 libp2p 在 golang 中处理缓冲的读写流到对等点?
我正在关注本教程:
https://github.com/libp2p/go-libp2p-examples/tree/master/chat-with-mdns
简而言之,它:
- 配置 p2p 主机
- 为传入连接设置默认处理函数(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)
我的问题是:
我想向我的同行发送数据并需要他们的反馈:例如,在 rw 中有一个问题,他们需要回答是/否。我怎样才能回传这个答案并处理它(启用一些交互)?
我想在 rw 中发送的数据并不总是相同的。有时它是一个只包含名称的字符串,有时它是一个包含整个块的字符串等。我该如何区分?
我想到了这些解决方案。但是我是golang的新手,所以也许你有一个更好的:
我是否需要为每个不同的内容创建一个新的流:
stream, err := host.NewStream(ctx, peer.ID, protocol.ID(cfg.ProtocolID))
我是否需要为每个不同的内容打开更多缓冲的 rw 变量:
rw := bufio.NewReadWriter(bufio.NewReader(stream), bufio.NewWriter(stream))
还有其他解决方案吗?
感谢您为解决此问题提供的任何帮助!!
node.js - IPFS 中两个节点之间的 Pubsub
我正在尝试在两个 IPFS 节点之间发送消息。我正在运行的守护进程基于 go-ipfs,并使用以下标志运行:
我编写了两个 .js 文件,一个用于订阅者:
一个是给出版商的:
我已经运行了 .js 脚本:
但是订阅者没有收到订阅者的任何消息,我不知道为什么。
在这种情况下连接两个节点的正确方法是什么?
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 左右的视频中恰好提到了这个问题。视频的作者说,这可以很容易地修改,不仅可以向直接连接的对等点发送消息,还可以向多个主机发送消息。但这怎么能做到呢?
我的目标是从一个对等点发送消息,并且网络中的所有其他对等点,包括未直接连接的对等点,都可以接收(并回答)它。
libp2p - 关于在 libp2p 主机中启动新流的一些问题
第一个问题是:当主机尝试使用 libp2p 中的某个流处理程序向远程启动一个新流时,似乎远程对等方会自动启动一个 goroutine 来处理这个流,而本地对等方需要手动启动这个处理程序。这种设计的目的是什么?
第二个问题是:如果某个远程对等点启动新流或连接我的本地主机,我可以监控入站流或获取入站流吗?像 net.Listener.Accept() 这样的东西。如果是这样,我应该使用哪种方法。
谢谢你。