Skip to content

MrChEnHeHe/comp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

数字遗产管家(Digital Legacy Guardian)

基于门限密码与去中心化触发条件的数字资产继承协议

License: MIT Node.js Version TypeScript


📋 目录


项目概述

核心问题

数字时代,个人资产高度数字化(加密货币、云账号、加密文件等)。当持有者意外离世或失能时:

  • 私钥单点风险:加密货币私钥仅本人掌握,资产永久丢失(估算超2000亿美元)
  • 云资产孤岛:家人知晓账号但无密码,平台政策不透明,难以合法继承
  • 传统方案失效:公证处成本高、周期长,无法覆盖数字资产特性

解决方案

用"数学分散"替代"信任集中"——通过门限密码学将资产控制权分布式托管,设置可编程触发条件,实现无需信任任何单一机构的自动化、隐私化数字遗产继承。


AI助手

数字遗产管家提供智能AI助手功能,通过自然语言对话方式帮助用户完成遗产计划的管理操作。

功能特点

功能 说明
自然语言交互 用户可以通过日常语言描述需求,无需记忆复杂命令
智能意图识别 自动识别用户意图(创建计划、继承资产、提交份额等)
上下文记忆 支持多轮对话,根据对话上下文逐步收集信息
实时操作执行 直接调用后端API完成实际业务操作

支持的操作

AI助手可以帮您完成以下操作:

  • 创建遗产计划:描述资产信息、监护人、触发条件,AI自动创建计划
  • 查询计划状态:查看当前所有遗产计划及详细状态
  • 发起继承请求:输入计划ID,发起资产继承流程
  • 提交监护人份额:监护人提交自己的秘密份额
  • 智能问答:解答关于遗产计划的各类问题

使用方式

  1. 登录后访问:用户登录后,点击导航栏的"AI助手"标签进入
  2. 快捷命令提示:输入框下方显示常用命令提示,快速开始
  3. 自然语言输入:直接用日常语言描述您的需求

示例对话

用户:帮我创建一个遗产计划
AI:好的,我可以帮您创建遗产计划。请提供以下信息:
    1. 计划名称
    2. 包含的资产(如:银行卡、加密货币账户等)
    3. 监护人信息(姓名和邮箱)
    4. 门限数量(需要多少监护人同意才能继承)

用户:计划叫"我的数字遗产",有一张银行卡,监护人是张三(zhangsan@example.com)和李四(lisi@example.com),门限是2
AI:正在创建计划...
    ✅ 计划创建成功!
    计划ID:我的数字遗产-1712345678900
    门限:2-of-2
    监护人:张三、李四

技术实现

  • 前端:React + TypeScript,基于Framer Motion实现流畅动画
  • 后端:Express + TypeScript,模块化架构设计
  • 大模型:Deepseek API(deepseek-chat),支持复杂对话理解
  • 工具调用:JSON格式的工具调用协议,支持精确的业务操作

配置说明

AI助手功能需要在 .env 文件中配置Deepseek API密钥:

# Deepseek API配置(用于AI助手功能)
DEEPSEEK_API_KEY=your-deepseek-api-key
DEEPSEEK_API_URL=https://api.deepseek.com/v1
DEEPSEEK_MODEL=deepseek-chat

注意

  • 如果不配置API密钥,AI助手将使用命令模糊匹配模式(功能受限)
  • API密钥从 Deepseek官网 获取

对话历史管理

  • 自动保存:对话历史自动保存到本地存储
  • 会话管理:支持创建新会话、切换历史会话
  • 置顶功能:重要会话可置顶显示
  • 重命名删除:支持自定义会话名称和删除会话

核心功能

功能架构

功能模块 核心能力 用户价值
资产托管 将私钥/密码分片加密,分发给多位监护人 消除单点故障,避免"一人失能,资产全失"
条件触发 时间锁、社会共识、混合模式三种触发机制 自动化验证"继承条件",防 premature 执行
隐私继承 零知识证明+门限签名,资产详情全程加密 继承前无人知晓资产规模,抗胁迫设计

