国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

虛擬加密貨幣與區(qū)塊鏈共識機制

2018-12-22 10:55:14孫一蓬
電腦知識與技術(shù) 2018年32期

孫一蓬

摘要:區(qū)塊鏈(blockchain)最初作為以比特幣為代表的虛擬加密貨幣的數(shù)字賬本核心技術(shù)而出現(xiàn)。近些年來,隨著各類虛擬加密貨幣的興起,區(qū)塊鏈的概念也隨之逐漸走入各行各業(yè)。因為區(qū)塊鏈具有的某些特性,如今不僅在金融、物流、醫(yī)療等諸多領(lǐng)域有引入?yún)^(qū)塊鏈技術(shù),還出現(xiàn)了許多所謂的區(qū)塊鏈理財項目。與此同時大量用戶并不了解區(qū)塊鏈和這些虛擬加密貨幣究竟是什么關(guān)系,該文將介紹虛擬加密貨幣為引子,介紹其和工作量證明機制、股權(quán)證明機制與實用拜占庭容錯算法等區(qū)塊鏈共識機制的關(guān)系。

關(guān)鍵詞: 區(qū)塊鏈; 虛擬加密貨幣; 共識機制; 工作量證明; 股權(quán)證明; 實用拜占庭容錯算法

中圖分類號:TP393 文獻標(biāo)識碼:A 文章編號:1009-3044(2018)32-0046-03

區(qū)塊鏈?zhǔn)且环N構(gòu)建去中心化的分布式存儲的對等可信數(shù)據(jù)網(wǎng)絡(luò)技術(shù),通過區(qū)塊鏈技術(shù)可以建立一套可信的交易基礎(chǔ)平臺。其去中心化、去信任、數(shù)據(jù)防篡改、節(jié)點匿名等特點,為構(gòu)建可信節(jié)點、點對點數(shù)據(jù)安全共享提供了技術(shù)基礎(chǔ)[1]。而以比特幣為代表的虛擬加密貨幣,則是構(gòu)建區(qū)塊鏈網(wǎng)絡(luò)的核心。

1 區(qū)塊鏈和數(shù)字加密貨幣

區(qū)塊鏈沒有一個中心管理節(jié)點對全網(wǎng)數(shù)據(jù)進行管理,所有參與共識算法的節(jié)點自發(fā)收集系統(tǒng)內(nèi)網(wǎng)絡(luò)廣播的交易數(shù)據(jù),并進行競爭記賬,再分布式存儲在系統(tǒng)中的每一個節(jié)點中。在這一過程中,共識算法是協(xié)調(diào)全網(wǎng)中所有節(jié)點的數(shù)據(jù)一致性的算法協(xié)議,區(qū)塊鏈中的各個節(jié)點按照該算法協(xié)議對參與競爭計算的節(jié)點發(fā)出的數(shù)據(jù)進行驗證確認(rèn),當(dāng)?shù)玫酱蟛糠止?jié)點認(rèn)可后,該數(shù)據(jù)才算真實有效的數(shù)據(jù)。只有經(jīng)過確認(rèn)之后的有效數(shù)據(jù)才能寫入到區(qū)塊鏈的每一個區(qū)塊中,形成連續(xù)的不可篡改的數(shù)據(jù)塊鏈條[2]。

而現(xiàn)有的各類虛擬加密貨幣,則是完成整套共識機制算法的重要核心工具。以比特幣為例,整個比特幣系統(tǒng)中加密存儲的數(shù)據(jù)就是從第一個比特幣區(qū)塊生成開始的全部比特幣數(shù)據(jù)以及交易記錄。所謂的“挖礦”則是競爭一段時間內(nèi)(通常是10分鐘之內(nèi))所有比特幣交易記錄的記賬權(quán),獲得記賬權(quán)的節(jié)點能夠生成區(qū)塊鏈的新數(shù)據(jù)區(qū)塊,并獲得該新生區(qū)塊附帶生成的一筆比特幣。

