当前位置:首页 » 比特币问答 » 比特币挖矿工作量证明

比特币挖矿工作量证明

发布时间: 2023-04-27 03:04:59

『壹』 挖矿到底在计算什么

比特币挖矿到底在计算什么?如何看待比特币挖矿,比特币的挖矿对于不同的矿工而言是一种竞争记账权的合作记账行为,在合作的大框架下有序地竞争。也就是利用电脑硬件计算出比特币的位置并获取的过程称之为挖矿。挖矿既能生产比特币,又能保障交易信息,下面来具体解释挖矿。

比特币在2017年底暴涨至将近20万人民币一枚,不仅火了数字货币行业,更是火爆了区块链行业,正因为如此,很多人想方设法去挖矿,获取比特币来实现自己的财富自己,首先,”比特币“挖矿是怎挖的,比特币是一中虚拟货币,基于区块链技术。如果我们简单地把区块链的区块比作一个个的账本,那么”挖矿“就是“打包”过去十分钟整个区块链网络的交易,把这些交易写入新的区块,那么就“打包”完成,那就是完成了“挖矿”旅搭誉。完成了挖矿之后就获得了系统分发给你的比特币。这就是比特币“挖矿”比较简化的说法,当中的原理和运行还是相当复杂的。

如何分配“打包权”

比特币的价格超过2w元一个,每一次获得“打包权”,完成工作就会获得12.5个比特币(会随时间递减),获利可谓相当丰厚。

天下熙熙皆为利来天下攘攘皆为利往,只要有利润的地方就有人。网络上矿工众多,那么如何确定应该分配给哪个矿工去做这事呢?

比特币的创始人中本聪采用这种方法:采用一种叫“工作证明(Proof Of Work,简称POW)机制,即工作量的证明。

这种方法通常来说只能从结果证明,因为监测工作过程通常是繁琐与低效的。这是用来确认你做过一定量的工作,但是监测工作的整个过程极为低效,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。

我们可以比喻成,要证明您会开车技术好,企业不可能给您几天时间,跟着您在市区上走。但是,你可以提供驾驶证和之前在公交车公司当公交车司机的工作证明, 来说明您得能力。你要获得这个能力需要付出大量的时间和精力,但是企业验证却非常简单。

比特币这种加密系统所使用工作量证明机制的证明是哈希现金,需要算出对应的哈希函数。哈希现金是一种工作量证明机制,它是亚当·贝克在1997年发明的,主要用于抵抗邮件的拒绝服务攻击及垃圾邮件网关滥用。在比特币之前,哈希现金被用于垃圾邮件的过滤,也被微软用于hotmail等产品中。

对于比特币这种加密系统所使用的哈希函数,它需要具备以下的性质:

1. 免碰撞,即不会出现输入x≠y,但是H(x)=H(y)

2. 隐匿性,也就是说,对于一个给定的输出结果H(x),想要逆推出输入x,在计算上是不可能的。

3. 不存在比穷举更好的方法,可以使哈希结果H(x)落在特定的范围。

比特币在区块链的生枝锋成过程中使用了POW机制,一个符合要求的区块哈希函数由N个前导零构成,零的个数取决于网络的拆段难度值。

要得到合理的区块哈希码需要经过大量尝试计算。当某个节点提供出一个合理的区块哈希值,那就是说明该节点确实经过了大量的尝试计算,那么系统就把”打包权“分配给该节点(矿工)

当然这不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件,所以当节点(矿工)拥有占全网n%的算力时,该节点基本上就是有n/100的概率找到区块哈希。那就是意思上说比拼算力。

当能不能记住前面几个0,然后可以使用呢?不能的,因为难度值不一样, 0的数量就不一样。而且要证明的数是一个哈希码,而且需要验证的工作量证明非常庞大,基本上无法造假。只存在一个方法:穷举!

那么意味着,你不仅要算出你的哈希值,还需要对比对不对,如果不对的话继续算。

所以需要大量的显卡进行大量的并行运算,获取哈希值。让我们来看看,矿场是一个怎么样的存在:

这些矿场都是用很贵的显卡来算,他们的算里是人工的N倍。如果单靠人力,算十年都没有它们工作一小时的工作量大。

比特币和传统货币不同,美元和英镑这种法币由央行和金融机构管理,进行转账交易时这些机构也同时参与,而比特币只在分布式账本中进行交易,每一项交易就储存在比特币的全球网络节点中,不可复制,不可篡改。所以每个储存数据的节点都会有相应的奖励,目前已经开采的节点有1700万个,比特币总量只有2100万个,意味着还有400万个比特币待开采。

『贰』 FileCoin: 有用的工作量证明

有用的工作量证明(Proof of Useful Work)是由著名的去中心化存储项目 FileCoin 在它的白皮书里提出来的一个概念。工作量证明,Proof of Work,POW 是实现区块链的一个重要共识方式,FileCoin 要实现一个基于区块链的存储平台。所以它也要做共识,它选择的就是工作量证明共识。

首先我们来解释一下常规的工作量证明。它是区块链实现共识的一种方式。是比特币采用的方式,所以,工作量证明就是俗称的“挖矿”。比特币做为一个去中心化的点对点交易系统,要在不同的节点上维护一个共同的完全相同的帐本,来记录所有的交易,而且确保交易不会重复,不会一笔钱多花,就需要一个维护这个账本一致性的规则。大家一起遵守这个规则,就是共识。区块链常用的方法是,把这个账本分成很多页,每个页就是一个区块。每个区块由一个节点来记账,然后分发给其他节点复制,这样所有节点上的账本都是一样的。但是每个区块都由哪个节点来记录,就需要一个大家都能遵守的规则。比特币采用的方法,是让所有的节点做一道简单的数学题,题目很简单,但是计算量很大,一般要10分钟左右才能做出答案来。得到答案虽然很费时间,但是验证答案是否正确很容易。然后所有的节点同时做题,第一个做出来的节点,就得到下一个区块的记账权。因为每个区块都只有唯一一个最早做出题的节点,所以,每个区块的记账权是唯一的,而且也是很容易被其他节点验证的。节点一旦验证到其他节点得到了区块记账权,就必须复制区块,加到本地区块链中,同时开始下一个区块记账权的竞争。通过这种方式,比特币就能确保所有节点的区块链是一致的。

节点通过大量计算竞争区块记账权的的过程,就是工作量证明。所以,工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这个概念由 Cynthia Dwork 和 Moni Naor 1993 年在学术论文中首次提出。而工作量证明(POW)这个名词,则是在 1999 年 Markus Jakobsson 和 Ari Juels 的文章中才被真正提出。

实现区块链共识的方式还有很多,如POS,DPOS,POA,PBFT等等,但是工作量证明是唯一被时间验证过(11年)的在公链上运行的区块链共识机制。

工作量证明存在一个什么样的问题呢?还是用比特币为例。比特币节点为了获取出块权做得那个数学题,叫哈希运算。计算量非常大,每一台参与比特币挖矿的矿机都要时刻进行这个计算,耗费大量的电力。这个计算不像其他的如大数据处理的计算,可以产生一些价值,它的唯一目的,就是竞争出一个节点,成为下一区块的出块者。目前比特币每年消耗电量约25.5亿瓦,这相当于全球电量的0.5%,是爱尔兰一年的耗电量。反对POW的人纷纷指责挖矿将电力资源浪费在虚无缥缈的数字货币上,还称之为自由主义的“泔水”。

