bfl-project
区块链+联邦学习融合系统,通过以太坊智能合约记录模型更新哈希,实现去中心化隐私保护AI训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
区块链+联邦学习融合系统,通过以太坊智能合约记录模型更新哈希,实现去中心化隐私保护AI训练
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:系统架构与准确率/信任评分对比图
想象一下这样的场景:一家医院希望借助多家医疗机构的数据训练一个更精准的疾病预测模型,但每家医院都面临同一个困境——患者数据不能离开本地,既涉及隐私法规(GDPR、HIPAA),也涉及患者信任。传统联邦学习(Federated Learning)解决了数据不出本地的难题,但很快研究者们发现了新的漏洞:恶意客户端可以提交被污染的模型参数,直接将全局模型精度从90%拉低到10%,而服务器端根本无从追溯是谁干的。
narasimhabtech27-commits/bfl-project 正是为解决这一双重要求而生的学术研究项目:既要保护数据隐私,又要建立一个无人能篡改的贡献验证体系。该项目来自印度 Dayananda Sagar 大学计算机科学与工程学院(网络安全方向),是一份完整的课程研究与实现报告。
BFL 系统并非简单地将联邦学习和区块链拼接在一起,而是设计了三层互补的防护机制,让每层机制补足其他层的短板:
第一层:差分隐私(Differential Privacy)
在本地模型参数上传到服务器之前,系统会自动向参数中加入精心校准的高斯噪声,使得任何人都无法通过观察最终的全局模型来反推某家医院的原始训练数据。这一步从数学上保障了"参与联邦学习不会泄露隐私"。
第二层:以太坊区块链(Ethereum / Ganache)
所有客户端提交的模型更新,其权重哈希(SHA-256)会被作为交易记录写入本地以太坊区块链(通过 Ganache 模拟)。由于区块链的不可篡改性,任何人都无法事后删除或修改历史记录。每一次训练轮次(Round)的贡献都有完整的时间戳和提交者地址可供审计。
第三层:贡献证明机制(Proof-of-Contribution, PoC)
这一层是 BFL 的核心创新点:系统会计算客户端提交权重的余弦相似度(Cosine Similarity),与全局模型的已有更新进行比对打分。那些提交随机噪声或恶意数据的客户端,其信任分数会急剧下降,并在达到阈值后被自动屏蔽。README 披露,在该项目的 10 轮训练中,恶意攻击者仅在第 2 轮就被检测并屏蔽,全局模型在第 3 轮迅速恢复到 90.59% 的准确率。
项目使用 Solidity 0.8.0 编写了一个轻量级的链上注册合约 ModelRegistry.sol,核心逻辑如下:
struct ModelUpdate {
address client; // 提交者地址
bytes32 updateHash; // 权重哈希
uint256 roundNumber; // 训练轮次
bool isVerified; // 是否通过验证
uint256 timestamp; // 时间戳
}
每轮训练结束后,合约会存储所有经过 PoC 验证的更新记录,供服务器端查询和聚合并行计算(FedAvg)。
bfl_phase2.py 实现了标准的 FedAvg 流程:
# 每个客户端在本地训练2个epoch
weights, n_samples = client_train(global_weights, dataset)
# 权重哈希上链
submit_update(contract, client_idx, weights, round_num)
# 服务器聚合全局模型
global_weights = federated_average(client_updates)
blockchain.py 负责连接本地 Ganache 节点,使用 web3.py 库部署合约和提交交易。每个模型权重的 SHA-256 哈希被转换为 bytes32 类型后写入链上。
| 指标 | 数值 |
|---|---|
| MNIST 测试集准确率 | 96.78% |
| 恶意攻击者检测轮次 | 第 2 轮 |
| 模型恢复至 90.59% 轮次 | 第 3 轮 |
| 链上记录交易总数 | 61 笔 |
| 零数据共享轮数 | 15 轮 |
适用场景: 学术研究、课程项目、隐私保护 AI 研究原型、联邦学习+区块链结合的验证性实验。
明显局限: 这是一个研究导向的项目,存在以下实际问题:(1) 无容器化支持:没有 Dockerfile 或 docker-compose,无法在生产环境中一键部署。(2) 强依赖本地模拟链:Ganache 仅用于本地开发,生产环境需要真实的以太坊节点(Ropsten/Goerli 测试网或主网),后者需要消耗真实 Gas 费用。(3) 仅支持 MNIST:数据管道硬编码了 MNIST 数据集,扩展到其他数据集需要大量修改。(4) 无生产级安全性:智能合约未经过专业安全审计,Solidity 版本 0.8.0 存在已知漏洞,不建议直接用于真实金融或医疗场景。(5) Python 权重全量上链开销大:实际生产中联邦学习系统不会将完整权重上链(成本极高),通常只上传梯度或哈希。
| 文件 | 作用 |
|---|---|
ModelRegistry.sol | 以太坊智能合约,链上记录模型更新 |
blockchain.py | Web3.py 区块链交互层,连接 Ganache |
bfl_phase2.py | 联邦学习 Phase 2:FL + 区块链训练 |
bfl_phase3.py | 联邦学习 Phase 3:信任评分与恶意检测 |
mnist (1).npz | 预处理后的 MNIST 数据集 |
figure1_accuracy_trust.png | 准确率与信任评分可视化图 |
BFL 项目将联邦学习的隐私保护能力与区块链的不可篡改性相结合,探索了在去中心化环境下如何建立信任机制。尽管作为学术课程项目存在诸多工程层面的不足,但它清晰展示了三个方向融合的可能性:差分隐私提供数学保障、区块链提供审计透明性、PoC 机制提供实时防御。这三个技术维度正是当前隐私计算(Privacy-Preserving Computation)领域的研究前沿之一。