关于POW机制及POW难度调节机制
工作量证明,英文为proof of work,通过或与计算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其他节点验证后一起存储。简单理解就是一份证明,用来确认你做过一定量的工作。就像,本科毕业证用来向企业单位证明你具有怎样的学识,交警通过驾驶证来检验驾车的人是否会开车。
比特币的工作量证明,就是我们俗称的“挖矿”所做的主要工作。比特币白皮书在工作 量证明中解释了工作量证明(POW)的方式:
我们在区块中补增一个随机数,这个随机数要使得该给定区块的随机散列值出现了所需的那么多个0。我们通过反复尝试来找到这个随机数,知道找到为止,这样我们就构建了一个工作量证明机制。只要该CPU耗费的工作量能够满足工作量证明机制,那么除非重新完成相当的工作量,该区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
工作量证明系统可以看作是两个步骤,一个是工作,另一个是对工作的证明。这分别对应两个主体,一个是工作者,一个是验证者。系统约定好工作内容,验证者给出工作量,工作者完成工作量,验证者检验工作量是否达标。工作量证明系统设计的需要是达到:工作者需要一定时间才能完成工作,验证者可以瞬间完成检验。
矿工挖矿必须进行“工作量证明”的过程,该过程的计算内容包括三个要素:工作量证明函数,前一个区块及难度系数。工作量证明函数给出了计算方法,前一个区块是这个函数的参数,难度值决定了这个函数的解题需要的工作量。
##工作量证明函数
工作量证明函数焦作SHA256,中文名叫安全散列算法,具体是什么公式,作为前端人士,暂且不去进行代码层级的深入研究。
##前一个区块
每一个区块都是一个特定的数据结构,可以分为两个部分:一个是区块头,二是该区块包含的交易。矿工要计算的工作量就是计算上一个区块的这个区块头部信息的SHA256值。
##工作量证明机制中的难度系数
比特币系统是采用哈希碰撞产生区块的,哈希值的计算结果是一个随机数,没有人能直接控制计算的结果。打一个比方,重复N次掷骰子,每掷一次就可以得出一个6(包含6)以下的数字,但是如果想掷出3以下的数字,取得每个结果时平均都要掷2次才行,也就是说掷出“3以下(含3)”比掷出“6以下(含6)”要难一倍,需要多做一倍的工作量。如果定义“6以下(含6)”这个规则的难度系数是1,那么“3以下(含3)”这个规则的难度系数则为2。在比特币协议中,规定一个256位的整数0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF为难度“1” ,在当时全网算力下大概需要10分钟左右的哈希计算工作量才可以满足小于等于这一规则。
工作量证明POW的优点:
完全去中心化,节点自由进出。
工作量证明POW的缺点:
依赖计算机通过数学运算获取记账权,造成了电力和计算机硬件资源消耗巨大,共识达成的周期较长,不适合商用。
关于POW机制及POW难度调节机制的更多相关文章
- 区块链共识机制:POW、POS、DPOS、PBFT、POOL
共识机制作为区块链的关键技术之一,在业务吞吐量.交易速度.不可篡改性.准入门槛等等方面发挥重要的作用. 区块链是去中心化的,没有中心记账节点,所以需要全网对账本达成共识.目前有POW.POS.DPOS ...
- Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL
Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL http://www.ibm.com/developerworks/c ...
- [转]Linux 线程实现机制分析 Linux 线程实现机制分析 Linux 线程模型的比较:LinuxThreads 和 NPTL
转载地址:https://www.cnblogs.com/MYSQLZOUQI/p/4233630.html 自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱 ...
- cocos2d-x 源代码分析 : EventDispatcher、EventListener、Event 源代码分析 (新触摸机制,新的NotificationCenter机制)
源代码版本号来自3.x,转载请注明 cocos2d-x 源代码分析总文件夹 http://blog.csdn.net/u011225840/article/details/31743129 1.继承结 ...
- C#中的WinForm的消息机制简述,及消息机制下Invoke,和BeginInvoke的使用和区别
在Invoke或者BeginInvoke的使用中无一例外地使用了委托Delegate,至于委托的本质请参考我的另一随笔:对.net事件的看法. 一.为什么Control类提供了Invoke和Begin ...
- python的代码块缓存机制,小数据池机制。
同一代码块的缓存机制 在python中一个模块,一个函数,一个类,一个文件等都是一个代码块. 机制内容:Python在执行同一个代码块的初始化对象的命令时,会检查是否其值是否已经存在,如果存在,会将其 ...
- PHP的垃圾回收机制(开启垃圾回收机制后的优缺点是什么)
PHP的垃圾回收机制(开启垃圾回收机制后的优缺点是什么) 一.总结 一句话总结: 拿时间换空间:针对内存泄露的情况,可以节省大量的内存空间,但是由于垃圾回收算法运行耗费时间,开启垃圾回收算法会增加脚本 ...
- 基于SLF4J的MDC机制和Dubbo的Filter机制,实现分布式系统的日志全链路追踪
原文链接:基于SLF4J的MDC机制和Dubbo的Filter机制,实现分布式系统的日志全链路追踪 一.日志系统 1.日志框架 在每个系统应用中,我们都会使用日志系统,主要是为了记录必要的信息和方便排 ...
- 区块链共识机制(POW、POS、DPOS等)的优缺点
一.POW:工作量证明机制 基本原理: 第一代共识机制,比特币的基础.理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币).在网络世界里,这里的劳动就是你为网络提 ...
随机推荐
- iis深入学习资源
iis站点:https://www.iis.net/overview/reliability/richdiagnostictools 感兴趣可以深入学习下iis
- Octave基本语法
基本运算 octave:3> 5+6 ans = 11 octave:4> 3-2 ans = 1 octave:5> 8*9 ans = 72 octave:6> 8/4 a ...
- tp5 左连接
db('detainform')->alias('d')->join("information i",'i.z_id=d.z_id','LEFT')->where ...
- unity 拿到管线权限的解决方案
自己建个cmd 传给postprocess layer camera event可以加在这个cmd上控制位置 base pass post process ui都共享这段cmd 在一开始记下back ...
- BZOJ 3884——欧拉降幂和广义欧拉降幂
理论部分 欧拉定理:若 $a,n$ 为正整数,且 $a,n$ 互质,则 $a^{\varphi (n)} \equiv 1(mod \ n)$. 降幂公式: $$a^b=\begin{cases}a^ ...
- Vue引入非npm的js库
Vue引入非npm的js库 Vue项目有时候需要一些没有export的js库,不能通过import引入,那么使用方法如下 1.可以在index.html页面使用script标签引入,当然也可以使用cd ...
- animation-timing-function
animation-timing-function 语法: animation-timing-function:<single-animation-timing-function>[,&l ...
- sql 存储过程例子和学习demo
-------------------------------------------------------------------------- ------------------------- ...
- Shell基本语法知识
Shell 就是一个命令解释器,他的作用就是解释执行用户输入的命令及程序等,用户每输入一条命令,Shell 就解释一条.这种从键盘一输入命令,就可以立即得到回应的对话方式,就称为交互的方式. 当命令或 ...
- 错误/异常:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/beans_common.xml]...的解决方法
1.第一个这种类型的异常 1.1.异常信息:org.springframework.beans.factory.BeanCreationException: Error creating bean w ...