但是,认为POW是浪费的电的人不知道,正是能源和算力打造了比特币安全不可攻破的体系。

一张100元的现金不只是你我认为他值100,而是整个社会群体都认为他值100,价值就是来自于共识。比特币是社区行为,来自不同国家的人聚集到社区,用互联网来建立秩序,它的意义也是来自于群体共识,只要大家都相信比特币有价值,只共识存在,那么他就有价值,和法币一模一样。所以产生价值认同并不一定需要国家来驱动,比特币改革了一种传递信任的载体和媒介,千百年来,人类社会通过多少流血战争建立的政权和共识,现在兵不血刃,只是耗费些电力就实现,岂不是更先进。

总结而言,要想设计一个去中心化而且安全的数字货币,能源和算力是必要的代价。工作量证明是以去中心化形式构建安全产权认证系统的唯一方案。所以认为POW是浪费的电的人不知道,正是能源和算力打造了比特币安全不可攻破的体系。现在比特币全网算力已经达到一个非常恐怖的地步,任何人想要发动51%算力攻击已经是不可能的事情了,POW算法使比特币系统牢不可破。

为缔造价值而产生的消耗不叫浪费。

但是,如此多的算力,是否可以用来创造更多的价值呢?用 FileCoin 的话说,工作量证明,还有没有其他用途呢?

FileCoin 是分布式存储行业的明星项目。他的开发团队 Protocol Lab 就是开发 IPFS 协议的团队,以至于很多人都分不清FileCoin 和 IPFS 的区别。可以说是2017年 FileCoin 的1CO,把这个行业推向巅峰,也引出了一系列的同类型项目。本文无意于赞誉或者贬低这个项目,只想结合自己从事这个行业的经验,表达一些自己的观点,尽量做到客观公正。希望对从事这个行业的人有一些启发。

FileCoin 在白皮书中提出要实现一个有用的工作量证明,实际上就是认可了,要打造一个安全不可攻破的区块链,就必须消耗工作量。但是,他们不希望为这个工作量做出的计算完全被浪费,所以想把这个工作量利用起来。所以,他们想到的方法是,在工作量证明里加入存储空间的使用率。这样,所有的节点为了形成共识,就必须提供存储空间来存文件。这个存储空间就可以存用户数据,就是有用的。

那我们来看一下FileCoin是怎样实现这种有用的工作量证明共识的。

Filecoin采用的共识机制并不是简单的工作量证明,而是一种叫做预期共识(Expected Consensus,简称 EC)的机制。和其他主流共识机制目标一样,让矿工争夺某一个高度唯一的出块权而获得奖励。这个获得出块权的矿工叫做 Leader。在每一轮的出块争夺中,为了保证账本的可靠性,都有一个唯一的 leader 来进行记账。

也就是说,共识的核心就是选择谁来当 Leader。选 Leader 的方式一般有两种,交互式或者非交互式。交互式是要矿工之间互相投票的。比如 PBFT 就是交互式的,几个参与选举的人通过互发信息,得到多数票( 超过 2/3 )的人就是 Leader。预期共识采用了非交互式的方式来选举 Leader。参与的各方根本不给彼此发消息,而是每个节点各自独立私下进行运算。最后某个节点说,我赢得了选举,然后提供一个证明,其他人可以很容易就验证,他确实赢得了选举。这个验证方法就是零知识证明。

预期共识机制会为区块链网络预设一个出块的期望值。比如每1个纪元(epoch)生成1个区块(block),但也有一个纪元可能出现空块或多个区块的情况。所以在 Filecoin 中,每个高度不是一个区块,而是一个区块集,叫做 TipSet,这个 TipSet 中可能包含了多个区块。所以实际上 Filecoin 是 TipSet 链。预期共识无法保证每一轮只选举出一个 Leader,所以会出现一轮中有多个 Leader 的可能,这样链式结构就变成了DAG的网状结构。所以 FileCoin 还会对 block 赋权重,实现有效收敛。

FileCoin 采用的 EC 共识有一个好处。对于传统的 POS 共识机制来说,有一个重大问题就是无法控制分叉。也就是说,由于挖矿成本低,参与者可以同时挖多个链获取利益。而预期共识对这一点做了设计,那就是通过权重和抵押机制来促使矿工选择一条最好的链,对同时挖多个链的矿工进行惩罚,这样可以非常快速地促进收敛。这说明 POW 和 POS 共同使用会是一种好的方式。

每一个矿工获得出块的可能与其当前有效存储量占全网总存储量正相关。这种期望共识机制其实是更像是 POS 权益证明,只是它将POS里边的权益(Staking)换成了有效存储占比。但是矿工的有效存储从何而来呢?是通过存储用户数据得来。如何证明矿工存储了用户的数据,FileCoin 创造出一个新的证明机制叫 POST 时空复制证明。这个 POST 就是 FileCoin 的工作量了。把耗电的算力换成存储有用数据的存储空间,无意义的军备竞争变成了存储服务市场竞争。这确实是 FileCoin 的进步之处。只不过,为了成功的出块,矿工通过预期共识被选为出块节点后,必须在一个块的时间里(现在是45秒)做个 POST 证明,成功提交,才能出块。否则就失去机会。所以,为了确保矿工能在指定时间内出块,最终官方还是决定要使用 GPU。虽然这 GPU 不是像工作量证明那样一直不停的工作,但是在整个实现共识的过程中还是出现了跟有用的工作量证明思想相违背的耗能计算。

还有,谈到预期共识的时候,我们说到每一个纪元出块都不是一个块,而是一组块,那么纪元这个概念就很重要了。怎么控制纪元呢?每个矿工在参与选举前,需要先生成一个 Ticket,这个 Ticket 实际上是一个随机数,他需要走一个 VDF 和 VRF 的流程,这个 VDF 全称 Verifiable Delay Function,可验证的延时函数。他的计算流程是串行的,需要花费一定的时间,并且这个时间无法通过多核并行的方式进行缩减。这保证了每个矿工产生 Ticket 时必须要消耗的时间,没有人可以通过优化硬件的方式来获得加速。听上去这函数很完美,可是,这个 VDF 根本还不存在!现在 FileCoin 测试网直接使用了一个等待函数 sleep,这是 UDF,Unverifiable Delay Function。现在最接近的 VDF 解决方案,也是需要消耗大量计算资源的。说白了,还是要耗电,还是不环保。

所以,有用的工作量证明,依然只是一个美好的愿望,理想很丰满,但现实很骨感。被誉为下一个比特币的 FIL,还要继续为实现这个颠覆性的共识而努力。

总结一下FileCoin存储矿工获取激励的流程:用户存储数据,支付FIL费用 -> 矿工存储数据 -> 生成复制证明 -> 完成时空证明 -> 经过EC共识,选出出块Leader -> 获取打包权 -> 矿工获取FIL奖励