實際上,區(qū)塊鏈的共識機制算法不僅僅包括虛擬加密貨幣挖礦一種,但是不管是哪種區(qū)塊鏈共識算法,其所面臨的共同問題是:如何設(shè)計一個能夠在有不信任參與節(jié)點故意作亂的情況下,使正常的交易數(shù)據(jù)依舊能夠征得參與共識計算的大多數(shù)的節(jié)點驗證通過,并將數(shù)據(jù)按特定結(jié)構(gòu)分布式地存儲于區(qū)塊鏈系統(tǒng)下的各個有效節(jié)點中。目前,主要的區(qū)塊鏈共識機制算法由工作量證明機制,股權(quán)證明機制和拜占庭容錯算法以及它們的各種衍生算法來組成。

2 工作量證明機制

工作量證明(Proof of Work,簡稱PoW)機制,該算法主要特征就是要求每個客戶端節(jié)點進行一定量的有一定難度的計算,爭取搶在其他節(jié)點之前得出一個正確結(jié)果,發(fā)送給其他節(jié)點進行驗證,而驗證方則很容易檢查發(fā)送方結(jié)果的正確性,率先得到正確結(jié)果并被其他節(jié)點檢查通過的客戶端節(jié)點,就能獲得該次記賬權(quán)。

PoW算法的思路就是讓發(fā)起者消耗一定的算力,耗費一定的經(jīng)濟資源,從而大大提升了攻擊所需的開銷,避免服務(wù)的濫用和攻擊。顯而易見,為了增加自己獲得記賬權(quán)的概率,就必須加大自己的節(jié)點的計算能力,整個系統(tǒng)在這種相互刺激之下會不斷地增加計算能力,這一方面加大了整套系統(tǒng)的攻擊難度,另一方面則浪費了大量的計算資源。

(1)系統(tǒng)定期檢查之前一段時間之內(nèi),每個區(qū)塊獲得共識的時間,以確定下一段時間的區(qū)塊生成計算難度值。具體表現(xiàn)為,系統(tǒng)將決定之后一段時間之內(nèi)生成的區(qū)塊,整個區(qū)塊數(shù)據(jù)進行SHA256計算后的最終結(jié)果,有至少N個前導(dǎo)數(shù)0[3]。

(2)每個參與競爭記賬的節(jié)點,都收集上個區(qū)塊產(chǎn)生的這段時間里,整個系統(tǒng)的網(wǎng)絡(luò)中廣播的虛擬加密貨幣的交易信息,并按照一定的存儲結(jié)構(gòu)(如Merkle樹結(jié)構(gòu))存入自己的預(yù)生成的區(qū)塊中。

(3)參與競爭的節(jié)點嘗試尋找出一個隨機數(shù),使得包含該隨機數(shù)的預(yù)生成區(qū)塊,在進行SHA256計算后所得到的哈希值,符合開頭有N個前導(dǎo)數(shù)0的特征。

(4)率先尋找到合適隨機數(shù)的節(jié)點將自己的區(qū)塊在區(qū)塊鏈網(wǎng)絡(luò)中廣播,其他節(jié)點收到記賬請求后就會驗證該請求的合法性。若合法則保存下來作為新的區(qū)塊,并開始進行下個區(qū)塊的競爭計算。而競爭成功的節(jié)點則獲得該新生成區(qū)塊所有的虛擬加密貨幣。

PoW算法的流程如上圖所示,在PoW算法的體系中,每個參與競爭的節(jié)點的計算能力就是整個區(qū)塊鏈共識機制算法乃至于整個虛擬加密貨幣系統(tǒng)的安全性的核心保障。如果有人想要擅自篡改系統(tǒng)內(nèi)的數(shù)據(jù),他必須獲得壓倒正確節(jié)點的計算能力,才能強行將自己修改過的區(qū)塊放入?yún)^(qū)塊鏈中。因此產(chǎn)生了51%攻擊理論,即攻擊者必須獲得整個系統(tǒng)至少51%的運算能力才有可能攻占新生成的區(qū)塊數(shù)據(jù),并強制性讓整個系統(tǒng)接受自己的區(qū)塊才是“合法”區(qū)塊[3]。而大型的區(qū)塊鏈網(wǎng)絡(luò)通常由大量的高性能計算節(jié)點組成,以比特幣為例,目前整個比特幣網(wǎng)絡(luò)的計算能力已經(jīng)超過了一個國家的運算能力,想要獲得至少比特幣網(wǎng)絡(luò)一半的計算性能,這遠(yuǎn)遠(yuǎn)超過了個人和一般組織的能力。

