基于 GenosDB 的安全、去中心化与协作笔记应用
Source: Dev.to
去中心化身份(助记词 & WebAuthn 通行密钥) • P2P 安全中间件 • 实时全文搜索 • 亮色/暗色 UI
问题
构建现代协作应用程序是众所周知的复杂。典型的技术栈包括:
- 前端框架
- 后端服务器
- 数据库
- 实时服务(WebSockets 等)
- 独立的身份验证提供商
每个组件都会增加开销、复杂性以及潜在的故障点。
问题
如果我们能够消除整个后端,仅使用前端代码就构建一个安全、实时、多用户的应用会怎样?
解决方案:NotesDev
为了证明这不仅是可能的,而且出奇地简单,我们构建了 NotesDev ——一个完整功能的笔记应用,全部包含在 单个 HTML 文件 中。它的强大来源于一种根本不同的应用架构方法,由 GenosDB 提供支持。
Source: …
核心功能及实现方式
1. 用户管理 – 无需服务器
GenosDB 内置的 Security Manager (SM) 只需初始化 sm 模块,即可提供完整的身份系统。
| 流程 | 描述 |
|---|---|
| 新用户注册 | db.sm.startNewUserRegistration() 会创建一个临时的、内存中的以太坊身份。UI 会显示助记词——用户的永久密钥——并提示他们安全保存。 |
| 无密码登录 | - 助记词登录:db.sm.loginOrRecoverUserWithMnemonic()(粘贴已保存的助记词)。- Passkey 登录:如果 db.sm.hasExistingWebAuthnRegistration() 为真,则会出现 “使用 Passkey 登录” 按钮,调用 db.sm.loginCurrentUserWithWebAuthn()(生物识别认证)。 |
要点: 从未在服务器上存储凭证。身份是加密的、用户拥有的,并且完全在客户端管理。
2. 实时笔记与即时全文搜索
GenosDB 将传统的 “先获取后订阅” 模式浓缩为一个优雅的方法:db.map()。
显示与同步笔记
db.map(
{ type: 'note' }, // 查询
(event, note) => { // 回调
// event.action = 'initial' | 'added' | 'updated' | 'removed'
// 根据事件重新渲染 UI
}
);
- 初始加载: 流式传输所有已有笔记(
action: 'initial')。 - 实时更新: 当网络中出现
added、updated、removed事件时即时流式传输。
即时全文搜索
// 在每次键入时调用
function onSearch(term) {
db.map(
{ type: 'note', $text: term }, // 响应式查询
(event, note) => { /* 更新 UI */ }
);
}
GenosDB 的响应式引擎会自动重新评估查询,并实时流式返回过滤后的结果——无需单独的索引服务器。
3. 去中心化访问控制
如何在没有中心服务器的情况下确保只有授权用户能够编辑共享笔记?答案是 P2P 中间件,通过 db.use() 注册。
共享笔记
// 向笔记添加协作者数据
note.collaborators = [
{ address: '0xABC…', permission: 'write' },
// …
];
中间件安全检查
db.use(async (op) => {
// 只允许对笔记的写操作
if (op.type !== 'note' || op.action !== 'update') return op;
// 获取当前笔记版本
const current = await db.get(op.id);
// 谁签署了此操作?
const signer = op.meta.signer; // 以太坊地址
// 是所有者还是已授权的协作者?
const isOwner = signer === current.owner;
const hasWrite = current.collaborators?.some(
c => c.address === signer && c.permission === 'write'
);
// 允许或丢弃该操作
return isOwner || hasWrite ? op : null;
});
- 每个节点 本地运行此函数。
- 操作使用用户的私钥加密签名。
- 未授权的更新会被丢弃,从而提供一个强大的、无服务器的访问控制层。
为什么重要
NotesDev 显示,现在已有工具可以构建以下类型的应用:
- 强大 – 实时同步、全文搜索、细粒度权限。
- 弹性 – 没有单点故障;所有内容都在浏览器中运行。
- 私密 – 用户拥有身份,不在服务器端存储凭证。
GenosDB 将身份、实时数据和 P2P 安全集成,让开发者跳过后端开发,专注于用户体验。
亲自尝试
- Live Demo: 立即体验 NotesDev
- Source Code: 在单个文件中查看完整应用 – GitHub 仓库
- Star Us: 表达你的支持 – ⭐️
网络的未来是协作的、实时的和去中心化的。而且它比你想象的更容易构建。
GenosDB 文档概览
GenosDB 旨在简化去中心化开发。
本文是 GenosDB (GDB) 官方文档的一部分。
作者:Esteban Futer Pozzi (estebanrfp)
- 📄 白皮书 – GenosDB 设计与架构概述
- 🛠 路线图 – 计划中的功能和未来更新
- 💡 示例 – 代码片段和使用演示
- 📖 文档 – 完整参考指南
- 🔍 API 参考 – 详细的 API 方法
- 📚 Wiki – 其他笔记和指南
- 💬 GitHub 讨论 – 社区提问与反馈
- 🗂 代码库 – 已压缩的生产就绪文件
- 📦 通过 npm 安装 – 快速设置说明
- 🌐 网站 – GitHub • LinkedIn