覆盖资产类型

  • 加密货币:BTC、ETH等,通过门限签名直接链上转账
  • 云账号凭证:邮箱、网盘、社交账号密码,加密托管触发后释放
  • 加密文件:个人照片、视频、文档,解密密钥分片托管
  • 智能合约权限:DeFi协议、NFT所有权,多签权限转移

快速开始

前置要求

  • Node.js >= 18.0.0
  • npm >= 9.0.0

安装依赖

# 安装所有依赖
npm run install:all

启动开发服务器

# 同时启动前端和后端
npm run dev

这将启动:

访问应用

打开浏览器访问:http://localhost:5173

环境变量配置

注意:环境变量配置文件不包含在GitHub源码中,需要手动创建。

创建后端环境配置文件

backend/.env 文件中添加以下配置:

# 服务器配置
PORT=3000
NODE_ENV=development

# Deepseek AI API配置(用于AI助手功能)
DEEPSEEK_API_KEY=your-deepseek-api-key
DEEPSEEK_API_URL=https://api.deepseek.com/v1
DEEPSEEK_MODEL=deepseek-chat

# 密码学配置
PRIME_NUMBER=115792089237316195423570985008687907853269984665640564039457584007913129639747
FIELD_SIZE=256

# 智能合约配置
CONTRACT_ADDRESS=0x0000000000000000000000000000000000000000
CHAIN_ID=1

# IPFS配置(模拟)
IPFS_GATEWAY=https://ipfs.io/ipfs/

# 邮件服务配置(用于发送份额通知和继承通知)
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-email@example.com
SMTP_PASS=your-email-password
SMTP_FROM=your-email@example.com

配置说明

配置项 说明 必填
PORT 后端服务端口
DEEPSEEK_API_KEY Deepseek大模型API密钥 AI助手功能需要
SMTP_HOST SMTP邮件服务器地址 邮件通知功能需要
SMTP_USER 邮件账号 邮件通知功能需要
SMTP_PASS 邮件密码/授权码 邮件通知功能需要

获取API密钥

  1. Deepseek API:访问 Deepseek官网 注册获取API密钥

快速演示

  1. 创建遗产计划:添加数字资产、监护人,设置触发条件
  2. 查看控制台:管理所有遗产计划,查看详情
  3. 发起继承:输入计划ID,发起继承请求
  4. 监护人门户:提交监护人份额

详细使用说明请参考 快速启动指南


项目结构

digital_legacy/
├── frontend/              # React 前端应用
│   ├── src/
│   │   ├── components/   # React 组件
│   │   │   ├── Layout.tsx
│   │   │   └── Navbar.tsx
│   │   ├── pages/        # 页面
│   │   │   ├── Home.tsx
│   │   │   ├── CreatePlan.tsx
│   │   │   ├── Dashboard.tsx
│   │   │   ├── Inheritance.tsx
│   │   │   ├── Guardian.tsx
│   │   │   └── AIHelper.tsx      # AI助手页面
│   │   ├── services/     # API 服务
│   │   │   └── api.ts
│   │   ├── App.tsx
│   │   ├── main.tsx
│   │   └── index.css
│   ├── package.json
│   ├── vite.config.ts
│   └── tailwind.config.js
├── backend/              # Node.js 后端服务
│   ├── src/
│   │   ├── crypto/       # 密码学模块
│   │   │   └── shamir.ts
│   │   ├── services/     # 业务逻辑
│   │   │   ├── legacyPlanService.ts
│   │   │   ├── aiService.ts      # AI服务
│   │   │   └── llmService.ts     # 大模型服务
│   │   └── index.ts      # API 入口
│   ├── package.json
│   └── tsconfig.json
├── contracts/            # 智能合约
│   ├── LegacyContract.sol
│   ├── hardhat.config.js
│   ├── scripts/
│   │   └── deploy.js
│   └── test/
│       └── LegacyContract.test.js
├── docs/                 # 文档
│   ├── API.md
│   ├── ARCHITECTURE.md
│   └── DEPLOYMENT.md
├── README.md            # 项目说明
├── QUICKSTART.md        # 快速启动指南
└── package.json         # 根配置

技术栈

