我刚开始使用IPFS和以太坊 . 我们正在构建dApp(移动)并计划用IPFS和以太坊替换标准API和DB层 . 所以,经过大量阅读后,我有以下问题,
-
使dApp直接与IPFS通信(通过IPFS API)来存储数据(应用程序数据或文件)并获取数据 . 即,用IPFS完全替换API层似乎是可能的,但这种方法有什么问题吗?我们可以没有API吗?
-
如果可以进行第1点,则可以直接访问文件数据,但如何访问应用程序 . IPFS中的数据(例如:存储和检索的推荐结构是什么,如何存储不同的用户数据等)?
-
我了解添加到IPFS的数据是公开的,我们如何保护这些数据并使其仅供特定客户使用?据我所知,IPFS中没有公钥/私钥机制?
-
当我们在IPFS中存储视频时,要在客户端中流式传输视频,我们是否需要使用CDN,我不知道如何在分散式解决方案中实现这一点 .
-
在触发某些事件或客户端应用程序命令时,IPFS中是否有任何选项可以自动执行任务(例如:运行脚本)?
-
从节点查找和获取数据时,IPFS是否存在已知的性能问题?
-
有关实现上述方法的工具和框架的任何建议吗?
提前致谢 .
1 回答
取决于你想做什么 . 但是,通过内容寻址存储,IPNS和ipfs pubsub,您可以编写一些非复杂的应用程序,而不使用任何集中式服务 .
特别是pubsub仍然是实验性的 . 但最新版本的IPFS,0.4.18,包含一个新的pubsub实现,应该更具可扩展性 .
您只需在您控制的IPNS密钥下发布您的应用程序 . 假设我们在这里讨论javascript / typescript应用程序,你可以像平常一样打包它们,使用像webpack这样的工具,并将最终的人工制品放在IPFS上并使用IPNS发布 .
每个IPFS节点都有一个公钥/私钥对 . 您可以使用它来加密节点的消息或从节点签名消息 . 这用于IPNS . 每个节点可以有多个密钥对 .
IPFS基本上是CDN . 所以你不必使用额外的CDN . 你也可以使用Cloudflare IPFS gateway .
目前正在努力使IPFS非常有效地分发视频等大型文件 . 有些应用已经在使用此功能,例如D.Tube
不.IPFS / libp2p基本上是分布式Web的网络堆栈 . 如果您需要自动执行由事件触发的脚本等功能,您可能必须自己在IPFS pubsub上编写它,或使用更高级别的中间件,如Orbit DB .
是 . IPFS还很年轻 . 例如 . 来自许多同行的大型文件的分发存在问题currently being worked on . 许多公司正在使用IPFS进行 生产环境 ,但您将生活在最前沿并且偶尔出现问题 .
如果不了解开发人员的总体目标和技能水平,很难回答 . 如果您想获得最高性能,则必须直接使用IPFS或libp2p . 要开始,在OrbitDB之类的东西上构建可能是有意义的 .
JS-IPFS也有很多例子可供使用 .