《區(qū)塊鏈技術(shù)及應(yīng)用》區(qū)塊鏈開發(fā)基礎(chǔ)_第1頁
《區(qū)塊鏈技術(shù)及應(yīng)用》區(qū)塊鏈開發(fā)基礎(chǔ)_第2頁
《區(qū)塊鏈技術(shù)及應(yīng)用》區(qū)塊鏈開發(fā)基礎(chǔ)_第3頁
《區(qū)塊鏈技術(shù)及應(yīng)用》區(qū)塊鏈開發(fā)基礎(chǔ)_第4頁
《區(qū)塊鏈技術(shù)及應(yīng)用》區(qū)塊鏈開發(fā)基礎(chǔ)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

區(qū)塊鏈開發(fā)基礎(chǔ)目錄/CONTENTS3.1區(qū)塊鏈加密技術(shù)3.2區(qū)塊鏈核心問題3.3區(qū)塊鏈共識機(jī)制3.4編程案例本章小結(jié)3.1.1安全哈希函數(shù)哈希(Hash)函數(shù)是非?;A(chǔ)同時又相當(dāng)重要的一種數(shù)學(xué)函數(shù)。通俗來說,它能將一段數(shù)據(jù)(任意長度)經(jīng)過計算,映射為一段較短的定長的數(shù)據(jù)(就是哈希值,同時也被稱為指紋或摘要)??偨Y(jié)來說,它具有以下3個特征。(1)其輸入可以是任意長度數(shù)據(jù)。(2)其輸出是固定長度的數(shù)據(jù)。(3)其能進(jìn)行有效計算,簡單來說就是對于任意輸入,在合理的時間范圍內(nèi)我們總能得到哈希函數(shù)的輸出。Hash函數(shù)目標(biāo)文本輸出文本3.1.1安全哈希函數(shù)在基本哈希函數(shù)的基礎(chǔ)上,加密哈希函數(shù)還應(yīng)該具備抗碰撞性和不可逆性兩個特性,具備這兩個特性的哈希函數(shù)在文件的完整性驗證、用戶密碼的保存以及數(shù)字簽名等實際場景中有極大的應(yīng)用。

(1)抗碰撞性:找一個y,使得y的哈希值等于x的哈希值,這幾乎是不可能的,用數(shù)學(xué)表達(dá)式可以表示為:對于x,y(x≠y),H(x)≠H(y),則稱哈希函數(shù)H()具有抗碰撞性。

注意:哈希函數(shù)具有抗碰撞性是說不會發(fā)生碰撞的概率很大,并不表示不存在碰撞。

(2)不可逆性:即我們幾乎無法通過哈希運(yùn)算的結(jié)果推導(dǎo)出原文??箯?qiáng)碰撞攻擊抗弱碰撞攻擊抗源像攻擊圖3.1Hash函數(shù)安全特性之間的聯(lián)系3.1.1安全哈希函數(shù)安全哈希算法:目前常見的哈希算法包括MD5和SHA系列算法。MD5算法即MD5消息摘要算法,屬哈希算法一類。MD5算法運(yùn)行任意長度的輸入消息,產(chǎn)生一個128位的消息摘要。圖3.2MD5算法的整體流程圖消息100…00填充(0-511bit)Lbit

N*512bit512bit512bit

512bit

初始序列128bit第一個分塊得出的128bit值第N-1個128bit值最終結(jié)果散列值3.1.1安全哈希函數(shù)SHA-256算法:SHA-256算法輸入報文的最大長度不超過2256位,輸入按512位分組進(jìn)行處理,產(chǎn)生的輸出是一個256位的報文摘要。圖3.3SHA-256算法核心過程該算法使用了6種基本邏輯函數(shù):3.1.2加解密技術(shù)加解密技術(shù)是密碼學(xué)的核心技術(shù)之一,現(xiàn)代加密算法的典型組件包括加解密算法、私鑰和公鑰。在加密過程中,需要通過相應(yīng)的加密算法和雙方的公鑰對明文進(jìn)行加密(變換)獲得密文;在解密過程中,需要通過相應(yīng)的解密算法和私鑰對密文進(jìn)行解密(變換)還原明文。圖3-4加解密基本過程3.1.2加解密技術(shù)根據(jù)公鑰和私鑰是否相同,加解密算法可以分為對稱加密算法和非對稱加密算法兩種基本類型。兩種加密算法適用于不同場景的需求,恰好可以互補(bǔ),很多時候兩者也可以組合形成混合加密算法。算法類型代表算法特點優(yōu)勢劣勢對稱加密

算法DES、IDEA、3DES、AES加解密密鑰相同空間占用小,計算效率高,加密強(qiáng)度大共享公鑰,易泄密非對稱加密

算法RSA、ElGamal、橢圓曲線系列算法加解密密鑰不相同安全度高,無須提前共享密鑰計算效率低,存在中間人攻擊圖3-1加解密算法類型3.1.2加解密技術(shù)對稱加密算法是用相同的密鑰對原文進(jìn)行加密和解密,它的過程可以用下面兩個公式來表示。

(1)加密過程:密鑰+原文=密文。

(2)解密過程:密文-密鑰=原文。圖3-5對稱加密算法的加解密過程對稱加密算法從實現(xiàn)原理上可以分為兩種:

分組對稱加密:將明文切分為定長數(shù)據(jù)塊作為基

本加密單位,應(yīng)用廣泛。

序列對稱加密:每次只對一個字節(jié)或字符進(jìn)行加

密處理,且密碼不斷變化。3.1.2加解密技術(shù)非對稱加密算法中加密密鑰和解密密鑰是不同的,分別稱為公鑰和私鑰。私鑰一般需要通過隨機(jī)算法生成,公鑰可以根據(jù)私鑰生成,而公鑰是一定不能推導(dǎo)出私鑰的。公鑰一般是公開的,可以被他人獲取。而私鑰一般是個人持有的,不能被他人獲取。圖3-6非對稱加密算法的加解密過程3.1.2加解密技術(shù)橢圓曲線加密算法是基于橢圓曲線點群離散對數(shù)問題構(gòu)成的公鑰密碼系統(tǒng),在有限域上做加解密計算。與RSA和DSA加密算法相比,它在抵抗外界攻擊方面明顯具有更強(qiáng)的安全性能,并且具有較為輕巧的密鑰尺寸,是非常適用于區(qū)塊鏈加密的一種算法。

圖3-7橢圓曲線3.1.2加解密技術(shù)橢圓曲線上的基本運(yùn)算還包括點加運(yùn)算和倍點運(yùn)算。橢圓曲線上其他的點運(yùn)算都可以通過調(diào)用點加運(yùn)算和倍點運(yùn)算來實現(xiàn)。點加運(yùn)算:假定P(x1,

-y1)和Q(x2,

y2)為橢圓曲線上的兩點,計算R(x3,

y3)=P+Q。依據(jù)橢圓曲線的“弦和切線”法則,連接P和Q作一條直線,交于橢圓曲線上的第三點R′,則R′關(guān)于x軸對稱的點R即為所求點。

代數(shù)運(yùn)算表達(dá)式如下:圖3-8點加運(yùn)算3.1.2加解密技術(shù)倍點運(yùn)算:假定P(x1,

y1)為橢圓曲線上的一點,倍點運(yùn)算即求R(x3,

y3)=2P。倍點運(yùn)算可以看成點加運(yùn)算中Q=P的特例,當(dāng)Q無限靠近P時,P和Q所連直線即為橢圓曲線在P處的切線。根據(jù)“弦和切線”法則,

作P點的切線交橢圓曲線于R′,則R′關(guān)于x軸對稱的點R即為所求點。

代數(shù)運(yùn)算表達(dá)式如下:圖3-9倍點運(yùn)算3.1.2加解密技術(shù)橢圓曲線標(biāo)量乘運(yùn)算:橢圓曲線上的標(biāo)量乘運(yùn)算定義為Q=kP,其中P為定義在有限域Fq內(nèi)的橢圓曲線上的一點。該步驟為完成由私鑰求取公鑰的過程,又稱點乘運(yùn)算。目前學(xué)者們廣泛認(rèn)為標(biāo)量乘的運(yùn)算效率決定著整個橢圓曲線密碼系統(tǒng)的效率。通常,對二進(jìn)制下的標(biāo)量乘運(yùn)算而言,其計算一般通過調(diào)用點加運(yùn)算和倍點運(yùn)算來實現(xiàn)。圖3-10標(biāo)量乘運(yùn)算的基本層次3.1.2加解密技術(shù)橢圓曲線加密步驟:圖3-11橢圓曲線加密算法的加解密步驟通常公鑰加密系統(tǒng)有兩個密鑰,橢圓曲線加密算法同樣也有兩個:公鑰Q與私鑰k。在執(zhí)行加密操作時,要將明文信息嵌入曲線內(nèi)的點;在執(zhí)行解密操作時,需要將其相應(yīng)的點解碼還原成對應(yīng)的明文信息。通常在加密過程中使用一種密鑰進(jìn)行加密,在解密過程中使用另一種密鑰進(jìn)行解密。3.1.2加解密技術(shù)示例:假設(shè)有兩個用戶:用戶A與用戶B,用戶B發(fā)送文件M給用戶A,則使用橢圓曲線加密算法傳輸文件M的過程如下:用戶A自行選取一條橢圓曲線E,之后在其上選定一點作為基點P,同時確定一個私鑰k,最后產(chǎn)生對應(yīng)公鑰:Q

=

kP;用戶A將橢圓曲線E、基點P與公鑰Q傳送給用戶B;用戶B接收到信息后,產(chǎn)生一個隨機(jī)整數(shù)x(x

<

n,n為基點P的階數(shù)),x即為用戶B的私鑰,同時將明文M編碼到用戶A自行選取橢圓曲線E上的點Pm,用戶B進(jìn)行下列計算:C1=Pm+xQ,C2=xP,得到相應(yīng)的密文:C=(C1,C2),或者:C3=PmC4,C4=xQ,得到相應(yīng)的密文:C=(C3,C4)。用戶B將密文C傳給用戶A,用戶A接收到密文C,使用私鑰k解密密文:

或者:

同時將橢圓曲線E上的點Pm解碼為明文M即可。3.1.2加解密技術(shù)基于橢圓曲線加密算法的同態(tài)加密方法構(gòu)造:設(shè)E(K,

x)表示用加密算法E和密鑰K對x進(jìn)行加密,F(xiàn)表示一種運(yùn)算。如果對于加密算法E和運(yùn)算F,存在有效算法G使得:

就稱加密運(yùn)算E對于運(yùn)算F具有同態(tài)性。設(shè)加密函數(shù)為Ek,解密函數(shù)為Dk,明文數(shù)據(jù)為

則加法同態(tài)與乘法同態(tài)可分別表示為:3.1.2加解密技術(shù)混合加密算法:混合加密算法同時結(jié)合了對稱加密算法和非對稱加密算法的優(yōu)點?;旌霞用芩惴ㄊ窍扔糜嬎銖?fù)雜度高的非對稱加密協(xié)商一個臨時的對稱加密密鑰,然后雙方通過對稱加密對傳遞的大量數(shù)據(jù)進(jìn)行加解密處理?;旌霞用芩惴ǖ某R妼嵗褪鞘褂闷毡榈腤eb通信協(xié)議——HTTPS。明文m

加密加密

