當前位置:
首頁 > 最新 > DATx系列之二-共識機制

DATx系列之二-共識機制

DATx是針對當前廣告行業的再一次創新運動,致力於建立一個以去中心化為基石,以人工智慧為引擎的新型智能廣告生態系統。

DATx提供了用戶行為檔案數據遠程存儲功能,其核心功能是用戶將用戶行為檔案數據存儲在去中心化的網路節點中,之後用戶可以在任意地點獲取和訪問這些數據。用戶行為檔案主要包括了完整的鏈條式的用戶行為記錄,可以讓我們模擬出完整的用戶畫像,知道用戶在媒體上個各種瀏覽、點擊、購買背後的商業真相。

把用戶行為檔案數據存儲到一個去中心化的網路中,意味著其他的網路節點——存儲節點,將保存用戶的數據,而且負責在用戶需要訪問和廣告平台進行大數據分析時,會歸還這些數據。當用戶成為存儲節點後,會獲得DATx激勵。並且,如果有用戶在該存儲節點存儲數據,該存儲節點會獲得額外的激勵。

我們的DATx用戶行為檔案的存儲技術,建立在區塊鏈技術的基礎之上。區塊鏈是一個分散式賬本,通過密碼學方法讓達成一致的雙方直接交易,並由代碼而不是人來保證交易的安全可靠。區塊鏈中所有的規則事先都通過演算法程序的形式表述出來,參與交易的雙方不需要知道對方是君子或小人,更不需要第三方進行信任背書,只需要信任共同的演算法就可以建立互信。

DTAx網路中,加入DATx生態的任何用戶(包括但不限於廣告主、渠道、廣告受眾)都可以成為網路存儲節點。用戶有權選擇他們自己的存儲節點,也有權利選擇自己是否成為存儲節點,但是加入DATx的存儲節點必須遵循我們的共識演算法。

FLP定理和CAP定理

區塊鏈的偉大之處,就是它的共識機制在去中心化的思想上解決了節點間互相信任的問題。區塊鏈能在眾多節點達到一種較為平衡的狀態也是因為共識機制。

區塊鏈可以概括為去中心化分散式分類賬,但是在賬本中,如何對在幾乎相同時間內的產生的事物前後排序,這就涉及到區塊鏈網路的共識機制。在區塊鏈中,所謂共識機制,就是在一個時間段內對事物的前後順序達成共識的一種演算法。在DATx生態中,兩個存儲節點幾乎在相同的時間內競爭存儲同一份文件,那麼,怎麼對競爭的存儲節點排序,則需要我們的共識機制來解決。

當分散式的思想被提出來時,人們就開始根據FLP定理和CAP定理設計共識演算法。

FLP定理

FLP定理即FLP不可能性,它證明了在分散式情景下,無論任何演算法,即使是只有一個進程掛掉,對於其他非失敗進程,都存在著無法達成一致的可能。

FLP基於如下幾點假設:

僅可修改一次

每個進程初始時都記錄一個值(或1)。進程可以接收消息、改動該值、並發送消息,當進程進入decide state時,其值就不再變化。所有非失敗進程都進入decided state時,協議成功結束。這裡放寬到有一部分進程進入decided state就算協議成功。

非同步通信

與同步通信的最大區別是沒有時鐘、不能時間同步、不能使用超時、不能探測失敗、消息可任意延遲、消息可亂序。

通信健壯

只要進程非失敗,消息雖會被無限延遲,但最終會被送達;並且消息僅會被送達一次(無重複)。

Fail-Stop模型

進程失敗如同宕機,不再處理任何消息。

失敗進程數量

最多一個進程失敗。

CAP定理

CAP是分散式系統、特別是分散式存儲領域中被討論最多的理論。CAP由Eric Brewer在2000年PODC會議上提出,是Eric Brewer在Inktomi期間研發搜索引擎、分散式web緩存時得出的關於數據一致性(consistency)、服務可用性(availability)、分區容錯性(partition-tolerance)的猜想:

It is impossiblefor a web service to provide the three following guarantees: Consistency,Availability and Partition-tolerance.

該猜想在提出兩年後被證明成立,成為我們熟知的CAP定理:

數據一致性(Consistency)

