這其實是乙個經濟問題,在經濟活動中的每個人都是自私自利的,追求的是利益的最大化,乙個節點工作量只有在其他的節點認同其是有效的(打包的新區塊,其他的節點只有驗證通過才會加入到區塊鏈中,並在網路上傳播),才能夠過得收益,
而只有遵守規則才會得到其他的節點認同。
因此,基於逐利,節點就會自發的遵守協議。共識就是數以萬計的獨立節點遵守了簡單的規則(通過非同步互動)自發形成的。
共識:共同遵守的協議規範在工作量證明一篇,我們了解通過工作量證明來競爭記賬,權威的總帳本是怎麼達到共識的,沒有完全說清楚,今天補上,
實際上,位元幣的共識由所有節點的4個獨立過程相互作用而產生:
每個節點(挖礦節點)依據標準對每個交易進行獨立驗證
挖礦節點通過完成工作量證明,將交易記錄獨立打包進新區塊
每個節點獨立的對新區塊進行校驗並組裝進區塊鏈
每個節點對區塊鏈進行獨立選擇,在工作量證明機制下選擇累計工作量最大的區塊鏈
共識最終目的是保證位元幣不停的在工作量最大的區塊鏈上運轉,工作量最大的區塊鏈就是權威的公共總帳本。
第1 2 3步在位元幣如何挖礦-工作量證明一篇有提到過,下面著重講第4步。
先來乙個定義,把累計了最多難度的區塊鏈。在一般情況下,也是包含最多區塊的那個鏈稱為主鏈
每乙個(挖礦)節點總是選擇並嘗試延長主鏈。
當有兩名礦工在幾乎在相同的時間內,各自都算得了工作量證明解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其併入並延長區塊鏈。
當這個兩個區塊傳播時,一些節點首先收到#3458a, 一些節點首先收到#3458b,這兩個候選區塊(通常這兩個候選區塊會包含幾乎相同的交易)都是主鏈的延伸,分叉就會產生,這時分叉出有競爭關係的兩條鏈,如圖:
兩個塊都收到的節點,會把其中有更多工作量的一條會繼續作為主鏈,另一條作為備用鏈儲存(儲存是因為備用鏈將來可能會超過主鏈難度稱為新主鏈)。
收到#3458a的(挖礦)節點,會立刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受#3458b區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈(下面稱為b鏈)。
這時總會有一方搶先發現工作量證明解並將其傳播出去,假設以#3458b為父區塊的工作量證明首先解出,如圖:
當原本以#3458a為父區塊求解的節點在收到#3458b, #3459b之後,會立刻將b鏈作為主鏈(因為#3458a為頂點的鏈已經不是最長鏈了)繼續挖礦。
節點也有可能先收到#3459b,再收到#3458b,收到#3459b時,會被認為是「孤塊「(因為還找不到#3459b的父塊#3458b)儲存在孤塊池中,一旦收到父塊#3458b時,節點就會將孤塊從孤塊池中取出,並且連線到它的父區塊,讓它作為區塊鏈的一部分。位元幣將區塊間隔設計為10分鐘,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易確認更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,長的間隔會減少分叉數量,卻會導致更長的確認時間。
深入淺出區塊鏈 - 系統學習區塊鏈,打造最好的區塊鏈技術部落格
位元幣 位元幣中的共識協議
在位元幣系統中,hash指標有兩個用途 指向前乙個區塊和指向某筆交易。位元幣支付過程中,每筆交易都必須包含輸入和輸出。在交易時,首先會從區塊中驗證交易輸入,驗證通過後才會執行交易輸出。這一步可以防止 雙花 攻擊。區塊鏈是乙個去中心化的分布式賬本,既然是分布式,那就需要網路中的各個節點對賬本資訊達成共...
位元幣共識機制的思考
一 共識 在乙個所有參與者都認識並且信任 通過ca 驗證機構頒發的認證資料 的商業網路中,交易被校驗並進行提交到共享賬本中需要通過多種多樣的共識方式,包括以下 1 工作量證明 為了驗證該交易,驗證者需要獲得這個網路價值的一大部分。使得攻擊需要耗費很多的能力價值,這樣來避免攻擊。2 多項簽名 需要大多...
7 1 關於位元幣的共識
首先,讓我們看一下在位元幣問題上已達成的共識,它是位元幣執行的基礎。為使位元幣順暢執行,人們必須就以下三個問題達成共識 1.關於規則的共識。這裡所說的規則是指包括確保交易或區塊有效的機制,及位元幣執行時涉及的核心協議和資料格式等內容。人們需要就這些規則達成共識,這樣,位元幣系統中的所有參與者才能就發...