快速搜索内容:OK交易平台+IPFS指南

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

今天要和大家分享的是一篇技术性较强的文章,讲述了一种在IPFS系统中快速搜索内容的方法。

假设希望尝试这个方法的读者已经有了自己搭建的一个IPFS系统,并且有多个运行在Ubuntu16操作系统上的节点。

适合阅读这篇文章的读者有以下几类:- 读者希望在自己已搭建的IPFS系统中快速搜索内容;- 读者的IPFS系统中不仅运行着普通节点,还运行了IPFS网关;- 读者的IPFS系统中总有节点时不时和其他节点断开或失联。

IPFS是一个强大的去中心化文件分发和存储协议,但它也存在一些缺憾,比如无法保证所有节点之间始终互联。

这个缺憾导致即使在系统刚搭建好时所有节点都启动了,这些节点最终可能会互相断开失联,从而降低内容搜索的速度。

在这种情况下,当系统使用了网关,并将用户引导到网关来搜索所需内容时,就会出现问题 - 如果网关与所有节点都没有直接连接,则用户搜索的内容需要花费更长的时间才能被发现。

那么如何解决这个问题呢?

第一步是获取节点的"multiAddresses"。

在每个IPFS节点中打开命令行工具,并运行命令ipfs id。你将会看到如下结果:

{"ID":"YourNodeID","PublicKey":"YourPublicKey","Addresses":["/ip4/127.0.0.1/tcp/4001/ipfs/YourNodeID","/ip4/XXX.XXX.XXX.XXX/tcp/4001/ipfs/YourNodeID","/ip6/::1/tcp/4001/ipfs/YourNodeID","/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/YourNodeID","/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/YourNodeID","/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/YourNodeID","/ip4/XXX.XXX.XXX.XXX/tcp/4001/ipfs/YourNodeID",],"AgentVersion":"go-ipfs/0.4.17/","ProtocolVersion":"ipfs/0.1.0"}

我们重点关注这里的"Addresses"数组。它包含了"multiAddress"值,这些值是外部的IPFS节点用来连接节点使用的数据。这些结果有可能会有重复,但这没关系。我们只需要记录下那些包含外部IP地址的值。如果你的系统使用的是IPv6,记下那个IPv6的"multiAddress",如果你的系统没有使用IPv6,就记下IPv4的"multiAddress"。

第二步是连接你的IPFS节点。

现在把系统中的IPFS节点互相连接起来。

假设我们有一个节点A和一个节点B,如果有多个节点,下列方法也适用。运行下列命令:

ipfs swarm connect /ip4/BBB.BBB.BBB.BBB/tcp/4001/ipfs/NodeBID

将上例中的"multiAddress"用节点B的IPv4"multiAddress"替换。

如果节点使用的是IPv6,运行下列命令:

ipfs swarm connect /ip6/BBBB:BBBB:BBBB:BBBB:BBBB:BBBB:BBBB:BBBB/tcp/4001/ipfs/NodeBID

将上例中的"multiAddress"用节点B的IPv6"multiAddress"替换。

运行完命令后,我们会得到"connectNodeBIDsuccess"的结果。

我们可以用下列命令测试一下看这些节点是否已经互联了:

ipfs swarm peers

在节点A上,你现在应该能在返回的结果中看到节点B的"multiAddress",同理在节点B上,你应该能在返回的结果中看到节点A的"multiAddress"。

现在节点A和节点B已经互联了。如果A搜索的内容就在B上,那么搜索就应该很快,而不再像普通IPFS那样通过一堆节点中介才能搜索到内容。这时节点B将会是节点A搜索内容时的第一个被查询的对象。

第三步是让运行自动化。

前面我们的操作都是在命令行手动输入指令实现的,那有没有办法让这些指令自动执行,使节点之间永远互联呢?

我们可以使用Linux服务中的计时器来实现这个目标。

假设我们有一个网关节点,并希望我们所有的IPFS节点都能自动连接到这个网关。那么对于每一个希望直接连接网关的节点,我们在该节点上添加两个文件:

1. 第一个文件是:/etc/systemd/system/gateway-connector.service,其内容如下:

[Unit]Description=Job that periodically connects this IPFS node to the gateway node[Service]ExecStart=/home/yourUserName/go/bin/ipfs swarm connect /ip4/GGG.GGG.GGG.GGG/tcp/4001/ipfs/gatewayIDEnvironment="IPFS_PATH=/ipfs"

