了解比特币的都知道挖矿非常耗电,这是由于比特币用到了工作量证明.

工作量证明是指系统为达到某目标而设置的工作度量方法.一開始是用在网络攻防上,大大提高攻击者的计算量,攻击成本也就上去了.
工作量证明须要由工作者和验证者双方共同完毕.它有两层含义.

  • 1.工作者须要完毕的工作必须有一定的量,这个量由验证者给出.
  • 2.验证者能够迅速的检验工作量是否达标,注意这里的检验完毕过程必须简单.

举几个样例

  • A跟B说,你给我还原这个魔方,B还原魔方须要非常多时间,而A验证却非常快,仅仅须要看一眼即可了.
  • A跟B说,你给我解这个10次方程,过程非常麻烦,可是结果easy验证.
  • A跟B说,你给我把这个游戏玩通关,B须要一定时间,而A验证却非常快.
  • RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分easy,可是想要对其乘积进行因式分解却极其困难.
  • ...

在计算机系统中,能够这样设计:
验证者给定一个随机字符串s,工作者必须找出一个数n,使得随机字符串拼上这个数n后的md5结果前面几位都是0.
即md5(s+n)的结果符合验证者的要求.工作者仅仅能不停的穷举,找出这样一个数n.

以下上python代码.

工作方:

#coding=utf-8
from itertools import count
from hashlib import md5
msg = 'randomstring'
for i in count():hashid = md5(msg+str(i)).hexdigest()if hashid.startswith('0000'):print i,hashidbreak

输出39496 00001c48020e444f58a297a0785df5cf,即工作方须要md5()39496次.

而验证方仅仅须要拿工作方给过来的n,进行一次md5就可以验证.
即if md5(msg+str(n)).hexdigest()[:4] == '0000'.

由于md5用十六进制表示,每一位出现的概率是16.所以工作者要找到前面4位都是0平均须要16*16*16*16=65536次.
验证者能够依据自身须要来规定前面0的个数来控制工作者的工作量.想要对方耗多点电,那就多加几个0吧.

转载于:https://www.cnblogs.com/jhcelue/p/6915624.html

用python阐释工作量证明(proof of work)相关推荐

  1. 区块链技术——工作量证明

    什么是工作量证明 Proof Of Work,简称POW,即对工作量的证明. 为什么要做工作量证明 **挖矿(计算or工作)**的结果会作为数据加入区块链成为一个区块,完成这个**工作**的人也会获得 ...

  2. 区块链的工作量证明(Proof of Work)初步解释

    Proof Of Work,顾名思义,直译过来就是工作的证明,也就是证明你,某人做了一定量工作.这就是这种机制的命名来源.如果希望证明某人做了什么工作的话,那显然,最有力的就是目睹,观测他整个工作的过 ...

  3. python比特币挖矿_比特币如何挖矿(挖矿原理)-工作量证明

    想知道更多区块链技术,请搜索[链客区块链技术问答社区] 链客,有问必答!! 我们知道了信息计算Hash打包的过程:交易记录.时间.账本序号.上一个Hash值.也知道所有的计算和存贮是需要消耗计算机资源 ...

  4. 用 Go 构建一个区块链 -- Part 2: 工作量证明

    翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了.如果想直接运行代码,也可以 clone GitHub ...

  5. 【BlockChain】go实现区块链2:工作量证明

    [BlockChain]go实现区块链2:工作量证明 引言 上一篇中,我们构造了一个非常简单的数据结构 – 区块,它也是整个区块链数据库的核心.目前所完成的区块链原型,已经可以通过链式关系把区块相互关 ...

  6. [区块链研究实验室]区块链之工作量证明(POW)

    比特币网络是公开的,因此共识协议的稳定性和防攻击性十分关键. 比特币区块链采用了 Proof of Work(PoW)的机制来实现共识,该机制于 1998 年在 B-money 设计中提出. 目前,P ...

  7. 链接哈希是什么_熊猫人行情:什么是工作量证明机制(POW)

    熊猫人行情:什么是工作量证明机制(POW)(视频链接) 知乎视频​ ​大家好!这里是熊猫人~ 上班打卡下班打卡,想必大家都并不陌生 总有各种方式证明你确确实实是工作过 (加油,打工人!) 区块链中也有 ...

  8. 多币种钱包开发:什么是工作量证明(POW)?

    2019独角兽企业重金招聘Python工程师标准>>> 任何区块链网络中最重要的组成部分之一是它用于就其分类账的状态达成共识的机制.这些机制被称为一致性算法,今天的加密数字资产使用的 ...

  9. 8.3 有效工作量证明

    在第5章,我们讨论了比特币挖矿的能量消耗(有些人会说是浪费)是个潜在问题,经济学家称之为负外部性.我们估 计比特币挖矿要消耗几十万千瓦的电能.所以一个明显的问题是,这些用来解谜运算的工作量是否对社会有 ...

最新文章

  1. 简单粗暴理解与实现机器学习之逻辑回归:逻辑回归介绍、应用场景、原理、损失以及优化...
  2. MATLAB符号计算
  3. 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
  4. 学容器必须懂 bridge 网络 - 每天5分钟玩转 Docker 容器技术(32)
  5. gel和react哪个厉害_gel、react、boost三种材料的跑鞋,哪个更强?
  6. Hybris DDIC type and its counterpart model class
  7. 计算机英语短文互译,中英文互译的英语短文
  8. 飞鸽传书已经写了5年,还是老样子。
  9. PyQt5笔记(07) -- 变换控件颜色
  10. OGRE粒子系统简介
  11. 关于Scala和面向对象的函数式编程
  12. NVIDIA Riva中文手册 (五) —— Riva TTS语音合成API的使用
  13. 优动漫PAINT下载的素材找不到怎么办?
  14. 《论语》全译——子路篇第十三
  15. “盲人”马云:骑着盲虎贩卖梦想
  16. ClickHouse技术分享第二弹(英文讲义)
  17. 统计学第十二周,第十三周
  18. [译] 揭开 ARIA 的神秘面纱
  19. 主设备号与次设备号代码分析---MAJOR、MINOR
  20. 北大计算机考研辅导班,北京大学计算机考研辅导班:历年数据透析考研难度

热门文章

  1. k8s提交镜像到harbor仓库
  2. 关于 richedit 控件
  3. 非常值得一看—九种滤波算法C语言实现
  4. C代码反汇编后的堆栈寄存器EBP和ESP
  5. CF-241 E.Flights(差分约束)
  6. HDU 2050 折线分割平面
  7. c++ 中的 cin.get()函数
  8. MySQL子查询操作实例详解
  9. AbstractListView源码分析8
  10. 如何计算给定一个unigram语言模型_n-gram语言模型原理到实践