第二章:共識機制-維護一致賬本的方法
目錄
2.1作業量證明機制
2.2礦工的激勵
2.3礦工的算力
2.4位元幣回顧
2.5挖礦設備
2.6礦池
2.1作業量證明機制
因為賬本要得到維護賬本的每個人的同意,得到大家一致的認可,那這個賬本每添加一頁(即一個區塊)的時候該如何記賬?
位元幣共識機制包含兩方面的內容:這一頁添加在哪里?這一頁由誰來寫?
1、最長鏈:大家一致認可、同意最長鏈(就是接在目前網路里最長的這個鏈上的區塊才是有效的)
2、作業量證明機制(POW)
為什么網路里會出現多條鏈?
1、網路中的人互相不認識,各自的網路速度也非常不一樣,當區塊鏈上新產生一個區塊的時候,網路快的人就有可能看到這個新區快,于是就在新區快上接上自己挖出來的區塊,網路忙的人可能沒有看到,他就有可能在舊的鏈上繼續挖礦、接上區塊,從而導致分叉;也有可能兩個人同時搶到記賬權,此時其他的礦工該在哪條鏈上繼續接自己挖出來的區塊呢?答案是依據他們自己的判斷,過一段事件之后,網路中總會出現那一條最長的鏈,最后大家只承認那條最長的鏈,

作業量證明機制

作業量證明機制就是要找到一個Nonce使得當前區塊頭的哈希值小于系統規定的數,Nonce是作業量證明機制的關鍵,
挖礦:只有第一個找到Nonce的人才能在區塊鏈賬本上新添加一頁,即創建這個區塊,這就是挖礦的程序,
難度是衡量找打這個規定的哈希值有多難的指標,難度越大,對應的滿足系統條件的Nonce值就越小,
中本聰很早就預料到,隨著社會的進步發展,每個人電腦的能量越來越大,使用的計算資源越來越強,如果難度太低,大家找到系統規定的滿足一定哈希值的Nonce就非常容易,就會導致速度太快,于是,中本聰在2009年區塊鏈創建之初的時候規定難度為1,并定期調整難度,讓難度越來越大,使得區塊頭哈希值需要滿足的這個值越來越小,中本聰設定的難度調整原則描述如下:
每2016個塊調整難度,使得平均10分鐘出一個塊,
一天(60*24)/10=144塊
2016塊/144塊 = 14天
也就是說,每14天調整一次難度來保持平均每10分鐘出一個塊的速度,
找到符合規定的Nonce有多難?

大概率來說,分母就是找到Nonce需要嘗試的次數,
思考:找到符合規定的Nonce如此困難,維護網路的人為什么要干這么一件看似毫無意義的事情?2.2節有答案哦!
2.2礦工的激勵
銀行幫助我們實時記賬、記錄我們的所有交易并提供優質的服務主要是由于銀行的收入和利潤來自于我們的存款(銀行把我們的錢貸款給需要錢的人然后收取利息),那么,在位元幣的世界里那些記錄我們轉賬交易的礦工能得到什么好處呢?
礦工: 是維護位元幣網路的人,同時也是在網路里希望能夠搶先算出Nonce的人,
激勵礦工作業的第一個獎勵:系統發放的獎勵,
礦工只有率先算出Nonce使得當前區塊的哈希值滿足一定的條件,并且將區塊接在目前網路里最長的一條鏈上就能夠得到系統發放的獎勵,
2020年5月之前,每個創建區塊搶到記賬權的礦工都能得到12.5個位元幣的獎勵,每隔十分鐘創建一個區塊,相當于每隔十分鐘就有一個礦工得到了獎勵,但是,由于位元幣的總量只有2100萬枚,到2140年就發放完畢(詳見第一章),那么2140年后,礦工搶先獲得記賬權會得到什么獎勵?
激勵礦工作業的第二個獎勵:交易手續費
當我把位元幣轉賬給別人的時候,通過位元幣網路進行轉賬交易,該交易就會被礦工打包放到他的區塊里,此時我需要給礦工手續費,如果我不給他,他就不會把該交易放在他的區塊里,當該礦工成功計算出Nonce搶到記賬權并得到網路里其他所有人的確認的時候,他的區塊里的所有交易就會被成功記錄在位元幣的網路里,我的轉賬交易在這個時候才是真正的完成了,
礦工不僅可以得到系統獎勵的12.5個位元幣,還可以得到他的區塊里的所有交易的交易手續費,
位元幣網路中的交易手續費與交易金額并沒有什么關系,而是和你的心情相關的,如果你的心情好就多給交易手續費,礦工看到你的手續費高就會優先把你的交易放在區塊里,反之,如果不給交易手續費,礦工就不會把你的交易放在他的區塊里,
為什么礦工有這么大的選擇權?
第一章1.6節講到,位元幣區塊的容量是有限的,每10分鐘只能記錄容量為1MB的交易量,記錄不了網路里產生的所有新的交易,如果大家都是用位元幣網路進行支付轉賬,礦工一定會優先記錄交易中手續費給的更多的交易,所以,你的交易是否順暢、是否能夠成功的被記賬取決于你給的交易費有多少,
礦工得到系統發放的獎勵越來越少(每四年一次減半),而挖礦的難度卻是指數級的增加,礦工是否很不劃算?
位元幣的價格

2011年2月,首次從零點零零幾美分漲到了一美元一個,那時候搶到記賬權的礦工能夠得到的系統獎勵是$1*50=$50,
2015年2月10日,位元幣的價格已經是240美元,系統的獎勵是$240*25=$6000,
2019年2月份,位元幣價格為4000美金,系統的獎勵是$4000*12.5=$50000,
2020年5月,
可以看出,礦工得到的位元幣的資料是越來越少了,但是它的金額實際上已經翻了好幾千倍,
安全的轉賬支付系統,避免雙花(1.3節)
位元幣系統采用的就是共識機制*激勵的雙重作用,使得位元幣點對點的電子現金系統能夠避免雙花,
雙花導致的結果:一方受損另一方獲利,
位元幣中的雙花是什么?

分叉之后的短鏈上的交易都是無效的,小明就是受損的一方,因為他已經把對等價值的商品給了張三,張三是獲利的一方,他把錢花了兩次(一次給小明,一次給大熊),而真正有效被記錄的那次轉賬交易時給大熊的那一次,
思考:張三能不能在分叉點后建立更長的鏈,即能不能成功的進行雙花?
由于位元幣的激勵機制,礦工都會在更長的鏈上進行挖礦,而在張三給大熊的這條鏈上挖礦得不到任何好處,所以大部分的礦工還是會在原來的那條鏈上進行挖礦,原來的那條鏈會越來越長,所以張三不能成功進行雙花,
因此,位元幣網路中的共識機制和激勵機制強強聯手可以成功避免雙花,
如果想雙花的人的計算能力比所有人都強大,那么他就會雙花成功,他會比所有人更可能搶到記賬權,但是為什么位元幣系統一直都沒有人能夠成功進行雙花,破壞系統的安全性呢?繼續學習下一節吧!
2.3礦工的算力
算力:每單位時間的哈希運算的次數:H/S(Hash per second),讀作哈希每秒,
例如:1TH/S=10^12H/S,代表每秒鐘可以運行10^12次哈希運算,
2020年5月份,計算的難度為16.1T,所以算力為16.1*10^12*2^32/600s=115*10^18H/S=115EH/S(這個是全網算力),再次說明,難度的設立是為了保證位元幣系統平均每10分鐘產生一個區塊,以為就是平均10分鐘找到一次答案,不能太快也不能太慢,
回到上一節提到的雙花問題:如果想雙花的人的算力比所有人都大,那么他一定會雙花成功,
比如想雙花的人占有系統51%的算力,即115EH/S*0.51=57EH/S的算力就一定可以雙花成功,那么:
第一,擁有這么大的算力需要多少成本:
礦工的三大成本:
設備:進行哈希運算
電費:維持機器運行
運維:搬運和維護
挖礦設備:
cpu->gpu->ASIC礦機

如上,是一臺銷量很大的礦機,算力是73TH/s,價格是2019美金,
擁有全網51%算力需要多少臺這樣的礦機?
57EH/s?73TH/s=781,000臺
需要投入的資金:
718,000臺×$2019/臺=$15億
想要雙花的人需要15億美金,這還不包括運維費和電費,
雙花可能獲得的收益是什么?

