{"repo":"fangvv/SPBFT","free":true,"listed":false,"github":"https://github.com/fangvv/SPBFT","clone":"git clone https://github.com/fangvv/SPBFT.git","description":"《一种面向区块链的优化PBFT共识算法》基础源代码","language":"Java","stars":63,"topics":["pbft","blockchain","consensus-algorithm","ethereum","raft"],"license":null,"category":"blockchain-web3","readme_excerpt":"SPBFT — https://github.com/fangvv/SPBFT 本项目分享的是以下论文的核心代码（完整的版本貌似弄丢了...）： 程序结构 程序功能 该项目实现了两种 PBFT 共识算法： 1. 经典 PBFT（Pbft.java） - 标准的 PBFT 三阶段共识流程：预准备 (Pre-Prepare) → 准备 (Prepare) → 提交 (Commit) - 支持视图变更 (View Change) 和节点宕机恢复 - 容错能力： f = (n-1)/3 ，需要 2f+1 票达成一致 2. 优化版 SHPBFT（HQ.java） - 引入 信用机制 ：共识正常的节点信用增加，拜占庭行为的节点信用减半 - 基于信用值筛选 高质量节点 (HQ) 参与主共识流程，降低通信复杂度 - 当 HQ 节点间共识失败时，降级回退到传统 PBFT 流程，保证安全性 - 新增优化共识流程：HREQ → HPP → HBA → HCON → HCOM 3. 消息模型 - PbftMsg / HQMsg ：定义节点间通信的消息结构，包含类型、节点 ID、视图编号、序列号、时间戳和数据等字段 4. 定时调度 - TimerManager ：基于 ScheduledExecutorService 的异步延时执行工具，用于超时检测和定时任务 5. 实验数据 实验数据包含 TPS（吞吐量）、共识时间、节点间通信量三类指标，每种指标均提供原始数据（ .txt / .xlsx ）和 MATLAB 绘图脚本（ .m ），可直接复现论文中的对比图表。 构建与运行 环境要求 - JDK 1.8+ - Maven 3.x 构建项目 运行经典 PBFT 模拟 或直接在 IDE 中运行 PbftMain.java 的 main 方法。 运行优化版 SHPBFT 模拟 或直接在 IDE 中运行 HQMain.java 的 main 方法。 参数调整 - 节点数量 ：在 PbftMain.java 或 HQMain.java 中修改 size 变量（PBFT 默认 4，SHPBFT 默认 22） - 拜占庭节点 ：在 HQMain.java 中通过 nodes.get(id).setByzt() 设置 - 网络时延 ：在启动入口的 net[] 数组中调整节点间延迟范围（默认 10 60ms） - 超时时间 ：在 checkTimer() / checkHTimer() 方法中调整（投票超时默认 1000ms，请求超时默认 600ms） 程序为控制台应用，运行后输出节点间消息交互的日志，可用于观察共识流程和统计性能指标。 方维维，王子岳，宋慧丽，王云鹏，丁毅. 一种面向区块链的优化PBFT共识算法[J]. 北京交通大学学报, 2019, 43(5): 58-64. FANG Weiwei, WANG Ziyue, SONG Huili, WANG Yunpeng, DING Yi. An optimized PBFT consensus algorithm for blockchain. Beijing Jiaotong University, 2019, 43(5): 58-64. @article{方维维2019一种面向区块链的优化, title={一种面向区块链的优化 PBFT 共识算法}, author={方维维 and 王子岳 and 宋慧丽 and 王云鹏 and 丁毅}, journal={北京交通大学学报}, volume={43}, number={5}, ","default_branch":null,"files":null,"tree":[],"storefront":"/r/fangvv","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/fangvv/SPBFT/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}