没有合适的资源?快使用搜索试试~ 我知道了~
5.2. 主节点调用maybeSendCommit()方法判断这个Pre-prepare消息是否到了prepared状态,到了就构造并发送commit消息 8.
资源详情
资源评论
资源推荐
Transaction:
1. 主从节点收到 Tx 后,将 Tx 封装为 Request;
Request:
2. 主从节点将构造的 Request 广播给其他节点;
a) 存储:主从节点将不重复的 request 存到 obcBatch.reqStore. outstandingRequests;
b) 定时器:主从节点判断此时没有在进行数据同步,没有在执行交易,没有在视图转换,并且
outstandingRequests 中有未处理完的 request,就软开启 newViewTimer;
RequestBatch:这部分都是主节点在处理
3. 主节点收到 Request,调用 obcBatch.leaderProcReq()进行处理:
a) 存储:将其存到 obcBatch.batchStore 和 obcBatch.reqStore.pendingRequests;
b) 定时器:检查并开启打包阈值定时器 obcBatch.batchTimer;
4. 到达打包时间或数量阈值,主节点调用 obcBatch.sendBatch()将 batchStore 中的所有 request 打包构造并广
播 requestBatch;
a) 定时器:主节点会停止打包阈值定时器 obcBatch.batchTimer;
b) 存储:主节点会清空 obcBatch.batchStore 中的 request;
5. 此时主节点会进入到 pbftCore.recvRequestBatch()方法;
a) 存储:主节点将 requestBatch 存储到 pbftCore.reqBatchStore 和 pbftCore.outstandingReqBatches;
b) 定时器:主节点检查并软重置 pbftCore.newViewTimer,停止 obcBatch.nullRequestTimer;
Pre-prepare:
5.1 主节点检查 requestBatch 还没有存在 pbftCore.certStore 中,将构造并广播 Pre-prepare 消息;
a) 存储:将 Pre-prepare 消息存到 pbftCore.certStore 和 pbftCore.qset;
5.2. 主节点调用 maybeSendCommit()方法判断这个 Pre-prepare 消息是否到了 prepared 状态,到了就构造并发
送 commit 消息;
Prepare:
6. 从节点收到 Pre-prepare 消息后,调用 pbftCore.recvPrePrepare()进行处理;
a) 验证:验证主节点身份、验证 n 是否在水线范围内、是否需要强制视图转换、验证是否跟 certStore 中
的 Pre-prepare 消息存在冲突,后面三种不合法的话就出发视图转换;
b) 存储:从节点节点直接将 requestBatch 存储到 pbftCore.reqBatchStore 和
pbftCore.outstandingReqBatches,将 PrePrepare 存储到 pbftCore.certStore 和 qset 中;
c) 定时器:从节点软重置 pbftCore.newViewTimer,停止 obcBatch. nullRequestTimer;
7. 从节点验证当前请求到达 Pre-prepared 状态并且自己还没有发送过 Prepare 消息,就构造并广播 Prepare 消
息;
8. 主从节点收到 Prepare 消息后,调用 pbftCore.recvPrepare()进行处理:
a) 验证:验证主节点身份、验证 v、n;
b) 存储:主从节点将 Commit 消息存储到 pbftCore.certStore.commit 中;
8.1 主从节点调用 pbftCore.calcPSet(),将到达 Prepared 状态的 requestBatch 信息存储到 pbftCore.pset;
8.2. 主从节点调用 pbftCore.maybeSendCommit(),判断这个 requestBatch 是否达到 Commited 状态,到了就发送
Commit 消息;
Commit:
9. 主从节点收到 Commit 消息后,调用 pbftCore.Commit(),进行如下处理:
a)验证:验证 v、n;
b)存储:主从节点将 Commit 消息存储到 pbftCore.certStore.commit;
主从节点验证这个 requestBatch 是否到达了 Committed 状态,到达了,进行如下处理:
a)定时器:停止 pbftCore.newViewTimer;
b)存储:主从节点删除 pbftCore.outstandingReqBatches 中 committed 的 requestBatch;
Execute:
9.1(开始) 调用 pbftCore.executeOutstanding()进行执行;
这个方法通过 for 循环,调用 pbftCore.executeOne(),执行 pbftCore.certStore 中一个到达 committed 状态的
BJWcn
- 粉丝: 28
- 资源: 294
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0