如果系統對一個寫操作返回成功,那麼之後的讀請求都必須讀到這個新數據;如果返回失敗,那麼所有讀操作都不能讀到這個數據,對調用者而言數據具有強一致性。

服務可用性(Availability)

所有讀寫請求在一定時間內得到響應,可終止、不會一直等待。

分區容錯性(Partition-tolerance)

在網路分區的情況下,被分隔的節點仍能正常對外服務。

在某時刻如果滿足AP,分隔的節點同時對外服務但不能相互通信,將導致狀態不一致,即不能滿足C;如果滿足CP,網路分區的情況下為達成C,請求只能一直等待,即不滿足A;如果要滿足CA,在一定時間內要達到節點狀態一致,要求不能出現網路分區,則不能滿足P。

理想的分散式系統的一致性應該滿足如下:

1)可終止性:一致性的結果可在有限時間內完成;

2)共識性:不同節點最終完成決策的結果應該相同;

3)合法性:決策的結果必須是其他進程提出的提案。

但是在實際情況中,可能會存在以下問題:

1)節點處理事務的能力不同,網路節點數據的吞吐量有差異;

2)節點間通訊的信道可能不安全;

3)可能會有作惡節點出現;

4)當非同步處理能力達到高度一致時,系統的可擴展性就會變差(容不下新節點的加入)。

所以基於區塊鏈設計的各種共識機制都可以看作犧牲某一部分代價來換取多適合的一致性。

DATx前期分別對幾種主流的共識機制進行了探索。

POW共識機制

POW:Proof-Of-Work,工作量證明

在比特幣等貨幣型區塊鏈中,讓各節點達成一致性的共識機製為工作量證明(Proof-Of-Work,POW),也是我們說的挖礦。通俗地講,POW機理就是「通過工作以獲得指定成果,用成果來證明曾經付出的努力」。

POW共識機制依賴機器進行數學運算來獲取記賬權,資源消耗相對較高、可監管性弱,同時每次達成共識需要全網共同參與運算,性能效率比較低,容錯性方面允許全網50%節點出錯。

POW的核心要義為:算力越大,挖到塊的概率越大,維護區塊鏈安全的權重越大。相對其他共識機制而言,POW邏輯簡單,容易實現,容錯達50%,其安全有嚴格的數學論證。

POW優點:完全去中心化,節點自由進出;

POW缺點:目前比特幣已經吸引全球大部分的算力,其它再用Pow共識機制的區塊鏈應用很難獲得相同的算力來保障自身的安全;挖礦造成大量的資源浪費;共識達成的周期較長。因此,DATx決定不採用這種共識機制。

POS共識機制

POS:Proof of Stake,權益證明

Proof of Stake由QuantumMechanic在2011年首先提出。

POS演算法具體流程為:存在一個持幣人的集合,他們把手中的代幣放入POS機制中,這樣他們就變成驗證者。假設在區塊鏈最前面一個區塊(區塊鏈中最新的塊),這時POS演算法在這些驗證者中隨機選取一個(選擇驗證者的權重依據他們投入的代幣多少,比如一個投入押金為10000代幣的驗證者被選擇的概率是一個投入1000代幣驗證者的10倍),給他們權利產生下一個區塊。如果在一定時間內,這個驗證者沒有產生一個區塊,則選出第二個驗證者來代替來產生新區塊。與POW一樣,以最長的鏈為準。

POS優點:不再需要為了安全產生區塊而大量消耗電能。

由於不再需要大量能耗,通過發行新幣以激勵參與者繼續參與網路的壓力會下降。理論上負總發行量甚至成為可能,由於一部分交易費被燒掉,因此貨幣供應隨著時間減少。隨著規模經濟的消失,中心化所帶來的風險減小。

POS缺點:還是需要挖礦,本質上沒有解決商業應用的痛點;所有的確認都只是一個概率上的表達,而不是一個確定性的事情,理論上有可能存在其他攻擊影響。

並且在權益證明機制POS中,token的餘額越多的人獲得公示信息的概率越高,公示人會得到一定的token作為獎勵,如此持有token多的人會越來越多,少的人越來越少。

瑞波共識機制

Ripple Consensus

