新區塊演算法
㈠ 區塊鏈幾大共識機制及優缺點
首先,沒有一種共識機制是完美無缺的,各共識機制都有其優缺點,有些共識機制是為解決一些特定的問題而生。
1.pow( Proof of Work)工作量證明
一句話介紹:乾的越多,收的越多。
依賴機器進行數學運算來獲取記賬權,資源消耗相比其他共識機制高、可監管性弱,同時每次達成共識需要全網共同參與運算,性能效率比較低,容錯性方面允許全網50%節點出錯。
優點:
1)演算法簡單,容易實現;
2)節點間無需交換額外的信息即可達成共識;
3)破壞系統需要投入極大的成本;
缺點:
1)浪費能源;
2)區塊的確認時間難以縮短;
3)新的區塊鏈必須找到一種不同的散列演算法,否則就會面臨比特幣的算力攻擊;
4)容易產生分叉,需要等待多個確認;
5)永遠沒有最終性,需要檢查點機制來彌補最終性;
2.POS Proof of Stake,權益證明
一句話介紹:持有越多,獲得越多。
主要思想是節點記賬權的獲得難度與節點持有的權益成反比,相對於PoW,一定程度減少了數學運算帶來的資源消耗,性能也得到了相應的提升,但依然是基於哈希運算競爭獲取記賬權的方式,可監管性弱。該共識機制容錯性和PoW相同。它是Pow的一種升級共識機制,根據每個節點所佔代幣的比例和時間,等比例的降低挖礦難度,從而加快找隨機數的速度
優點:在一定程度上縮短了共識達成的時間;不再需要大量消耗能源挖礦。
缺點:還是需要挖礦,本質上沒有解決商業應用的痛點;所有的確認都只是一個概率上的表達,而不是一個確定性的事情,理論上有可能存在其他攻擊影響。例如,以太坊的DAO攻擊事件造成以太坊硬分叉,而ETC由此事件出現,事實上證明了此次硬分叉的失敗。
DPOS與POS原理相同,只是選了一些「人大代表」。
BitShares社區首先提出了DPoS機制。
與PoS的主要區別在於節點選舉若干代理人,由代理人驗證和記賬。其合規監管、性能、資源消耗和容錯性與PoS相似。類似於董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。
DPoS的工作原理為:
去中心化表示每個股東按其持股比例擁有影響力,51%股東投票的結果將是不可逆且有約束力的。其挑戰是通過及時而高效的方法達到51%批准。為達到這個目標,每個股東可以將其投票權授予一名代表。獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同於一個平均水平的區塊所含交易費的10%作為報酬。如果一個平均水平的區塊含有100股作為交易費,一名代表將獲得1股作為報酬。
網路延遲有可能使某些代表沒能及時廣播他們的區塊,而這將導致區塊鏈分叉。然而,這不太可能發生,因為製造區塊的代表可以與製造前後區塊的代表建立直接連接。建立這種與你之後的代表(也許也包括其後的那名代表)的直接連接是為了確保你能得到報酬。
該模式可以每30秒產生一個新區塊,並且在正常的網路條件下區塊鏈分叉的可能性極其小,即使發生也可以在幾分鍾內得到解決。
成為代表:
成為一名代表,你必須在網路上注冊你的公鑰,然後分配到一個32位的特有標識符。然後該標識符會被每筆交易數據的「頭部」引用。
授權選票:
每個錢包有一個參數設置窗口,在該窗口裡用戶可以選擇一個或更多的代表,並將其分級。一經設定,用戶所做的每筆交易將把選票從「輸入代表」轉移至「輸出代表」。一般情況下,用戶不會創建特別以投票為目的的交易,因為那將耗費他們一筆交易費。但在緊急情況下,某些用戶可能覺得通過支付費用這一更積極的方式來改變他們的投票是值得的。
保持代表誠實:
每個錢包將顯示一個狀態指示器,讓用戶知道他們的代表表現如何。如果他們錯過了太多的區塊,那麼系統將會推薦用戶去換一個新的代表。如果任何代表被發現簽發了一個無效的區塊,那麼所有標准錢包將在每個錢包進行更多交易前要求選出一個新代表。
抵抗攻擊:
在抵抗攻擊上,因為前100名代表所獲得的權力權是相同的,每名代表都有一份相等的投票權。因此,無法通過獲得超過1%的選票而將權力集中到一個單一代表上。因為只有100名代表,可以想像一個攻擊者對每名輪到生產區塊的代表依次進行拒絕服務攻擊。幸運的是,由於事實上每名代表的標識是其公鑰而非IP地址,這種特定攻擊的威脅很容易被減輕。這將使確定DDOS攻擊目標更為困難。而代表之間的潛在直接連接,將使妨礙他們生產區塊變得更為困難。
優點:大幅縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證。
缺點:整個共識機制還是依賴於代幣,很多商業應用是不需要代幣存在的。
3.PBFT :Practical Byzantine Fault Tolerance,實用拜占庭容錯
介紹:在保證活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容錯性。
在分布式計算上,不同的計算機透過訊息交換,嘗試達成共識;但有時候,系統上協調計算機(Coordinator / Commander)或成員計算機 (Member /Lieutanent)可能因系統錯誤並交換錯的訊息,導致影響最終的系統一致性。
拜占庭將軍問題就根據錯誤計算機的數量,尋找可能的解決辦法,這無法找到一個絕對的答案,但只可以用來驗證一個機制的有效程度。
而拜占庭問題的可能解決方法為:
在 N ≥ 3F + 1 的情況下一致性是可能解決。其中,N為計算機總數,F為有問題計算機總數。信息在計算機間互相交換後,各計算機列出所有得到的信息,以大多數的結果作為解決辦法。
1)系統運轉可以脫離幣的存在,pbft演算法共識各節點由業務的參與方或者監管方組成,安全性與穩定性由業務相關方保證。
2)共識的時延大約在2~5秒鍾,基本達到商用實時處理的要求。
3)共識效率高,可滿足高頻交易量的需求。
缺點:
1)當有1/3或以上記賬人停止工作後,系統將無法提供服務;
2)當有1/3或以上記賬人聯合作惡,且其它所有的記賬人被恰好分割為兩個網路孤島時,惡意記賬人可以使系統出現分叉,但是會留下密碼學證據
下面說兩個國產的吧~
4.dBFT: delegated BFT 授權拜占庭容錯演算法
介紹:小蟻採用的dBFT機制,是由權益來選出記賬人,然後記賬人之間通過拜占庭容錯演算法來達成共識。
此演算法在PBFT基礎上進行了以下改進:
將C/S架構的請求響應模式,改進為適合P2P網路的對等節點模式;
將靜態的共識參與節點改進為可動態進入、退出的動態共識參與節點;
為共識參與節點的產生設計了一套基於持有權益比例的投票機制,通過投票決定共識參與節點(記賬節點);
在區塊鏈中引入數字證書,解決了投票中對記賬節點真實身份的認證問題。
優點:
1)專業化的記賬人;
2)可以容忍任何類型的錯誤;
3)記賬由多人協同完成,每一個區塊都有最終性,不會分叉;
4)演算法的可靠性有嚴格的數學證明;
缺點:
1)當有1/3或以上記賬人停止工作後,系統將無法提供服務;
2)當有1/3或以上記賬人聯合作惡,且其它所有的記賬人被恰好分割為兩個網路孤島時,惡意記賬人可以使系統出現分叉,但是會留下密碼學證據;
以上總結來說,dBFT機制最核心的一點,就是最大限度地確保系統的最終性,使區塊鏈能夠適用於真正的金融應用場景。
5.POOL驗證池
基於傳統的分布式一致性技術,加上數據驗證機制。
優點:不需要代幣也可以工作,在成熟的分布式一致性演算法(Pasox、Raft)基礎上,實現秒級共識驗證。
缺點:去中心化程度不如bictoin;更適合多方參與的多中心商業模式。
㈡ 區塊鏈密碼演算法是怎樣的
區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:
Hash演算法
哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。若此函數同時滿足:
(1)對任意輸入的一組數據Hash值的計算都特別簡單;
(2)想要找到2個不同的擁有相同Hash值的數據是計算困難的。
滿足上述兩條性質的Hash函數也被稱為加密Hash函數,不引起矛盾的情況下,Hash函數通常指的是加密Hash函數。對於Hash函數,找到使得被稱為一次碰撞。當前流行的Hash函數有MD5,SHA1,SHA2,SHA3。
比特幣使用的是SHA256,大多區塊鏈系統使用的都是SHA256演算法。所以這里先介紹一下SHA256。
1、 SHA256演算法步驟
STEP1:附加填充比特。對報文進行填充使報文長度與448模512同餘(長度=448mod512),填充的比特數范圍是1到512,填充比特串的最高位為1,其餘位為0。
STEP2:附加長度值。將用64-bit表示的初始報文(填充前)的位長度附加在步驟1的結果後(低位位元組優先)。
STEP3:初始化緩存。使用一個256-bit的緩存來存放該散列函數的中間及最終結果。
STEP4:處理512-bit(16個字)報文分組序列。該演算法使用了六種基本邏輯函數,由64 步迭代運算組成。每步都以256-bit緩存值為輸入,然後更新緩存內容。每步使用一個32-bit 常數值Kt和一個32-bit Wt。其中Wt是分組之後的報文,t=1,2,...,16 。
STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。
2、環簽名
2001年,Rivest, shamir和Tauman三位密碼學家首次提出了環簽名。是一種簡化的群簽名,只有環成員沒有管理者,不需要環成員間的合作。環簽名方案中簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。
環簽名方案由以下幾部分構成:
(1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。
(2)簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為消息m生成簽名a。
(3)簽名驗證。驗證者根據環簽名和消息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。
環簽名滿足的性質:
(1)無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。
(2)正確性:簽名必需能被所有其他人驗證。
(3)不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為消息m偽造一個簽名。
3、環簽名和群簽名的比較
(1)匿名性。都是一種個體代表群體簽名的體制,驗證者能驗證簽名為群體中某個成員所簽,但並不能知道為哪個成員,以達到簽名者匿名的作用。
(2)可追蹤性。群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭露真正的簽名者。環簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加額外的信息。提出了一個可驗證的環簽名方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份。
(3)管理系統。群簽名由群管理員管理,環簽名不需要管理,簽名者只有選擇一個可能的簽名者集合,獲得其公鑰,然後公布這個集合即可,所有成員平等。
鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
㈢ 區塊鏈技術的六大核心演算法
區塊鏈技術的六大核心演算法
區塊鏈核心演算法一:拜占庭協定
拜占庭的故事大概是這么說的:拜占庭帝國擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。
在這個分布式網路里:每個將軍都有一份實時與其他將軍同步的消息賬本。賬本里有每個將軍的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些將軍。盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。
由此,在一個分布式的系統中,盡管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識
區塊鏈核心演算法二:非對稱加密技術
在上述拜占庭協定中,如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。誰都可以發起進攻的信息,但由誰來發出呢?其實這只要加入一個成本就可以了,即:一段時間內只有一個節點可以傳播信息。當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。
在如今看來,非對稱加密技術完全可以解決這個簽名問題。非對稱加密演算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
區塊鏈核心演算法三:容錯問題
我們假設在此網路中,消息可能會丟失、損壞、延遲、重復發送,並且接受的順序與發送的順序不一致。此外,節點的行為可以是任意的:可以隨時加入、退出網路,可以丟棄消息、偽造消息、停止工作等,還可能發生各種人為或非人為的故障。我們的演算法對由共識節點組成的共識系統,提供的容錯能力,這種容錯能力同時包含安全性和可用性,並適用於任何網路環境。
區塊鏈核心演算法四:Paxos 演算法(一致性演算法)
Paxos演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性演算法」以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分布式計算中的重要問題。節點通信存在兩種模型:共享內存和消息傳遞。Paxos演算法就是一種基於消息傳遞模型的一致性演算法。
區塊鏈核心演算法五:共識機制
區塊鏈共識演算法主要是工作量證明和權益證明。拿比特幣來說,其實從技術角度來看可以把PoW看做重復使用的Hashcash,生成工作量證明在概率上來說是一個隨機的過程。開采新的機密貨幣,生成區塊時,必須得到所有參與者的同意,那礦工必須得到區塊中所有數據的PoW工作證明。與此同時礦工還要時時觀察調整這項工作的難度,因為對網路要求是平均每10分鍾生成一個區塊。
區塊鏈核心演算法六:分布式存儲
分布式存儲是一種數據存儲技術,通過網路使用每台機器上的磁碟空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在網路中的各個角落。所以,分布式存儲技術並不是每台電腦都存放完整的數據,而是把數據切割後存放在不同的電腦里。就像存放100個雞蛋,不是放在同一個籃子里,而是分開放在不同的地方,加起來的總和是100個。