前端

  • 框架:React 18 + TypeScript
  • 构建工具:Vite 5
  • 样式:TailwindCSS 3
  • 路由:React Router 6
  • HTTP客户端:Axios
  • 动画:Framer Motion
  • 图标:Lucide React

后端

  • 运行时:Node.js 18+
  • 框架:Express 4
  • 语言:TypeScript 5
  • 密码学:crypto-js, elliptic
  • ID生成:uuid

智能合约

  • 语言:Solidity 0.8.19
  • 框架:Hardhat
  • 网络:Ethereum / EVM兼容链

存储

  • 开发环境:内存存储
  • 生产环境:PostgreSQL(计划中)
  • 去中心化存储:IPFS(计划中)

密码学方法

本项目采用分层密码学设计,在保护资产安全的同时确保密码学可验证性和抗胁迫能力。

遗产计划完整流程

graph TB
    %% 样式定义
    classDef phase fill:#EEF2FF,stroke:#4F46E5,stroke-width:2px,color:#1F2937
    classDef userAction fill:#4F46E5,stroke:#3730A3,stroke-width:1px,color:#fff
    classDef crypto fill:#FEF3C7,stroke:#D97706,stroke-width:1px,color:#92400E
    classDef system fill:#ECFDF5,stroke:#059669,stroke-width:1px,color:#065F46
    classDef decision fill:#FFF7ED,stroke:#EA580C,stroke-width:1px,color:#9A3412
    classDef duress fill:#FEF2F2,stroke:#DC2626,stroke-width:2px,color:#991B1B
    classDef complete fill:#10B981,stroke:#047857,stroke-width:1px,color:#fff
    classDef storage fill:#F3F4F6,stroke:#6B7280,stroke-width:1px,color:#374151

    subgraph 创建阶段
        direction TB
        A([用户创建遗产计划]) --> B[生成随机主密钥 masterKey]
        B --> C[使用主密钥 AES 加密资产数据]
        B --> D[构造 Shamir 双多项式]
        D --> D1[值多项式 Px 常数项 = masterKey]
        D --> D2[盲因子多项式 Qx 常数项 = 随机R]
        D1 --> E[计算 n 个份额值 vi = Pi]
        D2 --> F[计算 n 个盲因子 ri = Qi]
        E --> G[计算 Pedersen 承诺 Ci = rixG + vixH]
        F --> G
        D --> H[计算主承诺 Cmaster = RxG + sxH]
        C --> I[加密资产 + 份额承诺 + 主承诺]
        G --> I
        H --> I
        I --> J[(持久化存储)]
        J --> K[邮件分发份额值 vi, ri 给监护人]
        K --> L[内存中销毁主密钥]
    end

    subgraph 继承阶段
        direction TB
        M[继承人输入计划ID发起请求] --> N{时间锁检查}
        N -->|时间锁未到期| O[拒绝请求 返回剩余时间]
        N -->|时间锁已到期或无时间锁| P[通知所有监护人]
        P --> Q[监护人在线提交份额]
        Q --> R{Pedersen 承诺验证}
        R -->|验证失败| Q
        R -->|匹配胁迫承诺| S[触发胁迫警报]
        S --> T[通知所有监护人 继承终止]
        R -->|匹配正常承诺| U[收集并通过门槛数量检查]
        U -->|份额数 < 门限 t| Q
        U -->|份额数 >= 门限 t| V[拉格朗日插值恢复主密钥]
        V --> W[使用主密钥 AES 解密资产]
        W --> X[资产发送给继承人]
    end

    subgraph 同态份额刷新
        direction TB
        Y[份额可能泄露或需定期刷新] --> Z[server 生成零和多项式]
        Z --> Z1[Zvx 值增量多项式 Zv0 = 0]
        Z --> Z2[Zrx 盲因子增量多项式 Zr0 = 0]
        Z1 --> AA[对每个份额 i 计算增量]
        Z2 --> AA
        AA --> AB[dvi = Zvi  dri = Zri]
        AB --> AC[server 计算新承诺<br>Ci_new = Ci + rixG + vixH]
        AC --> AD[server 更新存储的承诺]
        AB --> AE[邮件发送增量 dvi dri 给监护人]
        AE --> AF[监护人本地更新 vi += dvi  ri += dri]
    end

    style A fill:#4F46E5,color:#fff
    style V fill:#10B981,color:#fff
    style X fill:#10B981,color:#fff
    style S fill:#DC2626,color:#fff
    style T fill:#DC2626,color:#fff
    style L fill:#EF4444,color:#fff,stroke:#991B1B
