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

1.2 區(qū)塊鏈運行邏輯

從本質(zhì)上講,區(qū)塊鏈是一個通過自身分布式節(jié)點進行數(shù)據(jù)存儲、驗證、傳遞和交流的網(wǎng)絡(luò)技術(shù)方案,任何人在任何時候都可以采用相同的技術(shù)標準生成信息并進行延伸。如果想對區(qū)塊鏈有深入了解,首先要知道其運行邏輯,包括拜占庭將軍問題、工作機制等。

1.2.1 拜占庭將軍問題

區(qū)塊鏈是一種分布式數(shù)據(jù)庫,只要提到分布式,就會出現(xiàn)一個繞不開也躲不掉的問題——“拜占庭將軍問題”。這個問題由著名的計算機科學(xué)家萊斯利·蘭伯特提出,廣泛存在于點對點通信中。為了讓大家更好地理解“拜占庭將軍問題”,萊斯利·蘭伯特還編出了一個以拜占庭帝國時期為背景的故事,內(nèi)容如下:

拜占庭帝國時期突然出現(xiàn)了一個像“怪獸”一樣的敵人,于是,拜占庭國王就派出了9支軍隊與這個敵人對抗,并采用包圍戰(zhàn)術(shù)以提高勝利的概率,如圖1-5所示。

圖1-5 拜占庭帝國的包圍戰(zhàn)術(shù)

通過上圖可以看出,拜占庭帝國的9支軍隊分散在敵人的四周。不過,敵人雖然比較小,但還是可以憑一己之力抵抗4支軍隊的力量。也就是說,任何1支軍隊都無法單獨打敗敵人。在這種情況下,要想真正打敗敵人,就必須有5支以上的軍隊達成進攻共識。與此同時,還要有相應(yīng)的通信兵在各個軍隊間傳遞由將軍下達的防守或撤退的命令。因為9個軍隊的將軍不能聚在一起,只要出現(xiàn)這種現(xiàn)象,敵人就很可能會逃跑。

但現(xiàn)在的問題是,這些將軍無法確定他們中是不是有背叛者,一旦真的有背叛者,那這個背叛者就會向其他將軍傳遞假的命令,從而促成一個不是所有將軍都認可的行動。例如,當將軍們都希望撤退時卻促成進攻行動。

那么,各將軍應(yīng)該如何達成共識,從而順利打敗敵人呢?這便是困擾了計算機科學(xué)家們很多年的“拜占庭將軍問題”。后來,計算機科學(xué)家們發(fā)現(xiàn)有兩種辦法可以解決這個問題:一種是口頭解決;另一種是書面解決。

我們可以從這兩種解決辦法中得出結(jié)論:當背叛者的數(shù)量少于三分之一時,各將軍能夠達成共識。假設(shè)9個將軍中有1個背叛者,那這個背叛者就可能給4個希望防守的將軍傳遞防守命令,而給另外4個希望撤離的將軍傳遞進攻命令。

不過,因為其他8個將軍都是忠誠的,所以這8個將軍在互相通信后還是能夠達成共識的。也就是說,1個背叛者的干擾行為不會對最終的共識產(chǎn)生影響。當然,如果有2個背叛者,那么結(jié)果也是一樣的。

假設(shè)有3個背叛者,這3個背叛者一面給希望防守的將軍傳遞防守命令,一面給希望撤離的將軍傳遞撤離命令,當3個希望防守的忠誠將軍與3個希望撤離的忠誠將軍通信后就會發(fā)現(xiàn),分別有6個將軍希望防守,6個將軍希望撤離。這也就意味著,各將軍之間沒有達成共識,無法做出一致的防守或撤退的決定。當然,如果有3個以上背叛者,那么結(jié)果也是一樣的。

由此可知,當背叛者的數(shù)量多于三分之一時,無論是口頭解決,還是書面解決都將無濟于事。那么,“拜占庭將軍問題”究竟應(yīng)該怎樣解決呢?區(qū)塊鏈似乎為這個問題提供了一些比較不錯的辦法,主要包括工作量證明、權(quán)益證明、委任權(quán)益證明等。

下面以工作量證明為例進行詳細說明。工作量證明是一份用來確認已經(jīng)做過一定量工作的證明。如果將其放在區(qū)塊的生成過程中就變成我們俗稱的“挖礦”。如果現(xiàn)在已經(jīng)有礦工挖出了第1000個區(qū)塊,但有的礦工還想挖第1001個區(qū)塊,那與其他區(qū)塊一樣,這第1001個區(qū)塊也是由區(qū)塊頭和區(qū)塊體構(gòu)成的,可以用來儲存數(shù)據(jù)。

