比特幣區(qū)塊鏈系統(tǒng)解決這兩個(gè)問題時(shí)有一個(gè)核心思想和一個(gè)基本假設(shè),核心思想是,讓每一次記賬權(quán)的獲取都需要付出一定的成本,使操縱記賬權(quán)所需付出的成本遠(yuǎn)高于可能獲得的利益,從而讓每個(gè)節(jié)點(diǎn)出于對(duì)自身利益最大化的考慮,自發(fā)、誠(chéng)實(shí)地遵守協(xié)議中預(yù)先設(shè)定的規(guī)則;假設(shè)則是,大多數(shù)節(jié)點(diǎn)們能夠理性判斷承擔(dān)成本和風(fēng)險(xiǎn)去做壞并不如遵守規(guī)則可獲得的經(jīng)濟(jì)效益大,所以區(qū)塊鏈上的所有節(jié)點(diǎn)中,不存在高達(dá)51%的壞節(jié)點(diǎn),無法顛覆現(xiàn)行的規(guī)則。
也就是大多數(shù)節(jié)點(diǎn)都是基于“獲得一次記賬權(quán)不容易,我需要真實(shí)客觀的記賬,跟在一個(gè)不存在做壞嫌疑的區(qū)塊后面,也讓我后面的區(qū)塊們認(rèn)可我的區(qū)塊,從而保證我的區(qū)塊在最長(zhǎng)的鏈條上延續(xù),也才能保證我創(chuàng)建區(qū)塊獲得的比特幣獎(jiǎng)勵(lì)有效”這樣的思想在履行記賬義務(wù)。那么即使有個(gè)別壞節(jié)點(diǎn)獲得了某次記賬權(quán)后沒有認(rèn)真履行記賬義務(wù),后面的好節(jié)點(diǎn)也會(huì)基于“相信大多數(shù)節(jié)點(diǎn)都是好節(jié)點(diǎn),好節(jié)點(diǎn)們都會(huì)支持我這個(gè)好節(jié)點(diǎn)而不是之前的壞節(jié)點(diǎn)”從而推翻上一個(gè)區(qū)塊建立新的區(qū)塊!
實(shí)際運(yùn)行中為記賬權(quán)獲取所設(shè)置的成本是,區(qū)塊記錄者需要通過大量數(shù)學(xué)運(yùn)算得到一個(gè)很難被算出來的“隨機(jī)數(shù)”(現(xiàn)在平均要進(jìn)行約2^ 32次不同隨機(jī)數(shù)的代入運(yùn)算才可能得到一個(gè)符合要求的隨機(jī)數(shù))!隨機(jī)數(shù)找到后,記賬者將填寫了隨機(jī)數(shù)的區(qū)塊廣播給其他節(jié)點(diǎn),其他節(jié)點(diǎn)收到后則迅速驗(yàn)證隨機(jī)數(shù)是否符合要求(隨機(jī)數(shù)很難算出來但很容易驗(yàn)證)以及該區(qū)塊記錄的交易信息是否存在重復(fù)支付等。如果驗(yàn)證通過則判斷其獲得當(dāng)前區(qū)塊的記賬權(quán),那么就會(huì)停止自己這一輪的運(yùn)算,轉(zhuǎn)為爭(zhēng)取下一個(gè)區(qū)塊的記賬權(quán)。也可能不很幸運(yùn)的,兩個(gè)距離較遠(yuǎn)的區(qū)塊幾乎同時(shí)算出隨機(jī)數(shù),并且都已經(jīng)得到了部分節(jié)點(diǎn)的驗(yàn)證認(rèn)可——距離自己較近的節(jié)點(diǎn)會(huì)先聽到自己的廣播,那么這兩個(gè)區(qū)塊哪一個(gè)最終成功進(jìn)入?yún)^(qū)塊鏈,則取決于之后獲得記賬權(quán)的區(qū)塊選擇了在哪個(gè)區(qū)塊后面延續(xù)自己的區(qū)塊,沒有被選中的那個(gè)區(qū)塊則成為一個(gè)廢棄的孤塊。
這是一種工作量證明的共識(shí)機(jī)制,即通過承擔(dān)一定的算力成本(電費(fèi)和服務(wù)器費(fèi)用等),完成了大量的計(jì)算工作而通過驗(yàn)證獲取記賬權(quán)。其中隱含的條件是,某一個(gè)節(jié)點(diǎn)成功完成運(yùn)算獲得記賬權(quán)的概率與其服務(wù)器的運(yùn)算能力占全網(wǎng)絡(luò)運(yùn)算能力的比例正相關(guān),這也就解釋了為什么,要想操縱記賬權(quán)是需要付出難以想象的高昂成本的。
4. 要是之前記錄的交易找不到了或者被篡改了怎么辦?
現(xiàn)行中心化系統(tǒng)中,一般來說,中心單位所記錄的所有用戶的賬戶信息和歷史交易信息都保存在他們進(jìn)行了強(qiáng)安全防護(hù)的服務(wù)器上,并且進(jìn)行了備份,以保證不丟失不損壞。那么區(qū)塊鏈上記錄的信息如何來實(shí)現(xiàn)這些的?
之前我們提到的,其他節(jié)點(diǎn)驗(yàn)證某個(gè)區(qū)塊之后則表示認(rèn)可——同意跟在這個(gè)區(qū)塊后面延續(xù)自己的下一個(gè)區(qū)塊(可以叫做這個(gè)區(qū)塊成為下一個(gè)區(qū)塊的父區(qū)塊),這里具體的操作涉及到一個(gè)叫做哈希(Hash)算法的概念。
哈希算法,是一種能將任意長(zhǎng)短的字符信息輕松轉(zhuǎn)化成一段固定長(zhǎng)度的字符串(哈希值)的算法,哈希算法的主要特點(diǎn)是:1. 原始信息與輸出的哈希值具有唯一的匹配關(guān)系,改動(dòng)原始信息中哪怕一個(gè)標(biāo)點(diǎn)其哈希值都會(huì)產(chǎn)生明顯的變化;2. 無法憑借哈希值破解其原始信息;3. 在人類現(xiàn)有的計(jì)算能力范圍內(nèi),不存在重復(fù)的哈希值。