Loading

核心技术

1. Shamir秘密共享(SSS)

核心思想:将主密钥 S 拆分为 n 个份额,任意 t 个份额可恢复秘密,少于 t 个则信息论安全。

数学实现

  • 在有限域 Z_p 上构造 t-1 次多项式:

    f(x) = a₀ + a₁·x + a₂·x² + ... + a_{t-1}·x^{t-1} (mod p)

  • 令 a₀ = S(主密钥),a₁...a_{t-1} 为随机系数

  • 计算 n 个点 (i, f(i)) 作为份额分发给每位监护人

  • 恢复时使用拉格朗日插值:

    S = Σ_{i∈Q} y_i · Π_{j∈Q, j≠i} -x_j / (x_i - x_j) (mod p)

安全特性:任意少于 t 个份额无法获得主密钥的任何信息(信息论安全)。

2. Pedersen同态承诺

核心思想:份额值 v_i 不直接暴露给 server,而是以 Pedersen 承诺形式公开存储。

承诺公式

C_i = r_i · G + v_i · H

  • G、H 为 secp256k1 上两个独立的生成点
  • r_i:盲因子(随机数,隐藏承诺值)
  • v_i:份额值
  • 完美隐藏:给定 C_i,攻击者无法获取 v_i 的任何信息
  • 计算绑定:找到不同 (r', v') 使得承诺相等等价于解椭圆曲线离散对数

同态加法性质

C(v₁, r₁) + C(v₂, r₂) = C(v₁+v₂, r₁+r₂)

这一性质是份额刷新功能的核心基础。

3. 双多项式份额结构(同态可验证)

在标准 Shamir 基础上引入第二个多项式

多项式 用途 常数项
P(x) 份额值多项式 P(0) = masterKey
Q(x) 盲因子多项式 Q(0) = R(随机主盲因子)
  • 份额 i:v_i = P(i), r_i = Q(i)
  • 承诺 i:C_i = r_i·G + v_i·H
  • 主承诺:C_master = R·G + s·H(公开存储)

同态验证(利用 Lagrange 系数 λⱼ 和 EC 点运算):

Σ(λⱼ · C_iⱼ) = C_master

任何人可以用 EC 点和 Lagrange 系数验证一组份额是否对应正确的主密钥,无需知道份额值本身

4. 同态份额刷新(零和多项式)

创新点:server 不存储主密钥的情况下实现安全份额刷新。

原理:生成两个 t-1 次零和多项式 Z_v(x) 和 Z_r(x),满足 Z_v(0) = Z_r(0) = 0:

  • 新份额值:v'_i = v_i + Z_v(i)(监护人本地计算)
  • 新盲因子:r'_i = r_i + Z_r(i)(监护人本地计算)
  • 新承诺:C'_i = C_i + Z_r(i)·G + Z_v(i)·H(server 公开计算,纯 EC 点运算)
  • 主承诺 C_master 不变(Z(0) = 0)

安全优势

对比项 传统方案(需主密钥) 本方案(同态刷新)
server 密钥存储 需存储/加密主密钥 全程不接触主密钥
刷新计算 解密→重拆分 纯 EC 点运算
通信量 发送完整新份额 仅发送增量
安全性 密钥泄露→全盘暴露 零和多项式一次有效

5. 胁迫码(Duress Code)

目的:抗胁迫攻击。当监护人在被迫情况下提交份额时,可使用假份额暗中触发警报。

机制

  • 每位监护人收到正常份额胁迫份额两份值
  • 正常份额通过 Pedersen 承诺验证,用于合法继承
  • 胁迫份额通过胁迫承诺验证,提交后会立即通知所有监护人并终止继承流程
  • 攻击者无法区分正常承诺和胁迫承诺(计算不可区分性)

6. ECIES 非对称加密