需要至少取消以前對別人15億美金的支付,相當于給了別人15億美金的價錢,即使這樣,還只是彌補了購買設備的花銷,按照位元幣2020年5月份一萬美金一個的價格,15億美金相當于15萬個位元幣,雙花的人需要取消以前對別人支付的15萬個位元幣,這是不可能的:
第一,在位元幣價格如此高的時候,誰會有那么多的位元幣一下子拿出來打給別人呢?
第二,如果誰敢一下子拿出那么多位元幣,誰敢收呢?他收的時候一定會等,因為他不相信,害怕這是假錢,所以當系統中出現一個人支付給另外一個人15萬個位元幣的時候,不僅僅收費方會警覺,礦工也會警覺,所有監視區塊鏈系統的人都會警覺,因為所有在位元幣系統里轉賬的交易都是公開透明的,只是不知道是誰給誰轉的賬,轉賬的金額大家都能看到,地址也能看到,收幣方會擔心雙花的可能性,所以他會等很多區塊會接在包含他的轉賬交易的區塊的后面,他會遲遲不去確認收到這筆錢,不會拿著商品去交換15萬個位元幣,
所以,如果有個人的計算能力比所有人的都大,他想雙花位元幣系統、想攻擊位元幣系統,他一定可以雙花成功,但是他的花費是巨大的,想獲得相當的收益可能性是很低的,總之就是費力不討好,所以這種人存在的可能性是非常低的,這就是為什么中本聰的假設非常合理的原因:他假設掌握系統大部分算力的人是不會攻擊位元幣網路的,
位元幣雙花可能性不大的因素:
全網的算力
幣的價格(決定性作用)
算力、幣的價格與安全性之間的關系:
如果某個區塊鏈網路的歷史非常長,那么它上面積累的算力可能就很,也有很多人參與這個網路,那么想要算力比別人的都大,就要花很多錢來購買算力,要想雙花的成本就越非常高,就越不可能有雙花現象的發生,網路的安全性就越高,網路安全性越高,那么網路上支持幣的價格才會堅挺,如果用于轉賬的網路的安全性都不高的話,那大家肯定就不會用這個網路了,不安全的網路上跑的這個幣的價格就會歸零,所以,安全是維持幣的價格上漲的重要因素,礦工挖礦得到的幣的價格一定要高于他挖礦的成本才會投入算力來進行挖礦,在幣價非常低的時候,會出現礦機關機、礦機甩賣等現象,這種情況會使得網路的算力下跌,所以,一個區塊鏈專案最開始運行的時候,提高網路的算力以吸引大家都來參與這個網路是非常重要的,因為參與區塊鏈網路的人越多算力就會越大,如何吸引更多的人來參與維護網路?這是一個慢慢發展的程序,位元幣網路運行11年來,越來越多的人參與到了網路的維護中,幣的價格也越來越高,從來沒有出現雙花攻擊現象,也沒有出現過信任危機,但是,有的區塊鏈網路運行的幣卻沒有這么幸運,多次遭到雙花攻擊,
思考題:全網算力和幣的價格是什么關系的時候,區塊鏈網路最有可能遭到雙花攻擊?
2.4位元幣回顧
中本聰論文“位元幣 點對點的電子現金系統”摘要:第一,做一個點對點的電子現金系統,讓一個人給另外一個人轉錢不需要經過任何中間金融機構,數字簽名雖然能解區域分的問題:保證我的交易是我發起的,但如果需要依賴中心機構解決支付雙花的問題,點對點的電子現金系統的優勢就被減弱了,第二,網路上把所有的交易都加上了時間戳,通過哈希函式把交易記錄在基于作業量證明的鏈條上,除非重新完成全部的作業量證明,否則不能更改記錄的交易,第三,最長的鏈條不僅能證明發生交易的先后順序,而且是由最多的CPU計算能力形成的,只要大部分的算力掌握在不會攻擊網路的節點的手里,他們就會比攻擊者快速、創造出來的鏈最長,第四,網路只需要最少的組織結構,資訊從節點處盡最大的努力播報給全網,節點可以隨意離開和加入網路,加入時會接受最長的鏈,作為易發生事情的權威記錄,
問題一:既然區塊鏈上的資訊和交易不可逆裝,如果我錯誤的進行了一筆交易,那我是不是真的沒辦法去取消這筆交易?
答:并不是一定不能取消,這要看是公鏈還是聯盟鏈,
如果是公鏈,要取消原來的交易的話,就必須要新產生一條鏈,就必須分叉,分叉的前提是你能夠產生一條新的鏈比原來那條鏈更長,此時你就可以取消原來那條鏈上的交易了,(很難,一般都是都是通過分叉的形式,)
如果是聯盟鏈,只要大家商量好,聯盟鏈之間覺得可以取消這筆交易那就可以,
問題二:位元幣系統挖出的區塊經過六次確認后就難以篡改了,這是為什么?
答:因為當位元幣里面的區塊后面已經接了6個區塊的話,這個區塊里的內容就非常難以篡改了,這是因為你需要比這條鏈多挖7個區塊才能比原來那條鏈長,才能取消原來那條鏈上的交易,但是比別人快7個區塊是非常難的:如果你的算力占全網算力20%的話,挖到一個塊的概率即使20%,連續挖兩個塊(比別人多一個塊)的概率就是0.2*0.2;如果相比別人多挖7個塊的話,這個概率是指數級降低的,在你現有的算力下基本是達不到的,除非你擁有全網51%以上的算力,
問題三:礦工分布于世界各地的不同時區,如何保證每個挖出塊的人他的時間線都是一致的?另外,時間戳上的時間到底是什么時間,是紐約時間、倫敦時間還是北京時間?
答:區塊鏈上的時間戳是礦工加上去的,礦工分布在世界各地,每個人用了自己的機器,一般來說大家用的都是時區0的時間,礦工會根據自己機器系統的時間把區塊產生的時候的時間寫上去,所以說,大家一般來說是用的統一的一個時間,
問題四:礦工是否需要打包交易才能出塊?如果所有人都不支付手續費的話礦工是否還會出塊呢?
答:區塊是不一定非要打包交易的,礦工打包交易的一個非常大的動力是交易的執行者(就是轉賬位元幣的人)需要支付手續費,所以礦工一般會把交易打包在他的區塊里,但他不打包這些交易也是可以挖塊的,例如:如果位元幣沒有任何人使用里面就沒有交易(位元幣系統創建之初,沒有人使用),但那個時候位元幣網路也是一直都在出塊的,按照平均每10分鐘出一個塊的速度一直在出塊,所以,如果區塊里不打包交易的話,也是可以出塊的,因為現在又交易手續費的激勵,礦工就愿意把交易都打包在區塊里,
問題五:位元幣可以用來消費嗎?如果不可以,人們獲得它的目的是什么?
答:位元幣再有的國家可以用來支付的,有的國家是不允許用來支付的,但由于現在的位元幣有價格、有交易,大家可以把位元幣換成當地的貨幣,所以在那些不能支付商品的國家,位元幣的價值可能就來源于大家希望它的價值能增長然后換成當地的貨幣并用于購買商品等等,所以,位元幣的價值不光用于支付,也希望它的價值增加,所以很多人都希望擁有位元幣,
問題六:當位元幣被挖完的時候,也就是2100萬個位元幣數量達到上限的時候,還會有新的區塊產生嗎?也就是說這個時候位元幣的供給會發生改變嗎?
答:當2100萬個位元幣被挖完的時候,如果利益夠大,礦工還是會繼續挖礦產產生區塊的,這是因為里邊有交易的手續費,只要交易手續費大于礦工的成本它就會持續出塊,也就是說位元幣的系統會一直運行下去,當然,如果說位元幣2100萬的上限會不會突破、到時候會不會系統突然增加位元幣的發放是要看當時的生態的,整個生態有很多產業鏈,比如:礦池、礦工、生產礦機的機器商、投資人、交易所等等,如果產業鏈里的人都認為能夠增加上限的話,可能就是會增加上限,
問題七:去中心化的機制就一定安全嗎?現在各個國家都在研究自己的數字貨幣,這對位元幣會有哪些沖擊呢?
為什么位元幣減半后會大漲?
所有的區塊鏈系統都需要挖礦嗎?
答:在接下來的章節中會學習到,
2.5挖礦設備
評價礦機的指標:算力、價格、耗電量
以螞蟻礦機S17+為例講解如何用這些指標判斷礦機的好壞,
算力:73TH/S
價格:$2019
耗電量:2920Watt,一小時用電2092度
單位算力價格:$2019?73=$27.6(每TH/S) 就是說需要花27.6美金來購買1T的算力
單位算力耗電量:2920?73=40watt(每TH/S) 就是說每T哈希的算力需要40瓦的電

2.6礦池
礦池出現的原因:
我們知道搶到位元幣區塊鏈系統的記賬權需要隨機的算很多次哈希運算,算的此說越多找答案的概率越大,挖到塊的概率也就越大,所以說,每個礦工投入的機器算力的大小就決定了他能夠搶到記賬權的概率,
礦工出塊的可能性:
Prob(出塊)概率=礦工的算力/全網算力
2020年5月初,位元幣全網的算力是115EH/S,一臺螞蟻17+的算力是73TH/S,一臺螞蟻礦機出塊的可能性:
Prob(出塊)概率=(73TH/S)/(115EH/S)=6.3*10^(-7)
每T算力的收益如何計算?

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/277098.html
標籤:區塊鏈
