在過去的十年裏,PoW 共識協議一直安全地支撐着區塊鏈系統穩定運行,而其存在的能源浪費和算力集中的問題也顯而易見,所以,Fractal 在 2017 年設計之初就決定了朝着 PoS 的方向進行探索,追求更加環保、安全、高性能的區塊鏈共識協議。算法
Fractal 獨有的 3S 特性分別爲:Scalability(可擴展)、Sustainability(節能)和 Security(安全)。其中 Scalability 特性體如今 Fractal 設計的 Layer 0 優化協議 Backpackers 中,關於該協議在另外一篇文章中有詳細說明,本文着重介紹 Fractal 的共識協議——iChing,該協議不是目前已知協議的改進和變形,而是徹底自主創新的一套算法,也是支撐着 Sustainability 和 Security 特性的核心技術。安全
目前大多已知的 PoS 協議爲了不誠實節點間的數據不一致性,經過交互式 BFT 類協議來實現數據的確認與共識,這種構造方式直接來源於已知的協議以及各類改進和變形,同時也繼承了該類協議的缺點及問題,即難以在徹底去中心化的條件下實現全球規模的部署與運行。所以,iChing的設計方法徹底放棄了 BFT 類協議的選擇。服務器
回顧比特幣所設計的 PoW 共識協議,其核心思想是經過硬件資源限制了參與者發送信息的頻率與數量,以此保證系統中的輸入噪音足夠少,進而全部誠實節點能夠達成一致。同時,這種一致的達成並不依賴交互式的密碼協議,而是經過競爭的方式天然實現,從而避免了複雜的通訊開銷。所以爲了實現新的PoS共識協議,iChing 也遵循這兩個作法。less
1. 經過算法構造將礦工的算力競爭轉化爲 stake 的競爭,從而限制礦工的輸入,產生合法的共識節點;性能
2. 在去掉硬件資源限制和避免運行交互式密碼協議的同時,採用競爭機制實現數據的一致性,使得全部誠實節點達成共識。區塊鏈
H ( context , < PK , σ > ) < T優化
iChing 採用上述哈希不等式將 PoW 的算力競爭轉化爲 stake 競爭,其中:spa
context 是區塊中的上下文,包括上一個區塊的哈希值及當前的時間戳round,所以全部的有效輸出造成了一個哈希值相鏈接的鏈條也就是區塊鏈。其中 round 是一個單調遞增的時間變量, 在單位時間內單個帳戶只能進行一次 hash 運算,超過當前系統當前 round 的挖礦操做將不被接受。設計
PK 是公鑰,在PoS中,擁有Stake的人才能參與共識,所以執行此算法的節點應輸入表明自身身份的公鑰PK以供其餘用戶檢驗其擁有的 stake,並以此來調節其挖礦難度。blog
σ 是簽名,爲了防止他人冒用身份,同時應附上該公鑰所對應私鑰對本次嘗試的簽名。此處所使用的簽名算法是肯定性簽名,也就是輸入肯定後,簽名結果惟一肯定。這樣保證了在每一個 round,一個帳戶只可以合法嘗試一次挖礦操做。
T 是難度,若是一個節點擁有的 stake 越多 T 越大,則知足不等式要求的機率越大,即挖到區塊的機率越大。
根據上述描述可知,對一個合法共識節點而言,該算法的輸入在每一個 round 都是肯定的,不能經過嘗試不一樣的輸入而獲得更多的知足不等式的機會,也就是避免了計算力的競爭。經過 stake 的數量來調整挖礦難度,達到了將算力競爭轉化爲 stake 競爭的目的。
iChing 區塊鏈的長度蘊含了對該區塊鏈支持的 stake 的數量。某一條鏈支持的 Stake 數量越多,其單位時間產生的有效輸出也就是生成的區塊越多,區塊鏈的增加也就越快。所以 iChing 的共識節點經過選擇最長的區塊鏈做爲共識基準。在誠實 Stake 比例佔優的假設下,誠實節點選擇最長鏈就能夠實現一致性共識,這樣就避免了運行交互式密碼協議。
可是對於 PoS 協議而言,僅僅這樣設計是不安全的,攻擊者可能採用在 PoS 系統中幾種常見的攻擊來破壞系統。但這些攻擊產生的問題都可經過協議的設計獲得完美的解決方案,這也是 iChing 共識協議最爲精妙的設計,下面將爲你們一一分析。
1.Nothing At Stake攻擊
在 PoS 中,因爲 stake 的可複用性,礦工爲了自身利益最大化能夠在不付出任何代價的條件下,同時在多個位置進行挖礦,這樣會致使區塊鏈容易產生分叉,從而形成共識失敗,這就是 PoS 中常見的 Nothing At Stake 攻擊。
通過嚴格的數學分析以及仿真實驗,即使惡意節點嘗試在全部可能的位置擴展區塊,他所能得到的區塊鏈生長速度是僅僅在最長位置擴展區塊的策略下的約 2.7 倍,在這種狀況下,系統所能容忍的惡意節點的比例不超過 27%,這至關於 PoW 協議中的 51% 算力攻擊。
爲了提升安全性,iChing 協議鼓勵誠實節點也同時在多條鏈後進行挖礦,咱們稱之爲貪心策略。這樣一來,誠實節點也可得到更快的區塊鏈增加速度,從而抵消掉了惡意節點的額外增加速度。通過實驗,iChing 協議能夠實現對壞人接近 45% 的容忍比例,這已經優於大多數BFT類協議所要求的 2/3 誠實用戶的假設。
2.Grinding攻擊
Grinding 攻擊形式是,當一個節點被選中產生一個新區塊時,他能夠經過嘗試不一樣的數據或者其餘隨機化的信息,生成多個一樣有效的區塊,並從中選擇一個對其最爲有利的區塊。若是後續區塊的產生依賴於前一區塊,則惡意參與者能夠經過選擇最爲有利的區塊提升其後續產生區塊的機率,從而破壞區塊鏈的公平性,甚至徹底控制區塊的產生。
在Ching的挖礦公式: H(H(bi),round,PK,σ) < T 中,上一個區塊bi不包含交易信息,所以惡意節點沒法經過嘗試打包不一樣的交易,生成對其最有利的區塊。
3.Long Range攻擊
當用戶購買了一個曾經擁有大量 stake 而如今爲空的帳戶,他可使用這個帳戶挖礦,並從帳戶存在 stake 的位置開始挖,這樣一來通過較長的一段時間,該帳戶中會積累大量的 stake,進而致使該鏈長度超過當前主鏈,這就是 Long Range 攻擊。
爲了防止這種攻擊,iChing 採用了一種混合的最長鏈判別方式。若是有兩條鏈,其分叉高度不是很高,選擇較長的鏈做爲最長鏈。若是分叉高度超過必定限度,找到分岔點,向後尋找第 k 區塊,比較區塊中的 round,較小的做爲最長鏈,以下圖所示。
最長鏈選擇
這作的緣由是,壞人所擁有的 stake 沒法一開始就超過好人擁有的 stake,只有在挖到了足夠多的塊後,得到了足夠多的獎勵纔可以超越好人擁有的 stake,進而擁有超過好人的出塊速率。在分叉的必定時間內,好人擁有的 stake 是遠超過壞人的,所以只需統計,在分叉後一段時間內兩條鏈的出塊速率,就能夠抵禦這種攻擊,好人的出塊速率在給定的時間內更快。
4.適應性用戶註冊
在PoS共識協議中,因爲共識節點的選擇和用戶名及簽名相關,惡意用戶能夠某個區塊爲起點,嘗試註冊不一樣的用戶名從而提升其被選中的機率。針對這種攻擊,iChing協議要求用戶必須註冊並保存相應的stake在足夠舊的區塊才能參與新區塊的共識競爭,從而避免適應性用戶註冊攻擊。
5.平衡挖礦攻擊
惡意節點能夠在某個區塊產生分叉,並交替支持相對較短的鏈。因爲誠實用戶按照貪心協議,會支持與最長鏈長度接近的全部區塊,惡意節點對相對較短鏈的支持會形成兩個或者多個長度接近的鏈並行生長,從而破壞系統共識。針對這種攻擊,iChing協議改進了貪心策略。誠實用戶支持最長鏈以及與最長鏈距離足夠近的鏈而不是長度接近的鏈,能夠避免平衡挖礦攻擊。
6.新用戶加入欺騙
惡意節點能夠產生一個分叉,通過長時間的積累,繞過適應性用戶造成一個更長的鏈。系統中始終在運行的用戶能夠區分這種更長的鏈的攻擊,可是若是新用戶加入系統是沒法直接區分的。爲了抵抗這種攻擊,iChing對於長分叉採用了根部生長速度優先比較的策略,從而避免了惡意節點對適應性用戶註冊的繞過機制。
1.徹底去中心化
區塊鏈系統最吸引人的特色就是其去中心化性質,若是不考慮去中心化的特色,已有的中心化的信息系統徹底能夠提供更高的效率、更高的安全性以及更豐富的功能以及實現數據的一致性存儲。所以咱們認爲,當 PoS 共識協議的設計不該犧牲去中心化特色去實現其餘特性。
但基於傳統的交互式密碼協議所設計的 PoS 共識協議均面臨沒法兼顧效率與安全性的兩難問題。爲了提升效率須要減小參與共識的節點的數量,而爲了保證誠實節點佔優點知足安全性要求又必須增長參與共識節點的數量。
而摒棄了現有類BFT協議的 iChing,在設計過程當中徹底遵照去中心化原則,所以,iChing 能夠支持相似 Bitcoin 這種規模的參與者,同時又不會影響其安全性和系統性能。
2.低成本/高可擴展
iChing 共識節點對服務器沒有特殊要求,參與者徹底可使用正常的家用電器,如果租用雲服務器,年租金約在1-2萬人民幣左右。這樣的成本相對於 PoW 所需的專業礦機或者 EOS 超級節點年費用上百萬的服務器來講,簡直滄海一粟。
低門檻的准入機制使得幾乎每一個持有 stake 的參與者都能成爲節點,這就爲系統的高可擴展性提供了一個良好的基礎服務。
3.安全
在 BFT 類協議的改進和變形版共識協議中,惡意節點不能超過1/3,而 iChing 作爲純 PoS 協議不存在,其利用鼓勵好人適當採用貪心策略,能夠實現對壞人接近45%的容忍比例,因此 iChing 在安全性方面幾乎與 Bitcoin 保持一致。
4.高性能
對比於大多數採用 BFT 類改進和變形的 PoS 協議,iChing 是非交互式共識協議,因此沒必要擔憂節點數量的增長會下降其運行效率,另外一方面,好人採用貪心策略的設計可以使得區塊鏈得到更快的增加速度,這就意味着系統能得到更高效的性能
總結
iChing 是一個徹底創新的共識協議,在去掉硬件資源限制和不依賴交互式密碼協議的同時,經過精妙的設計實現了徹底去中心化,並保證了高可擴展性和安全性,最終達到高效、環保的 Permissionless Blockchain。