瑞波共識演算法,使一組節點能夠基於特殊節點列表達成共識。要接納一個新成員,必須由51%的初始特殊節點投票通過。共識遵循這核心成員的51%權力,外部人員則沒有影響力。由於初始特殊節點由「中心化」開始,它將一直是「中心化的」,而如果它開始腐化,股東們什麼也做不了。與比特幣一樣,瑞波系統將股東們與其投票權隔開,因此比其他系統更中心化。

Pool驗證池

基於傳統的分散式一致性技術,加上數據驗證機制;是目前行業鏈大範圍在使用的共識機制。

優點:不需要代幣也可以工作,在成熟的分散式一致性演算法(Pasox、Raft)基礎上,實現秒級共識驗證。

缺點:去中心化程度不如bictoin;更適合多方參與的多中心商業模式。

PoET共識機制

PoETProof of Elapsed Time,消逝時間量證明

它是由英特爾構建在可信執行環境的一種彩票協議。核心是用intel支持SGX技術的CPU硬體,在受控安全環境(TEE)下隨機產生一些延時,同時CPU從硬體級別證明延時的可信性,類似於彩票演算法,誰的延時最低,誰將獲取記賬權。這樣,增加記賬權的唯一方法就是多增加CPU的數量,具備了當初中本聰設想的一個CPU一票的可能,同時增加的CPU會提升整個系統的資源,變相實現了記賬權與提供資源之間的正比例關係。

QV共識機制

QV:Quorum Voting,仲裁投票

它採用了瑞波和恆星的共識協議,用來解決需立即交易定局的需求。

DPOS共識機制

DPOS:Delegate Proof of Stake,股份授權證明

BitShares社區首先提出了DPOS機制。

與POS的主要區別在於節點選舉若干代理人,由代理人驗證和記賬。其合規監管、性能、資源消耗和容錯性與POS相似。類似於董事會投票,持幣者投出一定數量的節點,代理他們進行驗證和記賬。

DPOS的工作原理為:

去中心化表示每個股東按其持股比例擁有影響力,51%股東投票的結果將是不可逆且有約束力的。其挑戰是通過及時而高效的方法達到51%批准。為達到這個目標,每個股東可以將其投票權授予一名代表,獲票數最多的前100位代表按既定時間表輪流產生區塊。每名代表分配到一個時間段來生產區塊。所有的代表將收到等同於一個平均水平的區塊所含交易費的10%作為報酬。如果一個平均水平的區塊含有100股作為交易費,一名代表將獲得1股作為報酬。

網路延遲有可能使某些代表沒能及時廣播他們的區塊,而這將導致區塊鏈分叉。然而,這不太可能發生,因為製造區塊的代表可以與製造前後區塊的代表建立直接連接。建立這種與你之後的代表(也許也包括其後的那名代表)的直接連接是為了確保你能得到報酬。

該模式可以每30秒產生一個新區塊,並且在正常的網路條件下區塊鏈分叉的可能性極其小,即使發生也可以在幾分鐘內得到解決。

DATx共識機制

鑒於DATx需要高並發、低延遲處理交易的需求,我們採用股份授權證明共識機制,即DPOS共識機制。

DATx中,DPOS共識機制被分為了兩部分,其一是選舉一組區塊生產者,其二是調度生產。選舉流程要盡量保證,權益所有者最終能控制整個網路,因為一旦網路出現問題,權益所有者損失的將會最大。

1選舉區塊生產者

1)成為代表

成為一名代表,用戶必須在網路上註冊屬於他自己的公鑰,然後其會被分配一個32位的特有標識符,該標識符會被每筆交易數據的「頭部」引用。

2)授權選票

每個錢包有一個參數設置窗口,在該窗口裡用戶可以選擇一個或更多的代表,並將其分級。一經設定,用戶所做的每筆交易將把選票從「輸入代表」轉移至「輸出代表」。一般情況下,用戶不會創建以投票為目的的交易,因為那將耗費他們一筆交易費。但在緊急情況下,某些用戶可能覺得通過支付費用這一更積極的方式來改變他們的投票是值得的。

3)保持代表誠實