與此同時,入侵者想要修改的數(shù)據(jù)很可能并不是存在正在生成的新區(qū)塊中的新數(shù)據(jù),而是想要修改之前區(qū)塊中存儲的數(shù)據(jù)。在這種情況下,因為區(qū)塊鏈每個區(qū)塊生成后不得對原數(shù)據(jù)進行修改的特性,攻擊者必須重新生成符合哈希值要求的從要修改的區(qū)塊到最新生成的區(qū)塊中間所有的區(qū)塊[2]。而在攻擊者重新生成自己的區(qū)塊鏈分支的同時,可信任節(jié)點仍然在不斷生成新的正常區(qū)塊。因為系統(tǒng)默認(rèn)優(yōu)先承認(rèn)最長的區(qū)塊鏈分支為主鏈的特性,所以理論上一旦要篡改的數(shù)據(jù)所在的區(qū)塊在k個正常區(qū)塊之前,那么該數(shù)據(jù)將幾乎不可能被篡改。一般認(rèn)為k>6時能夠基本滿足數(shù)據(jù)安全性要求,當(dāng)k>144時,即區(qū)塊生成大約一天之后,該數(shù)據(jù)可被基本認(rèn)為無法篡改[4]。

3 股權(quán)證明機制

至今為止工作量證明算法依舊被認(rèn)為是最為有效的區(qū)塊鏈共識機制算法,但是它的缺點也很明顯,即大多數(shù)節(jié)點都必須不斷地進行高性能計算,而這個計算在未能爭取到記賬權(quán)的情況下是毫無意義的。PoW算法的這個特性帶來了大量的運行開銷和計算能力浪費,為了解決這個問題,股權(quán)證明(Proof of Stake,簡稱PoS)算法隨之誕生。PoS是一種相對節(jié)能的共識算法機制,其核心思想是擁有越多股權(quán)的節(jié)點有越大的概率獲得區(qū)塊的記錄權(quán)。它要求工作者證明自己持有股份(現(xiàn)金)的多少,根據(jù)工作者持有的股份多少來調(diào)整挖礦的難度。

PoS算法目前有多種具體的實現(xiàn)方式,當(dāng)提到PoS的時候,通常并不是特指某一個算法,而是說這一大類算法的總稱。這類算法目前各有優(yōu)劣,在解決PoW機制存在的問題的同時又帶來了各自的問題,現(xiàn)有的PoS類算法主要有如下幾種:

(1)最原始的PoS算法,是通過確定系統(tǒng)中擁有最多股權(quán)(虛擬加密貨幣)的節(jié)點,擁有最多股權(quán)的節(jié)點直接獲得記錄權(quán)。但是這會導(dǎo)致一個問題,那就是擁有最多股權(quán)的節(jié)點很可能會不斷地?fù)碛懈叩墓蓹?quán),故而一般情況下區(qū)塊鏈系統(tǒng)使用的是PoS算法的各類衍生算法。

(2)幣齡競爭方法,即以獲得的虛擬幣數(shù)量以及持有貨幣的時長的乘積計算幣齡,在競爭記賬權(quán)時通過對比幣齡的大小來爭取記錄權(quán)[5]。獲勝的節(jié)點在獲得記賬權(quán)的同時幣齡將被清空(但是虛擬貨幣不會被清空),需要較長時間重新積攢幣齡才能再次競爭記賬權(quán)。這種方法能夠比較有效解決記賬權(quán)可能被一個節(jié)點長期占有的情況,但是可能會造成對某一個特定時間對區(qū)塊的攻擊成功概率大幅上升的問題。

(3)輪流記賬方法,即在一段時間內(nèi),當(dāng)前擁有股權(quán)排名的前M個節(jié)點被選為記賬人,或者由系統(tǒng)內(nèi)每一個持有股份的節(jié)點進行投票,選出M個節(jié)點作為代表作為記賬人。M個記賬人輪流獲得記錄權(quán),在M個節(jié)點全部完成記賬之后,系統(tǒng)重新對股權(quán)進行排名,選出下一批節(jié)點進行輪流記賬[4],這種方式也被稱為股份授權(quán)證明機制(Delegated Proof-of-Stake ,簡稱DPoS)。

(4)目前PoS的最新方向是和其他共識機制算法結(jié)合起來,如PoS和PoW聯(lián)合使用的情況下,先通過PoS確定股權(quán)的排名,而擁有越多的股權(quán)的節(jié)點,在后續(xù)的PoW計算中,區(qū)塊數(shù)據(jù)進行哈希計算后的最終結(jié)果的前導(dǎo)數(shù)0的個數(shù)N越小。在這種情況下 每個節(jié)點都能夠參與競爭,但是擁有股權(quán)越多的節(jié)點能夠獲得記賬權(quán)的概率越大。

PoS算法減少了整個系統(tǒng)中大多數(shù)無意義運算,所以其比PoW更加節(jié)能和高效,但是建立在賬戶股份多少的基礎(chǔ)上的機制是極度不公平的。目前不管是哪種具體實現(xiàn)方法,都無法杜絕PoS算法的區(qū)塊鏈系統(tǒng)下,虛擬加密貨幣會不斷地朝幾個特定的節(jié)點集中的問題。而且PoS的安全性的核心思想是:擁有越多股權(quán)的節(jié)點將會為了保證自己的財產(chǎn)安全,越會保護整個系統(tǒng)的安全。在某些特定情況下,這反而導(dǎo)致區(qū)塊鏈系統(tǒng)增加了不安全因素。

4 虛擬加密貨幣為核心的共識算法的局限性

PoW和PoS兩種共識算法都脫離不了虛擬加密貨幣的存在,系統(tǒng)的正常運轉(zhuǎn)必須有給予獲得新區(qū)塊記賬權(quán)的節(jié)點一定量的虛擬幣的獎勵機制,以激勵各個節(jié)點去競爭,這樣才能保證整個區(qū)塊鏈系統(tǒng)的安全性。換句話來說,整個系統(tǒng)的安全性實際上是由系統(tǒng)內(nèi)虛擬加密貨幣的持有者來保護的。其具體思路都是通過不同的手段,增加攻擊者成功發(fā)動攻擊所需要的經(jīng)濟開銷,達到攻擊者不能承受或者攻擊開銷超出攻擊收益的情況。

當(dāng)前區(qū)塊鏈網(wǎng)絡(luò)已經(jīng)度過了純粹的作為網(wǎng)絡(luò)虛擬貨幣系統(tǒng)的1.0時代,已經(jīng)向著智能合約的2.0和大規(guī)模應(yīng)用的3.0時代靠近。而一旦區(qū)塊鏈系統(tǒng)實際運用到商業(yè)應(yīng)用時,由區(qū)塊鏈系統(tǒng)所承載的資產(chǎn)價值很可能遠(yuǎn)遠(yuǎn)超出其發(fā)行的虛擬加密貨幣的價值。例如,假設(shè)有一套金融系統(tǒng)引入了區(qū)塊鏈系統(tǒng)以及附帶的虛擬加密貨幣機制,并通過PoW、PoS或者其相關(guān)衍生算法保證數(shù)據(jù)共識安全。在這個金融系統(tǒng)中每天承載的交易額數(shù)以億計,但是保證其安全的核心的虛擬加密貨幣的總價值可能僅僅只有數(shù)千萬元。那么就很可能會有為了數(shù)以億計的潛在收益而不計代價的攻擊總價值數(shù)千萬元的虛擬加密貨幣的情況出現(xiàn)。因為只要控制了作為核心的虛擬加密貨幣系統(tǒng),就能間接的掌握整個金融系統(tǒng)。由此可見,由虛擬幣的持有者自發(fā)的保證系統(tǒng)的安全及穩(wěn)定性將是不可靠的。

除此之外,因為這兩種算法都屬于競爭記賬模式,所以每次交易獲得確認(rèn),都必須至少等待一次競爭記賬周期完成。根據(jù)系統(tǒng)的不同,整個交易完成確認(rèn)的時間可能將長達數(shù)分鐘至數(shù)十分鐘[3],這對于對實時性要求很高的系統(tǒng)來說難以被接受。另一方面,因為每一次共識的完成都要對該次請求共識的數(shù)據(jù)做大量重復(fù)的哈希運算,這也對系統(tǒng)的數(shù)據(jù)吞吐量造成了極大的影響。以比特幣為例,比特幣系統(tǒng)的理論數(shù)據(jù)吞吐量僅有每秒7次[3],實際數(shù)據(jù)吞吐量更是只有每秒4次。而PoS算法下的數(shù)據(jù)吞吐量有較大的改善,現(xiàn)有PoS算法已經(jīng)能夠完成每秒上千次的數(shù)據(jù)吞吐容量,但是這對于動輒要求數(shù)據(jù)吞吐量為上萬次甚至十多萬次的大型系統(tǒng)比如金融系統(tǒng)來說,依舊難以被接受。

5 實用拜占庭容錯算法

想要從根本上解決上述問題,則必須設(shè)計一種沒有虛擬加密貨幣與相關(guān)競爭記賬機制參與的共識算法,例如實用拜占庭容錯算法(Practical Byzantine Fault Tolerance,簡稱PBFT)就可以完全脫離虛擬加密貨幣的存在。PBFT算法的安全性由系統(tǒng)業(yè)務(wù)的各個節(jié)點共同保證,其共識主要依據(jù)節(jié)點之間的三次投票決定[2],一個節(jié)點代表一票,以少數(shù)服從絕對多數(shù)的方式實現(xiàn)在各個節(jié)點之間取得共識。與PoW和PoS允許不超過49%的節(jié)點失效不同,PBFT算法最多可以允許不超過1/3的節(jié)點失效,即在有3F+1個節(jié)點的環(huán)境下,至少有2F+1個正常節(jié)點,整個系統(tǒng)就便可正常運作[6]。

PBFT算法的運作步驟如上圖所示

(1)前期階段,每過一段規(guī)定的時間,通過投票法或其他方式選取一個副本節(jié)點作為主節(jié)點,其他的副本節(jié)點作為備份節(jié)點;

(2)需求階段,需要向區(qū)塊鏈系統(tǒng)存儲數(shù)據(jù)的用戶端向主節(jié)點發(fā)送使用服務(wù)操作的請求;

(3)預(yù)準(zhǔn)備階段,主節(jié)點收到各個客戶端的請求之后對其進行整理和編號,生成預(yù)生成區(qū)塊,然后將該預(yù)生成區(qū)塊的全部交易請求廣播給其他副本節(jié)點;

(4)準(zhǔn)備階段,所有副本節(jié)點接收請求后,將記錄下這些請求,并各自生成預(yù)生成區(qū)塊。并將預(yù)生成區(qū)塊的哈希值作為該請求的準(zhǔn)備信息,向其他節(jié)點廣播;

(5)確認(rèn)階段,所有可用節(jié)點接收到至少2F個節(jié)點廣播的準(zhǔn)備消息后,與自己預(yù)生成區(qū)塊的哈希值進行對比,如果一樣的話則向其他節(jié)點廣播確認(rèn)請求消息;

(6)答復(fù)階段,可用節(jié)點收到至少2F個節(jié)點發(fā)送的確認(rèn)請求信息之后將正式執(zhí)行這些請求,各個節(jié)點的預(yù)生成區(qū)塊將作為正式區(qū)塊存入節(jié)點下的區(qū)塊鏈中,并將確認(rèn)結(jié)果發(fā)回客戶端;

(7)用戶端需要等待2F+1個不同副本節(jié)點發(fā)回相同的結(jié)果,才能最終確認(rèn)請求已被確認(rèn)。

PBFT算法相對于前兩者的最大優(yōu)勢就在于其完全不需要節(jié)點參與競爭記賬的計算工作,也就是不需要所謂的“挖礦”。這樣可以回避虛擬加密貨幣作為核心的共識機制的虛擬貨幣安全性問題,也能夠有效解決競爭記賬機制帶來的高延遲和算力浪費問題。同時PBFT算法可以容納相對巨大的數(shù)據(jù)吞吐量,通過對IBM的開源項目Hyperledge Fabric項目的PBFT算法實現(xiàn)進行測試,由試驗數(shù)據(jù)得知,PBFT每秒吞吐量可以保持在1.2萬次以上[4]。