在这个流程图上,可以看到,矿工可以在两个地方获取奖励。一个是存储用户文件的时候可以得到用户的FIL奖励。一个是在获取区块打包权后获得FIL。而得到区块打包权的一个前提就是存有足够多的用户数据。所以,在存储需求不够大的情况下,矿工会从用户那里收取很低廉的费用。在用户不够的情况下,甚至会倒贴钱自己付FIL存数据,只为能够存足够多的数据,在 EC 共识中被选成 Leader 得到打包奖励。这样产生的效果是,FileCoin 对用户非常友好,存储费用非常低。所以,一定会吸引很多的应用来这个平台上做开发。但是缺点也很明显,如果存储量不够大,矿工根本没法跟其他人争夺出块权,所以得不到奖励。最后整个平台会朝着大矿工,大矿池的方向发展,这跟 FileCoin 想把所有闲散服务器利用起来实现分布式存储的初衷是违背的。或者说,一定要等到这个行业具有一定规模,技术更成熟,才有小矿机挖矿的机会。

我们先来简单的讲一讲中心化存储和去中心化存储各自的利弊。中心化存储设备统一管理,可靠性好,性能高,去中心化存储数据天然分散,易于流通,容灾性好,但是可靠性低。从经济角度来说,中心化存储是重资产投入,成本高。去中心化存储通过区块链激励层,用户自行加入,轻资产,可降低存储总成本。未来应用数据的存储和处理还会是以中心化存储为主,而去中心化存储因为是分布式网络,主要可用于热门数据流量分发。同时,因为没有中心化所有权,可以成为去中心化应用的首选。

市场上有一种说法是,去中心化网络适合冷数据的备份,其实这并不是去中心化存储的优点,实在是因为把热数据放到去中心化网络上太不可靠,处理性能也跟不上。所以,如果去中心化存储能实现一定的规模效应,大大降低存储成本,把冷数据备份当作核心业务,并把目标定位在今天因为成本太高没被企业存储的冷数据,会是一个很好的发展方向。

如此说来,从技术上讲,去中心化存储并不一定比中心化存储有优势。如果能推行一种新的模式,把去中心化的经济激励和中心化的存储合在一起,就能吸收两者的长处。真正实现有用的工作量。FileCoin 未来可能促成的大矿场模式的数据中心,可能更有市场。

在11年后的今天,比特币并没有实现它成为一个点对点的电子支付货币的初衷,但阻止不了人类前赴后继的去买它,拥有它。同样,我相信 FileCoin 已经得到足够大的社群,矿工和开发者的支持,即使在可预见的未来,它不会促成分布式存储应用的全面落地(也许这从来不是 FileCoin 的目标),但我还是相信会有很多人会因为它的共识去购买它,持有它。上升到哲学层面,人类在为真理买单。

那么在实际生活中,何为有用,或者说,我们到底是在用存储做共识还是用共识做存储?FileCoin 是前者。FileCoin 想要基于存储工作量实现的去中心化的共识,理论上是完美的,追求完美,人类是要付出代价的。这也是为什么在这个项目上我们等待了这么长的时间。但是一旦实现,它可能会为人类带来巨大价值,对市场带来无穷大的号召力。

只不过去中心化不是万物的灵药。中心化的一个最大优势是它的效率非常高。像dPOS或者联盟链这样的弱中心化共识兼顾两者优势,能更快速的把应用推向市场,提前启动分布式存储行业,推进分布式存储应用落地。所以,我们既追求用存储做共识,也追求用共识做存储,根据实际需求来做出我们的选择。在这个过程中,相信区块链也会进一步发展,逐步优化,变得越来越有用。

『叁』 比特币中怎么证明是自己挖矿成功,而不是其他人呢

我们知道了信息计算Hash打包的过程:交易记录、时间、账本序号、上一个Hash值。也知道所有的计算和存贮是需要消耗计算机资源。在中本聪的设计里,完成记账可以获得系统给与比特币奖励,这个过程也就是比特币发行过程,因此把记账成为挖矿。
记账工作
因为记账是有奖励,每次记账都可以为自己增加一定个数的比特币,因此大家争相记账,当然能也就引发了问题:出现记账不一致的是后,系统引入工作量证明来解决这个问题,规则如下:
1.在一段时间内,只有一个人能记账成功。
2.通过解决密码学难题竞争获得唯一记账权
3.其他节点复制记账结果
不过在进行工作量证明之前,记账节点会做进行如下准备工作:
1.收集广播中还没有被记录账本的原始交易信息
2.检查每个交易信息中付款地址有没有足够的余额
3.验证交易是否有正确的签名
4.把验证通过的交易信息进行打包记录
5.添加一个奖励交易:给自己的地址增加12.5比特币
如果争夺记账权成功的话,就可以得到12.5比特币的奖励。
工作量证明
每次记账的时候会把上一个块的Hash值和当前的账页信息一起作为原始信息进行Hash。为了确保10分钟前后只有一个人可以记账,就只有提高记账的难度,用Hash的结果必须以若干个0开头。为了满足条件,进行Hash是引入一个随机数变量。
用伪代码表示一下:
1.Hash(上一个Hash值,交易记录集) = 456635BCD
2.Hash(上一个Hash值,交易记录集,随机数) = 0000aFD635BCD
改变Hash的原始信息的一部分,Hash值也会不断变化,因此在运行Hash的时候,不断改变随机数的值,总可以找到一个随机数使得Hash的结果以若干个0开头,率先找到随机数的节点从此获得记账的唯一记账权。
验证
在节点成功找到Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播后会对其进行验证。如果验证通过,表明已经有节点成功解密,就不会在竞争当前区块,而是选择接受区块,记录到自己的账本中,进行下一轮竞争猜谜。网络中只有最快解密的区块才会添加到账本中,其他的节点进行复制,确保整个账本的唯一性。
如果节点有作弊行为,会导致网络的节点验证不通过,直接放弃其打包的区块,也无法记录到总账本中,那么作弊节点的消耗成本就白费了。因此矿工自觉的遵守比特币系统的共识协议,也确保整个系统的安全。
这个问题就好像你去工地搬砖,搬完一天砖,包工头问你你怎么证明自己一天在工地搬砖呢?

『肆』 比特币挖矿机原理介绍 几个方面来讲解

1、最初的时候,用CPU就可以挖到比特币,中本聪就是用他的电脑CPU挖出了世界上第一个创世区块。然而,CPU挖矿的时代早已过去,现在的比特币挖矿是ASIC挖矿和大规模集群挖矿的时代。

2、挖矿速度,专业的说法叫算力,就是计算机每秒产生哈希碰撞的能力。也就是说,我们手里的矿机每秒能做的哈希碰撞次数,就是算力。

3、比特币在宏观上的原理,就如同黄金一样。黄金在地球上的总量是一定的,而且比较稀少,可以作为一般等价物来使用,在纸币大面积发行之前,一直作为货币的形式来使用。比特币也是一个道理,之所以比特币可以用来作为货币的形式来进行买卖,也是因为其总量是一定的,而且挖矿需要花费很大的成本,主要表现就是电力上的消耗。

4、工作量证明,简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。

