标签: gundb

gundb 中的私有写入和公共读取

我想创建一个microblog每个人都可以阅读所有帖子的地方,但只有所有者可以删除或编辑帖子。在gundb没有海中每个人都可以编辑或删除帖子,在sea( gun.user())我必须共享公钥,在海中我如何获取所有用户的帖子并在时间轴中显示帖子?

我怎样才能用gundb创建这个?

gun gundb

8
推荐指数
2
解决办法
2181
查看次数

GunDB用户认证和用户之间的数据存储

我一直在关注你的项目很长一段时间,并且对gunDB的功能很感兴趣,它不需要中间的数据库并保持安全性.

但是,我有一些关于GunDB的问题,我已经考虑了很长一段时间了,之后我才能给Gun一个正在进行的项目.在这个项目中,数据是安全的,但是一旦设置了组,也应该是可共享的.该项目是一个移动应用程序项目,ata主要存储在SQLite数据库中的设备上.

我一直在研究Gun,因为它允许在协作方面更好地使用应用程序.但是,我的问题是:

用户认证

如何通过私钥处理用户身份验证?那么用户如何"注册"例如用户名和密码来登录该服务.

对于身份验证,我目前正在使用Firebase,可以使用用户名/密码身份验证,我想知道Gun是如何处理这种情况以及如何实现的.

数据存储

在文档和网站上,它声明数据存储在本地与每个客户端,并可以使用本地硬盘驱动器或Amazon S3存储选项存储在"节点"或服务器上.

我很好奇的是,客户端实际存储了哪些数据?这只是他/她可以访问的数据,还是整个数据集的副本,客户端只能访问他/她授予的访问权限?

维护您的数据

当我的生产系统运行大量数据时,我将如何管理我的数据流和/或帮助我的客户解决系统中存在的问题?

换句话说,如果我想要更新和/或为我的客户提供数据问题,我怎么能确保我能跟上系统.

我主要担心的是能否正确同步本地存储.

这些都是我现在的问题.

非常感谢您提前澄清这些主题.

最好的祝福,

gun gundb

6
推荐指数
1
解决办法
1124
查看次数

如何隔离 Gunjs 数据库?

我已经尝试 GunJs 几天了,我真的很喜欢它。作为一个入门项目,我关注了Fireship 聊天 dapp 视频,旨在构建您自己的聊天。

问题是,既然我已经完成了教程,我想创建自己的聊天。然而,由于某种原因,如果我在自己的应用程序中获得一个“聊天”节点,它似乎会在与在线教程相同的“聊天”节点上进行操作。

onMount(() => {

    // Get Messages in large chat
    db.get('chat')
    .map()
    .once(async (data, id) => {
        if (data) {
            // key for E2E - to do: change for web3
            const key = '#foo';

            var message = {
                //transform the data
                who: await db.user(data).get('alias'),
                what: (await SEA.decrypt(data.what, key)) + '',
                when: GUN.state.is(data, 'what'), 
            };

            if (message.what) {
                messages = [...messages.slice(-100), message]
            }
        }
    })
})
Run Code Online (Sandbox Code Playgroud)

如果我更改加密密钥,情况也会如此(然后消息将变得未定义)。由此产生多个问题:

  • 图节点名称在整个 GunDb 中是否唯一?
  • 当两个基于枪的应用程序调用同一节点名称时,如何处理冲突? …

javascript gun gundb

6
推荐指数
1
解决办法
1229
查看次数

如何从GunDb节点获取密钥

我已经开始使用 GunDB 并且我真的很喜欢它。我可以轻松创建复杂的关系,而不会出现与关系数据库或文档数据库相关的许多问题。

不幸的是,我遇到了一个看似简单的问题。

我已成功创建节点,但后来想要获取密钥,以便将它们嵌入到页面上。例如,在一个页面上我使用表单添加用户。然后,在另一个页面上,我想获取用户列表并创建一个选择输入,将其名称列为文本,将键列为值。

例如,在第一页我有类似的内容 -

var user1 = gun.get('user/1').put({name: user1});
var user1 = gun.get('user/2').put({name: user2});
var users = gun.get('users');
users.set(user1);
users.set(user2);
Run Code Online (Sandbox Code Playgroud)

在另一页上,我有类似的东西 -

var users = gun.get('users');

users.map().val(function(user) {
  var userOption = document.createElement("option");
  userOption.text = user.name;
  userOption.value = user.key; // for example, though this does not work
  userSelect.appendChild(userOption);
  
});
Run Code Online (Sandbox Code Playgroud)

后来,我想使用选项值,例如 -

var user = gun.get(selectedUserOption.value);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我不知道如何获得钥匙。它似乎在节点对象中保存为“#”,但我无法确定如何访问该值。

javascript gun gundb

5
推荐指数
1
解决办法
1369
查看次数

如何将枪服务器仅用作中继?

有没有办法只将 GUN 服务器设置为中继?换句话说,有没有办法确保数据仅是点对点共享的?服务器仅充当信号(类似 STUN)的服务器。在我完成的少数测试中,我似乎无法看到数据通过 P2P 传输,而且似乎只能通过枪服务器漏斗。

我想确保服务器上没有客户端数据库数据。显然,连接信息和可能的数据库名称将在那里。

谢谢你。

javascript graph-databases node.js gun gundb

5
推荐指数
1
解决办法
830
查看次数

在会话期间保持 Gun DB 用户经过身份验证

我正在跟踪分布式/无服务器应用程序的 Gun/SEA 身份验证系统。当 Gun 用户经过身份验证时,此应用程序会将会话信息保存到本地存储。我遇到的一个问题是,当刷新页面或打开新选项卡时,我希望在会话有效时保持用户身份验证,并且由于 XSS 和物理安全原因,我不想将用户名和密码存储在本地存储中。目前这个问题有解决办法吗?我认为 sessionStorage 可能更好,但它仍然存在一些相同的安全问题:将用户名和密码存储在攻击者可能能够获取的地方,并且在打开新选项卡时需要用户登录。