PBFT算法在解決PoW和PoS的高開銷、高延遲、低數(shù)據(jù)吞吐的問題的同時,也帶來了其他問題。PBFT算法的要完成一次共識需要對全網(wǎng)進行至少2P次網(wǎng)絡(luò)廣播(P為有效節(jié)點個數(shù)),故其對網(wǎng)絡(luò)開銷要求較高。進一步測試表明,傳統(tǒng)的PBFT算法下僅能保持不超過100個節(jié)點之間的運行穩(wěn)定,這對于對節(jié)點數(shù)要求較大的公有鏈來說也是難以被接受的。同時PBFT雖然能夠保證共識的安全性,但是由于其存在中心服務(wù)節(jié)點,所以根本上影響了分布式系統(tǒng)本身所具有的抗重要節(jié)點攻擊的特性,也對系統(tǒng)后續(xù)的擴展造成了不良的影響。

為了解決上述問題,目前的研究方向主要是一系列基于PBFT的改進算法。如DDBFT算法減少了節(jié)點之間互相確認(rèn)的環(huán)節(jié),以降低可靠性為代價降低了網(wǎng)絡(luò)開銷,其特性較適用于面向用戶變動較大的公有鏈系統(tǒng)[4]。同時還有將PoW、PoS算法和PBFT算法進行結(jié)合使用的研究,試圖同時發(fā)揮各自的優(yōu)點,解決PBFT算法存在的網(wǎng)絡(luò)開銷和節(jié)點擴展的問題[6]。

6 總結(jié)

虛擬加密貨幣以及競爭記賬機制是一項偉大的發(fā)明,其成功地將整個系統(tǒng)的安全性保障的任務(wù)下降給各個節(jié)點。至今為止工作量證明機制仍然是最為有效的區(qū)塊鏈共識機制,但是其客觀存在的問題卻成了區(qū)塊鏈被引入各行各業(yè)應(yīng)用系統(tǒng)的一個攔路虎。PoS、PBFT以及它們的一系列衍生算法在致力于解決工作量證明機制所帶來的問題的同時,也生成了各式各樣的其他問題。目前依舊沒有一個算法能夠有效解決各種情況下的區(qū)塊鏈共識需求,在構(gòu)建區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)的時候必須按照該系統(tǒng)的具體特性,通過單一或組合的形式選擇合適的共識機制算法。

參考文獻:

[1] 焦鋒.基于網(wǎng)絡(luò)交易的區(qū)塊鏈安全技術(shù)研究[J].中國信息化,2017(11):65-67.

[2] 朱巖,甘國華,鄧迪,等.區(qū)塊鏈關(guān)鍵技術(shù)中的安全性研究[J].信息安全研究,2016,2(12):1090-1097.

[3] 邵奇峰,金澈清,張召,等.區(qū)塊鏈技術(shù):架構(gòu)及進展[J].計算機學(xué)報,2018,41(05):969-988.

[4] 劉肖飛.基于動態(tài)授權(quán)的拜占庭容錯共識算法的區(qū)塊鏈性能改進研究[D].浙江大學(xué),2017.

[5] 王曉光.區(qū)塊鏈技術(shù)共識算法綜述[J].信息與電腦(理論版),2017(09):72-74.

[6] 韓璇,劉亞敏.區(qū)塊鏈技術(shù)中的共識機制研究[J].信息網(wǎng)絡(luò)安全,2017(09):147-152.

【通聯(lián)編輯:代影】

信宜市| 镇沅| 浑源县| 巢湖市| 兴仁县| 军事| 岐山县| 蓬莱市| 泾阳县| 涞源县| 明光市| 丹寨县| 阿荣旗| 慈利县| 贞丰县| 靖边县| 鄂伦春自治旗| 桐柏县| 米易县| 尼勒克县| 定州市| 肃南| 泸水县| 凤凰县| 岐山县| 许昌市| 泰兴市| 玉屏| 隆安县| 东港市| 南岸区| 龙泉市| 彩票| 静安区| 南华县| 安吉县| 绥江县| 于都县| 梁山县| 临沭县| 淮阳县|