开始使用 Infura 的 IPFS 服务

如何开始使用 Infura 的 IPFS 服务: 本教程包括如何用我们的 IPFS API 在 IPFS 网络中 pin 您的数据,以及如何上传和访问文件

开始使用 Infura 的 IPFS 服务

本系列的第一部分,我们讨论了 IPFS,探讨了它的意义,并解释了它是如何工作的。现在,我们将告诉您如何开始使用 Infura 的 IPFS 服务: 本教程包括如何用我们的 IPFS API 在 IPFS 网络中 pin 您的数据,以及如何上传和访问文件。

要开始使用 IPFS,您需要运行一个 IPFS daemon,或者能够访问一个远程 IPFS 节点。现在,可能有很多原因导致您不想在本地运行一个 IPFS 节点,比如没有或不想安装 docker。

进入 Infura 的 IPFS 服务

import requests
import json

那么,您如何通过 Infura API 在 IPFS 网络上 pin 您的数据? 这比您想象的要容易得多! 一旦您有一个 Infura 账户 (您可以在这里注册一个),您就可以把您的文件上传到 IPFS 并访问这些数据。最近 6 个月的活跃数据都会被 pin,所以只要您在这个时间范围内访问您的数据,它就会在那里等着您!

有很多方法可以将文件上传到 IPFS,包括直接通过安装在您机器上的 IPFS 或通过 Infura API。在本教程中,让我们来看看如何使用Python 和 Infura API 来上传文件。有几种方法可以做到这一点 —— 我们将向您分步骤展示手动操作的方式,并为您提供一些资源,以支持您将 API wrapper 应用于更复杂的场景。

您需要做的第一件事是确保在您的机器上下载了 Python (您可以在这里下载),因为我们的文件是用 Python 写的。接下来,您要确保您导入了请求。

接下来,我们要确保我们要上传的文件及其内容上传到了 IPFS。对于我们的例子,让我们做一些简单的检查,以确保它工作正常:

import requests
import json

files = {
'file': ('Congrats! You have uploaded your file to IPFS!'),
}

现在是有趣的部分:上传文件。首先您要向Infura IPFS API 发送一个 POST 请求,其中附带了您先前创建的文件。一旦您的文件被上传,我们将会需要获得生成的哈希值,这样我们就可以在稍后轻松地调用这个文件来查看它。要做到这一点,我们需要从 POST 响应中获取哈希值,然后打印该哈希值。

import requests
import json

files = {
'file': ('Congrats! You have uploaded your file to IPFS!'),
}

response = requests.post('<https://ipfs.infura.io:5001/api/v0/add>', files=files)
p = response.json()
hash = p['Hash']
print(hash)

当您运行上述代码 python3 <filename>.py时,如果一切顺利,您会在终端看到类似下面的打印结果。

奥利给!您现在有了通过 Infura IPFS API 访问您的文件所需的哈希值,并将看到类似下面的输出。

QmSioQ78VA8hS6DZnrWWReX8MLWvSzcZobtjK322yWottz

如果您想走 API wrapper 的路线,这里有几个备选项,它们都提供很棒的文档,应该可以引导您快速完成开发。同样,相比起使用上述代码,这些 wrapper 可以让您更高效地完成更复杂的任务:

  • Go
  • JavaScript
  • Python - 注意: 这个 wrapper 是由社区实现的,所以它比上面的 Go 和 JavaScript 使用的更少一些,成熟度也弱一些。

现在我们将向您展示如何访问您的文件。

您要创建一个新的 Python 文件,在顶部再次导入请求。这一次,我们将使用 Infura 文档中的 get 函数,以便能够通过 Infura API 读取我们刚刚上传的文件中的内容。

要做到这一点,我们需要声明我们的参数,在这种情况下,它是我们在上一步找到的哈希值。

params = (
   ('arg', 'QmSioQ78VA8hS6DZnrWWReX8MLWvSzcZobtjK322Wottz'),
)

这使我们能够将哈希值放在我们即将调用的请求中的适当位置,以下载文件及其内容。接下来的代码与我们将文件添加到 IPFS 的过程非常相似:

import requests

params = (
   ('arg', 'QmSioQ78VA8hS6DZnrWWReX8MLWvSzcZobtjK322Wottz'),
)

response = requests.post('<https://ipfs.infura.io:5001/api/v0/block/get>', params=params)

在这一点上,如果我们打印出我们的响应,我们会看到一个 200 状态代码,这告诉我们,我们已经成功地完成了请求,并且可以访问我们的响应中所包含的数据。在本教程中,我们希望将上传文件中的信息打印到终端 - 要做到这一点,我们只需 print(response.text)

import requests

params = (
   ('arg', 'QmSioQ78VA8hS6DZnrWWReX8MLWvSzcZobtjK322Wottz'),
)

response = requests.post('<https://ipfs.infura.io:5001/api/v0/block/get>', params=params)

print(response.text)

现在,您应该可以在您的终端上看到我们在教程第一步上传的信息。

Congrats! You have uploaded your file to IPFS!

您现在已经成功地通过 Infura IPFS API 上传和访问了一个文件。恭喜您!

请查看我们的文档,了解我们当前支持功能的完整列表,以及您可以用来实现您所选择调用的相关 URL:

我们接下来的打算是什么**?**

我们目前有一个 100MB 的单次上传限制。我们正在开发一个付费版 IPFS 产品,它将可以实现更多高级功能,例如更大文件的上传。该产品还将扩展目前的 API 功能,提供一个完整的仪表盘和最新的授权集成,并为有生产准备的应用程序开发人员提供一个整体上更可靠和可扩展的解决方案。在未来几个月,我们将获得更多关于这方面的信息。

欢迎订阅我们的邮件通讯,这样您就可以第一时间获悉我们新的 IPFS 产品推出的消息。一如既往,如果您有问题或功能要求,您可以加入我们的社区直接与我们联系