日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

比特币如何达成共识 - 最长链的选择

發(fā)布時(shí)間:2024/9/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 比特币如何达成共识 - 最长链的选择 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

本文首發(fā)于深入淺出區(qū)塊鏈社區(qū) 原文鏈接:比特幣如何達(dá)成共識(shí) - 最長(zhǎng)鏈的選擇原文已更新,請(qǐng)讀者前往原文閱讀

比特幣沒(méi)有中心機(jī)構(gòu),幾乎所有的完整節(jié)點(diǎn)都有一份公共總帳本,那么大家如何達(dá)成共識(shí):確認(rèn)哪一份才是公認(rèn)權(quán)威的總賬本呢?

為什么要遵守協(xié)議

這其實(shí)是一個(gè)經(jīng)濟(jì)問(wèn)題,在經(jīng)濟(jì)活動(dòng)中的每個(gè)人都是自私自利的,追求的是利益的最大化,一個(gè)節(jié)點(diǎn)工作量只有在其他的節(jié)點(diǎn)認(rèn)同其是有效的(打包的新區(qū)塊,其他的節(jié)點(diǎn)只有驗(yàn)證通過(guò)才會(huì)加入到區(qū)塊鏈中,并在網(wǎng)絡(luò)上傳播),才能夠過(guò)得收益, 而只有遵守規(guī)則才會(huì)得到其他的節(jié)點(diǎn)認(rèn)同。 因此,基于逐利,節(jié)點(diǎn)就會(huì)自發(fā)的遵守協(xié)議。共識(shí)就是數(shù)以萬(wàn)計(jì)的獨(dú)立節(jié)點(diǎn)遵守了簡(jiǎn)單的規(guī)則(通過(guò)異步交互)自發(fā)形成的。

共識(shí):共同遵守的協(xié)議規(guī)范

去中心化共識(shí)

