• 【区块链实战】区块链新发明:工作量证明,PoW共识算法


    目录

    一、简介

    二、知识点

    工作量证明(POW)

    随机值做作用

    挖矿矿工

    区块交易手续费

    三、工作量证明 PoW 与 区块链的关系

    1、为何要引入 PoW

    2、如何确认工作难度

    3、挖矿机制与矿工

    4、区块手续费


    一、简介

    区块链技术中,无论是 P2P网络,还是 hash 函数 以及 密码学的数字签名,这些都不是新技术。如果说比特币发明了什么技术,那么Proof of Work  工作量证明 就是一个, 简称 PoW共识。

    工作量证明(POW)从字面意思就知道,就是证明一个人干了这份活,得到大家认可之后,产生一个新区块,然后给干这份工作的人一定的比特币作为报酬。

    二、知识点

    • 工作量证明(POW)

    • 随机值做作用

    • 挖矿矿工

    • 区块交易手续费

    三、工作量证明 PoW 与 区块链的关系

    1、为何要引入 PoW

    中本聪设计了全球多节点共同维护的分布式账本来保证账本的安全性,但是这些节点为什么要加入网络并帮助维护账本呢。

    某个用户 A 拥有比特币, A 也不一定会加入整个网络成为一个节点去维护整个网络的比特币账本。

    为了解决这个问题就需要引入激励机制。中本聪通过控制发行总量,把比特币做成类似黄金白银的硬通货,然后就给维护账本的人进行奖励,从而激励一群人去做类似的事情,这些让将交易打包并产生新的区块就可以获得系统的比特币奖励。

    2、如何确认工作难度

    在 hash 函数 Y = H(X) 中,如果要 Y 符合某些条件,比如小于某个值的时候就有些难度了,要找到符合这样条件的 hash 值并不容易。由于区块号,前块 hash 值,要打包的交易信息是不变的,所以就必须引入一个变化因子随机数了。

    对于工作节点 N ,为了得到满足条件的 hash 值 Y,它只能不停的尝试不同的 Nonce 随机数 计算生成 hash 值,并判断是否符合前面的条件,如果满足则形成一个新的区块 B。 

    其它节点对区块 B 进行验证,验证通过则证明该节点是通过了多次的计算才得到的结果,也就是付出了大量的工作,这个过程就是工作量证明。

    3、挖矿机制与矿工

    为了获得比特币网络奖励,就诞生了一种矿工职业。矿工在网络节点中不停的计算 hash 值,计算成功后立刻全网广播,如果得到确认则获得系统的比特币奖励。

    比特币网络目前平均 10 分钟出一个区块,可见矿工确实是付出了工作的。新区块的产生保持都基本这个速率,难度值必须根据全网算力的变化进行调整。

    简单地说,难度值被设定在无论挖矿能力如何,新区块产生速率都保持在10分钟一个。

    挖矿机制解决了节点参与维护账本的问题,也解决了比特币发行的问题。一开始整个网络一个比特币也没有,随着区块的产生,比特币就被发行出来。

    中本聪同时设计了通缩机制,最开始一个区块奖励 50 个比特币,每 4 年减半,最终总量为 2100 万个。

    4、区块手续费

    矿工在打包交易的同时会收取该比交易的手续费,所以矿工始终是有动力去挖矿的。

    因此,挖矿的本质就是找到一个使最新区块头部信息的 SHA256 值满足难度目标值条件的 nonce 值。就目前来说,每成功挖到一次区块,一个矿工就需要尝试几十亿次的 nonce 值。

    比特币的工作量证明机制明确通过数学的方式给出了 工作内容、工作量以及评价方式, 把 付出劳动 即获得 所有权,通过数学的方式模拟了出来,这是最公平的一种所有权分发机制,这也是为什么我们说比特币是最公平的货币发行机制。

  • 相关阅读:
    【数据结构】模拟实现栈和队列
    二叉树 | 递归遍历 | leecode刷题笔记
    gensim库中word2vec的使用方式
    Linux内核 -- ARM指定CPU运行逻辑之smp_call_function_single函数
    【Java】基础练习 --- Stream练习
    JdbcTemplate环境准备_java培训
    深度学习基础之《TensorFlow框架(4)—Operation》
    别再说你不知道分布式事务了
    问:为什么硬件测试如此重要
    Java中 数组的定义与使用
  • 原文地址:https://blog.csdn.net/qq_39816613/article/details/125486140