去中心化社交
核心功能 | 状态: ✅ 生产就绪 | DID 身份 | Signal 端到端加密 | P2P 无服务器通信
ChainlessChain 内置的去中心化社交功能,让你在完全掌控数据的前提下与朋友交流。
系统架构
┌─────────────────────────────────────────────────┐
│ 社交功能层 │
│ ┌──────────┐ ┌──────────┐ ┌───────────────┐ │
│ │ 好友管理 │ │ 私密消息 │ │ 动态/时间线 │ │
│ └─────┬────┘ └─────┬────┘ └───────┬───────┘ │
│ └─────────────┼───────────────┘ │
│ ▼ │
│ ┌─────────────────────────────────────────┐ │
│ │ P2P 通信层 (libp2p) │ │
│ │ WebRTC DataChannel │ WebSocket 信令 │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ ┌──────────┐ ┌─────┴─────┐ ┌──────────────┐│
│ │ DID 身份 │ │Signal 加密│ │ 信誉系统 ││
│ │ (Ed25519) │ │(端到端) │ │ (链上评价) ││
│ └──────────┘ └───────────┘ └──────────────┘│
└─────────────────────────────────────────────────┘核心模块
| 模块 | 技术 | 说明 |
|---|---|---|
| DID 身份 | W3C DID + Ed25519 | 去中心化身份标识 |
| P2P 通信 | libp2p + WebRTC | 点对点无服务器通信 |
| 端到端加密 | Signal 协议 | 消息前向保密 |
| 信令服务 | WebSocket (9001) | NAT 穿透和连接建立 |
| 好友管理 | DID + 信任网络 | 添加/验证/分组 |
| 动态发布 | CRDT + Gossip | 去中心化时间线 |
核心特性
- 🆔 DID身份: 基于W3C标准的去中心化身份
- 🔐 端到端加密: Signal协议保障通信隐私
- 🌐 无服务器: 点对点通信,不依赖中心平台
- 📱 跨设备: PC和手机无缝同步
- 🔓 数据自主: 完全掌控社交数据
创建你的DID身份
什么是DID?
DID (Decentralized Identifier) 是去中心化标识符,是一种全新的身份系统:
- ✅ 自主权: 由你自己创建和管理
- ✅ 可验证: 通过密码学证明身份
- ✅ 隐私保护: 无需透露真实信息
- ✅ 全球唯一: 永久有效,不会被撤销
创建DID
首次使用时,系统会自动为你创建DID:
1. 打开社交模块
2. 系统检测到无DID
3. 自动生成密钥对(使用U盾/SIMKey)
4. 创建DID: did:chainlesschain:QmXXXXXX
5. 设置个人资料(昵称、头像、简介)
6. 完成!DID格式
did:chainlesschain:QmXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
│ │ │
│ │ └─ 公钥哈希(Base58编码)
│ └────────────── DID方法名
└────────────────── DID前缀添加好友
扫码添加
最简单的方式是扫描好友的二维码:
1. 点击"添加好友"
2. 选择"扫描二维码"
3. 扫描对方的DID二维码
4. 查看对方资料
5. 发送好友请求(可附加验证消息)
6. 等待对方同意通过DID添加
如果对方发送了DID给你:
1. 点击"添加好友"
2. 选择"输入DID"
3. 粘贴对方的DID
4. 系统从DHT网络获取对方的DID文档
5. 验证签名
6. 发送好友请求附近的人
利用本地网络发现功能:
1. 开启"附近的人"
2. 系统通过mDNS扫描局域网
3. 显示附近的ChainlessChain用户
4. 点击添加TIP
"附近的人"功能使用本地网络广播,不会泄露位置信息到互联网
好友管理
好友分组
创建分组更好地管理好友:
// 创建分组
groups = [
{ name: "家人", color: "#FF6B6B" },
{ name: "同事", color: "#4ECDC4" },
{ name: "朋友", color: "#95E1D3" },
];设置备注
为好友设置备注和标签:
右键好友 → 设置备注
- 备注名: 张三(高中同学)
- 标签: #高中 #同学 #篮球信任评分
系统会根据互动历史自动计算信任评分(0-1):
- 交流频率
- 交易历史
- 共同好友
- 信誉背书
信任评分越高,在交易等场景下越安全。
发布动态
动态类型
支持多种类型的动态:
- 文字动态: 最多5000字
- 图文动态: 文字 + 最多9张图片
- 长文章: Markdown格式,无字数限制
- 投票: 发起话题投票
发布动态
1. 点击"发布动态"
2. 编辑内容
3. 添加图片/视频(可选)
4. 选择可见性:
- 公开: 所有人可见,发布到IPFS
- 好友可见: 仅好友可见,端到端加密
- 私密: 仅自己可见
5. 发布可见性控制
公开动态:
- 发布到IPFS网络
- 任何人都可以查看
- 永久存储,无法删除(可撤回引用)
好友可见:
- 使用好友公钥加密
- 只有好友能解密查看
- 通过P2P网络传输
私密动态:
- 仅存储在本地
- 可作为私人日记
私密消息
一对一聊天
1. 点击好友头像
2. 进入聊天界面
3. 输入消息
4. 发送消息自动使用Signal协议加密:
- ✅ 端到端加密
- ✅ 前向安全
- ✅ 未来安全
- ✅ 可验证送达
群组聊天
创建加密群组:
1. 点击"创建群组"
2. 选择成员(最多500人)
3. 设置群名称和头像
4. 完成群组消息使用对称密钥加密,所有成员共享群密钥。
消息状态
- ✓ 已发送
- ✓✓ 已送达
- ✓✓ 已读(需对方开启已读回执)
离线消息
如果好友离线,消息会:
- 存储在中继节点(加密)
- 好友上线时自动推送
- 最长保留7天
时间线
查看动态
时间线显示好友的动态:
[时间线]
├─ 按时间排序(默认)
├─ 按热度排序
└─ 按AI推荐排序AI推荐算法
本地AI会根据你的兴趣推荐内容:
- 分析你点赞/评论的内容
- 识别你的兴趣标签
- 推荐相似内容
- 完全本地运行,不上传数据
内容过滤
自定义过滤规则:
{
"filters": {
"keywords": ["广告", "营销"],
"hideReposts": false,
"showOnlyMedia": false
}
}P2P通信
连接流程
用户A想联系用户B
↓
查询B的DID文档获取节点地址
↓
尝试直接P2P连接
├─ 成功: 直接通信
└─ 失败: NAT无法穿透
↓
使用中继节点转发
↓
建立加密通道NAT穿透
系统自动尝试多种NAT穿透技术:
- STUN: 获取公网IP和端口
- ICE: 协商最佳连接路径
- TURN: 实在不行就用中继
中继节点
官方提供的免费中继节点:
relay1.chainlesschain.com:4001
relay2.chainlesschain.com:4001
relay3.chainlesschain.com:4001你也可以运行自己的中继节点:
docker run -p 4001:4001 chainlesschain/relay-node信任网络
Web of Trust
去中心化信任网络,无需中心化认证机构:
你 ──信任─→ 张三 ──信任─→ 李四
↓
信任传递
↓
你对李四的信任度 = 你对张三的信任 × 张三对李四的信任信誉背书
为好友的技能和品质背书:
1. 进入好友资料
2. 点击"背书"
3. 选择背书类型:
- 技能: 编程、设计、写作...
- 品质: 诚信、守时、专业...
4. 撰写评价(可选)
5. 签名发布背书会记录在区块链上,公开透明。
举报和屏蔽
遇到不良用户可以:
屏蔽:
- 不再看到对方动态
- 对方无法给你发消息
- 仅在本地生效
举报:
- 向社区仲裁员举报
- 提交证据
- 等待仲裁结果
- 恶意用户可能被全网屏蔽
隐私设置
个人资料可见性
资料项 │ 公开 │ 好友 │ 私密
───────────────┼──────┼──────┼─────
昵称 │ ✓ │ ✓ │ ✓
头像 │ ✓ │ ✓ │ ✓
简介 │ ✓ │ ✓ │ ✓
DID │ ✓ │ ✓ │ ✓
真实姓名 │ ✗ │ ? │ ✓
手机号 │ ✗ │ ✗ │ ✓
位置信息 │ ✗ │ ? │ ✓在线状态
可以隐藏在线状态:
在线状态显示:
○ 显示实时状态
○ 仅显示给好友
● 永远显示为离线(隐身)动态可见性默认值
新动态默认可见性:
○ 公开
● 好友可见
○ 私密数据导出
导出个人数据
随时导出所有社交数据:
设置 → 数据管理 → 导出数据导出内容包括:
- DID文档
- 好友列表
- 聊天记录(已解密)
- 发布的动态
- 图片和文件
格式: JSON / CSV / Markdown
账号注销
如果想要删除账号:
1. 导出数据备份
2. 发布DID撤销声明
3. 删除本地所有数据
4. (可选)从区块链注册表移除DIDWARNING
DID撤销后无法恢复,请谨慎操作
故障排查
无法连接好友
检查清单:
- [ ] 双方都在线
- [ ] 网络连接正常
- [ ] 防火墙未阻止P2P端口
- [ ] 中继节点可访问
解决方案:
# 测试中继节点连接
ping relay1.chainlesschain.com
# 检查P2P端口
netstat -an | grep 4001
# 重启P2P服务
设置 → 高级 → 重启P2P网络消息发送失败
可能原因:
- 对方离线且中继节点故障
- 对方屏蔽了你
- 网络连接问题
查看详细错误:
右键消息 → 查看发送状态同步问题
如果多设备间消息不同步:
# 强制同步
设置 → 数据同步 → 立即同步
# 检查Git仓库状态
设置 → 数据同步 → 查看同步日志最佳实践
保护隐私
- ✅ 谨慎设置个人资料可见性
- ✅ 不要在公开动态中透露敏感信息
- ✅ 定期检查好友列表,移除不认识的人
- ✅ 使用强密码保护U盾/SIMKey
安全社交
- ✅ 验证对方身份后再添加好友
- ✅ 重要事项使用私密消息,不要公开动态
- ✅ 遇到可疑用户及时举报
- ✅ 不要点击可疑链接
优化体验
- ✅ 合理使用分组管理好友
- ✅ 善用AI推荐发现感兴趣的内容
- ✅ 定期备份聊天记录
- ✅ 关闭不必要的通知
扩展社交功能
以下功能已在 v1.0.0 中全部实现,所有功能均遵循去中心化和隐私优先的设计原则。
语音/视频通话(P2P WebRTC)
已实现: 完全去中心化的实时音视频通话,无需中心服务器中转媒体流。
架构设计
发起方 接收方
│ │
├─ 创建RTCPeerConnection │
├─ 添加本地媒体流(音频/视频) │
├─ 创建Offer (SDP) │
├─ 通过P2P信令通道发送Offer ──────────────────→ │
│ ├─ 设置RemoteDescription
│ ├─ 添加本地媒体流
│ ├─ 创建Answer (SDP)
│ ←─────────────────────────── 返回Answer ────┤
├─ 设置RemoteDescription │
│ │
├─ ICE候选交换 ←──────────────────────────────→ ├─ ICE候选交换
│ │
╰═══════════ 媒体流直连 (DTLS-SRTP) ═══════════╯核心功能
- [x] 一对一语音通话(Opus编码,48kHz)
- [x] 一对一视频通话(VP8/VP9/H.264自适应)
- [x] 通话中文字消息
- [x] 屏幕共享(桌面端)
- [x] 通话录音/录像(本地存储)
- [x] 通话质量自适应(带宽检测、分辨率调整)
- [x] 来电通知与响铃
- [x] 静音/扬声器/摄像头切换
多人通话
支持最多8人的群组通话:
SFU模式(推荐):
┌─────────┐
用户A ──────┤ ├────── 用户C
│ 中继SFU │
用户B ──────┤ (可选) ├────── 用户D
└─────────┘
Mesh模式(小规模):
用户A ←───→ 用户B
↕ ╲ ╱ ↕
用户D ←───→ 用户C- 2-4人: Mesh全连接模式,无需服务器
- 5-8人: SFU模式,需要中继节点辅助
- 加密: 每条媒体流独立DTLS-SRTP加密
安全机制
- SRTP加密: 所有媒体流使用DTLS-SRTP加密
- 信令加密: Offer/Answer/ICE通过已有的Signal加密通道传输
- 身份验证: 通过DID验证通话双方身份
- 安全指示器: 通话界面显示加密状态和对方DID验证状态
配置示例
{
"call": {
"video": {
"defaultResolution": "720p",
"maxResolution": "1080p",
"frameRate": 30,
"codec": "VP9"
},
"audio": {
"echoCancellation": true,
"noiseSuppression": true,
"autoGainControl": true,
"codec": "opus"
},
"ice": {
"stunServers": ["stun:stun.chainlesschain.com:3478"],
"turnServers": ["turn:turn.chainlesschain.com:3478"]
},
"recording": {
"autoSave": false,
"format": "webm",
"storagePath": "data/recordings/"
}
}
}关键文件
| 文件 | 职责 |
|---|---|
src/main/p2p/call-manager.js | 通话管理器,生命周期控制 |
src/main/p2p/media-engine.js | 媒体引擎,音视频采集/编码 |
src/main/p2p/call-signaling.js | 通话信令,Offer/Answer/ICE |
src/main/p2p/sfu-relay.js | SFU中继节点(多人通话) |
src/main/social/call-ipc.js | 通话IPC处理器 |
src/renderer/components/social/CallPanel.vue | 通话UI面板 |
src/renderer/components/social/IncomingCall.vue | 来电通知组件 |
src/renderer/stores/call.ts | 通话状态管理 |
共享相册
已实现: 好友间创建共享加密相册,支持协作上传、评论和隐私分级管理。
功能概览
共享相册
├─ 创建相册
│ ├─ 设置名称、封面、描述
│ ├─ 邀请成员(从好友列表选择)
│ └─ 设置权限(查看/上传/管理)
├─ 上传照片
│ ├─ 本地选择(支持批量)
│ ├─ 自动生成缩略图
│ ├─ EXIF信息提取(可选剥离隐私数据)
│ └─ 加密后分发给成员
├─ 浏览与互动
│ ├─ 时间线/网格视图切换
│ ├─ 照片评论(加密)
│ ├─ 点赞/收藏
│ └─ AI智能分类(人物/地点/事件)
└─ 存储管理
├─ P2P分布式存储(成员节点间冗余)
├─ IPFS固定(可选,公开相册)
└─ 本地缓存策略(LRU淘汰)核心功能
- [x] 创建/删除/编辑共享相册
- [x] 邀请好友加入相册(权限分级:查看者/贡献者/管理员)
- [x] 批量上传照片/视频(自动压缩)
- [x] 照片评论和点赞(端到端加密)
- [x] AI自动分类和人脸识别(完全本地处理)
- [x] 照片EXIF隐私剥离(移除GPS、设备信息)
- [x] 分布式冗余存储(至少2个节点保存副本)
- [x] 离线缓存与增量同步
- [x] 相册二维码分享
加密方案
相册加密流程:
1. 创建相册时生成相册密钥 (AES-256)
2. 用每个成员的公钥加密相册密钥
3. 上传照片时用相册密钥加密
4. 成员用自己的私钥解密相册密钥
5. 用相册密钥解密照片
密钥分发:
创建者 ──┬── encrypt(albumKey, 成员A.pubKey) → 成员A
├── encrypt(albumKey, 成员B.pubKey) → 成员B
└── encrypt(albumKey, 成员C.pubKey) → 成员C存储策略
| 相册类型 | 存储方式 | 冗余度 | 可用性 |
|---|---|---|---|
| 私密相册 | 仅本地 | 1份 | 仅本机 |
| 好友共享 | P2P成员节点 | 2-3份 | 成员在线时 |
| 公开相册 | IPFS + 本地 | 多份 | 永久 |
关键文件
| 文件 | 职责 |
|---|---|
src/main/social/shared-album-manager.js | 相册CRUD与权限管理 |
src/main/social/photo-encryptor.js | 照片加密/解密 |
src/main/social/photo-sync.js | P2P照片同步引擎 |
src/main/social/exif-stripper.js | EXIF隐私数据剥离 |
src/main/social/album-ipc.js | 相册IPC处理器 |
src/renderer/pages/SharedAlbumsPage.vue | 相册浏览页 |
src/renderer/components/social/PhotoViewer.vue | 照片查看器 |
src/renderer/stores/albums.ts | 相册状态管理 |
协作编辑文档
已实现: 去中心化的实时协作文档编辑,支持多人同时编辑同一文档,基于CRDT实现无冲突合并。
架构设计
协作编辑架构 (CRDT-based):
用户A (编辑) 用户B (编辑)
│ │
▼ ▼
本地CRDT文档 本地CRDT文档
│ │
├── 生成操作 (Insert/Delete) ├── 生成操作
│ │
▼ ▼
操作日志 (OpLog) 操作日志 (OpLog)
│ │
└──── P2P同步操作 ←──────────────→┘
│
▼
自动合并 (无冲突)核心功能
- [x] 富文本编辑器(Markdown + WYSIWYG双模式)
- [x] 实时协作编辑(基于Yjs CRDT引擎)
- [x] 光标位置和选区实时同步
- [x] 操作历史与版本回溯
- [x] 评论与批注(锚定到文档位置)
- [x] 离线编辑与自动合并
- [x] 文档权限管理(所有者/编辑者/评论者/查看者)
- [x] 导出为Markdown/PDF/DOCX
协作协议
操作同步流程:
1. 用户编辑 → 生成CRDT操作
2. 操作附加到本地OpLog
3. 通过P2P DataChannel广播操作
4. 远端接收操作 → 应用到本地CRDT
5. CRDT自动解决冲突 → 视图更新
冲突解决示例:
用户A: 在位置5插入 "Hello"
用户B: 在位置5插入 "World"
CRDT结果: "HelloWorld" 或 "WorldHello" (由逻辑时钟决定,所有节点一致)文档类型支持
| 文档类型 | 格式 | 协作支持 | 说明 |
|---|---|---|---|
| 笔记 | Markdown | 实时协作 | 基础文本协作 |
| 表格 | 结构化数据 | 实时协作 | 类似在线表格 |
| 白板 | Canvas | 实时协作 | 自由绘图和便签 |
| 思维导图 | 树形结构 | 实时协作 | 节点可独立编辑 |
关键文件
| 文件 | 职责 |
|---|---|
src/main/social/collab-engine.js | CRDT协作引擎(基于Yjs) |
src/main/social/collab-sync.js | P2P操作同步 |
src/main/social/collab-awareness.js | 协作者感知(光标/选区) |
src/main/social/doc-version-manager.js | 版本历史管理 |
src/main/social/collab-social-ipc.js | 协作社交IPC处理器 |
src/renderer/pages/CollabEditorPage.vue | 协作编辑器页面 |
src/renderer/components/social/CursorOverlay.vue | 远端光标显示 |
src/renderer/stores/socialCollab.ts | 协作状态管理 |
社区/频道功能
已实现: 去中心化的主题社区和订阅频道,支持公开讨论、内容聚合和社区自治。
社区架构
社区结构:
社区 (Community)
├─ 元数据
│ ├─ 名称、描述、图标
│ ├─ 创建者DID
│ ├─ 规则文档 (Markdown)
│ └─ 成员上限
├─ 频道 (Channels)
│ ├─ #综合讨论 (默认)
│ ├─ #技术分享
│ ├─ #资源推荐
│ └─ #公告 (仅管理员发布)
├─ 角色 (Roles)
│ ├─ 创建者 (Owner)
│ ├─ 管理员 (Admin)
│ ├─ 版主 (Moderator)
│ └─ 成员 (Member)
└─ 治理 (Governance)
├─ 投票系统
├─ 提案机制
└─ 仲裁流程核心功能
- [x] 创建/加入/退出社区
- [x] 社区内多频道(文字/图片/文件/公告)
- [x] 角色与权限管理(创建者/管理员/版主/成员)
- [x] 社区规则文档(Markdown,加入时必读)
- [x] 帖子排序(最新/最热/精华/AI推荐)
- [x] 内容审核(AI辅助 + 人工仲裁)
- [x] 社区投票与提案
- [x] 跨社区内容分享
- [x] 社区搜索与发现
- [x] 订阅频道(单向内容推送)
去中心化治理
提案流程:
成员发起提案 → 社区公示(48h) → 投票(72h) → 结果执行
│
├─ 赞成 > 66%: 通过
├─ 赞成 50-66%: 延长讨论
└─ 赞成 < 50%: 否决
可投票事项:
- 修改社区规则
- 任命/罢免版主
- 封禁违规用户
- 社区名称/图标变更
- 新增/删除频道
投票权重:
创建者: 3票
管理员: 2票
普通成员: 1票消息分发机制
Gossip协议分发:
发帖者
│
├──→ 在线成员A ──→ 成员D
├──→ 在线成员B ──→ 成员E
└──→ 在线成员C ──→ 成员F
└──→ 成员G
特性:
- 消息通过Gossip协议在成员间扩散
- 每个节点最多转发给3个Peer
- 消息去重(基于消息ID哈希)
- 离线成员上线后从邻居节点同步频道类型
| 频道类型 | 权限 | 消息类型 | 用途 |
|---|---|---|---|
| 公告频道 | 仅管理员发布 | 文字/图片 | 社区通知 |
| 讨论频道 | 所有成员 | 文字/图片/文件 | 日常讨论 |
| 只读频道 | 仅查看 | 任意 | 资源存档 |
| 订阅频道 | 发布者推送 | 文字/图片 | 内容订阅 |
关键文件
| 文件 | 职责 |
|---|---|
src/main/social/community-manager.js | 社区CRUD与成员管理 |
src/main/social/channel-manager.js | 频道管理与消息路由 |
src/main/social/governance-engine.js | 投票、提案、仲裁 |
src/main/social/gossip-protocol.js | Gossip消息分发 |
src/main/social/content-moderator.js | AI辅助内容审核 |
src/main/social/community-ipc.js | 社区IPC处理器 |
src/renderer/pages/CommunityPage.vue | 社区主页 |
src/renderer/pages/ChannelPage.vue | 频道详情页 |
src/renderer/stores/community.ts | 社区状态管理 |
朋友圈时光机
已实现: 回顾历史社交动态,AI生成社交回忆摘要,提供时间线可视化浏览。
功能概览
时光机功能:
├─ 时间线浏览
│ ├─ 年度视图: 每月精选动态
│ ├─ 月度视图: 每日动态概览
│ ├─ 日视图: 当日所有动态
│ └─ 事件视图: 按事件/话题聚合
├─ AI回忆生成
│ ├─ "N年前的今天" 每日推送
│ ├─ 年度社交报告
│ ├─ 友谊里程碑(认识100天等)
│ └─ 情感趋势分析
├─ 互动回顾
│ ├─ 与某好友的完整互动历史
│ ├─ 共同话题词云
│ └─ 互动频率热力图
└─ 导出与分享
├─ 生成精美回忆卡片
├─ 导出为PDF回忆录
└─ 分享给好友(加密)核心功能
- [x] 时间线浏览器(年/月/日/事件多维度)
- [x] "N年前的今天" 每日回忆推送
- [x] AI年度社交报告生成
- [x] 好友互动历史回顾
- [x] 情感趋势分析(基于动态文本)
- [x] 友谊里程碑提醒
- [x] 回忆卡片生成(可分享)
- [x] 话题词云可视化
- [x] 互动频率热力图
- [x] 回忆录PDF导出
AI回忆分析
分析维度:
1. 情感趋势
┌────────────────────────────────┐
│ 😊 😊 │
│ ╲ 😐 😊 ╱ │
│ ╲╱ ╲ ╱╲╱ │
│ 😔╱ │
│ 1月 3月 5月 7月 9月 11月 │
└────────────────────────────────┘
2. 社交活跃度
1月 ████████████████ 45条
2月 ████████████ 32条
3月 ██████████████████ 51条
...
3. 话题分布
技术 ███████ 35%
生活 █████ 25%
旅行 ████ 20%
美食 ███ 15%
其他 █ 5%隐私保护
- 所有分析完全在本地进行,不上传任何数据
- AI模型使用本地Ollama运行
- 回忆卡片分享时自动加密,仅接收者可查看
- 可设置"遗忘":永久删除某段时间的动态
关键文件
| 文件 | 职责 |
|---|---|
src/main/social/time-machine.js | 时光机核心引擎 |
src/main/social/memory-generator.js | AI回忆生成 |
src/main/social/sentiment-analyzer.js | 情感趋势分析 |
src/main/social/social-stats.js | 社交统计与可视化数据 |
src/main/social/time-machine-ipc.js | 时光机IPC处理器 |
src/renderer/pages/TimeMachinePage.vue | 时光机主页 |
src/renderer/components/social/MemoryCard.vue | 回忆卡片组件 |
src/renderer/stores/timeMachine.ts | 时光机状态管理 |
去中心化直播
已实现: 基于P2P网络的实时直播功能,支持小规模社区直播和互动。
核心功能
- [x] P2P直播推流(WebRTC + SFU混合架构)
- [x] 实时弹幕(加密DataChannel传输)
- [x] 直播回放(本地录制存储)
- [x] 观众互动(点赞、礼物、投票)
- [x] 屏幕共享直播(技术分享场景)
- [x] 多人连麦(最多4人)
- [x] 直播预告与订阅通知
- [x] 直播间访问控制(公开/好友/密码/邀请码)
分发架构
主播节点
│
├──→ SFU中继节点1 ──→ 观众A, B, C
├──→ SFU中继节点2 ──→ 观众D, E, F
└──→ 直连观众G (低延迟)
分发策略:
- <10人: P2P Mesh直连
- 10-100人: SFU中继分发
- >100人: 多级SFU级联关键文件
| 文件 | 职责 |
|---|---|
src/main/social/livestream-manager.js | 直播管理器(推流/录制) |
src/main/social/danmaku-engine.js | 弹幕引擎(加密传输) |
src/main/social/livestream-ipc.js | 直播IPC处理器 |
src/renderer/pages/LivestreamPage.vue | 直播主页 |
src/renderer/components/social/DanmakuOverlay.vue | 弹幕显示层 |
src/renderer/stores/livestream.ts | 直播状态管理 |
高级社交特性
已实现: 多种高级去中心化社交功能,全部集成于 v1.0.0。
- ✅ 匿名社交模式: 零知识证明验证身份,完全匿名发帖/评论
- ✅ 跨平台桥接: 桥接到 Mastodon/Nostr 等去中心化社交网络
- ✅ 社交代币: 社区发行治理代币(
social-token.js),激励优质内容 - ✅ AI社交助手: 智能回复建议、话题推荐、社交破冰(
ai-social-assistant.js) - ✅ 去中心化存储市场: 用代币购买社区成员的存储空间(
storage-market.js) - ✅ 离线Mesh社交: P2P Mesh 网络离线社交(
mesh-social.js)
功能总览
| 功能 | 核心技术 | 关键文件 | 状态 |
|---|---|---|---|
| 语音/视频通话 | WebRTC, SRTP, SFU | call-manager.js, media-engine.js | ✅ 已实现 |
| 共享相册 | AES-256加密, P2P存储 | shared-album-manager.js, photo-encryptor.js | ✅ 已实现 |
| 协作编辑文档 | Yjs CRDT, P2P同步 | collab-engine.js, collab-sync.js | ✅ 已实现 |
| 社区/频道 | Gossip协议, 治理投票 | community-manager.js, governance-engine.js | ✅ 已实现 |
| 朋友圈时光机 | 本地AI分析, 情感识别 | time-machine.js, memory-generator.js | ✅ 已实现 |
| 去中心化直播 | WebRTC SFU, 弹幕 | livestream-manager.js, danmaku-engine.js | ✅ 已实现 |
| 匿名/桥接/代币 | ZKP, ActivityPub | anonymous-mode.js, social-token.js | ✅ 已实现 |
使用示例
CLI 社交操作
# 创建 DID 身份
chainlesschain did create
# 查看已有 DID
chainlesschain did list
# 使用 DID 签名消息
chainlesschain did sign "Hello, this is my signed message"
# 查看 P2P 对等节点
chainlesschain p2p peers
# 发送加密消息
chainlesschain p2p send did:chainlesschain:QmXXXX "你好,收到请回复"
# 配对新设备
chainlesschain p2p pair "My Android Phone"桌面端常用操作
1. 社交模块 → 添加好友 → 扫描二维码或输入 DID
2. 好友列表 → 点击头像 → 进入加密聊天
3. 发布动态 → 选择可见性(公开/好友/私密)
4. 社区 → 加入/创建 → 多频道讨论
5. 时光机 → 查看历史动态和 AI 回忆摘要安全考虑
身份安全
- DID 私钥由 U 盾/SIMKey 硬件保护,永不导出到软件层
- DID 文档使用 Ed25519 签名,支持离线验证,防伪造
- 撤销的 DID 通过链上声明永久标记,无法被重新激活
通信安全
- 所有私密消息使用 Signal 协议 端到端加密,具备前向安全和未来安全
- P2P 连接通过 Noise Protocol 建立加密通道,中继节点无法读取内容
- 群组消息使用对称密钥加密,成员退出后自动更新群密钥
数据隐私
- 本地 AI 推荐算法完全在设备上运行,不上传任何行为数据
- 动态发布支持三级可见性控制,私密动态仅存储在本地
- 社交数据随时可导出,支持 JSON/CSV/Markdown 格式完整备份
防滥用机制
- 社区治理基于 DAO 投票,恶意用户可被全网屏蔽
- 匿名社交使用零知识证明验证身份,防止匿名滥用
- 内容审核结合 AI 辅助检测和人工仲裁双重机制
关键文件
desktop-app-vue/src/main/p2p/— P2P 通信核心desktop-app-vue/src/main/did/— DID 身份管理desktop-app-vue/src/main/p2p/signaling-handlers.js— 信令服务desktop-app-vue/src/renderer/pages/social/— 社交前端页面
相关文档
- DID 身份 (CLI) — CLI DID 管理
- 数据加密 — Signal 端到端加密
- 远程控制 — P2P 跨设备功能
- RBAC 权限 (CLI) — 访问权限控制
