再次遇見(jiàn)她6星評(píng)價(jià)
2020-09-01 13:44:28
區(qū)塊鏈中的塊”是什么?
比特幣是基于區(qū)塊鏈的,這一點(diǎn)大家都知道。但是這個(gè)區(qū)塊鏈?zhǔn)鞘裁茨??更?zhǔn)確地說(shuō),區(qū)塊鏈的各個(gè)組成部分是什么呢?
區(qū)塊鏈?zhǔn)且粋€(gè)數(shù)據(jù)塊。每個(gè)塊可以看作是分類(lèi)帳中的一個(gè)。單個(gè)塊由幾個(gè)組件組成。大致可以將它們區(qū)分為塊的頭部(塊頭)和塊的身體(塊體)。
塊頭
塊頭為六個(gè)部分:
· 軟件的版本號(hào)
· 前一個(gè)塊的哈希值
· Merkle樹(shù)的根哈希值
· 世界時(shí)自1970-01-01以來(lái)以秒為單位的時(shí)間
· 當(dāng)前困難的目標(biāo)
· 特定場(chǎng)合
軟件的版本號(hào)
在大多數(shù)情況下,軟件版本號(hào)并不重要。但是,具有特定版本號(hào)的挖掘程序可以指示它支持哪個(gè)協(xié)議決。
前一個(gè)塊的哈希值
前一個(gè)塊的哈希值,也可以說(shuō)是塊的鏈。因?yàn)榍耙粋€(gè)塊的哈希值包含在新塊的哈希值中,所以區(qū)塊鏈的塊都是在彼此的基礎(chǔ)上構(gòu)建的。如果沒(méi)有這個(gè)組件,每個(gè)塊之間就不會(huì)有連接。
Merkle樹(shù)的根哈希值
塊中包含的所有事務(wù)都可以聚合到哈希值中。這就是Merkle樹(shù)的根哈希。
自1970-01-01 T00: 00 UTC以來(lái)的秒數(shù)
塊本身中的時(shí)間戳。時(shí)間自1970年1月1日起以秒為單位給出。
當(dāng)前困難的目標(biāo)
指示新哈希值必須小到什么程度才能聲明有效性。換句話說(shuō),每個(gè)哈希值都有一個(gè)位大小。位的目標(biāo)越低,就越難找到匹配的哈希值。
特定場(chǎng)合
特定場(chǎng)合是由工作量證明增加的變量。通過(guò)這種方式,挖掘器猜測(cè)一個(gè)有效的哈希值,一個(gè)比目標(biāo)值小的哈希值。
這六個(gè)組件構(gòu)成了塊頭。區(qū)頭在比特幣中扮演著重要角色,因?yàn)樗鼘⑺袇^(qū)塊連接在一起。你可以把它想象成卡車(chē)的駕駛艙。這些是卡車(chē)通過(guò)網(wǎng)絡(luò)控制時(shí)所帶的重要文件。
塊體
塊體可以想象成卡車(chē)的裝載空間。它包含與塊確認(rèn)的所有事務(wù)。
當(dāng)挖掘程序構(gòu)造一個(gè)塊時(shí),它會(huì)驗(yàn)證事務(wù)。也就是說(shuō),他主要檢查寄件人是否有足夠的錢(qián)。他可以很容易地從區(qū)塊鏈中讀取這些信息。如果發(fā)件人想發(fā)送10個(gè)比特幣,他會(huì)查看過(guò)去的數(shù)據(jù)塊,看看發(fā)送者是否已經(jīng)收到10個(gè)比特幣。
塊中的事務(wù)不僅在列表中,而且在所謂的Merkle樹(shù)中。
什么是Merkle樹(shù)?
Merkle樹(shù)的名字來(lái)源于數(shù)學(xué)家Ralph
Merkle。許多信息可以用一個(gè)哈希值表示。為此,首先會(huì)對(duì)數(shù)據(jù)本身進(jìn)行分發(fā)哈希值。然后哈希直再次被分發(fā)并合并。最后,Merkle樹(shù)被合并到一個(gè)哈希值中。最后一個(gè)哈希值也稱為根哈希值,即樹(shù)的根。它在一個(gè)相對(duì)較短的字符串中表示其葉”(單個(gè)事務(wù))和分支”(葉的哈希值)的所有信息。
只要知道所有的分支和葉節(jié)點(diǎn),創(chuàng)建根哈希就非常簡(jiǎn)單快捷。就像哈希值函數(shù)一樣:它在一個(gè)方向上工作得清晰而迅速,在另一個(gè)方向上是不可能分解的。如果根哈希值已知,但事務(wù)未知,則不可能猜測(cè)事務(wù)。
因此,僅使用根哈希值是不夠的,必須保存塊的其余部分。因此,通過(guò)再次哈希值塊中包含的信息,挖掘器可以在任何時(shí)候驗(yàn)證根哈希值。只要哈希值函數(shù)相同,對(duì)于給定的數(shù)據(jù)輸入,礦工們總是會(huì)得到相同的哈希。這非常方便,因?yàn)樗鼈冎荒軝z查它們是否與哈希值處于同一級(jí)別即可。
挖掘:搜索特殊哈希值
在這種背景下,更容易理解工作量證明的挖掘。在挖掘時(shí),塊的塊頭會(huì)被增量地更改以獲得一個(gè)特殊的哈希值。頭由五個(gè)常量和一個(gè)變量組成。常量是軟件的版本號(hào)、前一個(gè)塊的哈希值、Merkle樹(shù)的根哈希值、時(shí)間戳和搜索哈希值的目標(biāo)大?。ㄒ宰止?jié)為單位)
變量是nonce。nonce是由1提出的數(shù)字。然后挖掘器對(duì)數(shù)據(jù)進(jìn)行分發(fā)哈希值,并檢查數(shù)據(jù)是否產(chǎn)生了低于搜索目標(biāo)值的哈希值。如果哈希值大于目標(biāo)值,挖掘器將重復(fù)該過(guò)程;因此,它將nonce增加1,哈希值會(huì)再次檢查。它重復(fù)這個(gè)過(guò)程,直到找到低于目標(biāo)的哈希值,或者從另一個(gè)低于目標(biāo)值的網(wǎng)絡(luò)工作者那里獲得另一個(gè)塊。然后獲取這個(gè)新塊并將其用作下一個(gè)塊的基(使用新哈希值作為上一個(gè)塊的哈希值”)。
挖掘是一個(gè)超重復(fù)的過(guò)程,其目標(biāo)是找到一個(gè)特殊的哈希值。一旦找到哈希值,游戲就重新開(kāi)始。找到特殊哈希值的概率取決于難度。比特幣平均每十分鐘就會(huì)發(fā)現(xiàn)一個(gè)新的區(qū)塊。這個(gè)難度一直在變化,所以這個(gè)平均值保持不變。
這個(gè)過(guò)程的特殊之處在于,只有通過(guò)猜測(cè)才能找到特殊的哈希值。這個(gè)速率會(huì)消耗計(jì)算能力和能量。查看特殊哈希值就足以看出它是特殊的,因?yàn)樗?開(kāi)頭。
下面是一個(gè)來(lái)自比特幣區(qū)塊鏈的哈希值例子:
000000000000000000094 bfa4edb1245c347e42452e4418e9fe5a1d24e335b16
哈希值表:區(qū)塊鏈的matryoshka
塊可以簡(jiǎn)化為matryoshka想象的那樣。最小的玩偶是未標(biāo)價(jià)的交易。下一個(gè)信封是這個(gè)事務(wù)的哈希值形式。此后,兩個(gè)哈希值事務(wù)被哈希在一起。所以哈希值會(huì)被合并得越來(lái)越多。最后,只剩下一個(gè)哈希值,即根哈希值或最大的matryoshka。
在某位面的李2星評(píng)價(jià)
2020-09-01 14:45:16
說(shuō)到區(qū)塊鏈出塊,我們不得不提兩個(gè)名詞:節(jié)點(diǎn)、共識(shí)機(jī)制。節(jié)點(diǎn)決定著誰(shuí)有出塊的資格,共識(shí)機(jī)制則決定著這些有出塊資格的節(jié)點(diǎn),最終哪個(gè)節(jié)點(diǎn)可以出塊。
那么,什么是節(jié)點(diǎn)呢?
每一個(gè)安裝有比特幣客戶端軟件并連接到比特幣區(qū)塊鏈的電腦就是比特幣區(qū)塊鏈的一個(gè)有效節(jié)點(diǎn)。
這個(gè)世界上有多少這樣的電腦,區(qū)塊鏈上就有多少個(gè)節(jié)點(diǎn)。
明白了什么是節(jié)點(diǎn),那我們來(lái)聊聊什么是“共識(shí)機(jī)制”,其實(shí)所謂的共識(shí)機(jī)制就相當(dāng)于我們所說(shuō)的投票,不同的共識(shí)機(jī)制相當(dāng)于投票規(guī)則不同,例如:有的要過(guò)半數(shù)、有的要達(dá)到三分之二的票數(shù)。
所有的節(jié)點(diǎn)都具備投票的權(quán)利,每次要出塊的時(shí)候,所有的節(jié)點(diǎn)都會(huì)參與投票,按照不同的投票規(guī)則(共識(shí)機(jī)制)進(jìn)行投票,從而選出一個(gè)節(jié)點(diǎn),所有節(jié)點(diǎn)通過(guò)共識(shí)機(jī)制就達(dá)成了共識(shí),本輪投票以選中的這個(gè)節(jié)點(diǎn)出的塊為準(zhǔn),其他節(jié)點(diǎn)出的塊就不作數(shù)了。
獲得區(qū)塊權(quán)利的人出塊之后會(huì)得到區(qū)塊鏈的獎(jiǎng)勵(lì),也就是代幣(如:比特幣),為了得到獎(jiǎng)勵(lì),大家都會(huì)爭(zhēng)搶出塊的權(quán)利。
在區(qū)塊鏈中,共識(shí)算法的好壞最終決定區(qū)塊鏈出塊的效率。目前常用的共識(shí)算法有:POW、POS、DPOS、PBFT、RAFT等。
但是區(qū)塊鏈出塊即便是有共識(shí)機(jī)制,也經(jīng)常會(huì)遇到各種問(wèn)題,例如:共識(shí)機(jī)制達(dá)不成共識(shí),也就是投票沒(méi)有結(jié)果,這種情況下,區(qū)塊鏈會(huì)重新發(fā)起投票,直到投票得出結(jié)果為止。
區(qū)塊鏈系統(tǒng)一套自己的規(guī)則和邏輯,在自己的世界可以完美的運(yùn)轉(zhuǎn)