Skip to content

Repository files navigation

去中心化身份管理系统

最新功能

  • DID文档全生命周期管理(创建/解析/更新/停用)
  • 支持did:webdid:eth两种DID方法
  • 自动同步区块链和本地数据库

快速开始

# 启动开发环境
./scripts/start-dev.ps1

# 创建测试DID
examples/create_test_did.exe

调试技巧

设置日志级别查看详细流程:

$env:RUST_LOG="did_system=debug"
cargo run

常见问题

Q: 如何解决"DID更新失败"错误? A: 检查私钥是否匹配,并确认区块链节点正常运行

基于CORD区块链框架和Cryptid DID实现的去中心化身份管理系统。本系统提供了完整的DID(去中心化身份标识符)生命周期管理功能,包括创建、解析、更新和停用DID。

系统架构

系统主要由以下模块组成:

  1. DID模块

    • DID文档的核心数据结构
    • DID生命周期管理功能
    • 身份验证和授权
  2. 区块链模块

    • 与CORD区块链的交互
    • DID文档的链上存储和检索
    • 交易处理和状态同步
  3. API模块

    • RESTful API接口
    • 请求处理和响应格式化
    • 错误处理
  4. 数据库模块

    • 本地数据存储
    • DID文档缓存
    • 状态管理
  5. 工具模块

    • 密钥管理
    • 签名验证
    • 辅助功能

技术栈

  • Rust编程语言
  • Substrate区块链框架
  • SQLite数据库
  • Axum Web框架

API接口

1. 创建DID

POST /did/create
Content-Type: application/json

{
    "controller_key": "<base58编码的控制者私钥>"
}

2. 解析DID

GET /did/resolve
Content-Type: application/json

{
    "did": "did:cord:<identifier>"
}

3. 更新DID

POST /did/update
Content-Type: application/json

{
    "did": "did:cord:<identifier>",
    "controller_key": "<base58编码的控制者私钥>",
    "document": {
        // 更新后的DID文档内容
    }
}

4. 停用DID

POST /did/deactivate
Content-Type: application/json

{
    "did": "did:cord:<identifier>",
    "controller_key": "<base58编码的控制者私钥>"
}

安装和运行

  1. 安装Rust和Cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 克隆项目
git clone <repository_url>
cd did-system
  1. 编译项目
cargo build --release
  1. 运行服务
cargo run --release

服务默认在 http://localhost:3000 启动。

示例程序

DID认证演示

这个演示程序展示了如何将传统账户系统(邮箱/手机号登录)与DID系统集成。

前置条件

在运行此演示程序前,请确保:

  1. 区块链节点已启动:

    .\scripts\start-dev.ps1
  2. DID系统主服务已启动:

    cargo run

启动演示程序

cd examples/auth-demo
cargo run

测试API

  1. 注册新用户:

    # 使用邮箱注册
    curl -X POST http://localhost:3000/register -H "Content-Type: application/json" -d '{
      "username": "test_user",
      "email": "test@example.com",
      "password": "password123"
    }'
  2. 登录:

    # 邮箱登录
    curl -X POST http://localhost:3000/login -H "Content-Type: application/json" -d '{
      "identifier": "test@example.com",
      "password": "password123"
    }'
  3. 绑定DID:

    # 需要先登录获取JWT token
    curl -X POST http://localhost:3000/bind-did \
      -H "Authorization: Bearer {your-jwt-token}" \
      -H "Content-Type: application/json" \
      -d '"did:web:example"'

前端界面

功能特性

  • 创建DID:生成新的去中心化身份标识符
  • 解析DID:查询并验证DID文档信息
  • 更新DID:修改DID文档内容
  • 现代化UI:基于Ant Design的用户友好界面
  • 响应式设计:支持各种设备尺寸

技术栈

  • React 18
  • TypeScript 4.9+
  • Vite 5.0
  • Ant Design 5.0
  • Tailwind CSS
  • Axios

安装和运行

  1. 安装依赖:
cd frontend
npm install
#
yarn
  1. 启动开发服务器:
npm run dev
#
yarn dev
  1. 构建生产版本:
npm run build
#
yarn build

开发说明

  1. 项目结构
src/
├── api/            # API接口处理
├── blockchain/     # 区块链交互
├── did/            # DID核心功能
├── db/            # 数据库操作
├── types.rs       # 类型定义
├── utils.rs       # 工具函数
└── main.rs        # 程序入口
  1. 开发环境要求
  • Rust 1.70.0 或更高版本
  • SQLite 3.x
  • 可访问的CORD节点
  1. 测试
cargo test

安全性考虑

  1. 私钥安全

    • 私钥永远不会以明文形式存储
    • 所有私钥操作都在内存中进行
  2. 数据完整性

    • 使用区块链确保DID文档的不可篡改性
    • 本地数据库用于缓存,提供快速访问
  3. 访问控制

    • 基于密码学验证确保只有授权用户可以修改DID
    • API接口实现了适当的访问控制

贡献指南

  1. Fork项目
  2. 创建特性分支
  3. 提交更改
  4. 推送到分支
  5. 创建Pull Request

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages