(二)比特币工作原理和区块链工作流程

比特币价值

为什么有人愿意部署矿机来挖矿, 挖矿的奖励真的有价值么?首先比特币是稀缺的,如果比特币可以无限的产生那就无价了。比特币总量是 2100 万个,从 2009 年开始,每次产生一个区块的奖励是50个,每 4 年奖励减一半。按照比特币大约每十分钟产生一个区块的速度计算,大约到 2134 年比特币全部发完。另外比特币不受一个中央控制,当大多数人都相信它具有代币价值、大多数人都愿意在上面交易的时候它就有价值了,比如纸币,它就是一张纸,当大多数人都相信并认可它的价值并能流通,它就不再是一张纸那么简单了。

挖矿

发生交易时,全网节点能监听到,通过验证的记录或放入节点内存中,然后所有的矿机都在开始“算题”,拼算力的时候来了,这批交易记录会被分配一个随机数, 每个节点都在“努力”地找这个随机数,谁先找到,谁就得到了这批交易的记账权,然后就开始验证,验证之后打包成一个数据块,就是我们说的区块了(终于提到区块这个概念了,先别着急,后面再慢慢展开。),然后开始全网广播,把这个区块副本广播出去,告诉其他节点不要努力了,我已经找到了,挖到矿了,大家看看是不是“真的”,然后其他节点停止挖矿,逐一验证,51% 以上的节点都验证通过之后就把这个区块加到当前区块链上的末端,交易完成。

核心概念

现在我们对以上内容进行一个总结了。比特币是一个完全分布式系统,系统由许多节点组成。每个节点都有记账能力。

每一个记录都需要公证,全网节点共识,共识方式就是以上说的“挖矿”,又叫做工作量共识方式( 共识的方式除了“挖矿”,还有很多种,后面再介绍。)随着交易不断进行,区块不断生产,每个节点上的区块按时间顺序串在一起就形成了区块链条。系统涉及几个核心概念,节点、链、区块、记录,关系如下:

到这里,我们对比特币系统雏形有一个大致了解,下面我们就对这个系统中的核心概念分别展开介绍。

记录

在比特币中成为一个用户很简单,获取一个钱包地址就行了,获取地址:

https://blockchain.info/wallet/#/signup。拥有了一个钱包地址之后就可以向全世界任何一个钱包发送比特币了,前提你拥有了比特币。交易记录是加密的、匿名的,每个用户拥有唯一的私钥,交易时候使用私钥生成数字签名,用户之间交易就产生了记录。一条记录是整个区块链中的最小单位,一次操作就会生成一条记录。

区块

一个区块由区块头和区块体组成。

区块头

版本号(version):版本号

哈希值(Hash):当前区块hash值

前驱区块哈希值(Previous Block):前驱区块hash值

后续区块哈希值(Next Block(s)):后续区块hash值

交易总数(Number Of Transactions):交易数量

时间戳(Timestamp):时间戳

随机数(Nonce):随机数,在比特币系统中,“挖矿”就是找这个随机数。

默克尔树根哈希值(Merkle Root):交易记录的默克尔根区块体装的是记录列表。

Merkle Root 怎么来的?

先说说 Merkle Root 的作用, 交易记录发生任何变化, 这个值都会变,也就是这个值是以交易记录为变量生成的。

生成原理,如下图:

这是一棵二叉树,叫做默克尔树(也叫hash树), 把所有记录各自hash值作为叶子节点,

两个叶子节点hash值合起来又进行一次hash计算,生成父节点;直到最终的树根。树根hash值就是Merkle Root。

所有区块通过 Previous Block 或 Next Block 顺序一个链条。区块链系统,例如比特币的区块链系统中每个节点都维护着一条这样的链条,区块链的主要概念就是这么来的。

区块链工作流程

以上我们大致了解了交易记录、区块、链等概念,现在我们把这些概念串起来,看看区块链的工作流程。

发生交易记录时发送节点全网广播记录。

节点监听到新的交易记录。

节点对交易记录进行验证并放入节点缓存区。

节点开始"算题",争取到记账权,打包记录生成区块,并向全网广播进行共识。

经过共识的区块被追加到区块链的尾部。

上文提到的"全网广播",实际上不需要让全网所有节点都收到,只要大部分节点就行了。对于那些没有收到的,丢失的区块,区块链系统是具有容错能力的,如果某个节点么有收到特定区块,这个节点将会发现自己缺失的区块,可以提出自己下载区块的请求。

区块链的分类与应用领域有哪些?区块链共识机制包含哪些内容,请看下篇内容。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180624G0MTHB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券