我们通过区块链网络进行简单交易的例子来了解区块链:
如果James转正发5BTC给他的朋友Kevin。现在该交易以数字信息的形式广播。
数字信息具有独特的签名,类似于就像您的签名提供文档拥有权,数字签名证明了交易是真实的。现在这个生成的交易广播到P2P网络中。
P2P网络传播交易
假设网络中的节点A第一个接收交易。
2.1 独立验证交易
节点A在向其邻居发送交易之前,该节点将先验证每个比特币交易。
系统只保证有效交易在网络中传播,而无效交易在收到他们的第一个节点处被过滤处理。每个节点根据标准的长度来确认每笔交易。
2.2汇总已验证交易
通过矿工挖矿产生新的区块,并将这些交易保存到区块中,通过工作量(POW)验证算法显示最后计算结果。
自动确认每个接收的交易,在传播交易之前,每个节点都会制作一个有效(但未确认)的交易池,称为交易池、内存池或mempool。
交易被挖掘节点收集,验证,然后像其他节点一样中继新交易
与其他节点不同,矿工节点将这些事务收集到候选块中
下面的例子将更好的理解交易过程
假设Andy是矿工。 (矿业节点维护区块链的本地副本,这些副本是自2009年比特币系统开始以来创建的所有区块列表)
现在,收到到所有交易到区块块中后,Andy需要构建块头。 现在这一步对了解区块链是如何工作很重要。
构建区块头部结构
构建区块头部,矿工节点需要填写以下六个字段
一旦Andy的节点将所有字段填充到块头中,Andy就开始挖掘该块。
2.3 挖掘区块(挖矿)
当块头以及所有其他字段填写完成之后,开始挖掘区块
其目标是为nonce找到一个值,使区块头HASH小于难度目标
矿工节点需要在十亿或数万亿个随机数值找到满足要求的随机数
现在Andy的节点已经构建了一个候选块,现在是Andy的矿机“挖掘”该块的时候了,以找到一个POW算法的解决方案,使该区块有效的。
POW工作证明是一个很难产生的昂贵、耗时的数据,但其他人满足某些需求时很容易验证。
寻找谜题 - 为什么很难?
SHA-256是一种单向函数,暴力(破解)是获得特定输出值的唯一方式
一般情况下,需要很多随机猜谜才能找到解决方案
平均需要10分钟左右才能找到最终的解决方案
为了维持可预测分配币,当参与猜谜的人越多时,猜谜难度越来越大,难题将越来越难以解决。
现在,使用工作证明POW算法验证区块,Andy的挖矿节点必须达到难度目标。
让我们看看难度是如何体现的。
难度描述
该区块包含一个难度目标,称为“难度 bits”或仅“bits”
假设区块以0x1903a30c作为难度bits。 该表示法将通过系数/指数格式表示难度目标,前两个十六进制数字(19)作为指数和后六个十六进制数字(03a30c)作为系数
根据上述表示法,计算难度目标的公式为:
所以,Andy的挖矿节点难以实现的难度系数很难达到难度目标。 让我们看看接下来会发生什么。
成功挖到区块
Andy有多台硬件采矿设备,每个都以很快的速度并行运行SHA256算法
Andy图形桌面版的挖矿节点将区块头传输到他的采矿硬件,该采矿硬件每秒万亿计的生成随机数
大概挖11分钟区块的时候,其中一台硬件矿机发现一个解决方案并将其发送回挖矿节点
紧接着Andy的采矿节点将区块发送给所有的同伴
同伴接收后验证并传播新块。
现在Andy挖到的区块在网络中传播,每个完整节点将独立验证该区块
每个区块的独立确认
在比特币的共识机制中,每个新块都由网络上的每个节点独立验证
这样确保只有有效的块在网络上传播
节点根据一系列必须全部满足的标准进行检查验证该块
组装和选择区块链
一旦有节点验证了新块,它就会尝试通过将区块连接到现有区块链来组装新的区块链
在上图所示的网络中,一旦节点(橙色)验证了该块,它就通过将该区块连接到现有区块链来组装形成新的区块链。
一旦该区块被网络验证,它就成为区块链的一部分并且成功地解决块区块组装,挖到该区块的矿工将获得奖励。
矿工奖励
由于矿工们使用他们宝贵的资源来验证这个区块,所以他们会获得金钱奖励
以比特币为例,他们获得一些新创建的比特币作为奖励
问题出现了,在多个区块被验证有效的情况下会发生什么?
是的,这确实是可能的! 在这种情况下,存在多个分支。
2.4 多个分支处理
尽管问题很严峻,但有可能同时存在多个区块
区块链中的几个分支在这种情况下是可能的存在的
每个人都应该在他们收到的第一个块的顶部构后简单地构建区块
其他节点可能以不同的顺序接收了这些区块
他们将第一次收到进行构建区块
当有人解决下一个区块时,领队的将会被破坏,但是这种情况很少多次连续发生
在这种情况下,区块链将迅速稳定下来
一般规则是各个节点切换到可用的最长链
区块链迅速稳定下来。 每个节点都与总账的当前状态一致。
至此,所以共识规则将模糊的情况进行处理,最终保存在区块链网络中
现在又出现了另一个问题,如果有人试图改变系统中的任何交易或记录会怎么样?
3 如果有黑客试图破解系统会怎么样?
一旦区块被破解,加密HASH输出成为该块的标识符。
由于区块链记录的是后向链接分布式数据库。 当一个块形成时,密码HASH输出将成为该块的标识符,该区块与下一个区块相关联,从而创建区块链。
因此区块链是由强大的加密算法保护,无法更改任何记录。
如果有人试图改变任何块中的任何交易,那么区块的HASH会发生变化,而且它之前的区块的HASH也将会改变。这一套连锁操作,导致节点不能达成共识,所以就可以很容易地检测到欺诈行为。