注意:在上述文件中,有几个值需要替换成你自己的值。

在ExecStart中,你要将IPFS的执行路径替换成你安装"Go/IPFS"可执行文件的路径。

在ExecStart中,将"multiAddress"替换成你在网关上运行"ipfs id"得到的返回值。这里也可以使用IPv6的"multiAddress"。

在Environment中,你需要用你安装IPFS repo的路径替换。你执行"ipfs repo stat"后会得到一个返回值"RepoPath",就是这个值。

2. 第二个文件是:/etc/systemd/system/gateway-connector.timer,其内容如下:

[Unit]Description=Timer that periodically triggers gateway-connector.service[Timer]OnBootSec=3minOnUnitActiveSec=1min[Install]WantedBy=timers.target

在上述文件中,"OnBootSec"是你的机器在启动后要等待多久才启动计时器的时间设定;"OnUnitActiveSec"是每个"gateway-connector.service"执行后下一个"gateway-connector.service"执行之间要等待的时间。

第四步是运行自动化。

现在我们创建了自动化文件,并运行它们。

在每个节点的命令行中,添加我们上述列出的两个文件,然后运行下列命令:

sudo systemctl enable gateway-connector.timersudo systemctl start gateway-connector.timer

为了验证我们添加的文件是否有效,运行下列命令:

systemctl list-timers

现在你就能看到"gateway-connector"有一个值,可以运行下列命令验证其结果:

systemctl status gateway-connector

至此,我们的系统就搭建好了。

参考链接:https://medium.com/pinata/how-to-keep-your-ipfs-nodes-connected-and-ensure-fast-content-discovery-7d92fb23da46作者:Filecoin社区

本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://czxurui.com/zx/66262.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年08月20日
下一篇 2023年08月20日

相关推荐

  • 比原链节点竞选多少币,区块链竞选是什么意思啊

    一、“炒币”内幕有哪些“佛系炒币躺着赚20万!”“2天赚13万只是睡一觉的事情!”“币圈让我的100万本金快赔光了!……美少女博士教你正确的抄底姿势!”“韭菜心经,战胜庄家的必备心法!”……一搜炒币日记四个字,各类绝招、秘籍泛滥成灾。猛一听,人们还以为说的是A股。事实上

    2024-11-21 19:00:01
    4 0
  • 什么是区块链种子节点,区块链节点是什么通俗解释

    一、区块链节点具体是什么(区块链的节点是什么意思)什么是完整区块链节点?包含完整区块链、网络路由节点,只用来同步区块,参与验证,维持与对等节点的连接。区块链技术上的节点是什么?一个区块不等于一个节点:一个节点实际上就是一台接入区块链的计算机(服务器),任何联

    2024-11-19 13:30:01
    7 0
  • 以太坊节点多久更新,以太坊节点

    以太坊节点***全节点***轻节点***归档节点以太坊节点的多样性和角色在区块链网络中起着关键作用。主要有全节点、轻节点和归档节点三种类型。全节点是网络中的基石,拥有完整的区块链数据,确保交易验证和区块链同步,确保去中心化系统的安全。轻节点则是轻量级的选择,存储最

    2024-11-18 16:00:01
    6 0
  • 比特币全节点是什么,比特币节点是什么

    一、什么叫比特币,通俗一点比特币是一种网络虚拟货币,跟腾讯公司的Q币类似,你可以使用比特币购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可以使用比特币购买现实生活当中的物品。P2P的去中心化特性与算法本身可以确保无法通过大量制造比

    2024-11-15 05:00:02
    12 0
  • 星火节点是什么,星火链网是干什么

    一、星火链网是干什么“星火链网”是以产业数字化转型工业互联网作为主要的应用场景来推动,同时以网络标识或者是数字身份这种数字化的资源为突破口,利用区块链的技术能力两者结合形成了一个基础设施,具备了区块链分布式的,可以实现数据交易交换的能力。同时又可以为工业互

    2024-11-14 21:30:01
    12 0
  • 什么是出块节点,节点是指什么

    一、模块***节点是指什么你好,模块(module)系指由复数个具基础功能之组件,组件组成之具特定功能之组件,该组件用以组成具完整功能之系统、设备或程序。节点就是指能上网的设备。节点控制模块(node control module)主要完成总线通信以及对控制模块发出指令的功能。模块的

    2024-11-13 15:30:01
    13 0

发表回复

8206
验证码

评论列表(0条)

    暂无评论

ok交易所
已有100万用户加入ok交易所

立即下载