在工作量證明一篇,我們了解通過(guò)工作量證明來(lái)競(jìng)爭(zhēng)記賬,權(quán)威的總帳本是怎么達(dá)到共識(shí)的,沒(méi)有完全說(shuō)清楚,今天補(bǔ)上, 實(shí)際上,比特幣的共識(shí)由所有節(jié)點(diǎn)的4個(gè)獨(dú)立過(guò)程相互作用而產(chǎn)生:

  • 每個(gè)節(jié)點(diǎn)(挖礦節(jié)點(diǎn))依據(jù)標(biāo)準(zhǔn)對(duì)每個(gè)交易進(jìn)行獨(dú)立驗(yàn)證
  • 挖礦節(jié)點(diǎn)通過(guò)完成工作量證明,將交易記錄獨(dú)立打包進(jìn)新區(qū)塊
  • 每個(gè)節(jié)點(diǎn)獨(dú)立的對(duì)新區(qū)塊進(jìn)行校驗(yàn)并組裝進(jìn)區(qū)塊鏈
  • 每個(gè)節(jié)點(diǎn)對(duì)區(qū)塊鏈進(jìn)行獨(dú)立選擇,在工作量證明機(jī)制下選擇累計(jì)工作量最大的區(qū)塊鏈
  • 共識(shí)最終目的是保證比特幣不停的在工作量最大的區(qū)塊鏈上運(yùn)轉(zhuǎn),工作量最大的區(qū)塊鏈就是權(quán)威的公共總帳本。

    第1 2 3步在比特幣如何挖礦-工作量證明一篇有提到過(guò),下面著重講第4步。

    最長(zhǎng)鏈的選擇

    先來(lái)一個(gè)定義,把累計(jì)了最多難度的區(qū)塊鏈。在一般情況下,也是包含最多區(qū)塊的那個(gè)鏈稱(chēng)為主鏈 每一個(gè)(挖礦)節(jié)點(diǎn)總是選擇并嘗試延長(zhǎng)主鏈。

    分叉

    當(dāng)有兩名礦工在幾乎在相同的時(shí)間內(nèi),各自都算得了工作量證明解,便立即傳播自己的“獲勝”區(qū)塊到網(wǎng)絡(luò)中,先是傳播給鄰近的節(jié)點(diǎn)而后傳播到整個(gè)網(wǎng)絡(luò)。每個(gè)收到有效區(qū)塊的節(jié)點(diǎn)都會(huì)將其并入并延長(zhǎng)區(qū)塊鏈。 當(dāng)這個(gè)兩個(gè)區(qū)塊傳播時(shí),一些節(jié)點(diǎn)首先收到#3458A, 一些節(jié)點(diǎn)首先收到#3458B,這兩個(gè)候選區(qū)塊(通常這兩個(gè)候選區(qū)塊會(huì)包含幾乎相同的交易)都是主鏈的延伸,分叉就會(huì)產(chǎn)生,這時(shí)分叉出有競(jìng)爭(zhēng)關(guān)系的兩條鏈,如圖: 兩個(gè)塊都收到的節(jié)點(diǎn),會(huì)把其中有更多工作量的一條會(huì)繼續(xù)作為主鏈,另一條作為備用鏈保存(保存是因?yàn)閭溆面湆?lái)可能會(huì)超過(guò)主鏈難度稱(chēng)為新主鏈)。

    分叉解決

    收到#3458A的(挖礦)節(jié)點(diǎn),會(huì)立刻以這個(gè)區(qū)塊為父區(qū)塊來(lái)產(chǎn)生新的候選區(qū)塊,并嘗試尋找這個(gè)候選區(qū)塊的工作量證明解。同樣地,接受#3458B區(qū)塊的節(jié)點(diǎn)會(huì)以這個(gè)區(qū)塊為鏈的頂點(diǎn)開(kāi)始生成新塊,延長(zhǎng)這個(gè)鏈(下面稱(chēng)為B鏈)。 這時(shí)總會(huì)有一方搶先發(fā)現(xiàn)工作量證明解并將其傳播出去,假設(shè)以#3458B為父區(qū)塊的工作量證明首先解出,如圖:

    當(dāng)原本以#3458A為父區(qū)塊求解的節(jié)點(diǎn)在收到#3458B, #3459B之后,會(huì)立刻將B鏈作為主鏈(因?yàn)?3458A為頂點(diǎn)的鏈已經(jīng)不是最長(zhǎng)鏈了)繼續(xù)挖礦。

    節(jié)點(diǎn)也有可能先收到#3459B,再收到#3458B,收到#3459B時(shí),會(huì)被認(rèn)為是“孤塊“(因?yàn)檫€找不到#3459B的父塊#3458B)保存在孤塊池中,一旦收到父塊#3458B時(shí),節(jié)點(diǎn)就會(huì)將孤塊從孤塊池中取出,并且連接到它的父區(qū)塊,讓它作為區(qū)塊鏈的一部分。

    比特幣將區(qū)塊間隔設(shè)計(jì)為10分鐘,是在更快速的交易確認(rèn)和更低的分叉概率間作出的妥協(xié)。更短的區(qū)塊產(chǎn)生間隔會(huì)讓交易確認(rèn)更快地完成,也會(huì)導(dǎo)致更加頻繁地區(qū)塊鏈分叉。與之相對(duì)地,長(zhǎng)的間隔會(huì)減少分叉數(shù)量,卻會(huì)導(dǎo)致更長(zhǎng)的確認(rèn)時(shí)間。 ? 深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。

    ? 我的知識(shí)星球為各位解答區(qū)塊鏈技術(shù)問(wèn)題,歡迎加入討論。

    ? 關(guān)注公眾號(hào)“深入淺出區(qū)塊鏈技術(shù)”第一時(shí)間獲取區(qū)塊鏈技術(shù)信息。

    轉(zhuǎn)載于:https://my.oschina.net/u/3724910/blog/1814069

    總結(jié)

    以上是生活随笔為你收集整理的比特币如何达成共识 - 最长链的选择的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。