Web3 角色权限管理系统
系统概述
基于 Solidity 智能合约的角色权限管理系统。该系统通过 Web Dashboard 和后端服务实现超级管理员(super admin)对运营管理员的完整生命周期管理:包括新建账号、自动生成关联钱包、链上授权、日常操作代理签名,以及离职时的权限撤销和账号删除。
核心目标
- 实现运营管理员的无感钱包管理(无需自行保管私钥)。
- 确保 Dashboard 操作通过具有对应权限的链上地址执行,实现可追溯性。
- 覆盖管理员从入职到离职的全流程自动化与安全控制。
- 降低私钥管理风险,防止未授权操作。
前提假设
- 智能合约采用基于角色的访问控制(RBAC),推荐使用 OpenZeppelin 的 AccessControl 库(例如 ADMIN_ROLE、OPERATOR_ROLE 等角色)。
- 后端使用 Node.js + ethers.js(或 web3.js)与以太坊兼容链交互。
- Dashboard 为 Web 应用(例如 React),支持用户名/密码登录。
- 项目运行在以太坊主网或兼容链上。
- 超级管理员拥有合约部署权限及其钱包地址已被设为 DEFAULT_ADMIN_ROLE。
系统架构
主要组件
-
Dashboard(前端)
- 超级管理员创建/删除运营账号的界面。
- 运营管理员执行合约操作的界面(如参数调整、暂停合约等)。
- 负责用户名/密码认证及会话管理。
-
后端服务(Backend)
- 处理 Dashboard 的 API 请求。
- 管理用 户数据库(用户名、密码哈希、关联钱包地址)。
- 负责生成以太坊钱包(公私钥对)。
- 使用存储的私钥代理签名并调用合约。
- 与区块链 RPC 节点交互(推荐 Infura/Alchemy)。
-
数据库
- 存储用户凭证、钱包关联关系、审计日志。
- 推荐 PostgreSQL 或 MongoDB,敏感字段需加密存储。
-
Solidity 智能合约
- 实现 RBAC,支持 grantRole / revokeRole 方法。
- 关键功能添加 onlyRole 修饰符限制调用者。
- 由超级管理员部署并初始化。
-
区块链节点提供商
- 提供 RPC 接口,用于交易广播和合约查询。
数据流概览
- 账号创建:Dashboard → 后端(生成钱包 → 存储关联 → 超级管理员钱包调用合约授权)。
- 日常操作:Dashboard → 后端(验证身份 → 使用关联钱包签名 → 调用合约)。
- 账号删除:Dashboard → 后端(超级管理员钱包调用合约撤销权限 → 删除数据库记录)。