LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 链动精灵丨比特币的区块机制

链动精灵丨比特币的区块机制

2021-01-12 链动精灵科技 来源:区块链网络

比特币系统的运转是通过共识机制来维持其稳定的,中本聪设计比特币时,采用POW机制,矿工通过算力公平竞争,来争取比特币网络的记账权。

POW的作用?

PoW(Proof-of-Work),俗称工作量证明机制。简单的说,就是一份用确认工作量的证明。工作量证明机制,就是用工作量结果来证明贡献大小,再根据贡献大小确定记账权和奖励。

这个证明的过程是依赖计算机就行数学运算的,类似做试卷解答,谁先交试卷,谁就负责记账,并得到相应报酬,这个报酬就是网络里产生的数字货币。Pow的优点是完全去中心化,公平公正,不需要中心化的管理,用户(节点)之间实现了公平竞争。用自己的速度和知识获得相应报酬。

为什么选择PoW?

有奖励才有动力,但奖励分配公平才能让动力持之以恒。

比特币的pow机制,证明工作量的是-算力。每一道题,靠矿机计算,谁算的快谁就越有可能获得奖励。(付出越多回报越大,即确定性),相当于算得快、多不代表算得准,因此付出算力的矿工都会有机会获得奖励。

总的说,付出就有收获,付出越大收获越大。比特币系统不仅pow机制分配奖励均衡,也公平合理的分配系统的记账权,将记账权给认真工作的矿工。这是整个比特币网络过去十年里平稳运行的保障。

输入和输出

一个交易在系统里表示为“输入”和“输出”。

“输入”是指这笔交易所要进行转移的币来自之前的哪些输出。

“输出”是指这些币将会被发送给哪些地址。在区块链上记账,不是现实账号上的余额,而是会表示账号当前得到了哪些输出。比如一个地址相关记录里面,有A、B、C三个输出的目标地址是它,那么它实际上的余额就是这三个输出的金额的总和。

如果这个地址的用户要转账,那么转账的过程不是直接从总和数字中取出一部分进行转移,而是分别从A、B、C三个输出中取出部分或全部,总和为想要转移的币,进行转移,而这个“取出”的过程,A、B、C就变成了输入,转账目标记录才是这次交易的输出。

这样的过程保证了区块链中的money的出入、清晰的来路。像账本一样,每一笔钱的去处、由来、整个资金链都是可追溯的、即保障了交易的不可伪造,也不会无中生有。

Hash(哈希值)

要网络交易加入到区块里面需要涉及三个Hash,一个是交易本身的Hash,另一个是当前这个区块所有交易的merkle hash root(也称为Merkle树的根哈希值),还有一个是区块hash。

大家都知道,一个交易可能包含多个输入输出,通过将这些输入输出信息进行排列并进行hash运算,就得到一个交易的唯一hash值。

一个区块里包含了多个交易,包括挖矿奖励交易,这些交易都被通过一个merkle运算得到一个hash root所包含。区块的hash运算里,merkle hash root作为一个参数,因此,所有交易信息都体现在一个区块的hash里面。

挖矿

挖矿的过程就是上诉区块hash的过程,几乎所有的机器都可以挖矿,关键在谁先挖到矿,因为当一台机器挖矿成功就需要向网络广播,其他挖矿在对这个hash进行校验后就停止自己的挖矿,开始基于这个区块挖新的区域。每一个被挖到的区块中记录的第一笔交易是给挖到这个区块的矿工的奖励金,所以第一个挖矿成功的名额对于矿工来说至关重要。

上诉所说的计算区块hash过程里面,会以区块包含的交易的merkle hash root作为计算的一个参数,因此,挖矿时矿工会事先从自己本地的交易信息里面提炼出merkle hash root。相当于在挖矿前,新区块会包含哪些交易已经是确定好了的。

确认

“确认”这个概念也要解释一下,一个区块产生之后,它不是立即可信的,网络上的节点总是相信最长的区块链,当一条交易记录被打包进一个区块之后,就有了一个确认,而这个区块所在的链后面被再加入一个区块,就是第二个确认,如此下去,一个交易有了6个确认,我们就认为这个交易已经确定了,会被永远记录在区块链中。为什么是6个确认呢?因为每一个确认就是一个挖矿过程,都需要提供非常严格的计算,因此,这6个区块被同一个矿工创建的可能性微乎其微(可以说是不可能),因此矿工伪造交易也基本不可能。

由于比特币的区块平均产生时间是10分钟,所以一个交易要1小时左右才能保证成功(最快),不过也不是所有的系统都这样认为,有些网站在接受比特币支付时,认为4个确认就可以给客户发货了。如果不幸这个交易在创建的时候,没有被打包进最近的那个区块,那就要延迟10分钟,如此下去,如果后面过了好几个区块,交易都没有被打包进区块链,那就前功尽弃了。

广播交易

比特币系统中只留给了这种优先级高的交易50k的存储空间,即使你没有给交易费,也可能在24小时内被打包进区块。不过概率较低,有些交易可能永远都进不了区块,因为矿工是从自己都内存中获取自己暂存的交易信息,一旦这些内存被释放,那么这些交易信息就会被清空。为了解决这个问题,比特币钱包需要不断对自己发起的交易进行检查,如果发现没有被打包进最新的区块,就要对网络广播,这样,这个交易就会在网络里不断被提起,矿工又可以把这笔交易写进自己的内存里暂时放着,等到下次打包区块时,选择是否把它打包进去。

更多区块链知识请关注微信公众号:链动精灵科技

抖音号:链动精灵

—-

编译者/作者:链动精灵科技

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...