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. 【Maven】pom.xml(1)

    在pom.xml加入: <build> <finalName>oauth2</finalName> <resources> <resource&g ...

  2. 深入理解dispatch_sync

    关于GCD的基础知识,之前写过一篇博客,详见GCD基础知识.虽然之前已经梳理过了,但对很多知识点的理解仍然不够透彻…写这篇博客的原因是在阅读AFNetworking代码时遇到一些奇怪的代码. 如下: ...

  3. BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP

    BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP Description 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏. 初始时,一个有N(5 ...

  4. 【USACO 2857】 Steady Cow Assignment

    [题目链接] 点击打开链接 [算法] 二分答案,check的时候跑最大流,即可 [代码] #include<bits/stdc++.h> using namespace std; #def ...

  5. 状态保存机制之ViewState概述及应用

    状态保存机制之ViewState概述及应用 作者: 字体:[增加 减小] 类型:转载   无状态的根本原因是:浏览器和服务器使用Socket通信,服务器将请求结果返回给浏览器后,会关闭当前Socket ...

  6. bzoj3379

    区间dp 好神 看上去没有思路,因为觉得完成没有顺序,没有明显的转移顺序,转移的时候没办法记录之前已经完成哪些,那么转移就不能保证任务全部完成.但是我们发现其实没完成的任务一定是一段连续的区间,那么我 ...

  7. [转]C# Socket编程笔记

    本文转自:http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html 原文如下: 看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现 ...

  8. 878. Nth Magical Number

    A positive integer is magical if it is divisible by either A or B. Return the N-th magical number.  ...

  9. UIScrollView控件实现图片轮播

    http://www.cnblogs.com/dyf520/p/3805297.html 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 ...

  10. Jenkins自动化部署——持续交付

    感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多的实践, ...