5

我只是从 IPFS 和以太坊开始。我们正在构建一个 dApp(移动)并计划用 IPFS 和以太坊替换标准的 API 和 DB 层。所以,经过大量阅读,我有以下问题,

  1. 使 dApp 直接与 IPFS 对话(通过 IPFS API)以存储数据(应用程序数据或文件)并获取数据。即,用 IPFS 完全替换 API 层似乎是可能的,但是这种方法有什么问题吗?我们可以完全没有 API 吗?

  2. 如果第 1 点是可能的,访问文件数据很简单,但如何访问应用程序。IPFS 中的数据(例如:推荐的存储和检索结构是什么,如何存储不同的用户数据等)?

  3. 我了解添加到 IPFS 的数据是公开可用的,我们如何保护这些数据并使其仅对特定客户可用?据我了解,IPFS 中没有公钥/私钥机制?

  4. 当我们在 IPFS 中存储视频时,为了在客户端流式传输视频,我们是否需要使用 CDN,我不确定如何在分散的解决方案中做到这一点。

  5. 当某些事件被触发或由客户端应用程序命令时,IPFS 中是否有任何选项可以自动执行任务(例如:运行脚本)?

  6. 从节点查找和获取数据时,IPFS 是否存在任何已知的性能问题?

  7. 关于可用于实现上述方法的工具和框架有什么建议吗?

提前致谢。

4

1 回答 1

3

使 dApp 直接与 IPFS 对话(通过 IPFS API)以存储数据(应用程序数据或文件)并获取数据。即,用 IPFS 完全替换 API 层似乎是可能的,但是这种方法有什么问题吗?我们可以完全没有 API 吗?

取决于你想做什么。但是使用内容寻址存储、IPNS 和 ipfs pubsub,您拥有编写一些非常复杂的应用程序的所有组件,这些应用程序不使用任何集中式服务。

特别是 pubsub 仍处于试验阶段。但是最新版本的 IPFS 0.4.18 包含一个新的 pubsub 实现,它应该更具可扩展性。

如果第 1 点是可能的,访问文件数据很简单,但如何访问应用程序。IPFS 中的数据(例如:推荐的存储和检索结构是什么,如何存储不同的用户数据等)?

您只需在您控制的 IPNS 密钥下发布您的应用程序。假设我们在这里讨论的是 javascript/typescript 应用程序,您可以像往常一样使用 webpack 之类的工具打包它们,然后将最终工件放在 IPFS 上并使用 IPNS 发布。

我了解添加到 IPFS 的数据是公开可用的,我们如何保护这些数据并使其仅对特定客户可用?据我了解,IPFS 中没有公钥/私钥机制?

每个 IPFS 节点都有一个公钥/私钥对。您可以使用它来加密节点的消息或签署来自节点的消息。这在 IPNS 中使用。每个节点可以有多个密钥对。

当我们在 IPFS 中存储视频时,为了在客户端流式传输视频,我们是否需要使用 CDN,我不确定如何在分散的解决方案中做到这一点。

IPFS 基本上一个 CDN。因此,您不必使用额外的 CDN。您还可以使用Cloudflare IPFS 网关

目前正在努力使 IPFS 非常有效地分发视频等超大文件。已经有应用程序在使用它,例如D.Tube

当某些事件被触发或由客户端应用程序命令时,IPFS 中是否有任何选项可以自动执行任务(例如:运行脚本)?

不,IPFS/libp2p 基本上是分布式网络的网络堆栈。如果您想要诸如自动执行由事件触发的脚本之类的功能,您要么必须自己在 IPFS pubsub 之上编写它,要么使用更高级的中间件,例如Orbit DB

从节点查找和获取数据时,IPFS 是否存在任何已知的性能问题?

是的。IPFS 还很年轻。例如,当前正在处理的来自许多对等方的大文件的分发存在问题。许多公司在生产中使用 IPFS,但您将生活在最前沿并且偶尔会遇到问题。

关于可用于实现上述方法的工具和框架有什么建议吗?

如果不了解总体目标和开发人员的技能水平,很难回答。如果你想获得最大的性能,你将不得不直接使用 IPFS 或 libp2p。首先,建立在 OrbitDB 之类的东西上可能是有意义的。

还有很多JS-IPFS入门的例子。

于 2018-11-12T17:53:28.000 回答