GCBGLOBALCASH一致共識

GCBGLOBALCASH一致共識

一致共識(consensus)GCBGLOBALCASH綜述GCB遵循Ripple提出的RTXP協定。所以,在分散式節點之間,有相似的協商一致性的重要步驟。“一致共識(Consensus)“是整個網路就同一總賬達成一致的過程。

1.1總賬
總賬是系統狀態的快照。它包括每個人的餘額和信託額度。總賬被按照 哈希樹(Hash Tree)結構排列,從而它可以被概括為單一的數字。
1.2不串通
我們選擇“相信不會串通欺騙我們”的特定的驗證者,而不是隨機驗證者。這遠比“相信”一個人不撒謊的標準要寬鬆的多。
想像一下,我們認為Wile E. Coyote和Road-Runner是競爭對手。由於他們事實上長期處在鬥爭中,所以一般來說,他們不會串通起來,尤其是不會串通起來欺騙我們。如果他們都證實了某件事,那么這件事非常可能是真實的。這表明,當他們可能完全不可靠時,我們可以利用他們不會串通而欺騙我們的特點,從而得出某件事非常可能成真的結論,才有了今日令世人驚嘆的GCBGLOBALCASH系統。
1.3 獨特節點列表(Unique Node List)
驗證者運行代表它們自己處理驗證的GCB節點。我們相信不會串通起來進行欺騙的驗證者列表被稱為我們的獨特節點列表(Unique Node List,簡稱UNL)。
為了更好地確認某事是真實的,我們向UNL中添加了更多的驗證者。例如,我們添加了Itchy 和Scratchy。它們不具有百分百的可信度,但不太會串通起來欺騙我們。
1.4精選驗證者
在現實世界關係中,人們應精選包括1000個驗證者的UNL列表。他們應從5個不同大洲選擇200個驗證者。他么應選擇具有不同利益的驗證者:做市商、金融公司、非盈利機構、政黨、宗教組織等。通過選擇大量不可能說謊、不可能被迫成為一個組織及串通欺騙我們的有信譽度的派別,可以確認總賬是準確的。
實際上,大多數人會使用由客戶端提供的默認UNL。但軟體允許他們選擇特定的驗證者。
1.5通用一致性
如果每個人選擇了一套完全不相干的驗證者,網路將不會達成一致共識,總賬的特殊版本就是唯一正確的總賬。但實際上,人們的UNL列表會重複。這種重複導致可靠的驗證者達成同樣的協商。
每個人可靠的系統用戶都想讓系統達成協商。驗證者會選擇其他驗證者格外相信的,因為他們也想達成協商。基本上,所有可靠的系統用戶合作保證協商是可以達成的且可維持的。當然同時,缺乏一致性共識是很容易發覺的。
1.6說謊者
如果有人不誠實,那么誠實的參與者將會注意到他們撒謊,並且不考慮他們今後的證明。也就是說,如果你撒謊一次,你就不會再有收益,網路在未來不會再考慮你說的話。
GCB協定要求驗證者在每次驗證間隔在協商總賬上籤字。如果驗證者忘記做這件事,是很容易被發覺的。同樣,如果如果一個驗證者簽了總賬而且是在有效交易不能實現的情況下籤了總賬,也是很容易被發覺的。
1.7人格分裂
有人說Sybil可能偽裝成為一個百萬節點。Sybil希望選擇信任Sybil節點的人不串通,然後Sybil就能撒謊。GCBGLOBALCASH不受這種類型的攻擊的影響,因為人們避免選擇匿名節點來防止這個問題。人們只選擇實體作為非匿名或具有良好聲譽的驗證者。即便他們偶然選擇了Sybil的一些節點,這些節點也不會成為主流,不會產生有意義的影響。
此外,除非你的行為很明顯,沒有什麼途徑能造成任何實際傷害。如果一個交易完全有效,而且比協商視窗先被發現,那就沒有不給交易投yes的理由。如果一個交易集群被接受成為主流,就沒有理由不證實交易集群形成的總賬。我們可以預見的這個攻擊帶來的最糟糕的傷害是讓網路癱瘓。如果這種情況真發生了,所有系統可靠用戶都會判斷是什麼節點導致了這個問題並停止信任他們。目前,攻擊者回到了起點。
1.8協商可擴展性
GCB的協商進程只用一些驗證者。當GCB網路開始工作,就只有非常少的驗證者了。然而,那些驗證者對GCB網路的成功有非常既定的興趣。因此,他們非常不願意串通其他驗證者來欺騙某些人或破壞網路。一旦他們這樣做了,他們就會被抓住,從此之後被忽視。
向網路中添加更多的驗證者只能強化網路不會欺騙任何人的可信度。
1.9結論
通過信任驗證者不串通來尋找協商是一種建立有效總賬的簡單而可靠的方式。因為,網路不是依賴工作證明,該協商過程很快,而且允許GCB網路在數秒內證實總賬。
2.技術說明
2.1綜述
一致共識過程的目標是確保所有節點同意相同的總賬。總賬是在某個特殊時間點每個人餘額和要約的即時性快照。你可以通過接管先前的總賬及申請自那時起已經發生的所有交易來形成總賬。因此,為了對現有總賬取得一致意見,節點必須同意先前的總賬及自那時發生的交易集群。
GCBGLOBALCASH網路中每個參與者都有一個驗證者列表。它也被稱為獨特節點表(UNL)。每個線上驗證節點將看到所有的交易。所有節點會試圖定期驗證或關閉一個新總賬。每個節點會顯示它認為的交易集群套用到先前總賬的內容。如果一個節點發現它的大部分UNL都支持一個交易集群,那么它就會轉向這個新的交易集群。
這個過程是反覆進行的。一個節點會建議一個特定的交易集群,如果它發現大部分UNL支持一個不同的集群,它會轉向並建議這個由大多數支持的集群。在一定循環後,節點會集中於同一交易集群。交易集群被精選的內容是不相干的。所有之中最重要的是每個人都同意。一旦交易集群被選中,它就會被套用到先前的總賬。這是一個確定的過程,從而每個人開始於同一先前總賬,交易集群得到同一結果。
如果某個有效交易被投票移除正在關閉的總賬且持續有效,它將被寫入下一個關閉總賬。新總賬大約每五秒被關閉一次。所以你只需要等5-10秒,交易就可以被網路確認。
許多人想知道,既然每個節點有不同的UNL,那么這是否會導致總賬有許多不同版本。只要UNL間有最小程度的內部連線,一致共識就會快速達成。這根本上是因為每個可靠節點的最初目標是實現一致共識。
此外,如果一致共識過程中很早宣布了一個交易且充分有效,那所有可靠節點會認為它應該進入下個集群。如果交易很晚被接受或者可能與另一交易有衝突,那么沒有可靠節點會特別關注它是否進入一致性集群。如果交易實際上有效,那它無論如何都會進入下一個一致性過程,因為所有可靠節點都認為它該這樣做。它們真正看重的是一致性。
2.2更多細節
一致共識發生在每個總賬的多輪中。
參與算法的每個節點提出一個交易集(通過樹根的單一哈希值)
節點獲取它們信任的節點提出的所有交易集。(這意味著多虧樹狀結構,只在差異中有錯誤)
如果一個節點不了解一個交易,那它不會把交易放入任何提出的哈希樹中,不會給交易投票。這讓系統比較容易地處理符合。如果交易沒有被足夠多的驗證者看到或處理,那么大多數會投否定票。剩餘的會在一致共識過程中把投票轉成否定,交易會被推遲。
基本原則是,如果你的UNL上,包括你自己,有50%的節點投票贊成一個交易,那你就收入了它。反之,則無法收入。幾秒後,入口從50%升至60%,且持續上升(同意失敗就是失敗協定)。這保證了較長一段時間交易投票不會只在50%附近波動。
有兩個需要理解的重要事項:1)任何合法交易,如果在本輪開始前被發現,可以得到絕對多數。2)任何出局而合法的交易會在下一個總賬中被每個可靠節點投票通過。有一點例外的是在總賬關閉時間恰好進來的交易。這種情況下,我們不管交易是否通過,結果都是“正確的”。它們都是正確的,因為交易會出現在這個總賬或下個總賬中。
現在這個被同意的交易集群只是一個候選集群。如果節點認為交易應進入總賬,它們會投票贊成,但理論上它可能會在套用到總賬上時失敗。 如果兩個相衝突的交易同時被贊成進入一個交易集群,這是沒有關係的。申請交易的進程是確定性的,而且至多一個會成功。由於相衝突的交易不再有效,它將永遠不會允許進入另一個集群。
恢復未能進入一致性集群的過程也是確定性的。所以,如果有兩個相衝突的交易且沒有一個占據多數,那將在下一次一致共識視窗中由大多數可靠節點選擇,它將進入下個一致性交易集群。
為GCB網路選定的時間方案被稱為 “持續總賬關閉”。
2.3規模擴展
這裡有一些幫助擴展規模的事項。交易樹完成同步的事實意味著你只需要傳送小的更新。
你只需要一次檢查一個交易。如果節點給你無效交易,你可以在重新連線時,通過不連線及要求工作證明來懲罰它。沒有重要節點會傳送給你無效交易。沒有人會讓可靠節點傳送無效數據。
規則是只有你相信交易能索取費用才能推進這個交易。這防止網路因不能成功的交易而堵塞。
我們處理看起來是合法交易的DoS攻擊的主要方式是提高交易費用。如果51%的網路要求特定的交易費用,那么如果你不付費的話,就不能達成一致性共識。
節點只是處理本地工作,稱有人斷開可能濫用的節點,要求邊界濫用節點的工作證明,提高他們要求推進交易的費用,從而傳送無效交易給他們。驗證者還在驗證中發布交易費用標準來在事件中施加反向壓力,因此得到更多的可靠交易,甚至超出他們處理的能力。
如果驗證者趕不上被投票贊成進入一致性集群的交易負荷,那它將轉向發行局部驗證。這讓那些相信它的人知道,它不是從網路中被分離出來的(而且可能驗證其他總賬)。此外,驗證者將提升交易費用,從而防止網路縮小為“超級節點”小集群,儘管這樣會增加串通風險。
2.4迷你FAQ
2.4.1 假設33%的節點首先看到交易A,33%的節點看到交易B,34%的節點看到交易C,且這三個交易是相互衝突的,這種情況下會發生什麼?
沒有交易會被投票贊成,同時,具有確定性算法(deterministic algorithm)只會選擇一個交易作為下一總賬的候選。
2.4.2 收入總賬交易的確定性算法是如何運作的?
基本上,它按最大效率原則 套用交易,直到沒有新交易進入。交易可能是:通過,hard fail或soft fail 三種結果。如果交易通過了,它們就會被收錄。如果是hard fail,交易就會失敗。如果是soft fail,交易就會成為候選。
一旦交易進入,所有與之的衝突的其它交易都會hard fail。
現有算法首先是按哈希順序,所有賬戶/佇列順序中反覆soft fail。當沒有新交易通過時,該運行過程結束。

相關詞條

熱門詞條

聯絡我們