gun gundb

5
推荐指数
1
解决办法
1708
查看次数

Gun 如何在有时断开连接的 P2P 网络中管理用户

请帮助我了解 Gun 如何在有时断开连接的 P2P 网络中管理用户。

假设有两个 Gun 实例I1I2,它们被配置为对等体,并且假设用户“doe”事先在 I1 或 I2 上不存在。假设在两个实例上创建了用户“doe” ,而 I1 和 I2 未连接。两次尝试都应该成功。为了方便讨论,我们将 I1 上的“doe”用户称为doe1,将 I2 上的用户称为doe2

现在,当 I1 和 I2 连接时会发生什么?doe1和doe2是否被视为同一用户?是否取决于用户注册时提供的密码?

我的理解是,只要用户注册时给出的密码相同即可。这是合理的。但我最大的问题是,如果给他们提供不同的密码怎么办?

我认为在这种情况下,doe1 和 doe2 将被视为不同的用户......但是然后呢?I1和I2将如何处理这种情况?I1 会简单地拒绝 doe2 吗?反之亦然?或者这留给实施?

我们将非常感谢您的建议。谢谢。

安郎

javascript database p2p gun gundb

5
推荐指数
1
解决办法
283
查看次数

GunDB 存储和超级对等选项

GunDB 基础知识 / 存储 + Superpeer

嗨伙计,

正在进行 GunDB探索的第四天,在阅读文档和其他各种教程时,有一件事情是不确定的:存储以及我是否需要 Superpeer?

还没有找到使用 GunDB 的生产 dApp 的示例

到目前为止,我看到的教程和演示要么在没有同行的情况下实例化枪,要么使用诸如gun = Gun( [https://gun-us.herokuapp.com/gun, https://foobar.herokuapp.com/gun ] ).

如果您想演示聊天或待办事项应用程序,在其中您想展示实时行为,包括在这些超级用户的帮助下对人们的网络浏览器进行 p2p 同步,我认为后者是不错的选择。我理解这个概念,它很棒,我喜欢它。

从 Firebase 迁移到 GunDB

但是,由于我即将从 Firebase firestore 迁移我的 Sapper (Svelte) 应用程序(因为图形数据集的性质比集合和文档的层次结构更适合我的应用程序),我已经拥有大约 9 GB 的数据事实上,firestore 总是在线供客户同步,我在这一点上的大问题是,我如何使用 GunDB 在我拥有的地方构建等价物

  • 能够存储我的 9 GB 不断增长的数据(此时主要是基于文本的数据,但将来也会有图像和视频,届时存储需求将大幅增长)
  • 并确保使用网络浏览器的人始终可以使用数据

超级与否?存储选项?

我读过 AXE,我读过 RAD 以及它是 GunDB 节点部署的默认存储算法这一事实,我见过有一个可选的 AWS S3 存储适配器,我当然也读过关于(已计划但尚未准备好?)IPFS存储选项

总而言之,我现在完全迷失和困惑如何在这一点上继续可用的存储和超级对等选项。

  • 我需要超级同行吗?我想要一个吗?
    • 如果我想要一个,什么是生产托管设置?我正在使用 firebase 托管、身份验证、存储、firestore 和消息自动取款机,所以也许有人设置了 GCP?
  • 如何调整我的存储设置,使其不是演示应用程序而是具有更大数据集的真实应用程序?
    • 对于付费客户的生产设置,我应该选择哪个托管服务提供商?我更喜欢任何 GCP 服务,可能让超级对等体将其数据存储到 firstore 中,并且或多或少地向所有最初请求数据的 webbrowswers …

firebase gun gundb

4
推荐指数
1
解决办法
1169
查看次数

如何使用gundb存储图像/视频文件?

我知道传统的方法是将图像/视频文件存储在一个地方,然后将引用索引保存到db的表中。

现在我正在学习gundb,我可以很容易地存储键值json类型数据,但是由于它是去中心化的,所以如果我想创建一个聊天室应用程序,应该如何处理图像存储(例如:用户的头像)?

我也想知道是否可以使用gundb制作电影共享应用程序?

gun gundb

3
推荐指数
1
解决办法
449
查看次数

GunDB SEA 让其他用户写入用户空间

我需要在用户空间中交换私有数据。

\n

因为gun.grantandgun.trust已被弃用,所以我遵循了这个例子:

\n

https://gun.eco/docs/SEA#quickstart \n

\r\n
\r\n
<script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>\n<script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>\n<script>\n// var Gun = require(\'gun\'); // in NodeJS \n// require(\'gun/sea\');\nvar SEA = Gun.SEA;\n;(async () => {\nvar pair = await SEA.pair();\nvar enc = await SEA.encrypt(\'hello self\', pair);\nvar data = await SEA.sign(enc, pair);\nconsole.log(data);\nvar msg = await SEA.verify(data, pair.pub);\nvar dec = await SEA.decrypt(msg, pair);\nvar proof = await SEA.work(dec, pair);\nvar check = await SEA.work(\'hello self\', pair);\nconsole.log(dec);\nconsole.log(proof === check);\n// now let\'s share private data with someone:\nvar alice = await SEA.pair();\nvar bob …
Run Code Online (Sandbox Code Playgroud)

javascript graph gun gundb

2
推荐指数
1
解决办法
532
查看次数

标签 统计

gun ×10

gundb ×10

javascript ×5

database ×1

firebase ×1

graph ×1

graph-databases ×1

node.js ×1

p2p ×1