5、比特币的背后是一个公共账本,这个账本每十分钟需要重新记录一遍,而成功记账者会获得一定数量比特币的奖励。在比特币诞生之初,这个奖励是50个比特币,这一数字大约每4年减半。

『伍』 比特币的工作量证明要怎么理解

客户端不需要知道真正的随机数,客户端(也是系统)其实就是要“随机数”所求的哈希值小于某个值。
如:041665464(随机数)的SHA256的值是:(16进制)0FFFFFFFFFF...(假如)
它不符合小于00FFFFFFFF的规定,所以不是区块。
041665465(随机数)的SHA256的值是:(16进制)000FFFFFFFF...(假如)
它符合小于00FFFFFFFF的规定,所以它是区块。

实际上找小于一个哈希值的随机数很难的,这正是工作量证明的原理。
要小于的这个值(00FFFF...)是可变的(难度),这个随时间和计算力的大小而变化。

『陆』 工作量证明机制(pow)是什么

工作证明(Proof Of Work,简称POW),顾名思义,即工作量的证明。通常来说只能从结果证明,因为监测工作过程通常是繁琐与低效的。
比特币在Block的生成过程中使用了POW机制,一个符合要求的Block Hash由N个前导零构成,零的个数取决于网络的难度值。要得到合理的Block Hash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的Block Hash值,说明该节点确实经过了大量的尝试计算,当然,并不能得出计算次数的绝对值,因为寻找合理hash是一个概率事件。当节点拥有占全网n%的算力时,该节点即有n/100的概率找到Block
Hash。
工作证明机制看似很神秘,其实在社会中的应用非常广泛。例如,毕业证、学位证等证书,就是工作证明,拥有证书即表明你在过去投入了学习与工作。生活大部分事情都是通过结果来判断的。

『柒』 比特币的挖矿到底挖的是什么

比特币最吸引人的是挖矿。为什么采矿如此迷人?因为挖矿可以得到比特币。在写这篇文章的时候,比特币的价格是3900美元。如果能挖到一个区块,可以获得48750美元的开采收入和大约6000美元的交易费收入。这难道不令人着迷吗?

那么到底什么是采矿呢?矿工如何通过挖矿获得比特币?这需要从比特币区块链系统采用的PoW(工作量证明)共识机制说起。

有一个村子,很多事情需要一起决定。比如有一天村长需要所有村民一起决定今天中午在村食堂包饺子还是卷面条。通常我们能想到的方式是投票——每个村民一票,少数服从多数。但是有些村民不愿意在食堂吃饭,可能会把自己的票让给别人,可能会导致不公平。大竖悔毕部分在食堂吃饭的人,可能都实现不了自己的愿望。

于是村长换了一种方式。10点50分,他用喊话器向全体村民广播:“中午我们在食堂选做饺子还是面条。想去食堂吃饭的,就推食堂门口的巨石。11点整,石头会推到大门东边,他们中午吃饺子;推余芹到大门西边,中午吃面。”

于是想在食堂吃饭的人跑去推石头。贡献多的人最后实现了愿望,贡献少的人心甘情愿,因为村里一直就是这样的规矩。

这个故事讲述了一种在民众中达成共识的方式,我们可以称之为“工作量证明机制”。用努力的多少来证明自己的选择意愿。

在本系列的第一篇文章中,我们讨论了可以保持每个人的账簿一致的区块链系统。这种保持所有节点数据一致的机制称为共识机制。不同的共识算法可以达到不同性能的共识效果,最终目的是保持数据一致。

注意第一个,在任何块中,第一个都没有转出地址,也就是所谓的CoinBase (mining transaction)。没有人付给矿工这些钱,但是矿工只是写着他们得到了12.5个比特币。所有节点都同意矿工这样写,所以矿工获得采矿收入。

不同矿工填块的时候,数据肯定是不一样的,因为每个矿工的第一条规则肯定是不一样的,矿工只会把开采所得转到自己的地址。所以矿工迈克尔的CoinBase是“迈克尔获得了12.5个比特币”,矿工南希的CoinBase是“南希获得了12.5个比特币”。

每个矿工都填好了自己收集的交易和应该得到的收入。那么,谁的记录会得到大家的认可呢?比特币使用工作量证明机制,让矿工相互竞争来解决一个数学问题。谁先解决,谁就得到大家的认可。就像开篇故事中讲述的那个村庄一样,每个矿工都在用力推着巨石。一旦石头压住了他的账户页面,他喊道:“我的工作量证明是成功的。快来看!”所有的矿工都来了,抄下那一页账目,贴在账本后面,然后开始新的记账流程。周而复始,生生不息,账本一页页的增加,账本越来越厚。

当中本聪决定采用工作量认证机制时,出发点是为了避免系统受到攻击。“中本聪”认为,如果攻击者想通过搞乱账本来攻击,他需要足够的计算能力。换句话说,他比大多数推石头的人都厉害。这样他要付出巨大的成本,但回报不足以抵消成本,所以攻击者没有经济动机去攻击比特币系统。

但是,现在由于比特币的价格越来越高,推石头的人已经不满足于自己去推了,而是把家里的大骡子大马都派上去干活了。在“中本聪”最初的设计里,一个CPU一票,用算力来决定哪个矿工记的账成为最终的账目。随着比特币价格的增高,开始出现了GPU挖矿,后来人们又不满足于GPU的速度,开始制造专用芯片挖矿。专用芯片在计算比特币问题的能力上是普通CPU的数万倍,因此现在比特币已经不是“一个CPU一票”了,这也背离了当初“中本聪”的设计,比特币网络已经基本上被几大矿池所垄断,背离了去中心化货币这一初衷。

雷锋网特约稿件,未经授权禁止转载。详情见转载须知。

相关问答:显卡挖矿是什么意思?为什么显卡价格和挖矿有关?

作为一个曾经“梦想一夜暴富,最后血本无归”的“老矿工”,来回答这个问题,本文尽量用通俗的语言来描述一下挖矿、显卡挖矿和显卡价格的一些相关问题。

“挖矿”是什么意思?

简单来讲,挖矿就是产生数字货币的意思,数字货币有很多种,包括我们听到过比特币、莱特币以太坊、币安币、狗狗币等。

这里,我们以比特币为例,来大致了解一下,比特币就是一种P2P形式的数字货币,P2P的去中心化特性与算法本身可以确保无法通过大量制造比特币来人为操控币值。所以,比特币其总数量有限,该货币系统曾在4年内只有不超过1050万个,之后的总数量将被永久限制在2100万个。

但是,与大多数货币不前手同,比特币不依靠特定货币机构发行,它依据特定算法,通过大量的计算机数据计算而产生,每隔一定时间就会通过“挖矿”产生一部分比特币。

“显卡挖矿”是什么意思?

我们知道了“挖矿”的含义,简单地说,不就是让电脑进行大量计算吗?这不正是电脑的长处吗?

那么,为什么“挖矿”总要拿显卡去挖,更为厉害的CPU,它不能挖吗?毕竟,显卡一般都是用来打游戏的,怎么会和数字货币扯上关系呢?

这里就要提到一个词语:算力。

