官术网_书友最值得收藏!

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)定安全的。

主站蜘蛛池模板: 迁西县| 涪陵区| 云霄县| 富源县| 高要市| 正阳县| 饶河县| 恩平市| 丰顺县| 广昌县| 星子县| 新民市| 清水河县| 灵璧县| 亳州市| 汾阳市| 太原市| 池州市| 师宗县| 洛扎县| 闽清县| 景德镇市| 府谷县| 乌鲁木齐县| 云安县| 兴城市| 徐汇区| 阳信县| 隆安县| 全南县| 栾川县| 鹿泉市| 深圳市| 常宁市| 汶上县| 嘉善县| 大名县| 兴仁县| 日照市| 朝阳区| 穆棱市|