礦工通過改變區(qū)塊頭中的隨機數(shù),借助哈希函數(shù)計算輸出一組哈希值。當有效的哈希值出現(xiàn)前,數(shù)十億個無效的哈希值會被計算出來,整個過程需要花費大量的算力。計算出有效的哈希值的礦工可以搶到記賬權(quán)并獲得獎勵,這便是工作量證明,如圖1-6所示。

圖1-6 “礦工”的“挖礦”過程

對應(yīng)到上述拜占庭帝國的故事中,不僅通信兵傳遞命令需要時間,各將軍對收到的命令進行驗證和判斷同樣需要時間。在這個過程中,9個將軍可以相互交流、溝通,當某個將軍收集到正確且有效的命令并傳遞給其他將軍驗證后,這個將軍就相當于做出了貢獻,也就可以獲得相應(yīng)的獎勵。

1.2.2 區(qū)塊鏈的工作機制

隨著時代的進步,大數(shù)據(jù)、人工智能、無人駕駛、物聯(lián)網(wǎng)、4D打印、5G、基因工程、量子工程等技術(shù)開始融合。這些技術(shù)的融合少不了區(qū)塊鏈的參與,現(xiàn)在也有越來越多的科技界人士已經(jīng)認識到區(qū)塊鏈的巨大價值。與其他技術(shù)相比,區(qū)塊鏈的工作機制非常有特點。

區(qū)塊鏈的工作機制主要分三步。第一步是賬本公開,我們把區(qū)塊鏈假設(shè)成一個封閉的區(qū)域,這個區(qū)域中的每戶人家都是一個節(jié)點,每個節(jié)點都擁有記載著這個區(qū)域每一筆交易的賬本,而且這個賬本是公開的。只要這個賬本的初始狀態(tài)是確定的,并且每一筆交易的記錄都是可靠而有序的,當前每個人持有的錢都是可以推算出來的。

但是,參與的用戶必然不想讓區(qū)域內(nèi)所有人知道自己到底有多少錢。因此,在區(qū)塊鏈中,交易是公開的,但參與的每個節(jié)點都是匿名的。節(jié)點之間不使用真實身份進行交易,而使用自己的唯一ID。當兩個節(jié)點發(fā)生交易后,交易的報文中會顯示此ID的數(shù)字簽名,以確保交易是在雙方之間展開的。

第二步是身份簽名。假設(shè)老李和老王是區(qū)塊鏈中的兩個節(jié)點,老李的ID名為BLOCK,老王的ID名為CHAIN。如果老李要向老王支付1比特幣,那么老李首先要詢問老王的ID,這時區(qū)塊鏈中就會產(chǎn)生一個交易:BLOCK要向CHAIN支付1比特幣,老李要寫一張交易單給老王。

在區(qū)塊鏈中,為了追溯資金的來源,交易單上除了記載付款和收款信息,還要寫上比特幣的來源,如這個比特幣來源于賬本第一頁。交易單寫完后,老李還要加上自己的簽名,即私鑰,以便老王驗證比特幣的來源。老王收到簽名后,會有老李的ID對其進行簽名驗證,以證明交易單是老李發(fā)的,如圖1-7所示。

圖1-7 老李與老王的交易過程

第三步是礦工挖礦。在一個中心化系統(tǒng)中,老李是否有足夠的錢支付給老王,這個問題要通過第三方中介機構(gòu)(如銀行)確定。而在區(qū)塊鏈系統(tǒng)中,確定這個問題的是礦工組織。當老李給老王發(fā)送交易單時,他們的交易信息會廣播給礦工組織,而礦工組織的每個礦工小組在收到交易信息后會把交易補充到賬本中。

礦工小組的具體工作就是生成賬單,如圖1-8所示。當?shù)V工小組收到老李和老王的交易信息時,會在交易清單上記錄這個交易;接著,礦工小組的成員找到當前賬本的最后一頁,將編號抄寫在“上一賬單的編號”一欄中;隨后,礦工小組的成員會把交易清單、上一賬單的編號及隨機數(shù)通過哈希運算生成一個本賬單編號。由于交易清單和上一賬單的編號是不能改變的,因此,礦工小組必須不斷變化隨機數(shù)以生成符合規(guī)定的賬單編號。

圖1-8 礦工小組生成賬單

此外,區(qū)塊鏈會自動調(diào)整賬單編號規(guī)則,使其在10分鐘之內(nèi)生成。礦工小組得到一張賬本紙(區(qū)塊)后,必須馬上向其他小組確認自己的工作成果才能得到獎勵。

