比特币网络是什么(比特币网络是如何运作的?)

上传日期:2023-08-24 浏览次数:

前情回顾

首先呢范范帮大家伙理理思路,我们前面已经说了通过数字签名能证明你的钱是你的钱,这解决了所有权的确认问题,但是还有双重支付问题亟待解决。

于是乎中本聪提出了一种使用P2P网络解决双重支付的方案,即用一个全网公开的账本,同时这个账本需要一个系统,可以保证每个参与者都接收到相同的账本,这就使得所有的交易全网公开,且全网确认。

注意了,这样一个账本系统里有两个部分十分重要——时间戳服务和工作量证明。其中时间戳服务

保证支付顺序,形成交易链;工作量证明的引入让矿工投入算力来竞争打包交易的机会,诚实记录,如果要修改某个区块上的交易,则需要重新计算自此区块以来所有的区块,且拥有超过全网算力51%才有可能获胜······妈妈再也不用担心有人攻击并修改账本啦。

整个比特币网络是如何运行的呢?

说了这么多,想必你对整个网络的运行已经有了一个大概的认知。

首先新的交易会广播到各个节点,这些节点(node)你单纯地理解为通过互联网相连的电脑或者服务器就好了。然后每个节点汇集新的交易到区块之中,这也就是我们之前说的时间戳服务所做的事情了。 接下来每一个节点需要为自己的区块找到一个工作量证明,它通常是有难度的,但只要你运气足够好,能力足够强,找到那个包含多个0的哈希值也就完成了任务,便可生成一个区块,然后就可以把这个区块向全节点广播出去了~

那我作为另一个节点,会认同你生成的区块A的有效性吗?当然是有条件的,当且仅当包含在该区块中的所有交易都是有效且没有被双重支付过的才可以。

最后既然我接受了你生成的区块A,该如何表示呢?我会以A这个区块作为我的底链继续往后工作,在现有的区块上延长A(以表示我接受A),并且把之前区块的哈希值作为我产生新的区块上的上一个区块的哈希值(有点绕哈,我们之前说过每一个区块在打包之前都包含上一个区块的哈希值)。

这几步都完成之后,一组交易就通过全网广播的形式被打包成了一个全网公认的区块,串到了之前形成的链上,也就是被打上了时间戳。

现在对整个网络运行的机制是不豁然开朗了?

节点是如何完成工作量证明的呢?

比特币网络是如何运作的?


上面说到,每一个节点都将收到的交易信息打包到一个区块中,我们把这个新的区块叫做预备区块,或候选区块,因为它还没有完成工作量证明,不能成为一个正式的区块。要想让它成为一个正式的区块的话,节点需要往这个区块中掺入一个nonce值(就是随机数1、2、3···),然后对整个区块进行SHA256哈希处理。如果取得的哈希值前缀有N个0,比如8个0,这是极其罕见且纯属巧合的事情,那就完成了工作量证明,如果没有8个0,那就换一个nonce值,再重新对整个区块进行哈希取值,如果哈希值前缀还没有8个0,我们就继续换nonce值,一遍遍重复·······机械活儿。

根据概率,你很有可能要尝试42亿次哈希才能找到一个合适的nonce值。我们知道哈希函数的内容只要有一丁点变化,哈希值就会完全不同,我们的候选区块里面打包的交易内容是不可以随便更改的,为了让区块的哈希值产生变化,能变的就只有nonce值了。

到此为止,你已经感觉到了吧?这个寻找合适的nonce值来生成符合某种规则的哈希值的过程,就叫做挖矿。因为比特币自2009年诞生起一直采用工作量证明(proof-of-work),所以后来出现了这种使用专门芯片进行哈希运算的机器——矿机

比特币网络是如何运作的?


专业矿机拥有巨大的算力,很多矿机就成了比特币挖矿的主流,但这也带来了一个问题——算力的过度。因为矿机的投入门槛较高,所以普通人更加难以参与。后来诞生的以太坊ETH在设计时就特别考虑了这个问题,它设计的工作量证明算法使得专业芯片无法占优势,用普通电脑加显卡就可以参与挖矿。这种设计让普通人都可以参与,减少了算力过于集中的问题。


比特币网络是如何运作的?


以太坊自2015年诞生起一直采用工作量证明,后来试图转换成为权益证明(proof-of-stake),就是谁持有的币多,谁就有权力去验证交易和打包交易,这样可以减少挖矿带来的能源浪费。其中的利弊大家可以讨论下。

传说中的分叉终于来了!

通过以上,我们知道了节点通常将最长链视为正确的链条,并持续工作以延长这个链条。

现在,问题来了。如果有两个节点几乎同时广播不同版本的新区块咋办呢?一些节点就先接收到其中的一个区块,相应地有另外一些节点接受到的是另外的区块,这种情况下该怎么处理呢?

它们会处理接受到的第一个区块,也就是在自己接受到的第一个区块去工作,去延长它。但另外一个区块还是会被保留,万一后面一条会胜出呢?

所谓一山不容二虎,这样一个僵局在什么时候会结束呢?——当下一个工作量证明被发现时,其中一个链条就会变得更长,在另外一个链上工作的节点就会换到更长的链条上啦。

这里的Save the other branch(保留另外一个链条),就是平时所说的的“分叉”。比特币的区块链条就是不停地分叉,抛弃,又分叉,又合并的过程中,最终最长的那条链才是系统认可的区块链。像不像贪吃蛇的游戏,谁最长谁笑到最后。

这里想问大家一个问题,你认为广播新的交易需要触及到所有的节点吗?

答案竟然是:NO!只要接触到多个节点,它们很快就会被整合进一个区块中的。

那有一些节点没有被接收到该怎么办呢?广播同样可以接受被丢掉的信息。如果一个节点没有接收某个区块,它会在接收到下一个区块时发现自己缺失了一个区块。

这时它会提出自己下载该区块的请求。

通过今天的解读,我们知道了挖矿其实就是不断地迭代nonce值,来使得一个哈希值的前面几位变成0的过程,大家是否同我一样觉得,比特币设计原理仔细研究起来没那么难懂?有什么疑问可以在下方留言,明早八点二十八和你不见不散。

【更多区块链,更多数字货币行情分析,可以访问--石小猴财经】

上一篇:拍卖比特币(6934625万美元世界最贵NFT拍品在佳士得落槌)

下一篇:比特币二元期权(Bakkt的比特币期权,以现金结算的期货合约现已生效)

免费获取您的专属营销方案

验证码