我们要知道,挖矿最重要的就是电脑硬件的算力大小,相较于CPU的复杂运算,显卡进行的则是通用计算,往往都会堆叠上千甚至几千个流处理器。然而正好,挖矿只需要通用计算就能搞定,复杂运算却完全利用不上,所以,显卡的另外一个用武之地就是挖矿!

相当于什么意思呢?举个例子简单的例子:我们需要在大量的白纸上面写上一个数字1,我们安排10个老师和1000个小学生来做这件事,在相同时间内,这1000个小学生的完成量肯定要比10个老师完成的更多,虽然老师能力更强,但是在处理这种简单事情上,架不住小学生人多啊。

其实,早期的“挖矿”,确实是用CPU来进行的,后来,由于挖矿的难度越来越大,CPU的通用计算你能力已经并无法满足挖矿的需求了,所以就用到显卡来挖矿。反而,对于我们平时注重的电脑性能提升的重点硬件CPU和内存要求并不高,有的时候仅仅需要能够保证运行操系统和相关软件就行。我当初自己配置的小型矿机,使用的CPU和CPU散热都是二手货,内存仅为4GB,使用的硬盘仅为60G,然而搭配的确是6块显卡和可以插6块显卡的主板。

为什么显卡价格和挖矿有关?

关于显卡的价格与挖矿的关系,一般可以从新显卡和二手显卡市场的价格来分别说一下。

第一,新显卡方面。

其实,新显卡的价格上涨,主要是在前两年,最近显卡价格正在逐渐回落。而当初,显卡价格上涨跟当时比特币的市场行情有很大关系。当时的比特币价格可谓是达到了疯狂状态,所以催生了大量的专业“矿工”和“挖矿公司”,当然,也包括大量的像我一样的“挖矿散户”。

当时,有媒体报道,有部分地区的网吧竟然关门歇业,战而进行专业挖矿,其火热程度可想而知。

后来,由于数字货币价格回落,并且相关监管部门对数字货币及挖矿项目的规范化管理,行业正逐步回归理性和正规,加上挖矿行业与环境保护相悖,所以大量的矿工转行、矿机关闭,同时,相关企业也研发出了专用的挖矿机器,造成显卡需求持续下降,显卡价格随之下降。

大量的市场需求,导致显卡的价格一涨再涨;市场需求降低,显卡价格也逐步回落,这与市场的供需关系和价格浮动是相匹配的。

第二,二手显卡方面。

挖矿用的显卡,我们俗称矿卡。随着矿机对显卡的大量需求,二手显卡也被很多矿工所青睐;但又随着大量矿机关闭,大量矿卡肯定流入二手市场,而很多良心人士,是不建议普通用户购买二手矿卡的。所以,显卡二手市场的的价格也就随着挖矿行业的行情变化而变化。

举个真实的例子,AMD曾推出了一款显卡叫Radeon Ⅶ,于2019年2月发布,7月份停产,发布时价格仅为5000多。但是,在停产一年半过后,其二手价格竟高达8000元左右,而这仅仅是由于这块显卡各方面的性能数据更加有利于挖矿。

总体而言,显卡挖矿就是一种利用显卡本身的优势来进行数字货币的生产,而挖矿行业的兴衰,就直接影响了显卡价格的波动。

在此,奉劝还未进入而又想进入“矿圈”的普通玩家,放弃吧,因为有可能,下一个“血本无归”的,就是你!

『捌』 什么是工作量证明

在区块链里很重要一个概念就是工作量证明,英文全称为Proof of Work,缩写为POW。相信很多人刚接触到这个概念的时候都很费解,“ 咦,工作量证明?意思是要证明我做了多少工作吗? ”;我更相信很多投资比特币或者被一些所谓的“ 可以一夜暴富 ”的“ 新型数字货币 ”所忽悠的投资人,对这个概念更加“ 耳熟能详 ”,因为他们听到太多那些“货币”宣称自己有更安全的算法、更可靠的工作量证明机制。 因为听得多,似乎很懂,但就是不真正理解它,这种认知上的不对称,往往是传销币等妖物有机可趁的主要原因。

之前给大家介绍“拜占庭将军问题”的时候,提到过拜占庭将军解决的主要是多个节点之间如何取得共识的问题(如果你忘了当时的故事背景是怎样,那再去好好翻翻之前的课程吧),但是并没有深入介绍如何进行共识。如何进行共识,是区块链里最关键的一个问题,也是被讨论得最多的一个,在区块链诞生之前,分布式系统领域里对共识算法就有很多研究,但是这里并不打算展开了。

1、工作量证明真的是用来证明你做了多少工作

其实,正如本文第一段提到的,很多人刚开始理解的那个概念,“工作量证明主要用来证明一个人做了多少工作”,基本是正确的,计算机领域并不是只有一些生涩的概念的,这个概念通俗易懂,反倒让我们困惑了。

还是要回到拜占庭将军问题的故事场景,在那个故事里,我们应该信任谁,谁能担此大任成为那个英雄卓绝的将军呢?

可能因为城邦之间信息在不断传输,传输量太大,每个城邦的将军都王婆卖瓜,自卖自夸,到底该信任谁,基本上很难区分。细心的朋友可以好好发挥一下想象力。其实,有种最简单粗暴的方法: 看谁最聪明!谁最聪明,我们就相信谁。

谁最聪明这个问题其实太主观了,没办法,只能拿实力说话。就像我们经历过无数的考试一样——来,将军们,大家做道题吧,解答准确且最快的人胜出。

于是,智多星旁白:请听题儿, 请问在一个值比如123456789,后面追加一个5位随机数,请找到一个随机数,使得所计算的哈希值前5位都是0。

将军们千万不要懵逼,你不知道并不代表别人不知道,于是那个最聪明的将军快速的算了出来,并 写上自己的名字 ,交了试卷。老师一验证,完全正确,于是选出他作为那个拜占庭将军,号令群雄。

如果你不知道哈希算法,请回去复习之前的课程。另外,这里提醒一点,将军必须写上自己的名字表明是自己算对的这道题,这在区块链里也很重要,它表示签名表明自己胜出,最后还能获得奖励哟。

以上介绍的这个有的意思的过程,就是所谓的工作量证明。

2、怎么理解挖矿,矿机,矿池?

工作量证明最常见是在比特币里,当大家还不太理解这个玩意儿的时候,已经很多地方见到“挖矿”“矿机”这些宣传字眼了,那个时候我们根本不能理解的是,在电脑里面怎么挖矿?脑洞完全打不开啊。我也困惑了很久,当在淘宝上看到有人卖矿机的时候,我一脸鄙夷,说这一定是忽悠。

很多时候鄙视其实更多是自己不理解造成的,直到它长成庞然大物,直到罗胖提到的“旁边有个物种坐了起来”,才发现我们理解地似乎有点晚了。即便如此,我们不能因此放弃对一个新鲜事物的认识呀。

所谓挖矿,其实就是计算机对上面提到的工作量证明进行的一个运算过程。大家或许会奇怪,将军算题这么高大上的一个比喻到了这里怎么变成挖矿这么苦逼的一个概念呢?其实,拜占庭将军只是以一种有趣的方式描述了故事背景,及工作量证明的一些细节,而挖矿更贴近区块链里工作量证明的一个过程——因为,确实很苦逼!