其他小組在接到賬本紙后必須立刻停下挖礦工作對賬本進行確認:首先要將送來的賬本紙放入編碼生成器中,確認賬本編號是否有效;然后將賬本紙上的上一賬單的編號和目前保存的有效賬本的最后一頁進行比對;最后要確認當前每筆交易的付款人有足夠的余額支付這筆錢,以保證交易的有效性。

當完成了所有驗證并通過后,礦工小組就認可了其他小組發(fā)來的賬本紙有效。其他小組確認該區(qū)塊有效后,這個區(qū)塊就會進入主賬本,后面的挖礦工作就會再基于這個更新后的賬本進行。礦工小組如果收到其他小組送來的賬本紙上的上一賬單的編號是自己以前送去的賬單,就表示已經(jīng)有小組是基于他們交完賬單后新生成的主賬本工作了,這就表示他們的工作被其他小組認可了,而老李和老王看到大多數(shù)小組認可,就認為這個交易已經(jīng)成功。

總結(jié)一下,區(qū)塊鏈的工作機制是這樣的:A利用自己的私鑰對比特幣的來源和下一位所有者B簽署一個數(shù)字簽名,并將簽名附在交易單后面。這個交易單傳播到全網(wǎng),B和礦工小組都會收到這張交易單;礦工小組通過哈希運算解出對應(yīng)的隨機數(shù),生成符合條件的哈希值,然后爭取創(chuàng)建新區(qū)塊并獲得比特幣獎勵。

區(qū)塊鏈中的節(jié)點會向全網(wǎng)通告區(qū)塊記錄的蓋有時間戳的交易,并由其他節(jié)點核對。當其他節(jié)點核對區(qū)塊并確認無誤后,就會將該區(qū)塊認定為合法,然后爭取下一個區(qū)塊,這樣就形成了一個合法記賬的區(qū)塊鏈。

1.2.3 公有鏈VS私有鏈VS聯(lián)盟鏈

區(qū)塊鏈依據(jù)其節(jié)點的分布情況可以被劃分為公有鏈(public blockchain)、聯(lián)盟鏈(consortium blockchain)、私有鏈(private blockchain)三種類型。

(1)公有鏈的節(jié)點只需要遵守一個共同的協(xié)議便可獲得區(qū)塊鏈上的所有數(shù)據(jù),而且不需要任何的身份驗證。與聯(lián)盟鏈和私有鏈相比,公有鏈的節(jié)點被某一主體控制的難度最大。

(2)聯(lián)盟鏈主要面向某些特定的組織機構(gòu),正是因為如此,其運行只允許一些特定的節(jié)點與區(qū)塊鏈連接,這也就不可避免地使區(qū)塊鏈產(chǎn)生了一個潛在中心。

以數(shù)字證書認證節(jié)點的區(qū)塊鏈的潛在中心是CA中心——證書授權(quán)中心(Certificate Authority);以IP地址認證節(jié)點的區(qū)塊鏈的潛在中心是網(wǎng)絡(luò)管理員。正如“擒賊先擒王”的道理,只要控制區(qū)塊鏈的潛在中心,就有可能控制整個區(qū)塊鏈。相比于公有鏈,聯(lián)盟鏈被控制的難度要低得多,中心化程度也沒有那么高。

(3)私有鏈的應(yīng)用場景通常在企業(yè)的內(nèi)部。從名稱上看,私有鏈其實并不難理解,其特點之一就在于“私”——私密性。

私有鏈只在內(nèi)部運行而不對外開放,而且只有少數(shù)用戶可以使用,所有賬本記錄和認證的訪問權(quán)限也只由某一機構(gòu)組織單獨控制。因此,相較于公有鏈和聯(lián)盟鏈,私有鏈不具有明顯的去中心化特征,只是擁有一個天然的中心化基因。

不同于公有鏈的廣泛流行和使用,業(yè)界對私有鏈的存在價值具有頗多爭議。有人認為私有鏈并無任何存在意義,因為它僅僅是一個分布式的數(shù)據(jù)庫,容易被主體控制;也有人認為只要把私有鏈的應(yīng)用建立在共識機制的基礎(chǔ)上,它還是具有存在的意義的。

主站蜘蛛池模板: 邳州市| 襄樊市| 镇雄县| 天门市| 苍梧县| 乌拉特中旗| 沁水县| 溆浦县| 郁南县| 景洪市| 游戏| 德惠市| 安远县| 尉氏县| 临颍县| 沁阳市| 隆回县| 滕州市| 安泽县| 栾城县| 离岛区| 蓝田县| 雷山县| 北碚区| 苏尼特右旗| 拜城县| 新兴县| 台州市| 齐齐哈尔市| 水富县| 留坝县| 九江县| 汉源县| 通榆县| 平和县| 眉山市| 化隆| 原阳县| 黄陵县| 麻阳| 运城市|