1

MongoDB => Holochain Rust DHT

如果可能,如何导入

如果我使用的是不同的应用程序后端,比如 mongo,并且我的 holochain 设置和配置正确,有没有办法将数据从 mongo 获取到 holochain?我该怎么做?

这是上下文中的问题

4

1 回答 1

2

在技​​术上绝对可行;您可以编写一个 nodejs 脚本,使用 holochain-nodejs 库启动一个 Holochain 容器,然后将所有数据作为一个代理导入。然后,当用户加入基于 HC 的网络时,他们会以某种方式保证自己的身份,并“声称”所有数据都是他们的。这是它的外观草图:

  • 您(我们称您为“代理 0”)导入所有数据。
  • 对于每个用户,您使用用户 ID 创建一个“锚点”(我将在稍后解释锚点)并将每条数据链接到锚点。
  • 您还将该用户的密码哈希记录为您自己的源链上的私有条目。用户加入网络并需要证明身份的连续性。
  • 他们通过使用节点到节点的消息传递将他们的用户 ID 和密码哈希私下发送给您来做到这一点。您授权他们通过发布“代理公钥 x = 用户 ID”的条目来声明他们的身份。(为了方便起见,您可能还想从您的授权条目链接到他们的用户 ID 锚点和他们的公钥。)
  • 用户通过询问指向其用户 ID 锚点的所有链接来收集所有数据。
  • 然后,用户将他们的每条数据发布到他们自己的源链中,以此作为“声明”所有权的一种方式。
  • 现在,DHT 中数据的每个冗余副本在其元数据字段中都有两个作者——您和实际拥有数据的用户。对等点通过说“代理 0 是否已经是该数据的作者?
  • 如果是这样,代理 0 是否发布了一个授权条目,说明允许该数据的新作者声明/重新发布它?”

这种方法的问题(并非不可克服):

  • 代理 0 必须一直在线,因为他们永远不知道新用户何时会注册并尝试索取他们的数据。代理 0 必须导入大量数据。(不过我认为这不会对时间造成很大的限制)

  • 对于关系数据,如果数据不存在,则存在如何创建链接的先有鸡还是先有蛋的问题。我考虑的不是将数据链接到数据——这可以在初始导入时完成——而是将数据链接到人类,他们现在有一个可能在 DHT 上不存在的公钥,因为他们还没有加入网络。一旦他们加入,每个用户都必须这样做,并且可能会产生一些循环依赖问题。

锚点

回复:锚点,锚点只是一个由基数和链接组成的模式——基数是一个简单的字符串,所以任何知道该字符串的人都可以很容易地通过哈希找到它。它就像一个锚,用来悬挂链接。这就是为什么我建议使用它将旧用户 ID 连接到内容片段的原因。您可以在https://github.com/holochain/mixins/tree/master/anchors获得用于实现锚模式的示例源代码(请注意,这是针对 Holochain 的旧版本,因此它是用 JavaScript 编写的)。

(答案由 pauldaoust 提供)

于 2018-11-22T21:46:41.727 回答