解密解密圖3-12分組混合加密法示例3.1.3時間戳技術(shù)時間戳就是一份能夠表示一份數(shù)據(jù)在一個特定時間點已經(jīng)存在的、完整的、可驗證的數(shù)據(jù),是能夠唯一標(biāo)識某一時間的字符串,具有防篡改、防復(fù)用等特點,被廣泛應(yīng)用于數(shù)字版權(quán)、電子合同、共識交易等領(lǐng)域。區(qū)塊鏈對每個經(jīng)共識的區(qū)塊加蓋時間戳,證明數(shù)據(jù)的存在狀態(tài)和時間順序,確保數(shù)據(jù)在交易各方之間公開、透明并可追溯,為交易信息提供了有力的存在性證明。權(quán)威時間源時間戳服務(wù)器數(shù)字簽名文件時間戳請求時間戳服務(wù)器反簽名圖3-13時間戳工作示意圖3.1.4梅克爾樹技術(shù)梅克爾樹又稱哈希樹,是將數(shù)據(jù)的哈希值以樹的結(jié)構(gòu)來表示的一種數(shù)據(jù)結(jié)構(gòu),葉子節(jié)點為原始數(shù)據(jù)的哈希值,非葉子節(jié)點為其孩子節(jié)點的哈希值。圖3-14梅克爾樹在區(qū)塊鏈的分布式環(huán)境中,通過使用梅克爾樹的數(shù)據(jù)結(jié)構(gòu)和哈希算法,兩個節(jié)點在共識過程中,只需比較梅克爾樹根節(jié)點的哈希值就能夠判斷兩個節(jié)點分別持有的交易數(shù)據(jù)是否一致。圖3-15區(qū)塊結(jié)構(gòu)3.1.5數(shù)字簽名數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應(yīng)用,是只有信息的發(fā)送者才能生成的、別人無法偽造的一段數(shù)字串。通過它能確認(rèn)數(shù)據(jù)的來源以及保證數(shù)據(jù)在發(fā)送的過程中未做任何修改或變動。數(shù)字簽名中的簽名與信息是分開的,需要一種方法將簽名與信息聯(lián)系在一起。任何人都可以利用一種公開的方法對數(shù)字簽名進(jìn)行驗證。圖3-16數(shù)字簽名加解密過程3.1.5數(shù)字簽名盲簽名:簽名者需要在無法看到原始內(nèi)容的前提下對信息進(jìn)行簽名。一方面,盲簽名可以實現(xiàn)對簽名內(nèi)容的保護(hù),防止簽名者看到原始內(nèi)容;另一方面,盲簽名還可以防止追蹤,簽名者無法將簽名內(nèi)容和簽名結(jié)果進(jìn)行對應(yīng)。RSA盲簽名算法是典型的盲簽名算法。圖3-17盲簽名流程圖盲化去盲化用戶消息盲簽簽名者加密簽名簽名驗證消息true/false3.1.5數(shù)字簽名多重簽名:在n個簽名者中,至少收集到m個(n≥m≥1)簽名,即認(rèn)為簽名合法。其中,n是提供公鑰的個數(shù),m是需要匹配公鑰的最少的簽名個數(shù)。多重簽名可以有效地應(yīng)用在多人投票共同決策的場景中。圖3-18多重簽名示例圖買家收貨接收驗證發(fā)貨支付提醒賣方發(fā)貨確認(rèn)貨物后簽名完成交易3.1.5數(shù)字簽名群簽名:即某個群組內(nèi)一個成員可以代表群組進(jìn)行匿名簽名。簽名可以驗證來自該群組,卻無法準(zhǔn)確追蹤到簽名的是哪個成員。群簽名需要一個群管理員來添加新的群成員,因此存在群管理員追蹤到簽名成員身份的風(fēng)險。圖3-19群簽名一般流程圖序號安全性要求含義1完整性即有效的簽名能夠被正確地驗證2不可偽造性只有群成員可以產(chǎn)生有效的群簽名。其他任何人包括群管理員都不能偽造合法的簽名3匿名性給定一個群簽名后,對除了唯一的群管理員以外的任何人來說,確定簽名者的身份是不可行的,至少在計算上是困難的4可追蹤性群管理員在發(fā)生糾紛的情況下可以打開一個簽名來確定簽名者的身份,而且任何人都不能阻止一個合法簽名的打開5不關(guān)聯(lián)性在不打開簽名的情況下,確定兩個不同的簽名是否為同一個群成員所簽的是不可行的,至少在計算上是困難的6沒有框架即使其他群成員相互串通,也不能為不在群里的成員進(jìn)行簽名7不可偽造的追蹤驗證撤銷群管理員權(quán)限,不能錯誤地指責(zé)簽名者創(chuàng)建他沒有創(chuàng)建的簽名8抵抗聯(lián)合攻擊即使一些群成員串通在一起也不能產(chǎn)生一個合法的、不能被跟蹤的群簽名表3-2群簽名的安全性要求3.1.5數(shù)字簽名環(huán)簽名:環(huán)簽名是一種簡化的群簽名。簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者自身。然后簽名者利用自己的私鑰和簽名集合中其他人的公鑰可以獨立地產(chǎn)生簽名,而無須他人的幫助。簽名者集合中的其他成員可能并不知道自己被包含在最終的簽名中。圖3-20環(huán)簽名一般流程圖表3-3群簽名和環(huán)簽名的對比序號對比點解釋1匿名性都是一種個體代表群體簽名的機(jī)制,驗證者能驗證簽名為群體中某個成員所簽,但并不能知道具體是哪個成員,以達(dá)到簽名者匿名的作用2可追蹤性群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭示真正的簽名者。環(huán)簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加了額外的信息。環(huán)簽名提出了一個可驗證的方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份3管理系統(tǒng)群簽名由群管理員管理,環(huán)簽名不需要管理,簽名者只需選擇一個可能的簽名者集合,獲得其公鑰,然后公布這個集合即可,所有成員平等3.1.6數(shù)字證書對非對稱加密算法和數(shù)字簽名來說,一旦公鑰自身出現(xiàn)了問題,則整個建立在其上的安全體系的安全性將不復(fù)存在。數(shù)字證書機(jī)制可以解決證明“我確實是我”的問題,它就像日常生活中的一個證書一樣,可以證明所記錄信息的合法性。私鑰公鑰Fh1