每個錢包將顯示一個狀態指示器,讓用戶知道他們的代表表現如何。如果他們錯過了太多的區塊,那麼系統將會推薦用戶去換一個新的代表。如果任何代表被發現簽發了一個無效的區塊,那麼所有標準錢包將在每個錢包進行更多交易前要求選出一個新代表。

4)抵抗攻擊

在抵抗攻擊上,因為前100名代表所獲得的權力權重是相同的,每名代表都有一份相等的投票權。因此,無法通過獲得超過1%的選票而將權力集中到一個單一代表上。因為只有100名代表,可以想像一個攻擊者對每名輪到生產區塊的代表依次進行拒絕服務攻擊。幸運的是,由於事實上每名代表的標識是其公鑰而非IP地址,這種特定攻擊的威脅很容易被減輕。這將使確定DDOS攻擊目標更為困難。而代表之間的潛在直接連接,將使妨礙他們生產區塊變得更為困難。

2調度生產

我們還需要重點知道的是,當區塊生產者選好後,如何達成共識。為了說明DPOS共識機制,我們先假設只有三個區塊生產者,A,B,C。當然在實際場景中,會有更多的區塊生產者。

因為共識需要2/3 +1個成員來應對所有場景,所以在這裡,我們假設區塊生產者C是那個破局者。另外,如POW(工作量證明)共識一樣,基本規則是我們總是應該選擇最長的區塊鏈。任何時候,一個誠實的節點看到另一個合法的且更長的區塊鏈,它應該總是切換到那個更長的分支上。

1)正常情況

在正常情況下,區塊生產者輪流每3秒產生一個區塊。假設沒有生產者錯過自己順序,那麼他們生產的鏈條勢必是最長的鏈條。另外,在區塊生產者在非指定時間生產區塊會被認為是無效的。

注意,實際情況中生產者的順序是隨機的。

在後面所有的例子中,我們展示的是一個輪流選擇區塊生產者的方案。但在實際中,生產者集合是隨機的,每N個塊就將隨機一次,其中N是生產者的數量。這種隨機保證區塊生產者B不能總是忽略區塊生產者A,打破多個同樣的分支等待。

2)少數群體的分叉

可以允許最多1/3的節點是惡意節點或者是故障節點,從而導致出現分叉。這裡我們假設A、B、C中C是惡意節點或者惡意節點。在這種情形下,少數分支(下圖下方的鏈)將只能在9秒內生產1個塊,而大多數分支(下圖上方的鏈)由於數量多一倍,將預期能在9秒內生產2個塊。所以,誠實的2/3的大多數可以比小的那一部分創建一個更長的鏈條。

3)隔離環境下的重複塊生產

少數群體可能嘗試創建一個無限數量的分叉,如下圖中,節點C嘗試創建了多個分叉(C0,C1,C2,C3)。但是即使節點C創建了很多分叉,分叉的鏈的長度比主鏈都要短,而且,分叉鏈的成長速度比主鏈要慢。

4)網路碎片

網路非常有可能碎片化,沒有哪一個鏈上的區塊生產者佔到了所有區塊生產者中的大多數。在此情景下,最長的那個鏈將變成最大的一個少數群體。當網路連接恢復正常後,相對較小的那些群體將自然的切換到最長的鏈,從而將恢復明確的共識。

還有一種非常可能的情況是,三個分支中,最大的兩個分支一樣大。此時,將由相對更小的第三個分支加入網路時來打破僵局。存在奇數個區塊生產者,所以僵局一般不會持續很久。在區塊生產者的清洗中,會將生產者隨機生成順序,以確保即使兩個分支具有相同數量的生產者,分支也將以不同的長度爆發增長,導致一個分支最終接管另一個分支。

5)少數群體重複生產

在這種情景下,少數群體C在自己可以生產的時間節點,同時創建兩條或多條的區塊鏈。下一個執行的生產者A,將選擇C創建的可選鏈中的任一條,A選中的這條鏈將成為最長的鏈。下圖中,節點A選擇了上一區塊為C的節點。之後,即便節點C再次創建一個節點,下一個節點A也不會選擇節點C1,而是選擇長鏈。所以,無論少數惡意節點結點製造多少的鏈,他們在下一輪中,肯定不會是最長的那個鏈。

6)最後的不可逆區塊

在網路碎片的情況下,多個分叉可能持續較長時間的隔離。長遠來看,最長的鏈將最終受到認可。但觀察者需要一種手段來確定某個塊是否是在最長鏈條的一部分(確認共識)。這可以通過2/3 + 1個區塊生產者是否對某個塊有確認。

下圖中,塊B被A、C確認了,這意味著2/3 +1都已經確認了。由此我們可以為不可能存在更長的鏈了,因為2/3的區塊鏈是誠實的。

需要注意的是這個規則與比特幣的6個區塊確認類似。一些聰明的人可以設計一系列事件,其中兩個節點可能會在不同的最後不可逆塊上結束。這種極端情況需要一個攻擊者,精確控制通信延遲,並需要在幾分鐘內實施不止一次,而是二次攻擊。如果發生這種情況,那麼最長鏈條這一長期規則仍然適用。我們估計這種攻擊的可能性足夠接近,經濟後果也微不足道,不值得擔心。

7)不足法定區塊生產者

這種情況下,生產者沒有明確達到法定人數,少數人可能繼續生產塊。在繼續生產的區塊中,利益相關者可以包含一些改變投票的交易。這些投票會選舉一組新的區塊生產者,並將區塊生產參與度恢復到100%。一旦發生這種情況,少數人鏈最終會超過其它低於100%參與鏈。

當這個情況發生時,所有的觀察者必須要明白整個網路處於不穩定的狀態,直到多於67%參與者出現後才會穩定下來。哪些選擇在這種情景下發起交易的,與那些在比特幣中接受低於6塊就確認交易成功那樣,冒著類似的風險。他們必須明白,存在某些情況下,共識最終會以另一個鏈為準。在實踐中,這種情形比在比特幣中接受少於3個塊就確認更加安全。

8)大多數的區塊生產者的腐敗

如果大多數區塊生產者合謀變得腐敗,他們製造無限數量的分支,每一個分支都有多於2/3的大多數的簽名。如下圖中節點B和節點C合謀,惡意創建無限數量的分支。

在這樣的場景中,最後不可逆轉塊演算法退化為最長鏈演算法。此時最長的,獲得了最大的群體認證的,將由少數的誠實節點的加入來確定。這樣的情形不會持續很久,因為利益相關者會最終投票替換掉這些區塊生產者。

交易即權益證明(TaPOS,Transactionsas Proof of Stake

當用戶對一個交易進行簽名時,潛在假設是他們知道當前區塊鏈的狀態。如果關於最長鏈的共識發生了變化,那麼對應當用戶簽發交易時所作的潛在假設也失去了基礎。

TaPoS,是指所有的交易,包括最近區塊的哈希。如果它不存在於區塊歷史中,那麼他就被認為是無效的。任何人在一個孤立的節點上簽名交易,交易本身將不會得到承認,而且也不能被移植到主網路上。

這個流程帶來的一個副作用是,為網路帶來安全,可以抵擋長程攻擊,試圖生成一個替代鏈。個人利益相關者每次交易就是對區塊鏈的一個投票。隨著時間的推移,所有的塊都被所有利益相關者確認,這是一個不能在偽造鏈中複製的東西。

最後

DATx通過DPOS和並行鏈的方式解決延遲和數據吞吐量的問題。目前可觀的情況下,DPOS(委託權益證明)都是強健的,甚至在面對相當數量區塊生產者舞弊的情形時也是安全的。選擇塊生產者和驗證節點質量的演算法賦予了DPOS的安全性。運用贊成投票的過程可以確保一個人即使擁有50%的有效投票權也不能獨自挑選哪怕一個生產者。DPOS大幅縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證。

程式化廣告中,一直比較重要的是投放的實時決策、個性化投放需求和大量交易等問題。DATx採用的DPOS共識機制在我們的交易中佔據了重要的地位,其在處理比任何其它區塊鏈更多交易的同時持續達成共識,在DATx廣告生態中展現出了非凡的一面。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Avazu艾維邑動 的精彩文章:

共享經濟第一鏈ODYSSEY加密貨幣OCOIN,首次在六家主要加密貨幣交易所上市
Teebik:2017全球手游市場報告之美國篇

TAG:Avazu艾維邑動 |