Pow挖矿流程

POW即工作量的证明,主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。
Pow挖矿即不断接入新的Block延续Block Chain的过程。
  • 当某个节点提供出一个合理的Block Hash值,验证方能简单证明该节点确实经过了大量的尝试计算。一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。Block Hash值的计算是使用“blockchain”,在字符串后面加上nonce的整数值串。nonce是随机数,不停地更换尝试,才能计算得到N个0开头的hash值。在“blockchain”+nonce进行SHA256哈希运算,如果得到哈希结果(以十六进制表示)是以若干个0开头,则验证通过。0 的个数越多,计算难度越大,比如要寻找4个前导0的哈希值,预期就要大概进行2^16尝试。

  • 任何一个节点的POW 证明通过,生成一个新的区块并写入区块链,都必须解出比特币网络的PoW的题目。解出比特比网络PoW题目关键3个要素是:工作证明函数、区块和难度值。工作证明函数、区块和难度值。
    • 工作量证明函数是计算方法。在比特币系统使用SHA256作为工作量证明函数。
    • 难度值决定大约需要经过多少次哈希运算产生一个合法区块。在全网算力不断变化,需要维持平均10分钟出一个区块,难度值必须根据全网算力的变化进行调整。难度调整是每个完整节点中独立自动发生。每2016个区块,所有节点都会按统一公式自动调整难度,调整公式:新难度值=旧难度值*(过去2016个区块花费时长/20160分钟)
  • POW 证明通过产生Block Chain首先将数个字段包含nonce随机数和时间戳每秒变化一次合并成一块数据,然后对这块数据进行双SHA256运算。
  • Block Chain是节点计算符合要求的前N个零的hash结果,Block的Nonce 是不停是尝试计算,找到合理的hash,才能打包Block,装入block meta信息,然后产生交易数据,对外广播新的block,其他节点验证通过,链接至Block Chain,主链高度加一,然后切换至新block后面挖矿。由于hashPrevBlock字段的存在,使得大家总是在最新的block后面开挖,

  • 从block hash算法推断合理的block并不是唯一的,同一高度存在多个block的可能性。那么,当同一个高度出现多个时,主链即出现分叉(Fork)。遇到分叉时,网络会根据下列原则选举出Best Chain:
    • 不同高度的分支,总是接受最高(即最长)的那条分支
    • 相同高度的,接受难度最大的
    • 高度相同且难度一致的,接受时间最早的
    • 若所有均相同,则按照从网络接受的顺序
    • 等待Block Chain高度增一,则重新选择Best Chain
  • 分支博弈
    • 挖矿也会为了不惜任何手段获取利益
    • 如果所有节点均独自挖矿不理会其他节点,并将所得收益放入自己口袋,就会出现一个节点挖一个分支的结果。由于机器的配置总是有差别的,那么算力最强的节点挖得的分支必然是最长的,如果一个节点的分支不是最长的,意味其收益存在不被认可的风险(即零收益)。为了降低、逃避此风险,一些节点肯定会联合起来一起挖某个分支,试图成为最长的分支或保持最长分支优势。
    • 一旦出现有少量的节点联合,那么其他节点必然会效仿,否则他们收益为零的风险会更大。于是,分支迅速合并汇集,所有节点都会选择算力更强的分支,只有这样才能保持收益风险最小。最终,只会存在一个这样的分支,就是主干分支(Best/Main Chain)。
    • 对于不诚实节点来说,结局是无奈的:能且只能加入主干挖矿。不加入即意味被抛弃,零收益;加入就是老实干活,按占比分成。

