第一篇:區(qū)塊鏈中五種常見(jiàn)共識(shí)算法 你知道幾個(gè)?
區(qū)塊鏈中五種常見(jiàn)共識(shí)算法 你知道幾個(gè)?
區(qū)塊鏈?zhǔn)且环N去中心化的分布式賬本系統(tǒng),可以用于登記和發(fā)行數(shù)字化資產(chǎn)、產(chǎn)權(quán)憑證、積分等,并以點(diǎn)對(duì)點(diǎn)的方式進(jìn)行轉(zhuǎn)賬、支付和交易。區(qū)塊鏈系統(tǒng)與傳統(tǒng)中心化系統(tǒng)相比,具有公開(kāi)透明、不可篡改、防止多重支付等優(yōu)點(diǎn),并且不依賴于任何的可信第三方。
由于點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)下存在較高的網(wǎng)絡(luò)延遲,各個(gè)節(jié)點(diǎn)所觀察到的事務(wù)先后順序不可能完全一致。因此,區(qū)塊鏈系統(tǒng)需要設(shè)計(jì)一種機(jī)制對(duì)在差不多時(shí)間內(nèi)發(fā)生的事務(wù)的先后順序進(jìn)行共識(shí)。這種對(duì)一個(gè)時(shí)間窗口內(nèi)的事務(wù)的先后順序達(dá)成共識(shí)的算法被稱為“共識(shí)機(jī)制”。
在區(qū)塊鏈這樣的分布式賬本系統(tǒng)中,保障整個(gè)系統(tǒng)的安全性和適應(yīng)性十分重要,這也是共識(shí)算法出現(xiàn)的根本原因。那么,區(qū)塊鏈中常見(jiàn)的共識(shí)算法都有哪些呢?
1、POW:Proof of Work,工作量證明
POW是比特幣在Block的生成過(guò)程中使用的一種共識(shí)算法,也可以說(shuō)是最原始的區(qū)塊鏈共識(shí)算法了。POW工作量證明,簡(jiǎn)單地理解就是,通過(guò)一份證明來(lái)確認(rèn)做過(guò)一定量的工作。
在比特幣系統(tǒng)中,得到合理的Block Hash需要經(jīng)過(guò)大量嘗試計(jì)算。當(dāng)某個(gè)節(jié)點(diǎn)提供出一個(gè)合理的Block Hash值,說(shuō)明該節(jié)點(diǎn)確實(shí)經(jīng)過(guò)了大量的嘗試計(jì)算。
這種工作量證明的形式,在我們?nèi)粘I钪幸彩殖R?jiàn)。比如駕照,能拿到駕照,說(shuō)明你已經(jīng)進(jìn)行過(guò)為期幾個(gè)月甚至幾年的練車(chē)和考試;再比如現(xiàn)在很火的吃雞和王者榮耀游戲中的K/D(Kill/Death)和勝率,分值越高證明你越厲害,同時(shí)也說(shuō)明你進(jìn)行了大量的游戲練習(xí)和技巧學(xué)習(xí)。
2、POS:Proof of Stake,權(quán)益證明
由于POW機(jī)制存在消耗算力巨大、交易確認(rèn)時(shí)間較長(zhǎng),挖礦活動(dòng)集中容易形成中心化等缺點(diǎn),便演進(jìn)出了POS權(quán)益證明。POS簡(jiǎn)單來(lái)說(shuō),就是一個(gè)根據(jù)持有數(shù)字貨幣數(shù)量和時(shí)間來(lái)分配相應(yīng)利息的制度,類似平時(shí)我們?cè)阢y行中存款。
基于權(quán)益證明共識(shí)的區(qū)塊鏈系統(tǒng)中,參與者的角色是驗(yàn)證者Validator,只需要投資系統(tǒng)的數(shù)字貨幣并在特定時(shí)間內(nèi)驗(yàn)證自己是否為下一區(qū)塊創(chuàng)造者,即可完成下一區(qū)塊的創(chuàng)建。下一區(qū)塊創(chuàng)造者是以某種確定的方式來(lái)選擇,驗(yàn)證者被選中為下一區(qū)塊創(chuàng)造者的概率與其所擁有的系統(tǒng)中數(shù)字貨幣的數(shù)量成正比例,即擁有300個(gè)幣的驗(yàn)證者被選中的概率是擁有100個(gè)幣驗(yàn)證者的3倍。
在POS模式下,有一個(gè)名詞叫幣齡,每個(gè)幣每天產(chǎn)生1幣齡。比如你持有100個(gè)幣,總共持有了30天,那么,此時(shí)你的幣齡就為3000。這個(gè)時(shí)候,如果你驗(yàn)證了一個(gè)POS區(qū)塊,你的幣齡就會(huì)被清空為0,同時(shí)從區(qū)塊中獲得相對(duì)應(yīng)的數(shù)字貨幣利息。這下就很有意思了,持幣有利息。并且由于POS是在一個(gè)有限的空間里完成,不是像POW那樣在無(wú)限空間里尋找,因此無(wú)需大量能源消耗。
3、DPOS:Delegated Proof of Stake,授權(quán)權(quán)益證明
DPOS最早出現(xiàn)在比特股中,又稱受托人機(jī)制,它的原理是讓每一個(gè)持有比特股的人進(jìn)行投票,由此產(chǎn)生101位代表。我們可以將其理解為101個(gè)超級(jí)節(jié)點(diǎn)或者礦池,而這101個(gè)超級(jí)節(jié)點(diǎn)彼此的權(quán)利完全相等。
從某種角度來(lái)看,DPOS有點(diǎn)像是議會(huì)制度或人民代表大會(huì)制度。如果代表不能履行他們的職責(zé)(當(dāng)輪到他們時(shí),沒(méi)能生成區(qū)塊),他們會(huì)被除名,網(wǎng)絡(luò)會(huì)選出新的超級(jí)節(jié)點(diǎn)來(lái)取代他們。DPOS的出現(xiàn)最主要還是因?yàn)榈V機(jī)的產(chǎn)生,大量的算力在不了解也不關(guān)心數(shù)字貨幣的人身上,類似演唱會(huì)的黃牛,大量囤票而絲毫不關(guān)心演唱會(huì)的內(nèi)容。DPOS通過(guò)其選擇區(qū)塊生產(chǎn)者和驗(yàn)證節(jié)點(diǎn)質(zhì)量的算法確保了安全性,同時(shí)消除了交易需要等待一定數(shù)量區(qū)塊被非信任節(jié)點(diǎn)驗(yàn)證的時(shí)間消耗。通過(guò)減少確認(rèn)的要求,DPOS算法大大提高了交易的速度。通過(guò)信任少量的誠(chéng)信節(jié)點(diǎn),可以去除區(qū)塊簽名過(guò)程中不必要的步驟。
4、PBFT:Practical Byzantine FaultTolerance,實(shí)用拜占庭容錯(cuò) PBFT意為實(shí)用拜占庭容錯(cuò)算法,該算法由Miguel Castro(卡斯特羅)和Barbara Liskov(利斯科夫)在1999年提出來(lái),解決了原始拜占庭容錯(cuò)算法效率不高的問(wèn)題,將算法復(fù)雜度由指數(shù)級(jí)降低到多項(xiàng)式級(jí),使得拜占庭容錯(cuò)算法在實(shí)際系統(tǒng)應(yīng)用中變得可行。
PBFT是一種狀態(tài)機(jī)副本復(fù)制算法,即服務(wù)作為狀態(tài)機(jī)進(jìn)行建模,狀態(tài)機(jī)在分布式系統(tǒng)的不同節(jié)點(diǎn)進(jìn)行副本復(fù)制。每個(gè)狀態(tài)機(jī)的副本都保存了服務(wù)的狀態(tài),同時(shí)也實(shí)現(xiàn)了服務(wù)的操作。
將所有的副本組成的集合使用大寫(xiě)字母R表示,使用0到|R|-1的整數(shù)表示每一個(gè)副本。為了描述方便,假設(shè)|R|=3f+1,這里f是有可能失效的副本的最大個(gè)數(shù)。盡管可以存在多于3f+1個(gè)副本,但是額外的副本除了降低性能之外不能提高可靠性。
5、RAFT,一致性共識(shí)算法
RAFT算法包含三種角色,分別是:跟隨者(follower),候選人(candidate)和領(lǐng)導(dǎo)者(leader)。集群中的一個(gè)節(jié)點(diǎn)在某一時(shí)刻只能是這三種狀態(tài)的其中一種,這三種角色可以隨著時(shí)間和條件的變化而互相轉(zhuǎn)換。RAFT算法主要有兩個(gè)過(guò)程:一個(gè)過(guò)程是領(lǐng)導(dǎo)者選舉,另一個(gè)過(guò)程是日志復(fù)制,其中日志復(fù)制過(guò)程會(huì)分記錄日志和提交數(shù)據(jù)兩個(gè)階段。RAFT算法支持最大的容錯(cuò)故障節(jié)點(diǎn)是(N-1)/2,其中N為集群中總的節(jié)點(diǎn)數(shù)量。
國(guó)外有一個(gè)動(dòng)畫(huà)介紹RAFT算法介紹的很透徹,有興趣的朋友可以結(jié)合動(dòng)畫(huà)更好的理解下RAFT算法,這里不再做過(guò)多介紹。動(dòng)畫(huà)鏈接地址:thesecretlivesofdata.com
http://
/raft/上述是目前主要的區(qū)塊鏈共識(shí)算法,當(dāng)然還有其他算法,比如POET:Proof of Elapsed Time流逝時(shí)間量證明,Ripple Consensus瑞波共識(shí)機(jī)制等。
每種算法,各有千秋,在特定環(huán)境下和時(shí)間段上被采用都有各自的考慮和意義。對(duì)不同的區(qū)塊鏈應(yīng)用場(chǎng)景而言,適合的算法即為最好的算法。
第二篇:兄弟連區(qū)塊鏈培訓(xùn)教程Go語(yǔ)言區(qū)塊鏈共識(shí)算法分布式一致性算法Raft
兄弟連Go語(yǔ)言區(qū)塊鏈培訓(xùn)教程區(qū)塊鏈共識(shí)算法(1)分布式一致性算法Raft
很多人喜歡Go語(yǔ)言,其實(shí)是因?yàn)镚o語(yǔ)言有其獨(dú)特的語(yǔ)言屬性在支撐著其在編程語(yǔ)言界的發(fā)展,今天兄弟連Go語(yǔ)言+區(qū)塊鏈培訓(xùn)老師給大家介紹一下關(guān)于Go語(yǔ)言區(qū)塊鏈共識(shí)算法(1)分布式一致性算法Raft,下面我們一起來(lái)看一下吧。
# 分布式一致性算法Raft
Paxos自1990年提出以后,相當(dāng)長(zhǎng)時(shí)間內(nèi)幾乎已成為分布式一致性算法的代名詞。
但因其難以理解和實(shí)現(xiàn),目前知名實(shí)現(xiàn)僅有Chubby、Zookeeper、libpaxos幾種,其中Zookeeper使用的ZAB對(duì)Paxos做了大量改進(jìn)。
為此,2013年斯坦福的Diego Ongaro、John Ousterhout,提出了新的更易理解和實(shí)現(xiàn)的一致性算法,即Raft。
Raft和Paxos均只要保證n/2+1節(jié)點(diǎn)正常,即可服務(wù)。相比Paxos,其優(yōu)勢(shì)即為易于理解和實(shí)現(xiàn)。
Raf將算法分解為:選擇領(lǐng)導(dǎo)者、日志復(fù)制、安全性等幾個(gè)子問(wèn)題。
它的流程即為:開(kāi)始時(shí)在集群中選舉出Leader負(fù)責(zé)日志復(fù)制的管理,Leader接收來(lái)自客戶端的事務(wù)請(qǐng)求(日志),并將它們復(fù)制給集群中的其他節(jié)點(diǎn),然后通知集群中的其他節(jié)點(diǎn)提交日志,Leader負(fù)責(zé)保證其他節(jié)點(diǎn)與它的日志同步。
當(dāng)Leader宕機(jī)時(shí),集群其他節(jié)點(diǎn)重新發(fā)起選舉,選出的新的Leader。
### 角色
Raft涉及三種角色:
* Leader:即領(lǐng)導(dǎo)者,負(fù)責(zé)處理來(lái)自客戶端的請(qǐng)求,管理日志復(fù)制、以及與Follower保持心跳以維持其領(lǐng)導(dǎo)者地位。
* Follower:即追隨者,負(fù)責(zé)響應(yīng)來(lái)自Leader的日志復(fù)制請(qǐng)求,響應(yīng)來(lái)自Candidate的選舉請(qǐng)求。初始時(shí)所有節(jié)點(diǎn)均為Follower。
* Candidate:即候選者,負(fù)責(zé)發(fā)起選舉投票,Raft啟動(dòng)后或Leader宕機(jī)后,一個(gè)節(jié)點(diǎn)從Follower轉(zhuǎn)為Candidate,并發(fā)起選舉,選舉成功后,由Candidate轉(zhuǎn)為L(zhǎng)eader。
如下為Raft角色狀態(tài)轉(zhuǎn)換圖:
(1 Raft)
### Term(任期)
在Raft中使用了Term(任期)的概念,一輪選舉即為一個(gè)Term(任期),一個(gè)Term中僅能產(chǎn)生一個(gè)Leader。
Term使用連續(xù)遞增的編號(hào)表示,初始時(shí)所有Follower的Term均為1。
其中某個(gè)Follower定時(shí)器到期觸發(fā)選舉,其狀態(tài)轉(zhuǎn)換為Candidate,此時(shí)Term加1變?yōu)?,然后開(kāi)始選舉,有如下幾種可能:
/ 3
*
1、如果當(dāng)前Term為2的任期內(nèi)沒(méi)有選舉出Leader或出現(xiàn)異常,Term遞增為3,并開(kāi)始新一輪選舉。
*
2、此輪Term為2的任期內(nèi)選舉出Leader后,如果Leader宕機(jī),此時(shí)其他Follower轉(zhuǎn)為Candidate,Term遞增,并發(fā)起新的選舉。
*
3、如果Leader或Candidate發(fā)現(xiàn)自己的Term比其他Follower小時(shí),Leader或Candidate轉(zhuǎn)為Follower,Term遞增。
*
4、如果Follower發(fā)現(xiàn)自己的Term比其他Follower小時(shí),更新Term與其他Follower保持一致。
每次Term遞增都將發(fā)生新一輪選舉,在Raft正常運(yùn)行過(guò)程中,所有節(jié)點(diǎn)Term均一致。
如果節(jié)點(diǎn)不發(fā)生故障,一個(gè)Term(任期)會(huì)一直保持下去,當(dāng)某節(jié)點(diǎn)收到的請(qǐng)求中Term比當(dāng)前Term小時(shí)拒絕請(qǐng)求。
### 選舉
初始時(shí)所有節(jié)點(diǎn)均為Follower,且定時(shí)器時(shí)間不同。
某個(gè)節(jié)點(diǎn)定時(shí)器觸發(fā)選舉后,Term遞增,該節(jié)點(diǎn)由Follower轉(zhuǎn)換為Candidate,向其他節(jié)點(diǎn)發(fā)起投票請(qǐng)求(RequestVote RPC)。
有如下幾種可能:
*
1、收到過(guò)半數(shù)節(jié)點(diǎn)(n/2+1)投票,由Candidate轉(zhuǎn)換為L(zhǎng)eader,向其他節(jié)點(diǎn)發(fā)送心跳以維持領(lǐng)導(dǎo)者地位。
*
2、如果收到其他節(jié)點(diǎn)發(fā)送的AppendEntries RPC請(qǐng)求,且該節(jié)點(diǎn)Term大于當(dāng)前節(jié)點(diǎn)Term,即發(fā)現(xiàn)了新的有效領(lǐng)導(dǎo)者,轉(zhuǎn)換為Follower,否則保持Candidate拒絕該請(qǐng)求。
*
3、選舉超時(shí),Term遞增,重新發(fā)起選舉。
每輪Term期間,每個(gè)節(jié)點(diǎn)均只能投票1次,如果多個(gè)Candidate均沒(méi)有接收到過(guò)半數(shù)投票,則每個(gè)Candidate Term遞增,重啟定時(shí)器并重新發(fā)起選舉。
因定時(shí)器時(shí)間隨機(jī),因此不會(huì)多次出現(xiàn)多個(gè)Candidate同時(shí)發(fā)起投票的問(wèn)題。
### 日志復(fù)制
保證節(jié)點(diǎn)的一致性,就要保證所有節(jié)點(diǎn)都按順序執(zhí)行相同的操作序列,日志復(fù)制目的即為此。
*
1、Leader接收到客戶端事務(wù)請(qǐng)求(即日志),先將日志追加到本地Log中,并通過(guò)AppendEntries RPC復(fù)制給其他Follower。
*
2、Follower接收到日志后,追加到本地Log中,并向Leader發(fā)送ACK消息。
*
3、Leader收到過(guò)半數(shù)Follower的ACK消息后,將日志置為已提交并正式提交日志,通知客戶端,并發(fā)送AppendEntries RPC請(qǐng)求通知Follower提交日志。
### 安全性
/ 3
*
1、每個(gè)Term期間只能選舉一個(gè)Leader。
*
2、Leader不會(huì)刪除或覆蓋已有日志條目,只會(huì)追加。
*
3、如果相同索引位置的日志條目Term任期號(hào)相同,那么認(rèn)為從頭到這個(gè)索引位置均相同。
*
4、如果某個(gè)日志條目在某任期內(nèi)提交,那么這個(gè)日志條目必然出現(xiàn)在更大的Term任期號(hào)的所有領(lǐng)導(dǎo)中。
*
5、如果Leader在某索引位置的日志條目已提交,那么其他節(jié)點(diǎn)相同索引位置不會(huì)提交不同的日志條目。
### RequestVote RPC和AppendEntries RPC
Raft中節(jié)點(diǎn)通信使用兩種RPC,即RequestVote RPC和AppendEntries RPC:
RequestVote RPC:即請(qǐng)求投票,由Candidate在選舉期間發(fā)起。
AppendEntries RPC:即附加條目RPC,由Leader發(fā)起,用于日志復(fù)制和心跳機(jī)制。
### 后記
本文總結(jié)的Raft,及之前文章中的Paxos、2PC、3PC均為基于非拜占庭容錯(cuò)的分布式一致性算法,即除考慮消息的丟失、超時(shí)、亂序,但不考慮消息被篡改。
從下個(gè)文章起,將總結(jié)基于拜占庭容錯(cuò)的分布式一致性算法,該算法在比特幣、以太坊、及其他區(qū)塊鏈產(chǎn)品中廣泛使用。
/ 3
第三篇:區(qū)塊鏈共識(shí)機(jī)制優(yōu)缺點(diǎn)對(duì)比
區(qū)塊鏈就是運(yùn)行在P2P網(wǎng)絡(luò)上的去中心化賬本。我們?cè)趺慈ピ谶@樣的系統(tǒng)中獲得信任呢,并且在私有區(qū)塊鏈中也是一樣的情況。這就是共識(shí)機(jī)制的來(lái)源。
共識(shí)保證了區(qū)塊鏈上的參與者可以互相信任,并且對(duì)下個(gè)區(qū)塊進(jìn)行驗(yàn)證。共識(shí)也確保了網(wǎng)絡(luò)中的規(guī)則被遵守,同時(shí)承認(rèn)在區(qū)塊鏈環(huán)境下只有一個(gè)真理。
根據(jù)你使用的區(qū)塊鏈種類不同,你需要不同的共識(shí)算法來(lái)確保區(qū)塊鏈上最后的區(qū)塊能夠在任何時(shí)候都反應(yīng)出全網(wǎng)的狀態(tài)。在本文中,我們會(huì)大致說(shuō)明不同的共識(shí)算法。
工作量證明(POW)我們先從比特幣和以太坊說(shuō)起。工作量證明算法需要礦工解決復(fù)雜的密碼數(shù)學(xué)難題。所以這是個(gè)依賴于算力的游戲。簡(jiǎn)單說(shuō),你將區(qū)塊中的數(shù)據(jù)都打包并加密,直到你獲得有效的哈希值。
優(yōu)勢(shì):尋找有效的哈希值很困難,但是很容易控制哈希是正確的,所以無(wú)法欺騙整個(gè)系統(tǒng)。系統(tǒng)可以承受大量節(jié)點(diǎn)。
缺點(diǎn):需要消耗非常多的能源,而且不是很環(huán)保。如果有人能控制51%的算力,就會(huì)有被攻擊的風(fēng)險(xiǎn)。
權(quán)益證明(POS)
以太坊正在朝著PoS共識(shí)機(jī)制改變。下個(gè)區(qū)塊的礦工會(huì)基于隨機(jī)參數(shù),例如他們擁有的代幣數(shù)量,他們擁有這個(gè)代幣的時(shí)間等等來(lái)確定。同時(shí)也有其他機(jī)制,例如存款證明或者是燃燒證明等等。其實(shí)這個(gè)很簡(jiǎn)單,如果節(jié)點(diǎn)X有1個(gè)代幣,節(jié)點(diǎn)Y有2個(gè),那么節(jié)點(diǎn)Y就會(huì)有2倍幾率去驗(yàn)證一個(gè)區(qū)塊。
優(yōu)點(diǎn):比起工作量證明,更加節(jié)約能源。
缺點(diǎn):更多的安全問(wèn)題?如果同時(shí)在不同的鏈上工作,也不會(huì)有懲罰。這樣做,就很難去保證轉(zhuǎn)賬的真實(shí)性。消逝時(shí)間證明(PoET)
消逝時(shí)間證明是超級(jí)賬本鋸齒湖項(xiàng)目中使用的共識(shí)。每個(gè)參與者都需要有個(gè)等待時(shí)間,來(lái)確保安全的程序集。獲得最短等待時(shí)間的參與者會(huì)被選為挖出區(qū)塊,經(jīng)過(guò)等待時(shí)間,挖出區(qū)塊。
優(yōu)勢(shì):挖出區(qū)塊的人會(huì)一直變化,同樣的人每次都不會(huì)選擇下個(gè)區(qū)塊。劣勢(shì):安全程序集是復(fù)雜的技術(shù),相對(duì)工作量證明來(lái)說(shuō),更容易進(jìn)行欺詐。也有中心化的趨勢(shì),因?yàn)槲覀儽仨毷褂玫谌叫湃螜C(jī)構(gòu)來(lái)確保這個(gè)程序集是真的安全。
簡(jiǎn)化的拜占庭容錯(cuò)算法(SBFT)
在這個(gè)算法中,區(qū)塊驗(yàn)證者是一個(gè)知名的機(jī)構(gòu)。例如在整個(gè)商業(yè)網(wǎng)絡(luò)中可以是一個(gè)監(jiān)管者。這個(gè)區(qū)塊驗(yàn)證者創(chuàng)造并提出新的區(qū)塊轉(zhuǎn)賬。在SBFT共識(shí)中,一定數(shù)量的節(jié)點(diǎn)一定要接受這個(gè)區(qū)塊,當(dāng)然這取決于錯(cuò)誤節(jié)點(diǎn)的數(shù)量。在這樣的系統(tǒng)中,最少要有2f+1的節(jié)點(diǎn)必須要接受商業(yè)網(wǎng)絡(luò)中的新區(qū)塊,f就是錯(cuò)誤節(jié)點(diǎn)的數(shù)量。
舉例來(lái)說(shuō),我們假設(shè)現(xiàn)在系統(tǒng)中有30個(gè)參與者,其中包含了5個(gè)錯(cuò)誤節(jié)點(diǎn)。作為需要驗(yàn)證的新區(qū)塊,11(2×5+1)個(gè)節(jié)點(diǎn)。
這個(gè)錯(cuò)誤可以是惡意的,也可能是無(wú)效的節(jié)點(diǎn)。優(yōu)點(diǎn):比工作量證明更快,有更好的擴(kuò)容性。缺點(diǎn):有中心化趨勢(shì)。一個(gè)驗(yàn)證者提出下個(gè)區(qū)塊。
權(quán)威證明(PoA)適合私有鏈網(wǎng)絡(luò),并且不需要分布式信任體系。原理相對(duì)簡(jiǎn)單:網(wǎng)絡(luò)中的一些人在滿足某些條件之后被認(rèn)證為驗(yàn)證者,例如身份認(rèn)證。這些驗(yàn)證者負(fù)責(zé)維持區(qū)塊鏈數(shù)據(jù)。
優(yōu)點(diǎn):非常適合私有鏈,速度非???。缺點(diǎn):犧牲了信任。
結(jié)論 我們對(duì)區(qū)塊鏈?zhǔn)澜绲墓沧R(shí)機(jī)制做出了概覽,這篇文章只是列舉了一部分可能性,當(dāng)然還有其他可能的共識(shí)機(jī)制??傮w來(lái)說(shuō),我們可以將這些共識(shí)分為3類:
-標(biāo)準(zhǔn)的工作量共識(shí)
-基于共識(shí)的許可性投票(PoA,SBFT)-基于共識(shí)的許可性投注(PoET)
到底選擇哪個(gè)共識(shí)來(lái)進(jìn)行區(qū)塊鏈的實(shí)施取決于哪類網(wǎng)絡(luò)和數(shù)據(jù)。
投注類型的可能更加適合月大型網(wǎng)絡(luò)。投票類型的可能更適合小型網(wǎng)絡(luò),同時(shí)將延時(shí)降到最小化。
第四篇:詳解區(qū)塊鏈中的幾個(gè)密碼學(xué)概念范文
安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn 沒(méi)聽(tīng)過(guò)這幾個(gè)密碼學(xué)概念,就別說(shuō)你懂區(qū)塊鏈!
密碼學(xué)在信息技術(shù)領(lǐng)域的重要地位無(wú)需多言,如果沒(méi)有現(xiàn)代密碼學(xué)的研究成果,人類社會(huì)根本無(wú)法進(jìn)入信息時(shí)代。本文將介紹密碼學(xué)跟區(qū)塊鏈相關(guān)的基礎(chǔ)知識(shí)。
一、hash 算法 1.定義
hash(哈?;蛏⒘校┧惴ㄊ切畔⒓夹g(shù)領(lǐng)域非常基礎(chǔ)也非常重要的技術(shù)。它能任意長(zhǎng)度的二進(jìn)制值(明文)映射為較短的固定長(zhǎng)度的二進(jìn)制值(hash 值),并且不同的明文很難映射為相同的 hash 值。
例如計(jì)算一段話“hello blockchain world, this is yeasy@github”的 md5 hash 為 89242549883a2ef85dc81b90fb606046。
$ echo “hello blockchain world, this is yeasy@github” | md5
89242549883a2ef85dc81b90fb606046
這意味著我們只要對(duì)某文件進(jìn)行 md5 hash 計(jì)算,得到結(jié)果為 89242549883a2ef85dc81b90fb606046,這就說(shuō)明文件內(nèi)容極大概率上就是“hello 安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn blockchain world, this is yeasy@github”??梢?jiàn),hash 的核心思想十分類似于基于內(nèi)容的編址或命名。
注:md5 是一個(gè)經(jīng)典的 hash 算法,其和 SHA-1 算法都已被 證明 安全性不足應(yīng)用于商業(yè)場(chǎng)景。
一個(gè)優(yōu)秀的 hash 算法,將能實(shí)現(xiàn):
? 正向快速:給定明文和 hash 算法,在有限時(shí)間和有限資源內(nèi)能計(jì)算出 hash 值。? 逆向困難:給定(若干)hash 值,在有限時(shí)間內(nèi)很難(基本不可能)逆推出明文。? 輸入敏感:原始輸入信息修改一點(diǎn)信息,產(chǎn)生的 hash 值看起來(lái)應(yīng)該都有很大不同。? 沖突避免:很難找到兩段內(nèi)容不同的明文,使得它們的 hash 值一致(發(fā)生沖突)。
沖突避免有時(shí)候又被稱為“抗碰撞性”。如果給定一個(gè)明文前提下,無(wú)法找到碰撞的另一個(gè)明文,稱為“抗弱碰撞性”;如果無(wú)法找到任意兩個(gè)明文,發(fā)生碰撞,則稱算法具有“抗強(qiáng)碰撞性”。
二、加密算法
1.公鑰私鑰體系
現(xiàn)代加密算法的典型組件包括:加解密算法、公鑰、私鑰。安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn 加密過(guò)程中,通過(guò)加密算法和公鑰,對(duì)明文進(jìn)行加密,獲得密文。
解密過(guò)程中,通過(guò)解密算法和私鑰,對(duì)密文進(jìn)行解密,獲得明文。
根據(jù)公鑰和私鑰是否相同,算法可以分為對(duì)稱加密和非對(duì)稱加密。兩種模式適用于不同的需求,恰好形成互補(bǔ),很多時(shí)候也可以組合使用,形成組合機(jī)制。
2.對(duì)稱加密
顧名思義,公鑰和私鑰是相同的。
優(yōu)點(diǎn)是加解密速度快,空間占用小,保密強(qiáng)度高。
缺點(diǎn)是參與多方都需要持有密鑰,一旦有人泄露則安全性被破壞;另外如何其它分發(fā)密鑰也是個(gè)問(wèn)題。
適用于大量數(shù)據(jù)的加解密,不能用于簽名場(chǎng)景。
3.非對(duì)稱加密
顧名思義,公鑰和私鑰是不同的。安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn 公鑰一般是公開(kāi)的,人人可獲取的,私鑰一般是個(gè)人自己持有,不能被他人獲取。
優(yōu)點(diǎn)是公私鑰分開(kāi),容易管理,并且容易完成密鑰分發(fā)。缺點(diǎn)是加解密速度慢。
一般適用于簽名場(chǎng)景或密鑰協(xié)商,不適于大量數(shù)據(jù)的加解密。
4.組合機(jī)制
即先用計(jì)算復(fù)雜度高的非對(duì)稱加密協(xié)商一個(gè)臨時(shí)的對(duì)稱加密密鑰(會(huì)話密鑰),然后雙方再通過(guò)對(duì)稱加密對(duì)傳遞的大量數(shù)據(jù)進(jìn)行加解密處理。
三、數(shù)字簽名
類似在紙質(zhì)合同上簽名確認(rèn)合同內(nèi)容,數(shù)字簽名用于證實(shí)某數(shù)字內(nèi)容的完整性和來(lái)源。
A 發(fā)給 B 一個(gè)文件。A 先對(duì)文件進(jìn)行摘要,然后用自己的私鑰進(jìn)行加密,將文件和加密串都發(fā)給 B。B 收到后文件和加密串,用 A 的公鑰來(lái)解密加密串,得到原始的數(shù)字摘要,跟對(duì)文件進(jìn)行摘要后的結(jié)果進(jìn)行比對(duì)。如果一致,說(shuō)明該文件確實(shí)是 A 發(fā)過(guò)來(lái)的,并且文件內(nèi)容沒(méi)有被修改過(guò)。
數(shù)字簽名包括:多重簽名、群簽名、環(huán)簽名等。安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn
四、數(shù)字證書(shū)
數(shù)字證書(shū)用來(lái)證明某個(gè)公鑰是誰(shuí)的。
對(duì)于數(shù)字簽名應(yīng)用來(lái)說(shuō),很重要的一點(diǎn)就是公鑰的分發(fā)。一旦公鑰被人替換,則整個(gè)安全體系將被破壞掉。
怎么確保一個(gè)公鑰確實(shí)是某個(gè)人的原始公鑰?這就需要數(shù)字證書(shū)機(jī)制。
顧名思義,數(shù)字證書(shū)就是像一個(gè)證書(shū)一樣,證明信息和合法性。由證書(shū)認(rèn)證機(jī)構(gòu)(Certification Authority,CA)來(lái)簽發(fā)。
數(shù)字證書(shū)內(nèi)容可能包括版本、序列號(hào)、簽名算法類型、簽發(fā)者信息、有效期、被簽發(fā)人、簽發(fā)的公開(kāi)密鑰、CA 數(shù)字簽名、其它信息等等。
其中,最重要的包括 簽發(fā)的公開(kāi)密鑰、CA 數(shù)字簽名 兩個(gè)信息。因此,只要通過(guò)這個(gè)證書(shū)就能證明某個(gè)公鑰是合法的,因?yàn)閹в?CA 的數(shù)字簽名。
更進(jìn)一步地,怎么證明 CA 的簽名合法不合法呢? 安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn 類似的,CA 的數(shù)字簽名合法不合法也是通過(guò) CA 的證書(shū)來(lái)證明的。主流操作系統(tǒng)和瀏覽器里面會(huì)提前預(yù)置一些 CA 的證書(shū)(承認(rèn)這些是合法的證書(shū)),然后所有基于他們認(rèn)證的簽名都會(huì)自然被認(rèn)為合法。
五、Merkle樹(shù)
默克爾樹(shù)(又叫哈希樹(shù))是一種二叉樹(shù),由一個(gè)根節(jié)點(diǎn)、一組中間節(jié)點(diǎn)和一組葉節(jié)點(diǎn)組成。最下面的葉節(jié)點(diǎn)包含存儲(chǔ)數(shù)據(jù)或其哈希值,每個(gè)中間節(jié)點(diǎn)是它的兩個(gè)子節(jié)點(diǎn)內(nèi)容的哈希值,根節(jié)點(diǎn)也是由它的兩個(gè)子節(jié)點(diǎn)內(nèi)容的哈希值組成。
進(jìn)一步的,默克爾樹(shù)可以推廣到多叉樹(shù)的情形。
默克爾樹(shù)的特點(diǎn)是,底層數(shù)據(jù)的任何變動(dòng),都會(huì)傳遞到其父親節(jié)點(diǎn),一直到樹(shù)根。
默克爾樹(shù)的典型應(yīng)用場(chǎng)景包括: 安全可信賴的區(qū)塊鏈資產(chǎn)交易平臺(tái)火幣網(wǎng)004km.cn
? 快速比較大量數(shù)據(jù):當(dāng)兩個(gè)默克爾樹(shù)根相同時(shí),則意味著所代表的數(shù)據(jù)必然相同。? 快速定位修改:例如上例中,如果 D1 中數(shù)據(jù)被修改,會(huì)影響到 N1,N4 和 Root。因此,沿著 Root--> N4--> N1,可以快速定位到發(fā)生改變的 D1;
? 零知識(shí)證明:例如如何證明某個(gè)數(shù)據(jù)(D0……D3)中包括給定內(nèi)容 D0,很簡(jiǎn)單,構(gòu)造一個(gè)默克爾樹(shù),公布 N0,N1,N4,Root,D0 擁有者可以很容易檢測(cè) D0 存在,但不知道其它內(nèi)容。
來(lái)源:火幣區(qū)塊鏈公眾號(hào)
第五篇:商務(wù)英語(yǔ)中五種常見(jiàn)的邀請(qǐng)信的寫(xiě)法
商務(wù)英語(yǔ)中五種常見(jiàn)的邀請(qǐng)信的寫(xiě)法
(1)
Dear sir/madam:
I’m delighted you have accepted our invitation to speak at the Conference in [city] on [date].As we agreed, you’ll be speaking on the topic "" from [time] to [time].There will be an additional minutes for questions.Would you please tell me what kind of audio-visual equipment you’ll need.If you could let me know your specific requirements by [date], I’ll have plenty of time to make sure that the hotel provides you with what you need.Thank you again for agreeing to speak.I look forward to hearing from you.Sincerely yours,[name]
[title]
(2)
Dear sir/madam:
Thank you for your letter of [date].I’m glad that you are also going to [place] next month.It would be a great pleasure to meet you at the [exhibition/trade fair].Our company is having a reception at [hotel] on the evening of [date] and I would be very pleased if you could attend.I look forward to hearing from you soon.Yours sincerely,[name]
[title]
(3)
Dear sir/madam:
[organization] would very much like to have someone from your company speak at our conference on [topic].As you may be aware, the mission of our association is to promote.Many of our members are interested in the achievements your company has made in.Enclosed is our preliminary schedule for the conference which will be reviewed in weeks.I’ll call you [date] to see who from your company would be willing to speak
to us.I can assure you that we’ll make everything convenient to the speaker.Sincerely yours,[name]
[title]
(4)
Dear sir/madam:
We would like to invite you to an exclusive presentation of our new [product].The presentation will take place at [location], at [time] on [date].There will also be a reception at [time].We hope you and your colleagues will be able to attend.[company] is a leading producer of high-quality.As you well know, recent technological advances have made increasingly affordable to the public.Our new models offer superb quality and sophistication with economy, and their new
features give them distinct advantages over similar products from other manufacturers.We look forward to seeing you on [date].Just call our office at [phone number] and we will be glad to secure a place for you.Sincerely yours,[name]
[title]
(5)
Dear sir/madam:
On [date], we will host an evening of celebration in honor of the retirement of [name], President of [company].You are cordially invited to attend the celebration at
[hotel], [location], on [date] from to p.m.[name] has been the President of [company] since [year].During this period, [company] expanded its business from to.Now it’s our opportunity to thank him for his years of exemplary leadership and wish him well for a happy retirement.Please join us to say Good-bye to [name].See you on [date].Yours sincerely
[name]
[title]
[/td][/tr]>-1){ elements2.onfocus = log;} } //--> >