如何用枪建立作家群

How to build a writer group with gun

我正在用 gundb 做一些第一步,它看起来不错。但是我很难想出我正在计划的应用程序所需的解决方案。

这实际上是一个很常见的用例,应该有一组用户可以写帖子,但所有用户都应该能够阅读它们。

文档中写了很多关于如何处理读访问的内容,但我找不到任何关于如何处理对某些数据的写访问的内容。

有这方面的代码示例吗? gun 通常如何处理写入权限(一些文档/解释)?

@gwildu 限制写入访问 public 读取目前在 SEA(安全、加密、授权 - GUN 的权限框架)中 easier/beta 而不是进行私有读取访问(尽管这已经完全可能直接在此处使用 SEA 的较低级别实用程序 API、docs)。虽然我们正在努力提高易用性,abstractions/API,以及其他。

因此,您需要了解的第一件事总结在这个相当简短的指南中:

https://gun.eco/docs/Auth

这将包括向您介绍 GUN 的加密概念以及创建和登录用户有多么容易。

下一步,您将看到对 gun.user() 对象的写入与 gun 具有相同的 API,但自动默认为 write-restricted(对于那个用户,没有其他人可以篡改它)和 public-read.

所以从今天(2018/6/27)开始,您可以使用它来实现您想要的。您需要知道的是您希望写入来自哪些用户,然后订阅它。使用一些额外的代码,您今天就可以做到这一点(点击 https://gitter.im/amark/gun 寻求帮助!)

将来,您可以期待这样的 API:

user.get('thingOthers').get('canWriteTo').trust(alice)

现在当您订阅数据时,您会从您允许写入数据的人那里得到实时更新:

user.get('thingOthers').get('canWriteTo').on(data => console.log(data))

根据您的用例(可能略有不同 API,但希望不会),这也适用于阅读您数据的其他人。

例如,假设您是用户 Bob(因此 Bob 添加了 Alice 作为写访问权限),并且一些第 3 方查看者,例如 Carl 想要读取 Bob 的数据,如果他们要:

bob.get('thingsOthers').get('canWriteTo').on(data => console.log(data))

它只会订阅那些允许写入数据的实时更新。

为什么这里有区别,你应该注意的细微差别是什么?

A) 一个人可能想相信别人说的话,但不相信别人会代表他们说话。

B) 如果您确实信任某人代表您发言,那么观众(如 Carl)现在必须信任允许 Alice 发言的授权人(Bob)。这可能会危险地集中!!! (来自 trust/permission 模型,即使算法在下面 P2P/decentralized,GUN 也是。)

因此,虽然 (A) 的理解或管理可能有点复杂,但它可能是更好的途径。 (B) 更容易考虑,但可能导致权力集中(例如,世界上所有的 Carls 只相信 Bob 为他们做决定,如果 Carls [使用 (A)] 来更好决定他们认为谁应该拥有权力。)

例如,鲍勃将爱丽丝添加为写访问权限,但卡尔也可以!那样的话,如果 Bob 和 Carl 在谁应该拥有写入权限的问题上发生分歧,他们就不必相互信任!他们都会看到他们允许的内容,但看不到对方允许的内容。

显然,对于很多应用程序,每个人都 "on the same page" 并且让所有 Carls 只信任 Bob 来决定谁可以写入数据是有意义的。所以 (B) 仍然是一个不错的选择,只要知道其含义,并且知道有其他的信任模型!