其实,上面提到的“智多星”或者“老师”,就是那个神秘人物中本聪,比特币的发明人(或组织)。中本聪出的这道难题说白了就是一个傻瓜式地,只能吭哧吭哧,老老实实地,从1,2,3...n不断尝试计算的一个计算题,也即密码学里提到的 暴力破解 的概念。这种计算过程,枯燥乏味,耗费精力时间,这么苦逼,用“挖矿”形容最好不过了。而这个“矿”就是比特币,一种如黄金般稀缺的玩意儿。

但是我们不要忘了,这种机械化的计算是计算机最擅长的事儿了,于是所有的都交给计算机吧,这才有了“矿机”的概念。随着技术的发展,大家发现,计算机功能太强大,完全没有必要全部用来进行这种计算,于是不断精简,将挖矿算法集成到一些芯片里,不仅节省能源,而且算得更快。这就有了CPU挖矿,GPU挖矿,FPGA挖矿,ASIC挖矿等这类说法。

而矿池的出现,是随着比特币数量的总数限制,以及四年减半的硬性要求,挖矿到后期竞争越来越激烈,挖到比特币的难度越来越大,于是只能抱团并肩作战,这个团体就叫做“矿池”。有矿机的人可以选择加入某个矿池,矿池集合所有矿机的力量,进行类似上面算术难题的计算;在计算时,将随机数号码段进行分配,不同号码段交给不同的矿机计算,于是计算的效率大大提升,这样便可以集合作战,共享收益。

其实上面介绍的一些概念都非常初级,目的还是希望很多没有相关基础的人都能搞懂,只有把这些最基本的概念都理解了,走到后面才更容易,不是吗?

『玖』 为什么比特币需要挖矿

很多人很好奇,为什么人们说比特币是挖出来的。下面我给你解释下,为什么比特币这样的区块链项目需要“挖矿”。

交易需要记账人

为了达成交易,买卖双方转账需要有可信赖的人、机构来记账清算。

比如你通过支付宝把100元转账给朋友,支付宝就把你的账户减少100元,而朋友的账户增加100元。这个场景支付宝就是记账人。

信息不对称问题

可是比特币生来没有支付宝、微信、银行来支持它。比特币也不准备依赖于这些中心化机构。

其发明者中本聪设计,任何都可以来帮助记账,记账就可以获取比特币作为奖励。可是问题来了,想要帮助记账获取比特币的人很多,选择谁来记账出错概率低呢?这实际是一个信息不对称问题。

比特币系统想选出可信的人来记账,却不了解想来记账的众多参与者。为了解决这个问题,众多区块链项目想出了不同招数。

为了使得记账人可信,部分区块链干脆仅仅让个别使用者自己记账,这类项目称为私有链,实际上区块链用处不大

部分区块链项目,加入前需要先经过其他成员审核同意,这类项目叫做联盟链

还有一类区块链项目,允许任何人自由加入记账,被称为公链,比特币就属于这一类

挖矿减少信息不对称

公链要解决“记账人是否可信”这个信息不对称问题,就要用到一些手段。实际上各自挖矿方式就是在想办法解决这个问题。

下面简单介绍下常用的挖矿手段,以及解决信息不对称问题的原理。

1、工作量证明(POW)

POW是Proof of Work的简称,参与者需要证明自己确实花费了足够工作成本。

中本聪设计了一个解谜 游戏 ,要解开必须得花费大量的计算,需要购买设备、消耗电量、花费时间。谁最先解开了谜,就证明谁确实花费了不少的成本,于是让他负责记账并获得奖励。然后重新开始新一轮解谜,如此往复。这个过程你开着机器(电脑),在无数数字中寻宝,人们形象地比喻为“挖矿”。

POW其实是生活常用的减少信息不对称的手段。比如:

你肯定想到了,POW证明不是那么牢靠。早期就算付出了成本,当真的掌权也可能乱来,人性使然。对应地比特币设计了一定的防攻击措施,比如记账内容至少要超过半数的算力认可。

2、权益证明(POS)

POS是Proof of Stake的简称,参与者需要证明自己拥有足够的份额。

其假设是你有一个系统不少的股权,则你更加可信。每轮在参与者中,根据其持股的比例,给予相应概率被选为记账人。

POS也是生活常用的减少信息不对称的手段。比如:

3、POI、DPOS等其他方法

除了以上解决信息不对称的方法,一些项目对以上方法进行组合,改进衍生出一些新方法。比如:

#比特币[超话]# #数字货币# #欧易OKEx#

『拾』 详解比特币挖矿原理

可以将区块链看作一本记录所有交易的公开总帐簿(列表),比特币网络中的每个参与者都把它看作一本所有权的权威记录。

比特币没有中心机构,几乎所有的完整节点都有一份公共总帐的备份,这份总帐可以被视为认证过的记录。

至今为止,在主干区块链上,没有发生一起成功的攻击,一次都没有。

通过创造出新区块,比特币以一个确定的但不断减慢的速率被铸造出来。大约每十分钟产生一个新区块,每一个新区块都伴随着一定数量从无到有的全新比特币。每开采210,000个块,大约耗时4年,货币发行速率降低50%。

在2016年的某个时刻,在第420,000个区块被“挖掘”出来之后降低到12.5比特币/区块。在第13,230,000个区块(大概在2137年被挖出)之前,新币的发行速度会以指数形式进行64次“二等分”。到那时每区块发行比特币数量变为比特币的最小货币单位——1聪。最终,在经过1,344万个区块之后,所有的共20,999,999.9769亿聪比特币将全部发行完毕。换句话说, 到2140年左右,会存在接近2,100万比特币。在那之后,新的区块不再包含比特币奖励,矿工的收益全部来自交易费。

在收到交易后,每一个节点都会在全网广播前对这些交易进行校验,并以接收时的相应顺序,为有效的新交易建立一个池(交易池)。

每一个节点在校验每一笔交易时,都需要对照一个长长的标准列表:

交易的语法和数据结构必须正确。

输入与输出列表都不能为空。

交易的字节大小是小于MAX_BLOCK_SIZE的。

每一个输出值,以及总量,必须在规定值的范围内 (小于2,100万个币,大于0)。

没有哈希等于0,N等于-1的输入(coinbase交易不应当被中继)。

nLockTime是小于或等于INT_MAX的。

交易的字节大小是大于或等于100的。

交易中的签名数量应小于签名操作数量上限。

解锁脚本(Sig)只能够将数字压入栈中,并且锁定脚本(Pubkey)必须要符合isStandard的格式 (该格式将会拒绝非标准交易)。

池中或位于主分支区块中的一个匹配交易必须是存在的。

对于每一个输入,如果引用的输出存在于池中任何的交易,该交易将被拒绝。

对于每一个输入,在主分支和交易池中寻找引用的输出交易。如果输出交易缺少任何一个输入,该交易将成为一个孤立的交易。如果与其匹配的交易还没有出现在池中,那么将被加入到孤立交易池中。

对于每一个输入,如果引用的输出交易是一个coinbase输出,该输入必须至少获得COINBASE_MATURITY (100)个确认。