份额通过邮件发送时使用 ECIES(椭圆曲线集成加密方案)加密传输:

  • 密钥交换:ECDH(secp256k1)
  • 密钥派生:SHA-256
  • 对称加密:AES(CryptoJS)
  • 优势:只有持有对应私钥的监护人能解密份额内容

安全模型总结

server 公开存储:
  ├── 加密资产 ciphertext(AES加密,无密钥)
  ├── Pedersen承诺 C_i = r_i·G + v_i·H(EC点)
  ├── 主承诺 C_master = R·G + s·H(EC点)
  └── 胁迫承诺 C_duress_i(额外EC点)

server 不存储:
  ├── 主密钥 masterKey(创建后立即销毁)
  ├── 份额值 v_i(仅监护人持有)
  └── 盲因子 r_i(仅监护人持有)

同态保障:份额刷新无需主密钥,仅需 EC 点运算

核心设计原则:数学安全性替代信任。server 即使被完全攻破,攻击者最多只能看到加密后的资产和公开承诺,无法恢复主密钥或解密资产。


应用场景

典型场景

场景A:加密货币持有者

  • 持有10 BTC、50 ETH,分布在多钱包
  • 设置3-of-5门限:妻子、两子女、律师、好友各持份额
  • 触发条件:6个月无链上活动 + 3位监护人确认
  • 意外去世后,子女发起请求,律师+好友+妻子确认,资产自动转移至预设地址

场景B:数字内容创作者

  • 积累大量加密摄影作品、未发布手稿
  • 设置时间锁触发(5年)+ 社会共识备份
  • 若5年无活动,作品自动释放给指定博物馆/档案馆

场景C:跨境家庭

  • 资产分布在不同国家平台,继承人分散多地
  • 利用去中心化网络绕过单一司法管辖区限制
  • 智能合约自动处理多币种、多平台资产分配

文档


核心优势

与现有方案对比

维度 本开源方案 Ledger Recover 传统公证 Safe{Wallet}
信任模型 数学(密码学) Ledger公司+KYC机构 公证处 多签合约
中心化程度 去中心化P2P 中心化服务 中心化机构 链上多签
隐私保护 零知识,全程加密 需KYC,公司可见 完全暴露 链上透明
通用资产 Crypto+云+文件 仅Ledger设备 通用但慢 仅EVM生态
抗胁迫 胁迫码+延迟解锁
成本 仅Gas费 $9.99/月 数千-数万元 Gas费
开源可审计 全栈开源 闭源 N/A 部分开源

技术亮点

  1. 无需信任任何单一实体:包括项目方本身,纯密码学保障
  2. 隐私最大化:资产详情在继承前完全保密,继承过程零知识
  3. 可编程灵活性:触发条件、资产分配、执行逻辑完全可定制
  4. 抗审查与持久性:去中心化网络运行,无法被关闭或冻结

贡献指南

我们欢迎所有形式的贡献!

如何贡献

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

开发规范

  • 遵循现有代码风格
  • 添加必要的注释
  • 编写单元测试
  • 更新相关文档

报告问题

如果发现bug或有功能建议,请通过 GitHub Issues 提交。


开源协议

本项目采用 MIT 许可证 - 详见 LICENSE 文件

核心密码学库:Apache-2.0 + MIT,促进广泛采用

智能合约:GPL-3.0,确保衍生作品开源

硬件设计:CERN-OHL,开放硬件生态


安全审计

  • 内部审计:单元测试 + 模糊测试
  • 社区审计:公开漏洞赏金计划
  • 专业审计:Trail of Bits/OpenZeppelin(计划中)
  • 形式化验证:Certora/Manticore(计划中)

联系方式


致谢

感谢所有为这个项目做出贡献的开发者和社区成员!


数字遗产管家是一个融合门限密码学、去中心化共识、隐私计算的开源基础设施,解决数字时代资产继承的关键痛点:

  • 技术前沿:PVSS、DKG、门限签名等高级密码学原语
  • 社会价值:保护万亿级数字资产,填补市场空白
  • 开源伦理:密码学基础设施应当透明可审计,符合安全社区价值观
  • 完整方案:覆盖"托管-触发-执行"全生命周期,具备实际部署能力

About

开源安全奖励计划

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors