1. 总体设计目标
该慈善平台的主要目标是创建一个数据密集型、完全透明并且保障用户隐私的系统。平台需要允许用户捐款,每笔捐款都能与特定的慈善事件或项目关联,系统需要保障每一笔交易的隐私,同时通过密码学技术和区块链技术确保数据的完整性、透明性和可追溯性。
2. 系统架构层次
2.1 RESTful API 层
- API接口设计:系统通过RESTful API与外部进行交互,确保良好的可扩展性与松耦合。所有的API都会提供标准的HTTP方法,数据交换格式为JSON,返回结果遵循统一的结构。
- 身份认证与授权:用户的访问通过OAuth 2.0或JWT(JSON Web Token)进行认证和授权。用户权限管理模块将通过身份信息控制不同级别的访问权限。
- 捐款操作:API支持创建、查询、更新捐款记录,查询已捐款的事件以及与之相关的透明度数据。用户可以查询其捐款的去向,并查看所有与其捐款相关的支出记录。
2.2 应用层(业务逻辑层)
- 捐款与事件关联:每笔捐款会根据事件ID进行标记,这样能够保证捐款完全透明。系统将确保捐款与具体的慈善事件相关联,并记录其时间、金额、捐赠者等信息。
- 事件的资金流动:平台提供的每个慈善事件都将展示资金的流向和使用情况。例如,展示捐款总额,已使用金额,未使用金额等,所有数据都可供公众查看。
- 数据透明度与可验证性:系统会提供一个公开的查询接口,让任何人都能够查询到所有的捐款事件和资金流动,并可以追溯每笔资金的具体用途。通过透明的日志系统,用户能够实时查看和验证捐款去向。
2.3 数据层
- 数据库设计:数据存储采用分布式数据库解决方案,确保数据高可用性和高性能。敏感信息,如用户的捐款信息、个人资料等,将进行加密存储。所有的数据都会记录在数据库中,并且会与区块链的交易日志相结合,确保数据的一致性与完整性。
- 审计日志:每一次的操作都会记录在审计日志中,审计日志包括用户捐款信息、事件资金流动、项目支出等数据。审计日志将会提供不可篡改的记录,确保平台的透明度。
2.4 区块链层
- 区块链技术:区块链用于记录捐款和事件相关的所有交易数据。所有的交易记录都将写入一个公链,任何人都可以随时查看交易历史、捐款流向及资金使用情况。每笔捐款都会生成一个交易哈希,这些交易哈希一旦写入区块链就无法篡改,确保数据的完整性。
- 加密与隐私保护:捐款者的个人隐私信息不会直接存储在区块链上,而是通过密码学方法(如零知识证明)加以保护,确保捐款者身份的隐私性。捐款金额、时间戳和事件关联等信息则会以哈希形式存储在链上,确保透明性同时保障隐私。
- 去中心化与不可篡改性:区块链的去中心化特性能够有效避免任何单点故障或中央化管理的风险,保证所有交易都能被任何人验证且不可篡改,增加信任度。
2.5 加密与隐私层
- 隐私保护技术:捐款者的信息通过公私钥加密技术进行保护。用户的身份、捐款金额及相关个人信息在存储和传输过程中都使用强加密算法进行保护。同时,平台也会利用零知识证明等密码学技术,确保交易的合法性和有效性,但不会泄露用户的私人信息。
- 透明性与可追溯性:通过公链记录的透明数据和加密保护,任何用户都能确认捐款的去向,而不会泄露捐款者的个人信息。区块链与加密技术结合,使得每一笔交易都能够在不泄露隐私的前提下确保其透明性和合法性。
2.6 前端展示层
- 用户界面:通过直观的前端界面展示所有的捐款事件和相关的资金流向信息。用户可以通过网页或移动端查看事件的详细信息、捐款历史、资金去向等,确保捐款过程和事件进展的完全透明。
- 动态数据更新:前端界面通过WebSocket或GraphQL订阅等技术,实时更新事件的资金流向、项目进展等信息,确保用户能够即时查看最新的捐款与支出情况。
3. 系统流程
-
用户捐款:
- 用户在前端界面选择捐款事件并输入捐款金额,系统会生成一个捐款交易请求。
- 系统通过加密技术保护捐款者身份,交易信息被记录到区块链上并生成不可篡改的哈希值。
- 捐款信息将同步存储在平台数据库中,并与事件关联。
-
捐款验证与公开透明:
- 捐款完成后,平台会通过区块链和数据库相结合的方式,公开捐款信息和资金流动情况,任何人都可以通过API查询历史捐款及其去向。
- 用户可以通过界面查看所有与其捐款相关的支出情况,包括金额、用途、时间等信息。
-
资金的追踪与审核:
- 每一笔资金支出都将在区块链上记录,并且相应的审计日志会公开,确保每一笔捐款的使用情况都能被追溯和审计。
-
系统的完整性与可验证性:
- 平台任何人都可以重建整个系统。通过公开的区块链数据、数据库架构以及API接口,用户可以验证系统的运作方式,确保平台的透明性和可靠性。
4. 系统安全与容灾
- 数据加密:所有的敏感数据,如用户信息、交易记录等都会加密存储,并通过HTTPS等安全协议传输。
- 容灾与备份:数据中心采用多节点部署,支持灾备机制。一旦某个节点出现故障,系统能够自动切换至备用节点,保证高可用性。
5. 技术栈
- 后端:Go + Rust
- 数据库:MySQL(主存储),Redis(缓存),Blockchain (链上存储)
- 区块链平台:没想好
- 加密与隐私保护:RSA、ECDSA、Zero-Knowledge Proof、AES之类的玩意。