比特币如何达成共识 - 最长链的选择
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
本文首發(fā)于深入淺出區(qū)塊鏈社區(qū) 原文鏈接:比特幣如何達(dá)成共識 - 最長鏈的選擇原文已更新,請讀者前往原文閱讀
比特幣沒有中心機(jī)構(gòu),幾乎所有的完整節(jié)點都有一份公共總帳本,那么大家如何達(dá)成共識:確認(rèn)哪一份才是公認(rèn)權(quán)威的總賬本呢?
為什么要遵守協(xié)議
這其實是一個經(jīng)濟(jì)問題,在經(jīng)濟(jì)活動中的每個人都是自私自利的,追求的是利益的最大化,一個節(jié)點工作量只有在其他的節(jié)點認(rèn)同其是有效的(打包的新區(qū)塊,其他的節(jié)點只有驗證通過才會加入到區(qū)塊鏈中,并在網(wǎng)絡(luò)上傳播),才能夠過得收益, 而只有遵守規(guī)則才會得到其他的節(jié)點認(rèn)同。 因此,基于逐利,節(jié)點就會自發(fā)的遵守協(xié)議。共識就是數(shù)以萬計的獨(dú)立節(jié)點遵守了簡單的規(guī)則(通過異步交互)自發(fā)形成的。
共識:共同遵守的協(xié)議規(guī)范
去中心化共識
在工作量證明一篇,我們了解通過工作量證明來競爭記賬,權(quán)威的總帳本是怎么達(dá)到共識的,沒有完全說清楚,今天補(bǔ)上, 實際上,比特幣的共識由所有節(jié)點的4個獨(dú)立過程相互作用而產(chǎn)生:
共識最終目的是保證比特幣不停的在工作量最大的區(qū)塊鏈上運(yùn)轉(zhuǎn),工作量最大的區(qū)塊鏈就是權(quán)威的公共總帳本。
第1 2 3步在比特幣如何挖礦-工作量證明一篇有提到過,下面著重講第4步。
最長鏈的選擇
先來一個定義,把累計了最多難度的區(qū)塊鏈。在一般情況下,也是包含最多區(qū)塊的那個鏈稱為主鏈 每一個(挖礦)節(jié)點總是選擇并嘗試延長主鏈。
分叉
當(dāng)有兩名礦工在幾乎在相同的時間內(nèi),各自都算得了工作量證明解,便立即傳播自己的“獲勝”區(qū)塊到網(wǎng)絡(luò)中,先是傳播給鄰近的節(jié)點而后傳播到整個網(wǎng)絡(luò)。每個收到有效區(qū)塊的節(jié)點都會將其并入并延長區(qū)塊鏈。 當(dāng)這個兩個區(qū)塊傳播時,一些節(jié)點首先收到#3458A, 一些節(jié)點首先收到#3458B,這兩個候選區(qū)塊(通常這兩個候選區(qū)塊會包含幾乎相同的交易)都是主鏈的延伸,分叉就會產(chǎn)生,這時分叉出有競爭關(guān)系的兩條鏈,如圖: 兩個塊都收到的節(jié)點,會把其中有更多工作量的一條會繼續(xù)作為主鏈,另一條作為備用鏈保存(保存是因為備用鏈將來可能會超過主鏈難度稱為新主鏈)。
分叉解決
收到#3458A的(挖礦)節(jié)點,會立刻以這個區(qū)塊為父區(qū)塊來產(chǎn)生新的候選區(qū)塊,并嘗試尋找這個候選區(qū)塊的工作量證明解。同樣地,接受#3458B區(qū)塊的節(jié)點會以這個區(qū)塊為鏈的頂點開始生成新塊,延長這個鏈(下面稱為B鏈)。 這時總會有一方搶先發(fā)現(xiàn)工作量證明解并將其傳播出去,假設(shè)以#3458B為父區(qū)塊的工作量證明首先解出,如圖:
當(dāng)原本以#3458A為父區(qū)塊求解的節(jié)點在收到#3458B, #3459B之后,會立刻將B鏈作為主鏈(因為#3458A為頂點的鏈已經(jīng)不是最長鏈了)繼續(xù)挖礦。
節(jié)點也有可能先收到#3459B,再收到#3458B,收到#3459B時,會被認(rèn)為是“孤塊“(因為還找不到#3459B的父塊#3458B)保存在孤塊池中,一旦收到父塊#3458B時,節(jié)點就會將孤塊從孤塊池中取出,并且連接到它的父區(qū)塊,讓它作為區(qū)塊鏈的一部分。
比特幣將區(qū)塊間隔設(shè)計為10分鐘,是在更快速的交易確認(rèn)和更低的分叉概率間作出的妥協(xié)。更短的區(qū)塊產(chǎn)生間隔會讓交易確認(rèn)更快地完成,也會導(dǎo)致更加頻繁地區(qū)塊鏈分叉。與之相對地,長的間隔會減少分叉數(shù)量,卻會導(dǎo)致更長的確認(rèn)時間。 ? 深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。
? 我的知識星球為各位解答區(qū)塊鏈技術(shù)問題,歡迎加入討論。
? 關(guān)注公眾號“深入淺出區(qū)塊鏈技術(shù)”第一時間獲取區(qū)塊鏈技術(shù)信息。
轉(zhuǎn)載于:https://my.oschina.net/u/3724910/blog/1814069
總結(jié)
以上是生活随笔為你收集整理的比特币如何达成共识 - 最长链的选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FPGA-F3】阿里云FAAS平台,极
- 下一篇: Wireshark的https代理抓包(