Pow挖矿流程的更多相关文章

  1. Filecoin: 挖矿流程扫盲

    前言 IPFS以及FileCoin的白皮书知识量比较大,需要花费一些时间成本来学习. 下面先针对挖矿相关的知识进行研究,总结一下Filecoin中挖矿的流程以及相关概念. What is Fileco ...

  2. 以太坊挖矿源码:ethash算法

    本文具体分析以太坊的共识算法之一:实现了POW的以太坊共识引擎ethash. 关键字:ethash,共识算法,pow,Dagger Hashimoto,ASIC,struct{},nonce,FNV ...

  3. 比特币pow算法介绍

    Proof Of Work 工作量证明 借鉴了 哈希现金(Hashcash)-1997年 英国密码学专家亚当.贝克(Adam Back) 用工作量证明系统解决了互联网垃圾邮件问题,它要求计算机在获得发 ...

  4. 区块链共识机制(POW、POS、DPOS等)的优缺点

    一.POW:工作量证明机制 基本原理: 第一代共识机制,比特币的基础.理解起来,很简单,就是“按劳取酬”,你付出多少工作量,就会获得多少报酬(比特币等加密货币).在网络世界里,这里的劳动就是你为网络提 ...

  5. 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  6. POS时机未到,POW强攻是实现全球货币的正确道路

    POS时机未到,POW强攻是实现全球货币的正确道路 取代现今的货币体系的正确进攻方式是POW强攻,现在的货币是由力量背书的,以后的货币也是由力量背书的,只有因造币耗费的力量超过了所有其它力量的时候才能 ...

  7. [转帖]POW , POS 与 DPOS 一切都为了共识

    POW , POS 与 DPOS 一切都为了共识 https://www.jianshu.com/p/f99e8fe57c9a   共识机制的背景 加密货币都是去中心化的,去中心化的基础就是P2P节点 ...

  8. [转帖]Proof Of Work 工作量证明

    Proof Of Work 工作量证明 https://www.cnblogs.com/zhang-qc/p/10451817.html 借鉴了 哈希现金(Hashcash)-1997年 英国密码学专 ...

  9. IMCASH:2019年区块链不会风平浪静,至少还有10件事值得期待

    当我们在说2019年是值得期待的一年时,我们还是得做到有根有据.那么,2019年在区块链行业都会发生哪些引导行业风向.影响整个行业的事件呢? 今天,白话区块链带着大家顺着时间线梳理一下. 01 第一季 ...

随机推荐

  1. python读取一个英文文件,并记录每个单词出现的次数,降序输出

    对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序排列: sorted(dict.items(),key=lambda k:k[1],reverse=Tru ...

  2. hdu2552

    点击打开链接 思路: 1.tan(a+b) = ( tan(a) + tan(b) ) / (1 – tan(a) * tan(b) ) 2.tan( atan(x) ) = x arctan(1/s ...

  3. [Java] 读取文件

    1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如 ...

  4. [SoapUI] Reference parameter 引用变量

    Reference parameter in WADL : Endpoint : ${#Project#DomainServer} Resource : {AdvisorID} Reference p ...

  5. HBase之七:事务和并发控制机制原理

    作为一款优秀的非内存数据库,HBase和传统数据库一样提供了事务的概念,只是HBase的事务是行级事务,可以保证行级数据的原子性.一致性.隔离性以及持久性,即通常所说的ACID特性.为了实现事务特性, ...

  6. WebService安全解决方案—简单握手协议

    具体方案如下图: 2.解决方案分析 A.SiteA每次向SiteB发送的请求参数都不一样,造成伪造者难以模仿和推敲里面的算法过程. B.伪造者获得了SayHelloRequest的数据,它向SiteB ...

  7. pl/sql 远程连接oracl服务器方法

    在Oracle/network/admin中的tnsnames.ora中添加对应的如下代码: LISTENER_ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = ...

  8. Spring之配置文件加载方式

    spring在org.springframework.core.io包中提供了多种配置文件加载方式.无论是XML.URL还是文件,都有很好的支持.比如基于URL的UrlResource.基于输入流的I ...

  9. POJ1236【图的前连通(缩点)】

    题意: 1.初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件. 2.至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件. ...

  10. MySQL的分支

    1.MariaDB MariaDB数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MyS ...