对于每一个输入,引用的输出是必须存在的,并且没有被花费。

使用引用的输出交易获得输入值,并检查每一个输入值和总值是否在规定值的范围内 (小于2100万个币,大于0)。

如果输入值的总和小于输出值的总和,交易将被中止。

如果交易费用太低以至于无法进入一个空的区块,交易将被拒绝。

每一个输入的解锁脚本必须依据相应输出的锁定脚本来验证。

以下挖矿节点取名为 A挖矿节点

挖矿节点时刻监听着传播到比特币网络的新区块。而这些新加入的区块对挖矿节点有着特殊的意义。矿工间的竞争以新区块的传播而结束,如同宣布谁是最后的赢家。对于矿工们来说,获得一个新区块意味着某个参与者赢了,而他们则输了这场竞争。然而,一轮竞争的结束也代表着下一轮竞争的开始。

验证交易后,比特币节点会将这些交易添加到自己的内存池中。内存池也称作交易池,用来暂存尚未被加入到区块的交易记录。

A节点需要为内存池中的每笔交易分配一个优先级,并选择较高优先级的交易记录来构建候选区块。

一个交易想要成为“较高优先级”,需满足的条件:优先值大于57,600,000,这个值的生成依赖于3个参数:一个比特币(即1亿聪),年龄为一天(144个区块),交易的大小为250个字节:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

区块中用来存储交易的前50K字节是保留给较高优先级交易的。 节点在填充这50K字节的时候,会优先考虑这些最高优先级的交易,不管它们是否包含了矿工费。这种机制使得高优先级交易即便是零矿工费,也可以优先被处理。

然后,A挖矿节点会选出那些包含最小矿工费的交易,并按照“每千字节矿工费”进行排序,优先选择矿工费高的交易来填充剩下的区块。

如区块中仍有剩余空间,A挖矿节点可以选择那些不含矿工费的交易。有些矿工会竭尽全力将那些不含矿工费的交易整合到区块中,而其他矿工也许会选择忽略这些交易。

在区块被填满后,内存池中的剩余交易会成为下一个区块的候选交易。因为这些交易还留在内存池中,所以随着新的区块被加到链上,这些交易输入时所引用UTXO的深度(即交易“块龄”)也会随着变大。由于交易的优先值取决于它交易输入的“块龄”,所以这个交易的优先值也就随之增长了。最后,一个零矿工费交易的优先值就有可能会满足高优先级的门槛,被免费地打包进区块。

UTXO(Unspent Transaction Output) : 每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。一般来说,每一笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是 UTXO。

块龄:UTXO的“块龄”是自该UTXO被记录到区块链为止所经历过的区块数,即这个UTXO在区块链中的深度。

区块中的第一笔交易是笔特殊交易,称为创币交易或者coinbase交易。这个交易是由挖矿节点构造并用来奖励矿工们所做的贡献的。假设此时一个区块的奖励是25比特币,A挖矿的节点会创建“向A的地址支付25.1个比特币(包含矿工费0.1个比特币)”这样一个交易,把生成交易的奖励发送到自己的钱包。A挖出区块获得的奖励金额是coinbase奖励(25个全新的比特币)和区块中全部交易矿工费的总和。

A节点已经构建了一个候选区块,那么就轮到A的矿机对这个新区块进行“挖掘”,求解工作量证明算法以使这个区块有效。比特币挖矿过程使用的是SHA256哈希函数。

用最简单的术语来说, 挖矿节点不断重复进行尝试,直到它找到的随机调整数使得产生的哈希值低于某个特定的目标。 哈希函数的结果无法提前得知,也没有能得到一个特定哈希值的模式。举个例子,你一个人在屋里打台球,白球从A点到达B点,但是一个人推门进来看到白球在B点,却无论如何是不知道如何从A到B的。哈希函数的这个特性意味着:得到哈希值的唯一方法是不断的尝试,每次随机修改输入,直到出现适当的哈希值。

需要以下参数

• block的版本 version

• 上一个block的hash值: prev_hash

• 需要写入的交易记录的hash树的值: merkle_root

• 更新时间: ntime

• 当前难度: nbits

挖矿的过程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范围是0~2^32, TARGET可以根据当前难度求出的。

简单打个比方,想象人们不断扔一对色子以得到小于一个特定点数的游戏。第一局,目标是12。只要你不扔出两个6,你就会赢。然后下一局目标为11。玩家只能扔10或更小的点数才能赢,不过也很简单。假如几局之后目标降低为了5。现在有一半机率以上扔出来的色子加起来点数会超过5,因此无效。随着目标越来越小,要想赢的话,扔色子的次数会指数级的上升。最终当目标为2时(最小可能点数),只有一个人平均扔36次或2%扔的次数中,他才能赢。

如前所述,目标决定了难度,进而影响求解工作量证明算法所需要的时间。那么问题来了:为什么这个难度值是可调整的?由谁来调整?如何调整?

比特币的区块平均每10分钟生成一个。这就是比特币的心跳,是货币发行速率和交易达成速度的基础。不仅是在短期内,而是在几十年内它都必须要保持恒定。在此期间,计算机性能将飞速提升。此外,参与挖矿的人和计算机也会不断变化。为了能让新区块的保持10分钟一个的产生速率,挖矿的难度必须根据这些变化进行调整。事实上,难度是一个动态的参数,会定期调整以达到每10分钟一个新区块的目标。简单地说,难度被设定在,无论挖矿能力如何,新区块产生速率都保持在10分钟一个。

那么,在一个完全去中心化的网络中,这样的调整是如何做到的呢?难度的调整是在每个完整节点中独立自动发生的。每2,016个区块(2周产生的区块)中的所有节点都会调整难度。难度的调整公式是由最新2,016个区块的花费时长与20,160分钟(两周,即这些区块以10分钟一个速率所期望花费的时长)比较得出的。难度是根据实际时长与期望时长的比值进行相应调整的(或变难或变易)。简单来说,如果网络发现区块产生速率比10分钟要快时会增加难度。如果发现比10分钟慢时则降低难度。

为了防止难度的变化过快,每个周期的调整幅度必须小于一个因子(值为4)。如果要调整的幅度大于4倍,则按4倍调整。由于在下一个2,016区块的周期不平衡的情况会继续存在,所以进一步的难度调整会在下一周期进行。因此平衡哈希计算能力和难度的巨大差异有可能需要花费几个2,016区块周期才会完成。

举个例子,当前A节点在挖277,316个区块,A挖矿节点一旦完成计算,立刻将这个区块发给它的所有相邻节点。这些节点在接收并验证这个新区块后,也会继续传播此区块。当这个新区块在网络中扩散时,每个节点都会将它作为第277,316个区块(父区块为277,315)加到自身节点的区块链副本中。当挖矿节点收到并验证了这个新区块后,它们会放弃之前对构建这个相同高度区块的计算,并立即开始计算区块链中下一个区块的工作。

比特币共识机制的第三步是通过网络中的每个节点独立校验每个新区块。当新区块在网络中传播时,每一个节点在将它转发到其节点之前,会进行一系列的测试去验证它。这确保了只有有效的区块会在网络中传播。