F

h2h1提供私鑰提供公鑰SHAI加密RSA加密RSA解密SHAI加密對比h1和h2,驗證數(shù)字證書數(shù)字簽名者發(fā)布數(shù)字證書者圖3-21數(shù)字簽名一般流程3.1.6數(shù)字證書數(shù)字證書一般包括版本、序列號、簽名算法類型、簽發(fā)者信息、有效期、被簽發(fā)人、簽發(fā)的公開密鑰、CA數(shù)字簽名等信息。其中最重要的是簽發(fā)的公開密鑰和CA數(shù)字簽名。因為帶有CA的數(shù)字簽名,所以只要通過證書就可以證明某個公鑰是合法的。類似地,CA的簽名是否合法也是通過CA的簽名證書來證明的。圖3-22采用HTTPS建立安全連接(TLS握手協(xié)商過程)的基本步驟3.1.7密鑰分存密鑰分存技術(shù):根據(jù)Shamir和Blakley在1979年分別提出的“門限方案”:將選定的主密鑰K打造成n份不同的子密鑰,以t(0<t<n)為“門限值”,當(dāng)子密鑰數(shù)目超過或等于門限值t的時候,可以導(dǎo)出主密鑰。從上面的定義可以知道,通過改變門限值t可以適當(dāng)?shù)靥嵘到y(tǒng)的安全性和操作效率。圖3-23密鑰分存又被稱為“現(xiàn)代虎符”3.1.8匿名技術(shù)在計算機(jī)科學(xué)中,這種不用真實姓名而使用一種特定標(biāo)識的折中做法被稱為化名,而匿名是指具有無關(guān)聯(lián)性的化名,無關(guān)聯(lián)性是一種針對特定攻擊者的能力而定義的屬性。從直觀的意思來看,無關(guān)聯(lián)性意味著如果一個用戶和系統(tǒng)進(jìn)行重復(fù)交互,從特定攻擊者的角度,不同的交互行為之間應(yīng)該無法相互關(guān)聯(lián)。圖3-24比特幣是否具有完全的匿名性呢?3.1.9隱私模型傳統(tǒng)的隱私模型為交易的參與者提供了一定程度的隱私保護(hù)。第三方不會交出交易者的個人身份信息,但事實上,交易雙方的個人信息都存儲在第三方機(jī)構(gòu)中,因此在一定程度上,交易參與人的隱私仍然存在泄露的風(fēng)險。圖3-25傳統(tǒng)的隱私模型在比特幣的隱私模型中,只需要提供比特幣地址就可以完成準(zhǔn)匿名交易。在一定程度上,交易無法追溯到交易者本身,因此比特幣交易在一定程度上可以不受監(jiān)管。然而,通過對區(qū)塊鏈上的交易地址和交易金額的關(guān)聯(lián)分析,可以獲得該交易相關(guān)人員的線索。因此,是一種準(zhǔn)匿名交易機(jī)制。圖3-26比特幣的隱私模型3.2.1一致性問題一致性(Consistency),早期也叫作“Agreement”,是指對分布式系統(tǒng)中的多個服務(wù)節(jié)點,給定一系列操作,在約定協(xié)議的保障下,試圖使得它們對處理結(jié)果達(dá)成“某種程度”的認(rèn)同。理想情況下,如果各個服務(wù)節(jié)點嚴(yán)格遵守相同的處理協(xié)議,構(gòu)成相同的處理狀態(tài)機(jī),給定相同的初始狀態(tài)和輸入序列,則可以保障在處理過程中的每個環(huán)節(jié)的結(jié)果都是相同的。序號問題1節(jié)點之間的網(wǎng)絡(luò)通信是不可靠的,包括消息延遲、亂序和內(nèi)容錯誤等2節(jié)點的處理時間無法保障,結(jié)果可能出現(xiàn)錯誤,甚至節(jié)點自身可能發(fā)生“宕機(jī)”3同步調(diào)用可以簡化設(shè)計,但會嚴(yán)重降低系統(tǒng)的可擴(kuò)展性,甚至使其退化為單節(jié)點系統(tǒng)表3-4分布式計算機(jī)集群系統(tǒng)中容易出現(xiàn)問題的幾個方面3.2.1一致性問題分布式系統(tǒng)達(dá)成一致的過程應(yīng)該滿足以下幾個條件:可終止性:一致的結(jié)果在有限的時間內(nèi)完成;約同性:不同節(jié)點最終完成決策的結(jié)果是相同的;合法性:決策的結(jié)果必須是某個節(jié)點提出的提案。事實上,越強(qiáng)的一致性需求常常導(dǎo)致越弱的處理性能和更差的可拓展性。強(qiáng)一致性主要包括以下兩類:順序一致性:這是一個相對較強(qiáng)的約束,確保所有進(jìn)程看到的全局順序是一致的,并且每個進(jìn)程看到自身的執(zhí)行順序與實際發(fā)生順序一致。線性一致性:在順序一致性的前提下加強(qiáng)了進(jìn)程間的操作排序,形成唯一的全局順序,是很強(qiáng)的原子性的保證,但這比較難實現(xiàn)。3.2.2拜占庭將軍問題與算法問題簡介:拜占庭將軍問題又稱拜占庭問題,它是蘭伯特等科學(xué)家在1982年提出的一個解釋一致性問題的虛擬模型。拜占庭是古羅馬的首都,由于地域?qū)拸V,邊界上的多個將軍(類似分布式系統(tǒng)中的多個節(jié)點)需要信使來傳遞消息并達(dá)成某些一致的決定。但由于將軍中可能有叛變者(類似分布式系統(tǒng)中節(jié)點出錯),這些叛變者會試圖向不同的將軍發(fā)送不同的信息,干擾共識的達(dá)成。拜占庭問題即為此情況下如何讓忠誠的將軍們達(dá)成行動的一致。3.2.2拜占庭將軍問題與算法拜占庭容錯算法是解決拜占庭問題的一種容錯算法。它解決了網(wǎng)絡(luò)通信的可靠性問題,即節(jié)點如何在故障情況下達(dá)成一致PBFT是一種狀態(tài)機(jī)復(fù)制算法,即服務(wù)作為狀態(tài)機(jī)進(jìn)行建模,狀態(tài)機(jī)在分布式系統(tǒng)的不同節(jié)點進(jìn)行副本復(fù)制。狀態(tài)機(jī)的每個副本都保存服務(wù)的狀態(tài),并實現(xiàn)服務(wù)的操作。流程如下:客戶端向主節(jié)點發(fā)送請求調(diào)用服務(wù)操作;主節(jié)點通過廣播將請求發(fā)送給其他副本;所有副本都執(zhí)行請求并將結(jié)果發(fā)回客戶端;客戶端需要等待f+1個不同副本節(jié)點發(fā)回相同的結(jié)果,作為整個操作的最終結(jié)果。圖3-27節(jié)點投票流程示例3.2.3FLP不可能原理FLP不可能原理:在網(wǎng)絡(luò)可靠但允許節(jié)點失效(即便只有一個)的最小化異步模型系統(tǒng)中,不存在一個可以解決一致性問題的確定性共識算法。FLP不可能原理實際上告訴人們,不要浪費(fèi)時間去為異步分布式系統(tǒng)設(shè)計在任意場景下都能實現(xiàn)共識的算法。FLP不可能原理實際上說明在允許節(jié)點失效的情況下,純粹異步系統(tǒng)無法確保一致性在有限時間內(nèi)完成。即便在非拜占庭錯誤的前提下,包括Paxos、Raft等算法也都存在無法達(dá)成共識的情況,只是工程實踐中這種情況出現(xiàn)的概率很小。3.2.3CAP原理CAP原理又稱CAP定理,指的是在一個分布式系統(tǒng)中,一致性、可用性、分區(qū)容忍性這三個需求最多只能同時滿足兩個,不可能三者兼顧。圖3-28CAP原理示例分區(qū)容忍性可用性一致性NO3.3.1PoW機(jī)制PoW機(jī)制也稱工作量證明算法。作為區(qū)塊鏈技術(shù)的開創(chuàng)者,比特幣所采用的共識機(jī)制就是PoW機(jī)制,并且這一機(jī)制也是其他公有鏈的主流共識機(jī)制。PoW算法通過算力競爭將記賬權(quán)分配給全網(wǎng)所有節(jié)點,獲得記賬權(quán)的誠實節(jié)點能得到一定的數(shù)字貨幣作為貢獻(xiàn)算力等資源的獎勵。生成Merkle根哈希作為組裝區(qū)塊頭的輸入隨機(jī)數(shù)上個區(qū)塊hash值當(dāng)前Merkle根哈希版本時間戳難度值組裝區(qū)塊頭作為下框的輸入目標(biāo)值小于網(wǎng)絡(luò)目標(biāo)值結(jié)束變更隨機(jī)值N圖3-29PoW工作量證明流程圖3.3.2PoS機(jī)制PoS機(jī)制:即權(quán)益證明機(jī)制。與PoW機(jī)制不同,PoS機(jī)制是一種更加節(jié)能的共識機(jī)制。PoS是根據(jù)用戶持有的股份數(shù)量來調(diào)整該用戶挖礦的難度的,且用戶挖礦難度和持有的股份數(shù)量成反比。PoS機(jī)制的出現(xiàn)緩解了PoW機(jī)制對算力與電力的大量消耗,且加速出塊時間也能提高對交易的處理速度和吞吐量。圖3-30PoS交易結(jié)構(gòu)核心輸入權(quán)益輸入權(quán)益輸入權(quán)益輸出(支出給權(quán)益所有者自己)3.3.3DPoS機(jī)制DPoS機(jī)制即授權(quán)權(quán)益證明機(jī)制。DPoS機(jī)制是一種更高效、更安全的共識機(jī)制,該機(jī)制與PoW機(jī)制和PoS機(jī)制相比,DPoS機(jī)制的優(yōu)點如下:①耗能更低;②更加去中心化;③更快的確認(rèn)速度。圖3-31DPoS機(jī)制結(jié)構(gòu)3.3.4分布式一致性算法PBFT共識算法:將全部服務(wù)器的配置信息稱為一個視圖,視圖會根據(jù)實際情況一直切換。在某個視圖中,我們選取某個副本節(jié)點作為主節(jié)點,則其余的副本均作為從節(jié)點。主節(jié)點負(fù)責(zé)接收客戶端的請求,同時對收到的請求按照順序進(jìn)行排列。主節(jié)點在接收到客戶端請求后向所有從節(jié)點發(fā)送消息。從節(jié)點接收并驗證主節(jié)點發(fā)出的消息,若驗證通過,從節(jié)點執(zhí)行對應(yīng)的操作,再將結(jié)果返回。圖3-32PBFT一致性協(xié)議流程3.3.4分布式一致性算法Paxos算法:Paxos算法把每個數(shù)據(jù)寫請求比喻成一次提案,每個提案都有一個獨立的編號,提案會轉(zhuǎn)發(fā)給提交者(Proposer)來提交,提案必須被2f+1個節(jié)點中的f+1個節(jié)點接受才會生效,2f+1個節(jié)點叫作這次提案的投票委員會(Quorum),投票委員會中的節(jié)點叫作接收者(Acceptor)。圖3-33Paxos算法中的角色3.3.4分布式一致性算法Paxos算法流程劃分為兩個階段,第一階段是發(fā)起方學(xué)習(xí)提案最新狀態(tài)的準(zhǔn)備階段;第二階段是根據(jù)學(xué)習(xí)到的狀態(tài)組成正確提案提交的階段。圖3-34Paxos算法流程3.3.4分布式一致性算法Raft算法:Raft算法和Paxos一樣是一個針對非拜占庭問題所提出的算法,不考慮分布式網(wǎng)絡(luò)中有作惡節(jié)點的情況。也就是說這樣的節(jié)點可能宕機(jī)或者延遲,但是不會出現(xiàn)錯誤信息。Raft算法的設(shè)計中,服務(wù)器節(jié)點都可以有3種狀態(tài),即Follower、Candidate和Leader。圖3-35Raft算法節(jié)點之間的狀態(tài)轉(zhuǎn)換過程3.3.4分布式一致性算法Raft算法將時間分為一個個的任期(term),每一個term的開始都是Leader選舉。在成功選舉Leader之后,Leader會在整個term內(nèi)管理整個集群。如果Leader選舉失敗,該term就會因為沒有Leader而結(jié)束。圖3-36任期流程任期1任期2任期3任期4選舉正常運(yùn)行無領(lǐng)導(dǎo)出現(xiàn)任期3.3.4分布式一致性算法日志復(fù)制的主要作用是保證節(jié)點的一致性,這個階段所做的操作也是為了保證一致性與高可用性。要保證節(jié)點的一致性就要保證每個節(jié)點都按順序執(zhí)行相同的操作序列,日志復(fù)制就是為了保證執(zhí)行相同的操作序列所做的工作。圖3-37Raft日志同步過程clientLFF1.提交數(shù)據(jù)2.1復(fù)制2.1復(fù)制3.1確認(rèn)接收3.1確認(rèn)接收4.2數(shù)據(jù)提交4.1確認(rèn)接收3.3.5共識機(jī)制比較共識機(jī)制/算法吞吐量速度耗能優(yōu)點缺點PoW低慢高易于實現(xiàn),惡意破壞賬本體系需要付出很高的代價,可有效防止節(jié)點作惡浪費(fèi)計算資源,區(qū)塊確認(rèn)時間長,共識達(dá)成時間周期長,效率低PoS低較慢較高解決PoW機(jī)制消耗過多算力的問題,縮短了共識達(dá)成的時間機(jī)制略復(fù)雜,計算資源仍有一定程度上的浪費(fèi)DPoS低較快較高大大減少了參與驗證和記賬的節(jié)點,交易確認(rèn)的速度可達(dá)到秒級機(jī)制較復(fù)雜,真正參與記賬的節(jié)點較少,因此安全性、健壯性都有所下降PBFT高快低實現(xiàn)秒級的快速共識機(jī)制,保證一致性網(wǎng)絡(luò)規(guī)模不宜太大表3-5各種共識機(jī)制/算法比較所有的共識機(jī)制都是為了讓節(jié)點在分布式的網(wǎng)絡(luò)中能達(dá)成共識,雖然都有著相同的目標(biāo),但采取的方法確是大相徑庭。在不同的應(yīng)用場景下也有著不同的特點和缺陷。3.3.6跨鏈共識機(jī)制圖3-38系統(tǒng)結(jié)構(gòu)圖下面通過構(gòu)建一個從鏈基于PoVT(ProofofVoteandTrust,PoVT)共識機(jī)制,主鏈基于PBFT機(jī)制(算法)的主從多鏈分層跨鏈模型,來介紹跨鏈共識機(jī)制。模型描述:將時間劃分為時間片段,每個時間片為一個周期(epoch),每個周期分成多個時隙(slot),每個時隙從鏈完成完整的從出塊到上鏈的過程,在每個周期的最后一個時隙結(jié)束后,代表節(jié)點將該周期所有已確認(rèn)的區(qū)塊數(shù)據(jù)上傳至主鏈網(wǎng)絡(luò)中。模型中的節(jié)點被分成5種角色:普通節(jié)點No、投票節(jié)點Nv、生產(chǎn)節(jié)點Np、候補(bǔ)節(jié)點Nc、代表節(jié)點Nm。3.3.6跨鏈共識機(jī)制從鏈共識機(jī)制:(1)準(zhǔn)備階段:在每個周期開始前,系統(tǒng)從希望參與共識的節(jié)點中根據(jù)節(jié)點的權(quán)益以及STrust值選擇一些節(jié)點組成共識節(jié)點集合N將集合中的節(jié)點進(jìn)行編號,編號1到Nump的節(jié)點成為生產(chǎn)節(jié)點,編號Nump

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論