区块链的共识机制之工作量证明机制
2018-03-30 16:33
330 查看
详情参见个人博客:http://brainware360.cn/%E5%8C%BA%E5%9D%97%E9%93%BE%E7%9A%84%E5%85%B1%E8%AF%86%E6%9C%BA%E5%88%B6%E4%B9%8B%E5%B7%A5%E4%BD%9C%E9%87%8F%E8%AF%81%E6%98%8E%E6%9C%BA%E5%88%B6.html
区块链是比特币的底层技术,而比特币本质上是一种数字货币,它和其它运行于互联网的货币形式不同之处在于,其他货币都存在一个中心化的银行等机构为货币的支付效力作保证,而比特币则没有这样一个机构,比特币网络中的每个节点都是平等的,而这又如何确保网络中的每一笔交易是可信的呢?例如,张三支付给李四1个比特币,如何确保张三钱包里确实少了1个比特币,而不会仅仅给了李四一个复制品?
比特币作为一种货币形式已经稳定运行了9年,解决上述问题的一个核心机制就是区块链的共识机制,其实现形式是一种被称为工作量证明POW的算法。
比特币网络中的每一笔交易都会向全网进行广播,网络中的其他节点将会对此进行验证和记录,验证主要是检索整个账本看这笔交易的支付方是否有足够的比特币用于支付。为鼓励其他节点进行记录,获得记账权的节点将会获得交易费和系统的奖励(初始50个比特币,每四年减半),各个节点争夺记账权的过程也被称为挖矿。“矿工”节点将会收集固定时间内的所有交易并试图创建新区块,任何试图添加新区块的节点必须提供相应“证明”。为了生成“证明”,“矿工”节点需要通过多轮哈希函数来消化这些交易信息,哈希函数是一种计算过程,它能够输入任意长度的数据块,并生成一条固定长度且无特定含义的,由字母以及数字组成的字符串——即哈希值。为了使这一过程更为困难,区块链中还要求所产生的哈希值以一定数量的零作为开头,零的个数取决于网络的难度值,系统会根据网络的实际算力自动调节这个难度值(需根据最近2016个块的耗费时间来调整难度值),从而确保每十分钟产生一个新区快。其中的难点在于,对于给定的交易信息数据快,其哈希值无法提前预知,只能通过计算出结果进行比对得出,通过在数据块中加入一个随机数,通过大量的反复计算,得出想对应的哈希值结果。当某个“矿工”节点得出一个合理的哈希值,说明该节点确实经过了大量的尝试计算。当一个有效区块被创造出来后,“矿工”节点将会向全网进行广播,其他矿工将核对确认这些账目,交易达到6个确认以上就成功记录在案了。别的“矿工”虽没算出来,但他们很容易验证广播来的账本是否正确。有一个形象的例子:假如你拥有一把需要钥匙才能关上的锁,同时还拥有大量可供使用的钥匙,但不知道哪一把能够与该锁相匹配,则必须一一尝试。当最终找到正确的钥匙时,其他任何人检查这种匹配的正确性就容易多了。
每一个被加进链的区块都会包含上一个区块的哈希值,任何试图篡改区块的节点需要同时改变该区块之后的所有区块,而每一个有效区块都需要进行上述配对运算,需要消耗大量的时间,在你篡改的同时,新的区块又在不断产生,篡改成本将会变得不可接受,从而保证了区块链中数据的可靠性和唯一性。
我的BTC地址:1K8ni4mnQn7VjFZKjHJHLPWZ55owG9J1jd
区块链是比特币的底层技术,而比特币本质上是一种数字货币,它和其它运行于互联网的货币形式不同之处在于,其他货币都存在一个中心化的银行等机构为货币的支付效力作保证,而比特币则没有这样一个机构,比特币网络中的每个节点都是平等的,而这又如何确保网络中的每一笔交易是可信的呢?例如,张三支付给李四1个比特币,如何确保张三钱包里确实少了1个比特币,而不会仅仅给了李四一个复制品?
比特币作为一种货币形式已经稳定运行了9年,解决上述问题的一个核心机制就是区块链的共识机制,其实现形式是一种被称为工作量证明POW的算法。
比特币网络中的每一笔交易都会向全网进行广播,网络中的其他节点将会对此进行验证和记录,验证主要是检索整个账本看这笔交易的支付方是否有足够的比特币用于支付。为鼓励其他节点进行记录,获得记账权的节点将会获得交易费和系统的奖励(初始50个比特币,每四年减半),各个节点争夺记账权的过程也被称为挖矿。“矿工”节点将会收集固定时间内的所有交易并试图创建新区块,任何试图添加新区块的节点必须提供相应“证明”。为了生成“证明”,“矿工”节点需要通过多轮哈希函数来消化这些交易信息,哈希函数是一种计算过程,它能够输入任意长度的数据块,并生成一条固定长度且无特定含义的,由字母以及数字组成的字符串——即哈希值。为了使这一过程更为困难,区块链中还要求所产生的哈希值以一定数量的零作为开头,零的个数取决于网络的难度值,系统会根据网络的实际算力自动调节这个难度值(需根据最近2016个块的耗费时间来调整难度值),从而确保每十分钟产生一个新区快。其中的难点在于,对于给定的交易信息数据快,其哈希值无法提前预知,只能通过计算出结果进行比对得出,通过在数据块中加入一个随机数,通过大量的反复计算,得出想对应的哈希值结果。当某个“矿工”节点得出一个合理的哈希值,说明该节点确实经过了大量的尝试计算。当一个有效区块被创造出来后,“矿工”节点将会向全网进行广播,其他矿工将核对确认这些账目,交易达到6个确认以上就成功记录在案了。别的“矿工”虽没算出来,但他们很容易验证广播来的账本是否正确。有一个形象的例子:假如你拥有一把需要钥匙才能关上的锁,同时还拥有大量可供使用的钥匙,但不知道哪一把能够与该锁相匹配,则必须一一尝试。当最终找到正确的钥匙时,其他任何人检查这种匹配的正确性就容易多了。
每一个被加进链的区块都会包含上一个区块的哈希值,任何试图篡改区块的节点需要同时改变该区块之后的所有区块,而每一个有效区块都需要进行上述配对运算,需要消耗大量的时间,在你篡改的同时,新的区块又在不断产生,篡改成本将会变得不可接受,从而保证了区块链中数据的可靠性和唯一性。
我的BTC地址:1K8ni4mnQn7VjFZKjHJHLPWZ55owG9J1jd
相关文章推荐
- 区块链共识机制:权益证明POS和委托权益证明DPOS
- 区块链共识算法:实用拜占庭容错机制PBFT
- 区块链共识机制
- 区块链简史(二):一篇文章看懂比特币工作量证明和矿工存在意义
- 区块链在中国(4):比特币的工作量证明
- 区块链共识机制的演进
- 区块链共识机制概要扫描
- 揭秘比特币和区块链(二):什么是工作量证明?
- 以太坊代码分析3---区块链共识机制
- 掰一掰区块链共识机制与分布式一致性算法
- 区块链应用中如何让数字货币开发共识机制
- 区块链平台哪个好?区块链目前用到哪些共识机制以及各自的优缺点和适用范围是什么?
- 什么是比特币挖矿和区块链共识机制?
- 划时代的技术:区块链共识机制优缺点对比
- 区块链共识机制及其迭代
- 基于Java语言构建区块链(二)—— 工作量证明
- Ouroboros:一个可证明安全的PoS区块链协议 (共识介绍)
- 给自己的区块链添加POW-工作量证明
- 浅谈区块链共识机制与分布式一致性算法
- 区块链的共识机制(序)