每一个节点对每一个新区块的独立校验,确保了矿工无法欺诈。在前面的章节中,我们看到了矿工们如何去记录一笔交易,以获得在此区块中创造的新比特币和交易费。为什么矿工不为他们自己记录一笔交易去获得数以千计的比特币?这是因为每一个节点根据相同的规则对区块进行校验。一个无效的coinbase交易将使整个区块无效,这将导致该区块被拒绝,因此,该交易就不会成为总账的一部分。

比特币去中心化的共识机制的最后一步是将区块集合至有最大工作量证明的链中。一旦一个节点验证了一个新的区块,它将尝试将新的区块连接到到现存的区块链,将它们组装起来。

节点维护三种区块:

· 第一种是连接到主链上的,

· 第二种是从主链上产生分支的(备用链),

· 第三种是在已知链中没有找到已知父区块的。

有时候,新区块所延长的区块链并不是主链,这一点我们将在下面“ 区块链分叉”中看到。

如果节点收到了一个有效的区块,而在现有的区块链中却未找到它的父区块,那么这个区块被认为是“孤块”。孤块会被保存在孤块池中,直到它们的父区块被节点收到。一旦收到了父区块并且将其连接到现有区块链上,节点就会将孤块从孤块池中取出,并且连接到它的父区块,让它作为区块链的一部分。当两个区块在很短的时间间隔内被挖出来,节点有可能会以相反的顺序接收到它们,这个时候孤块现象就会出现。

选择了最大难度的区块链后,所有的节点最终在全网范围内达成共识。随着更多的工作量证明被添加到链中,链的暂时性差异最终会得到解决。挖矿节点通过“投票”来选择它们想要延长的区块链,当它们挖出一个新块并且延长了一个链,新块本身就代表它们的投票。

因为区块链是去中心化的数据结构,所以不同副本之间不能总是保持一致。区块有可能在不同时间到达不同节点,导致节点有不同的区块链视角。解决的办法是, 每一个节点总是选择并尝试延长代表累计了最大工作量证明的区块链,也就是最长的或最大累计难度的链。

当有两个候选区块同时想要延长最长区块链时,分叉事件就会发生。正常情况下,分叉发生在两名矿工在较短的时间内,各自都算得了工作量证明解的时候。两个矿工在各自的候选区块一发现解,便立即传播自己的“获胜”区块到网络中,先是传播给邻近的节点而后传播到整个网络。每个收到有效区块的节点都会将其并入并延长区块链。如果该节点在随后又收到了另一个候选区块,而这个区块又拥有同样父区块,那么节点会将这个区块连接到候选链上。其结果是,一些节点收到了一个候选区块,而另一些节点收到了另一个候选区块,这时两个不同版本的区块链就出现了。

分叉之前

分叉开始

我们看到两个矿工几乎同时挖到了两个不同的区块。为了便于跟踪这个分叉事件,我们设定有一个被标记为红色的、来自加拿大的区块,还有一个被标记为绿色的、来自澳大利亚的区块。

假设有这样一种情况,一个在加拿大的矿工发现了“红色”区块的工作量证明解,在“蓝色”的父区块上延长了块链。几乎同一时刻,一个澳大利亚的矿工找到了“绿色”区块的解,也延长了“蓝色”区块。那么现在我们就有了两个区块:一个是源于加拿大的“红色”区块;另一个是源于澳大利亚的“绿色”。这两个区块都是有效的,均包含有效的工作量证明解并延长同一个父区块。这个两个区块可能包含了几乎相同的交易,只是在交易的排序上有些许不同。

比特币网络中邻近(网络拓扑上的邻近,而非地理上的)加拿大的节点会首先收到“红色”区块,并建立一个最大累计难度的区块,“红色”区块为这个链的最后一个区块(蓝色-红色),同时忽略晚一些到达的“绿色”区块。相比之下,离澳大利亚更近的节点会判定“绿色”区块胜出,并以它为最后一个区块来延长区块链(蓝色-绿色),忽略晚几秒到达的“红色”区块。那些首先收到“红色”区块的节点,会即刻以这个区块为父区块来产生新的候选区块,并尝试寻找这个候选区块的工作量证明解。同样地,接受“绿色”区块的节点会以这个区块为链的顶点开始生成新块,延长这个链。

分叉问题几乎总是在一个区块内就被解决了。网络中的一部分算力专注于“红色”区块为父区块,在其之上建立新的区块;另一部分算力则专注在“绿色”区块上。即便算力在这两个阵营中平均分配,也总有一个阵营抢在另一个阵营前发现工作量证明解并将其传播出去。在这个例子中我们可以打个比方,假如工作在“绿色”区块上的矿工找到了一个“粉色”区块延长了区块链(蓝色-绿色-粉色),他们会立刻传播这个新区块,整个网络会都会认为这个区块是有效的,如上图所示。

所有在上一轮选择“绿色”区块为胜出者的节点会直接将这条链延长一个区块。然而,那些选择“红色”区块为胜出者的节点现在会看到两个链: “蓝色-绿色-粉色”和“蓝色-红色”。 如上图所示,这些节点会根据结果将 “蓝色-绿色-粉色” 这条链设置为主链,将 “蓝色-红色” 这条链设置为备用链。 这些节点接纳了新的更长的链,被迫改变了原有对区块链的观点,这就叫做链的重新共识 。因为“红”区块做为父区块已经不在最长链上,导致了他们的候选区块已经成为了“孤块”,所以现在任何原本想要在“蓝色-红色”链上延长区块链的矿工都会停下来。全网将 “蓝色-绿色-粉色” 这条链识别为主链,“粉色”区块为这条链的最后一个区块。全部矿工立刻将他们产生的候选区块的父区块切换为“粉色”,来延长“蓝色-绿色-粉色”这条链。

从理论上来说,两个区块的分叉是有可能的,这种情况发生在因先前分叉而相互对立起来的矿工,又几乎同时发现了两个不同区块的解。然而,这种情况发生的几率是很低的。单区块分叉每周都会发生,而双块分叉则非常罕见。

比特币将区块间隔设计为10分钟,是在更快速的交易确认和更低的分叉概率间作出的妥协。更短的区块产生间隔会让交易清算更快地完成,也会导致更加频繁地区块链分叉。与之相对地,更长的间隔会减少分叉数量,却会导致更长的清算时间。

热点内容
币圈怎么查询伙伴 发布:2025-06-30 08:32:49 浏览:127
做个网站比特币价格从哪儿 发布:2025-06-30 08:32:39 浏览:669
比特币有几个节点 发布:2025-06-30 08:25:47 浏览:1
40计算力一天能挖多少eth 发布:2025-06-30 07:44:50 浏览:770
币圈补仓简单理解 发布:2025-06-30 07:33:25 浏览:35
智慧农工联盟区块链安徽中心揭牌仪式 发布:2025-06-30 07:27:35 浏览:183
区块链公有链一定要发币吗 发布:2025-06-30 07:20:26 浏览:891
手机能注册元宇宙吗 发布:2025-06-30 07:09:05 浏览:821
区块链游戏fomo3d 发布:2025-06-30 07:07:38 浏览:208
BTC纸钞机 发布:2025-06-30 06:27:02 浏览:44