Ⅰ 區塊鏈演算法有哪些
區塊鏈的核心演算法主要包括以下幾種:
1. 拜占庭協定
- 核心思想:在一個分布式的系統中,盡管存在可能作惡的節點,但只要大多數節點是誠實的,就可以去中心化地實現共識。通過每個節點同步消息賬本並簽名驗證,確保消息的一致性,即使有部分節點發送錯誤信息或背叛,也能通過多數同意原則達成共識。
2. 非對稱加密技術
- 核心思想:使用公鑰和私鑰進行加密和解密,確保信息的完整性和發送者的身份認證。在區塊鏈中,非對稱加密技術用於數字簽名,確保交易信息由發送者發出且未被篡改。
3. 容錯演算法
- 核心思想:提供對共識系統的容錯能力,包括安全性和可用性,適用於各種網路環境。即使在網路中存在消息丟失、損壞、延遲等問題,以及節點可能隨時加入或退出、丟棄或偽造消息等行為,容錯演算法也能確保系統的一致性和穩定性。
4. Paxos演算法(一致性演算法)
- 核心思想:解決分布式系統中如何就某個值達成一致的問題。通過消息傳遞模型,確保每個節點執行相同的操作序列,從而得到一致的狀態。Paxos演算法是分布式計算中的重要問題,廣泛應用於各種分布式系統中。
5. 共識機制
- 核心演算法:主要包括工作量證明(PoW)和權益證明(PoS)。工作量證明通過計算難題來確保網路的安全性和去中心化,而權益證明則根據節點的持幣量和時間來分配記賬權。共識機制是區塊鏈網路中確保交易有效性和區塊生成的關鍵。
6. 分布式存儲
- 核心思想:通過網路將分散的存儲資源構成一個虛擬的存儲設備,數據被切割後存放在不同的節點中。這種存儲方式提高了數據的可靠性和可用性,即使部分節點出現故障,也能從其他節點中恢復數據。分布式存儲是區塊鏈技術的重要組成部分,確保了數據的完整性和安全性。
Ⅱ 區塊鏈中哈希演算法的特點是什麼
哈希演算法在區塊鏈技術中扮演著重要角色,它是一種能將任意大小和類型的輸入數據轉換成固定長度輸出值的函數。哈希演算法接收單一數據作為輸入,然後生成唯一的哈希值,無論輸入數據的大小如何。
在區塊鏈系統中,常用的哈希演算法是加密哈希演算法。這類演算法具備以下特點:首先,它們能夠高效地為不同類型的數據生成哈希值;其次,哈希演算法具有確定性,即相同的輸入總是生成相同的哈希值;再次,哈希演算法表現出偽隨機特性,使得哈希值看似隨機,難以預測;此外,哈希演算法還具有單向性,即從哈希值無法反推出原始數據;最後,防碰撞特性使得哈希演算法能在一定程度上保證數據的唯一性和完整性。
哈希演算法的確定性意味著,對於同樣的輸入,哈希函數總是產生相同的輸出。這一特性確保了區塊鏈中的數據一致性,因為每個區塊的哈希值取決於其前一個區塊的哈希值,從而形成了一條不可篡改的鏈。
哈希演算法的偽隨機特性使得攻擊者難以預測下一個哈希值,增加了數據安全性和不可預測性。單向函數特性保證了數據的不可逆性,即從哈希值無法推斷出原始數據,這在保護隱私和安全方面尤為重要。
防碰撞特性是加密哈希演算法的重要屬性之一,它確保了即使輸入數據略有不同,生成的哈希值也會有很大差異。這種特性有助於防止惡意修改數據的行為,從而維護了區塊鏈系統的安全和穩定性。
Ⅲ 鍦ㄥ尯鍧楅摼涓涓鑸浣跨敤浠涔堝姞瀵嗙畻娉
鍦ㄥ尯鍧楅摼涓錛屼竴鑸浣跨敤涓ょ嶄富瑕佺殑鍔犲瘑綆楁硶錛
- 鍏閽/縐侀掗鍔犲瘑綆楁硶錛氳繖縐嶅姞瀵嗙畻娉曚嬌鐢ㄤ竴瀵瑰叕閽ュ拰縐侀掗銆傚叕閽ュ彲浠ュ叕寮鍒嗗彂錛岃岀侀掗闇瑕佷繚瀵嗐傚彧鏈夋嫢鏈夌侀掗鐨勪漢鎵嶈兘瑙e瘑浣跨敤鍏閽ュ姞瀵嗙殑鏁版嵁銆傝繖縐嶅姞瀵嗘柟娉曡騫挎硾鐢ㄤ簬鏁板瓧絳懼悕鍜岃韓浠介獙璇侊紝鍥犱負瀹冨彲浠ョ『璁ゆ暟鎹鐨勬潵婧愬拰瀹屾暣鎬с傚湪鍖哄潡閾句腑錛岀侀掗鐢ㄤ簬紜璁や氦鏄撹呯殑韜浠斤紝鑰屽叕閽ュ垯琚騫挎挱緇欑綉緇滀腑鐨勫叾浠栬妭鐐逛互楠岃瘉浜ゆ槗鐨勬湁鏁堟с
- RSA綆楁硶錛氳繖鏄涓縐嶅父鐢ㄧ殑鍏閽/縐侀掗鍔犲瘑綆楁硶錛岀敱Ron Rivest銆丄di Shamir 鍜 Leonard Adleman浜1978騫村彂鏄庛傚畠鏄涓縐嶉潪瀵圭О鍔犲瘑綆楁硶錛屼篃灝辨槸璇達紝鐢ㄤ簬鍔犲瘑鐨勫瘑閽ュ拰鐢ㄤ簬瑙e瘑鐨勫瘑閽ユ槸涓嶅悓鐨勩
- ECDSA錛堟き鍦嗘洸綰挎暟瀛楃懼悕綆楁硶錛夛細榪欐槸涓縐嶅熀浜嶳SA綆楁硶鐨勬敼榪涚増錛屼嬌鐢ㄦき鍦嗘洸綰垮瘑鐮佸︼紝浣垮緱絳懼悕榪囩▼鏇村揩閫熶笖鏇村畨鍏ㄣ傚湪鍖哄潡閾句腑錛孍CDSA琚鐢ㄤ簬楠岃瘉浜ゆ槗鐨勬暟瀛楃懼悕銆
鎷撳睍鐭ヨ瘑錛
鍝堝笇鍑芥暟鏄涓縐嶅皢浠繪剰闀垮害鐨勬暟鎹錛堝傛枃鏈銆佹暟瀛楃瓑錛夎漿鎹涓哄滻瀹氶暱搴︼紙閫氬父涓256浣嶆垨512浣嶏級鐨勬憳瑕佺殑鏂規硶銆傚畠浠闈炲父蹇涓旈潪甯稿畨鍏錛屽洜涓烘敼鍙樻暟鎹涓鐨勪竴灝忛儴鍒嗭紙鍗充嬌鏄寰灝忕殑鏀瑰彉錛変細瀵艱嚧鍝堝笇緇撴灉鐨勫彉鍖栭潪甯稿ぇ錛岀敋鑷充笉鍙閫嗐傝繖縐嶇壒鎬т嬌寰楀搱甯屽嚱鏁板湪鍖哄潡閾句腑琚騫挎硾浣跨敤錛屽傚尯鍧楃殑merkle鏍戠粨鏋勩佷氦鏄撶殑鏁板瓧絳懼悕浠ュ強瀵嗙爜瀛﹂挶鍖呯殑瀛樺偍絳夈
姣旂壒甯佸尯鍧楅摼涓昏佷嬌鐢⊿HA-256浣滀負鍏跺搱甯屽嚱鏁幫紝榪欐槸鐢盌avid Chaum鍜孧ayra P. Chilomchik鍦1997騫村紩鍏ョ殑涓縐嶇畻娉曘係HA-256鎻愪緵浜嗕竴縐嶉潪甯稿畨鍏ㄧ殑鏂瑰紡鏉ュ壋寤哄尯鍧楅摼騫剁『淇濅氦鏄撶殑瀹夊叏鎬с傛ゅ栵紝鍖哄潡閾句腑鐨凪erkle鏍戠粨鏋勪篃鏄鍩轟簬SHA-256鐨勫搱甯屽嚱鏁版潵鍒涘緩鐨勩
浠ヤ笂涓ょ嶅姞瀵嗙畻娉曞拰鍝堝笇鍑芥暟鍦ㄥ尯鍧楅摼涓閮芥壆婕旂潃闈炲父閲嶈佺殑瑙掕壊錛屽畠浠淇濊瘉浜嗕氦鏄撶殑瀹夊叏鎬с佸畬鏁存у拰鍖垮悕鎬э紝鍚屾椂涔熺『淇濅簡鍖哄潡閾劇綉緇滅殑鍘諱腑蹇冨寲鍜屼笉鍙綃℃敼鎬с
鍚屾椂錛岀敱浜庡尯鍧楅摼涓鐨勬暟鎹鏄浠ュ尯鍧楃殑褰㈠紡涓嶆柇澧為暱鐨勶紝榪欎簺鍔犲瘑綆楁硶榪樿鐢ㄤ簬鍒涘緩鍖哄潡澶村拰鍖哄潡闂寸殑閾炬帴錛岃繘涓姝ユ彁楂樹簡鍖哄潡閾劇殑鎬ц兘鍜屽畨鍏ㄦс
Ⅳ POA(Proof of Activity)區塊鏈共識演算法
POA(Proof of Activity)演算法是一個區塊鏈的共識演算法,基本原理是結合POW(Proof of work)和POS(Proof of stake)演算法的特點進行工作,POW演算法和POS演算法的具體內容可以參考:
POW演算法 : https://www.jianshu.com/p/b23cbafbbad2
POS演算法 : https://blog.csdn.net/wgwgnihao/article/details/80635162
POA演算法相比於其他演算法可以改進網路拓撲,維持在線節點比例,需求更少的交易費同時減少共識演算法過程中的能量損耗。
POA演算法需求的網路中同樣包含兩類節點,礦工和普通參與者,其中普通參與者不一定一直保持在線。POA演算法首先由礦工構造區塊頭,由塊頭選出N個幣,這N個幣的所有者參與後續的校驗和生成塊的過程。
從這里可以看到POA演算法不僅與算力有關,後續的N個參與者的選舉則完全由參與者在網路中所擁有的幣的總數量決定。擁有越多幣的參與者越有機會被選為N個後續的參與者。而後續N個參與者參與的必要條件是這N個參與者必須在線,這也是POA命名的由來,POA演算法的維護取決於網路中的活躍節點(Active)。
POA演算法的一個理想的基本流程是,類似於POW協議,礦工構造出一個符合難度要求的塊頭,通過礦工得到的塊頭計算衍生出N個幣的編號,從區塊鏈中追溯可以得到這幾個幣目前所述的參與者。礦工將這個塊頭發送給這N個參與者,其中前N-1個參與者對這個塊進行校驗和簽名,最後第N個參與者校驗並將交易加入到該塊中,將這個區塊發布出去,即完成一個區塊的出塊。
一個理想過程如下圖所示:
在實際運行中,無法保證網路上所有參與者都在線,而不在線的參與者則無法進行校驗和簽名,這個無法被校驗和簽名的塊頭則會被廢棄。
即在實際運行中,應該是一個礦工構造出塊頭後廣播給各個參與者簽名,同時繼續重新構造新的塊頭,以免上一個塊頭衍生的N個參與者存在有某一個沒有在線,而導致塊頭被廢棄。
因此,在這種情況下,一個塊是否被確認不僅與礦工的計算能力有關同時也與網路上的在線比例有關。
與純POW相比,在與比特幣(POW)同樣10分鍾出一個塊的情況下,POA由於會有參與者不在線而產生的損耗,因此,10分鍾內礦工可以構造的塊的數量會更多,即塊頭的難度限制會降低,那麼礦工在挖礦過程中會造成的能量損耗也會降低。
與純POS相比,可以看到POA的出塊流程並不會將構造區塊過程中的相關信息上鏈,可以明顯減少區塊鏈上用於維護協議產生的冗餘信息的量。
本節對上訴協議中一些參數設置進行分析
在礦工構造出塊頭後對塊頭進行校驗和區塊構造的N個參與者的數量選定比較類似於比特幣中每一個塊的出塊時間的選取。比特幣中選擇了10分鍾作為每一個塊的期望出塊時間並通過動態調節難度來適應。
這里N的取值同樣可以選擇選定值或者動態調節。動態調節需要更加復雜的協議內容,同時可能會帶來區塊鏈的數據膨脹,而復雜的協議也增加了攻擊者攻擊的可能性。另外暫時沒有辦法證明動態調節可以帶來什麼好處。靜態調節在後續的分析(4 安全分析)中可以得到N=3的取值是比較合適的。
從上面的描述可以看到,構造新的區塊的除了礦工還有從塊頭中衍生出來的N個幣所有者。在構造出一個新的區塊後,這些參與者同樣應該收到一定的激勵,以維持參與者保持在線狀態。
礦工與參與者之間的非配比例與參與者的在線狀態相關。給予參與者的激勵與參與者保持在線狀態的熱情密切相關,越多參與者保持在線狀態,能更好地維持網路的穩定。因此,可以在網路上在線參與者不夠多的時候,提高參與者得到的激勵分成比例,從而激發更多的參與者上線。
如何確定當前參與者的在線情況呢?可以最後第N個參與者構造區塊時,將構造出來但是被廢棄的塊頭加入到區塊中,如果被丟棄的塊頭數量過多,說明在線人數過低,應當調節分成比例。
同時最後第N個參與者與其他參與者的分成同樣需要考慮,第N個參與者需要將交易加入區塊中,即需要維護UTXO池,同時第N個參與者還需要將被丟棄的塊頭加入新構建的區塊中。
為了激勵其將廢棄區塊頭加入新構建的區塊中,可以按照加入的區塊頭,適當增加一點小的激勵。雖然加入更多的區塊頭,可以在下一輪的時候增加分成的比例,應當足夠激勵參與者往區塊中加入未使用的塊頭了(這里參與者不可能為了增加分成而更多地加入區塊頭,每一個區塊頭都意味著一位礦工的工作量)。
一個參與者如果沒有維護UTXO池則無法構造區塊,但是可以參與前N-1個的簽名,因此為了激勵參與者維護UTXO池,作為最後一個構造區塊的參與者,必須給予更多的激勵,比如是其他參與者的兩倍。
從3.2的描述中可以知道一個用戶必須在線且維護UTXO池才可能盡可能地獲得利益。這種機制勢必會導致一些用戶將自己的賬戶託管給一個中心化的機構。這個機構一直保持在線,並為用戶維護其賬戶,在被選為構造區塊的參與者時參與區塊的構建並獲取利益。最後該機構將收益按照某種形式進行分成。
上面說到參與者必須用自己的密鑰進行簽名,而託管給某個機構後,這個機構在可以用這個密鑰簽名構造區塊的同時,也有可能使用這個密鑰消費用戶的財產。這里可以採用一種有限花銷的密鑰,這個密鑰有兩個功能,一個是將賬戶中的部分財產消費出去,另一個是將所有財產轉移到一個指定賬戶。在託管的時候可以使用這個密鑰,在被通知部分財產被花費後可以立即將所有財產轉移到自己的另一個賬戶下,以保證財產的安全。
從上面的分析可以看到,POA的安全性與攻擊者所擁有的算力和攻擊者所擁有的股權有關。假設攻擊者擁有的在線股權佔比為 ,則攻擊者的算力需要達到其他所有算力的 倍才能達成分叉。假設攻擊者股權總佔比為 ,網路中誠實用戶的在線比例為 ,則攻擊者的算力需要達到其他所有算力的 倍才能達成攻擊。
攻擊的分析表格如下:
從上文的分析可以看到,POA演算法相比於其他演算法可以改進網路拓撲,維持在線節點比例,需求更少的交易費同時減少共識演算法過程中的能量損耗。同時,PoA協議的攻擊成本要高於比特幣的純PoW協議。
參考文獻:Proof of Activity: Extending Bitcoin』s Proof of Work via Proof of Stake
Ⅳ 區塊鏈哈希演算法是什麼
哈希演算法也被稱為「散列」,是區塊鏈的四大核心技術之一。是能計算出一個數字消息所對應的、長度固定的字元串(又稱消息摘要)的演算法。由於一段數據只有一個哈希值,所以哈希演算法可以用於檢驗數據的完整性。在快速查找和加密演算法的應用方面,哈希演算法的使用非常普遍。
在互聯網時代,盡管人與人之間的距離更近了,但是信任問題卻更嚴重了。 現存的第三方中介組織的技術架構都是私密而且中心化的,這種模式永遠都無法從根本上解決互信以及價值轉移的問題。因此,區塊鏈技術將會利用去中心化的資料庫架構完成數據交互信任背書,實現全球互信的一大跨步。在這一過 程中,哈希演算法發揮了重要作用。
散列演算法是區塊鏈中保證交易信息不被篡改的單向密碼機制。區塊鏈通過散列演算法對一個交易區塊中的交易進行加密,並把信息壓縮成由一串數字和字母組成的散列字元串。區塊鏈的散列值能夠唯一而准確地標識一個區塊。在驗證區塊的真實性時,只需要簡單計算出這個區塊的散列值,如果沒有變化就 意味著這個區塊上的信息是沒有被篡改過的。

鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。
Ⅵ 區塊鏈幾種共識演算法
區塊鏈中主要的共識演算法有以下幾種:
工作量證明:
- 核心機制:要求網路中的節點通過計算復雜的問題來獲取記賬權。
- 優點:保證了系統的安全性和去中心化。
- 缺點:能源消耗巨大,且隨著礦機技術的發展,存在算力集中化的問題。
權益證明:
- 核心機制:基於持有加密貨幣的權益來分配記賬權。
- 優點:減少了對能源的需求。
- 缺點:存在中心化風險,且代幣經濟復雜性較高。
委任權益證明:
- 核心機制:通過引入代理人角色,將記賬權分配給經過投票選舉的代理人。
- 優點:提高了系統的效率,同時減少了中心化的影響。
- 注意:該機制仍然需要在實踐中不斷驗證和完善,以確保其長期穩定性和安全性。
這些共識演算法各有優劣,但共同的目標是為區塊鏈應用提供一個公平、安全、高效的共識機制,以支持去中心化的數字資產交易和數據共享。