- 區(qū)塊鏈應(yīng)用開發(fā)指南:業(yè)務(wù)場景剖析與實戰(zhàn)
- 熊麗兵 董一凡等
- 915字
- 2022-07-28 20:17:55
1.15.2 共識算法
正如前面所說,比特幣網(wǎng)絡(luò)中的所有節(jié)點都會接收到一組轉(zhuǎn)賬記錄(一個區(qū)塊),然后把這個區(qū)塊更新到本地的賬本記錄中。這里就有一個問題,由于各節(jié)點處于分布式網(wǎng)絡(luò)中,有可能不同的節(jié)點收到不同的記錄,如果節(jié)點都隨意增加記錄,那么整個比特幣網(wǎng)絡(luò)中的記錄就無法保持一致。為了保持記錄的一致,那么必須確認(rèn)哪個區(qū)塊被優(yōu)先寫入,也就是需要以某一個節(jié)點的操作為準(zhǔn)。但如果人為規(guī)定以某個節(jié)點為準(zhǔn),就意味著這個節(jié)點比其他節(jié)點更權(quán)威,相當(dāng)于變成了一個中心節(jié)點,那么去中心化的優(yōu)勢就蕩然無存。區(qū)塊鏈的分布式共識算法就是設(shè)計用來解決這個問題。共識算法能夠讓區(qū)塊鏈中的節(jié)點認(rèn)同某一個節(jié)點的記錄,同時這個認(rèn)同并不是固定某一個節(jié)點,而是區(qū)塊鏈中的所有節(jié)點都有可能獲得這個權(quán)利。
比特幣使用的共識算法叫作PoW共識機(jī)制,全稱是Proof of Word,中文翻譯為“工作量證明”。PoW機(jī)制是1997年由亞當(dāng)·巴克(Adam Back)發(fā)明的,主要是為了解決垃圾郵件泛濫的問題。主要思路是郵件接收者不是任意接受別人的郵件,在一次有效的郵件發(fā)送接收過程中,發(fā)送者需要計算一個難題,然后把這個難題的答案同時發(fā)送給接收者,接受者先驗證這個答案是否有效,有效的話才接收郵件。
可以看出,PoW中最重要的就是計算一個難題。這個難題需要具有一個特點,那就是計算出這個難題的答案比較困難,而驗證這個難題卻比較簡單。因為如果驗證和計算一樣復(fù)雜的話,那發(fā)送方和接收方的成本就是一致的。從經(jīng)濟(jì)上來說,成本一致也就很難實現(xiàn)防止惡意攻擊的目的。
關(guān)于計算困難但驗證容易的問題,我們可以舉一個現(xiàn)實中的例子。比如323由哪兩個數(shù)(要求每個數(shù)都大于1)相乘得到?這個問題的計算就比較復(fù)雜,必須一個數(shù)字一個數(shù)字地去試,相反,驗證這個問題很簡單,直接把對方給的兩個數(shù)字相乘,然后看結(jié)果是不是323就可以,一次乘法就出結(jié)果。(注:答案是19和17,并且答案唯一。)
比特幣就使用了這種機(jī)制,所有節(jié)點要記錄一個新的區(qū)塊,需要計算一個非常復(fù)雜的問題,先算出答案的節(jié)點就獲得了記錄新區(qū)塊的權(quán)力,其他節(jié)點都會使用這個節(jié)點的記錄。雖然理論上也有可能其他的節(jié)點在同一時間計算出答案,但在實際運行中,這個概率可以小到忽略不計,事實上比特幣運行這么多年,證明了這個機(jī)制是非常穩(wěn)定安全的。
- Building Computer Vision Projects with OpenCV 4 and C++
- 數(shù)據(jù)庫技術(shù)與應(yīng)用教程(Access)
- Unity 5.x Game AI Programming Cookbook
- 計算機(jī)信息技術(shù)基礎(chǔ)實驗與習(xí)題
- 文本數(shù)據(jù)挖掘:基于R語言
- 深度剖析Hadoop HDFS
- Ceph源碼分析
- 企業(yè)級容器云架構(gòu)開發(fā)指南
- IPython Interactive Computing and Visualization Cookbook(Second Edition)
- 探索新型智庫發(fā)展之路:藍(lán)迪國際智庫報告·2015(上冊)
- 數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)實例
- SAS金融數(shù)據(jù)挖掘與建模:系統(tǒng)方法與案例解析
- 大數(shù)據(jù)技術(shù)原理與應(yīng)用:概念、存儲、處理、分析與應(yīng)用
- 區(qū)塊鏈+:落地場景與應(yīng)用實戰(zhàn)
- 機(jī)器學(xué)習(xí):實用案例解析