1. 程式人生 > >區塊鏈算法

區塊鏈算法

容錯 base 可靠性 aci 之間 改進 系統 con isolation

1.共識算法:
分別解決非拜占庭的普通錯誤和解決拜占庭錯誤,相應算法分為crash fault tolerance(CFT)和byzantine fault tolerance(BFT).
對於CFT的算法有:Paxos,Raft及其變種。特點:性能好,處理快,容忍不超過一半的故障節點。
對於BFT的算法有:PBFT(practical byzantine fault tolerance)確定性算法
PoW(proof of work)為代表的概率算法。
對於確定性算法,一旦達成某個共識就不可逆轉,即共識是最終結果;
而對於概率類算法,共識結果則是臨時的,隨著時間推移或某種強化,共識結果被推翻的概率越來越小,成為事實上的最終結果。
拜占庭類容錯算法往往性能較差,容忍不超過1/3的故障節點。
XFT(cross fault tolerance)改進算法可以提供類似CFT的處理響應速度,並能在多數節點正常工作時提供BFT保障。
2.FLP不可能原理
定義:在網絡可靠,但允許節點失敗(即便只有一個)的最小化異步模型系統中,不可能存在一個可以解決一致性問題的確定性公式算法。
理解:
同步:指系統中的各個節點的時鐘存在上限;並且消息傳遞必須在一定時間內完成,否則認為是失敗的;同時各個節點完成處理消息的時間是一定的。
異步:指系統中各個節點可能存在較大的時鐘誤差,同時消息傳輸時間是任意長的,各個節點對消息進行處理的時間也是任意長的。
3.CAP原理
定義:分布式計算系統不可能同時確保以下三個特性:一致性,可用性、分區容忍性性(可靠性,穩定性)。
一致性:任何操作都應該是原子的,發生在後面的事件能看到前面事件發生導致的結果。這裏說的是強一致性。
可用性:在有限時間內,任何非失敗節點都能應答請求;
分區容忍性:網絡可能發生在分區,即節點之間的通信不可保障。
應用場景:
(1)弱化可用性
(2)弱化可用性
(3)弱化分區容忍性
4.ACID原則
定義:Actomicity(原子性) Consistency(一致性) Isolation(隔離性) Durability(持久性)
該原則描述了分布式數據庫需要滿足的一致性要求,同時允許付出可用性的代價。
與該原則相對立的是BASE原則。該原則犧牲掉對一致性的約束,來換取一定的可用性。

區塊鏈算法