首页 文章

如何使用IPFS存储应用程序状态(作为dApp的后端)?

提问于
浏览
2

我刚开始使用IPFS和以太坊 . 我们正在构建dApp(移动)并计划用IPFS和以太坊替换标准API和DB层 . 所以,经过大量阅读后,我有以下问题,

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

  • 如果可以进行第1点,则可以直接访问文件数据,但如何访问应用程序 . IPFS中的数据(例如:存储和检索的推荐结构是什么,如何存储不同的用户数据等)?

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

  • 当我们在IPFS中存储视频时,要在客户端中流式传输视频,我们是否需要使用CDN,我不知道如何在分散式解决方案中实现这一点 .

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

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

  • 有关实现上述方法的工具和框架的任何建议吗?

提前致谢 .

1 回答

  • 1

    使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 gateway .

    目前正在努力使IPFS非常有效地分发视频等大型文件 . 有些应用已经在使用此功能,例如D.Tube

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

    不.IPFS / libp2p基本上是分布式Web的网络堆栈 . 如果您需要自动执行由事件触发的脚本等功能,您可能必须自己在IPFS pubsub上编写它,或使用更高级别的中间件,如Orbit DB .

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

    是 . IPFS还很年轻 . 例如 . 来自许多同行的大型文件的分发存在问题currently being worked on . 许多公司正在使用IPFS进行 生产环境 ,但您将生活在最前沿并且偶尔出现问题 .

    有关实现上述方法的工具和框架的任何建议吗?

    如果不了解开发人员的总体目标和技能水平,很难回答 . 如果您想获得最高性能,则必须直接使用IPFS或libp2p . 要开始,在OrbitDB之类的东西上构建可能是有意义的 .

    JS-IPFS也有很多例子可供使用 .

相关问题