Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >2.6 共识机制

2.6 共识机制

作者头像
Meet相识
发布于 2018-09-12 09:08:41
发布于 2018-09-12 09:08:41
48900
代码可运行
举报
文章被收录于专栏:技术专栏技术专栏
运行总次数:0
代码可运行

2.6 共识机制

共识机制的原理是,当一个节点通过工作量证明打包了区块添加到了区块链上,要和全网其他同时完成工作量证明的节点竞争最长链,如果发现比自己长的链,则替换掉自己的,基于这个,来完成我们的代码编写

  • BlockChain
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def resolve_conflicts(self):
neighbours = self.nodes

max_len = len(self.chain)
new_chain = None

for node in neighbours:
# 遍历邻居节点,获取他们的链信息
response = requests.get(f'http://{node}/chain')
if response.status_code == 200:
length = response.json()['length']
chain = response.json()['chain']

if len(chain) > max_len and self._valid_chain(chain):
max_len = length
new_chain = chain

if not new_chain:
return False

self.chain = new_chain
return True
def _valid_chain(self, chain):
last_block = chain[0]
current_index = 1
以此遍历链上的每一个节点
while current_index < len(chain):
block = chain[current_index]
# 如果某个节点保存的上一个节点的hash值不正确,则校验不通过
if block['previous_hash'] != self.hash(last_block):
return False

# 如果某个节点不能通过工作量证明,则校验不通过
if not self._valid_proof(last_block['proof'], block['proof']):
return False

last_block = block
current_index += 1

return True
  • 视图函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@web.route('/node/resolve', methods=['GET'])
def consensus():
replaced = block_chain.resolve_conflicts()

if replaced:
response = {
'message': 'Our chain was replaced',
'new_chain': block_chain.chain
}
else:
response = {
'message': 'Our chain is authoritative',
'chain': block_chain.chain
}

return jsonify(response)

至此,我们的简易区块链就完成了,源代码地址:https://github.com/MarkGao11520/blockchain_demo

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=35qf7hejio840

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
白盒测试:如何进行代码级别的测试?
白盒测试也称结构测试,透明盒测试。主要用于单元测试阶段,代码和逻辑的测试,重点复杂的测试,是一种测试用例设计方法,不同于黑盒测试,白盒测试是可以看到内部代码如何运作的,可通过测试来检测产品内部是否符合规定正常运行。
测试开发技术
2023/08/21
3850
白盒测试:如何进行代码级别的测试?
白盒测试的测试用例设计方法
对简单的程序流程而言,确定程序的路径有多少条可通过:语句覆盖(覆盖率100%);分支(判定)覆盖(覆盖率85%);条件覆盖;分支-条件覆盖;条件组合覆盖;路径覆盖(覆盖率80%)来确定,这也是白盒测试的主要技术。
全栈程序员站长
2022/11/07
1.3K0
白盒测试的测试用例设计方法
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
白盒测试方法应用于代码评审、单元程序之中,而黑盒测试方法则应用于模块、组件等大单元的功能测试之中。
Srlua
2024/10/19
2310
软件测试:黑白盒测试的区别及白盒测试全面解析与应用
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
综上,白盒测试和黑盒测试的主要区别在于测试者对系统内部结构的了解程度。白盒测试关注程序内部逻辑和代码覆盖率,而黑盒测试则关注系统的功能和用户体验。
SarPro
2024/04/25
7890
【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
白盒测试中的几种覆盖方法
文章转自:http://www.51testing.com/html/44/n-3713444.html 白盒测试用例设计的一个很重要的评估标准就是对代码的覆盖度。一说到覆盖,大家都感觉非常熟悉,但是常见的覆盖都有哪些?各自有什么优缺点?在白盒测试的用例设计中我们应该如何自如地运用呢?今天小编就为大家总结了一下几种常见的覆盖以及各自的优缺点。 白盒测试中常见的覆盖有六种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。下面我们就分别看看这几种不同的覆盖究竟是什么鬼。 一、语句覆盖(St
张俊怡
2018/04/24
6.8K0
白盒测试中的几种覆盖方法
嵌入式基础知识-逻辑覆盖测试用例设计
上篇文章:嵌入式基础知识-测试基础概念,介绍了软件测试相关的基础概念,其中白盒测试中的逻辑覆盖率知识点比较复杂,本篇通过实例来讲解各种覆盖率的测试用例该如何设计。
xxpcb
2024/02/01
4020
嵌入式基础知识-逻辑覆盖测试用例设计
自动化测试之-测试用例设计方法总结
黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景图法等。
顾翔
2019/12/12
3.1K0
自动化测试之-测试用例设计方法总结
图解-白盒测试之逻辑覆盖
白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
wangmcn
2022/07/26
8120
图解-白盒测试之逻辑覆盖
软考高级:白盒测试用例(语句覆盖、判断覆盖、条件组合覆盖、条件判定组合覆盖)概念和例题
白盒测试是一种软件测试方法,它检查程序内部的逻辑结构。在白盒测试中,测试用例是基于程序的内部代码和逻辑来设计的。下面是几种常见的白盒测试用例设计方法的概念解释以及它们对应的Java代码示例。
明明如月学长
2024/05/24
6860
技术分享 | 白盒测试方法论
白盒测试又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法。盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构,对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
霍格沃兹测试开发
2022/03/22
4670
测试技术|白盒测试以及代码覆盖率实践
白盒测试也称逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件程序验证,属于基于代码的测试技术。与之相对应的黑盒测试是从用户角度对软件进行测试。
互联网金融打杂
2022/08/01
1.8K0
测试技术|白盒测试以及代码覆盖率实践
软件测试基础知识 – 说一说黑盒与白盒的测试方法[通俗易懂]
分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net
全栈程序员站长
2022/09/05
1.1K0
浅谈黑盒测试和白盒测试
  从图中可以直接看出来,黑盒测试就当整个程序是个黑盒子,我们看不到它里面做了些什么事情,只能通过输入输出看是否能得到我们所需的来测试。而白盒测试可以当盒子是透明的,里面的一切我们都看的清楚,从而我们可以通过去测内部结构来测试。
