IPFS网关是什么
IPFS 网关的基础地址是指公共 IPFS 网关的根 URL,该 URL 用于通过 HTTP 访问 IPFS 存储的内容。公共 IPFS 网关是由社区提供的服务,任何人都可以通过这些网关访问 IPFS 上存储的内容。
常见的公共 IPFS 网关包括:
- https://ipfs.io/ipfs/
- https://gateway.pinata.cloud/ipfs/
- https://dweb.link/ipfs/
这些网关允许用户通过浏览器或其他 HTTP 客户端直接访问 IPFS 上的文件。使用这些网关的基本形式是将文件的 IPFS 哈希添加到网关的根 URL 后,形成完整的文件地址。例如,如果文件的 IPFS 哈希是 QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL,那么通过 https://ipfs.io/ipfs/
可以访问到该文件的地址为 https://ipfs.io/ipfs/QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL
。
使用IPFS命令行上传文件
IPFS(InterPlanetary File System)提供了命令行工具,允许用户在终端中执行各种 IPFS 操作。以下是一些常用的 IPFS 命令以及它们的简要说明:
- 安装IPFS 命令行工具
# 下载安装包
wget https://dist.ipfs.tech/kubo/v0.22.0/kubo_v0.22.0_linux-amd64.tar.gz
# 解压文件
tar -xvzf kubo_v0.22.0_linux-amd64.tar.gz
# 进入解压后的文件夹
cd kubo
# 运行安装脚本
sudo bash install.sh
-
初始化 IPFS:
ipfs init
该命令用于初始化本地 IPFS 存储库。它将在你的主目录下创建
.ipfs
目录,并生成配置文件。 -
启动 IPFS 节点:
ipfs daemon #低功耗运行指令 ipfs init --profile=lowpower
该命令用于启动 IPFS 节点。一旦节点启动,你可以通过浏览器或其他 IPFS 客户端访问 IPFS 网络。
-
添加文件到 IPFS:
ipfs add filename.txt
该命令用于将文件添加到 IPFS。它将返回一个唯一的哈希值,表示刚刚添加的文件。
-
通过哈希获取文件:
ipfs cat QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL
该命令用于通过文件的哈希值从 IPFS 获取文件内容。
-
查看 IPFS 节点信息:
ipfs id
该命令用于查看当前 IPFS 节点的信息,包括节点 ID 和网络连接。
-
在浏览器中查看 IPFS 文件:
如果你使用默认的 IPFS 网关(https://ipfs.io/
),你可以在浏览器中访问文件:https://ipfs.io/ipfs/QmXvgoHk4HHDsWPj3bXZvBmn4Q4xhGo2uJrpYJ6q2EkRJL
这只是 IPFS 命令行工具的一小部分功能。你可以使用 ipfs --help
命令来查看所有可用命令和选项的列表。此外,IPFS 还提供了一组强大的 HTTP API,可以通过编程方式与 IPFS 进行交互。
注意:在使用 IPFS 之前,请确保你已经安装了 IPFS 命令行工具。你可以从 IPFS 官方网站(https://ipfs.io/)下载并按照安装说明进行安装。
使用js代码上传文件到IPFS
IPFS 框架的编程接口: 如果你使用编程语言如 JavaScript,你可以使用 IPFS 框架(例如 js-ipfs)提供的 API 来上传文件。以下是一个简单的示例:
const IPFS = require('ipfs-core');
async function uploadFile() {
const ipfs = await IPFS.create();
const file = {
path: 'yourfile.txt', content: Buffer.from('Hello IPFS') };
const results = await ipfs.add(file);
console.log('File uploaded. IPFS hash:', results.cid.toString());
}
uploadFile();
这将输出上传文件的 IPFS 哈希。
记住,IPFS 是一个去中心化的系统,上传的文件会在网络中分布,因此其他人也可以通过相同的 IPFS 哈希访问到你上传的文件。如果你希望确保文件的长期可用性,你可能需要考虑使用 IPFS Pinning 服务,将文件保留在网络中。
IPFS配置
第一段代码设置编辑器为vim
第二段代码打开ipfs配置文件
export EDITOR=/usr/bin/vim
ipfs config edit
附录
IPFS常见问题1:
使用本地节点上传文件后,IPFS链接无法在浏览器打开,出现504 gateway timeout
原因是地址需要使用网关解析,而网关目前还没有解析到当前文件的地址,所以无法查询到文件;
解决方法:
方法1:修改网关IP
默认情况下,网关为/ip4/127.0.0.1/tcp/8082,只能在本地访问。要将其公开给网络中的其他计算机,要使用0.0.0.0作为IP地址。
即将本地ip
修改为
实测重启服务后,大约半小时可以从公共网关ipfs.io打开本地上传的文件
https://www.cnblogs.com/HandyLi/p/11864515.html
方法2:使用本地网关,举例
文件地址为
https://ipfs.io/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR
修改为
http://127.0.0.1:8080/ipfs/QmbWqxBEKC3P8tqsKc98xmWNzrzDtRLMiMPL8wBuTGsMnR
从而在本地ipfs节点打开文件,提高速度。
方法3:使用ipfs-companion,这是一个浏览器插件,在检测到文件链接可用时,会自动把地址从远程网关换成本地网关访问文件。
此问题的参考链接:https://stackoverflow.com/questions/74158980/why-is-it-so-hard-for-web-browsers-to-open-ipfs-links/75063740#75063740
ipfs-companion:
https://www.5axxw.com/wiki/content/1il7zw