lyb-geek
2018/07/26
3.5K0
浅谈黑盒测试和白盒测试
软件测试用例编写
测试用例是测试工作的指导,是软件测试必须遵守的准则。测试用例的内容是一系列情景和步骤的描述,并对每个步骤中必须列出输入的数据,预计输出结果。将这一过程整理成测试文档,称为测试用例。
用户9184480
2024/12/19
1850
白盒测试 | 用例设计方法之条件组合覆盖
条件组合覆盖:列出所有判定条件中可能的取值组合,使得每个判定条件结果的所有可能组合至少出现一次
王大力测试进阶之路
2022/03/14
2.2K0
白盒测试 | 用例设计方法之条件组合覆盖
黑盒测试和白盒测试的区别
1.        软件测试方法:白盒测试、黑盒测试、灰盒测试、静态测试、动态测试
庞小明
2018/10/11
9.4K1
软件测试技术之: 白盒测试和黑盒测试[通俗易懂]
一般地,我们将软件测试活动分为以下几类:黑盒测试、白盒测试、静态测试、动态测试、手动测试、自动测试等等。
全栈程序员站长
2022/10/02
6.3K0
软件测试技术之: 白盒测试和黑盒测试[通俗易懂]
白盒测试技术_静态白盒测试
它是度量测试完整性的一个工具,通常可以分为逻辑覆盖和功能覆盖。覆盖率 =(被执行到的项数/总项数)* 100%
全栈程序员站长
2022/09/27
1.4K0
白盒测试技术_静态白盒测试
从软件测试看芯片验证-白盒测试
白盒测试是关注测试用例覆盖程序逻辑(源代码)的程度。最终的白盒测试是执行程序中的每个路径。但对于大多数的程序(例如带有循环的程序),完全意义上的全路径覆盖是不现实的。
AsicWonder
2023/09/01
2880
从软件测试看芯片验证-白盒测试
软件工程黑盒白盒测试
等价类划分法是把程序的 输入域 划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
wsuo
2021/01/14
1.4K0
软件工程黑盒白盒测试
推荐阅读
相关推荐
白盒测试:如何进行代码级别的测试?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验