EOS.IO釋出黎明2.0版本&開發更新

買賣虛擬貨幣

譯者:嶽利鵬、許莉,原文:


EOS.IODawn 2.0 已經發布,此次釋出提供了由 block.one 團隊維護的一個公開測試網路,對於 2017 年秋季路線圖,以及原定於 2017 年 12 月 21 日前完成的大部分功能,此次釋出也都提供了 Alpha 實現。正如我們路線圖所公佈的,“第二階段 - 最小可行測試網路”將在 2017 年秋季之前展示如下內容:

- P2P 網路程式碼

- wasm 檢測和 CPU 沙盒

- 資源利用跟蹤/限制率

- 創世塊匯入測試

- 鏈間通訊

目前,我們已經完成了大部分功能的初步實現。但是,由於並行開發路線的安排,鏈間通訊的實現在一個單獨的分支上進行,所以初始測試網路將不會用上鍊間通訊的功能。


如果您對 EOS.IODawn 2.0 的效能測試感興趣,可以在 Github倉庫找到啟動和操作一個私有網路的所有區塊鏈和網路程式碼。我們的內部測試表明,在普通硬體上,單執行緒實現可以承受每秒數千次傳輸和可處理多個塊。即便如此,對於一些已知的攻擊方式,我們還沒有實現對應的解決方案。比如,首次編譯新合約可能需要 34 ms,如果被利用,可能導致網路以超過 30 TPS 的交易速率碎片化。

針對這個問題,我們的解決方案是限制合約程式碼更新的頻率,並限制程式碼更新與處理使用新程式碼交易之間的時間延遲。這個時間延遲將在 60 秒左右,以期能夠讓所有的塊生產者有時間從 web assembly 中編譯/快取最佳化後的 x86 指令。

由於這些不可忽視的攻擊方式,私有測試網路的其中一項任務仍然是效能測試,但是功能測試現在已經可以在公開測試網上進行了,我們已經將公開測試網人為地限制在 30 TPS,以確保正常的執行時間和訪問。

在接下來的 6 個月裡,我們將不斷對網路進行測試和除錯,以提高穩定性和效能。


Dawn 2.0的新特徵

初始狀態匯入測試

我們實現了一個快照工具,它將根據分佈在以太坊網路上 EOS ERC-20代幣來匯入初始狀態。我們的測試網路只包含了註冊有效EOS公鑰的餘額。大概有20%的ERC-20代幣已經註冊到了一個EOS的公鑰中。我們的快照還為以太坊賬戶所有未註冊的ERC-20代幣提供了一個恢復工具,這個工具可幫我們從已簽署的以太坊交易中恢復公鑰。這包含了99%的EOS ERC-20代幣,但是還將需要你匯入你的以太坊私鑰到你的EOS.IO的錢包裡。

出於安全考慮,我們的測試網路不會要求使用者匯入他們的以太坊私鑰然後透過恢復工具進行恢復。如果你的EOS私鑰在測試的時候受到威脅,你可以隨時在以太坊網路上註冊一個新金鑰。


代幣“水龍頭”

我們還實現了一個“水龍頭”功能,這樣就可以允許那些沒有代幣或者還沒有註冊一個有效的EOS公鑰的人們進行網路測試。


資源使用和費率限制

我們實現了基本的費率限制和資源使用追蹤。它追蹤頻寬、資料庫儲存以及計算力使用。這個時候我們的費率限制演算法存在著一些已知的bugs,但是這不會影響測試和應用程式的開發。

我們知道有很多人都很關心費率限制相關資訊,比如誰將會被收費,還有如何將它們的代幣租出去以此換來收益等等。


頻寬

所有的交易都會消耗掉區塊生產者設定的網路頻寬的最大值。擁有交易所需許可權的所有賬戶根據交易的大小將會有3天的平均頻寬增加。頻寬會要求授權賬戶(不是合約)放置代幣或由應用程式提供者委託代幣。


計算頻寬

所有的交易都消耗計算力。計算可以是並行地進行的,所以你可以把它想象成多個車道的高速公路,每個車道都擁有不同的擁擠程度。每個範圍(車道)都會有自己獨立的速率限制,並且基於最擁擠的程度,使用者將針對同時請求的範圍(通道)數量和速率限制來計費O(S^2)。


資料庫儲存

EOS.IO合約有訪問記憶體資料庫的許可權,它們可以在該資料庫儲存狀態。合約收費是根據它們儲存資料的總和以及每個獨立資料庫條目的固定開銷 ,這個記憶體資料庫是獨立的並且與EOS.IO的儲存協議是分開的,這樣做是為了讓記憶體的膨脹不那麼集中。


P2P 網路程式碼

對於mesh網路程式碼,我們已經有了基本實現,並且這些程式碼正在公開測試網路中試執行。目前 Block.one 執行了 21 個獨立的伺服器,每個伺服器都配置了一個初始生產者。


EOS黎明3.0

EOS Dawn 3.0將透過安全的區塊鏈間通訊,重新解釋單鏈水平擴充套件和無限擴充套件。有了這兩個特點,對於區塊鏈技術可以建立什麼樣的東西,以及區塊鏈網路如何去中心化就都沒有限制了。


無限擴充套件與無限去中心化

區塊鏈技術的聖盃是在兩個獨立區塊鏈之間實現安全通訊,而不需要某一區塊鏈驗證另一個區塊鏈上的所有內容。這需要使一個區塊鏈成為另一個區塊鏈的輕客戶端。

輕客戶端只使用塊頭和Merkle證明來驗證交易。 EOS.IO將成為第一個支援輕客戶端驗證的POS協議。更重要的是,它將能首次產生Proof-of-Completeness。這意味著您可以證明您已經提前收到來自其他鏈的所有相關訊息,無需等待或接受挑戰的時間。

而傳統的輕客戶端必須處理所有的塊頭,EOS.IO將使輕客戶端只需要當出塊人改變、或需要一個更近塊的新訊息時再處理塊頭。這將使得高效率的頻繁通訊成為可能。在最壞的情況下,兩個區塊鏈每500毫秒一次通訊的開銷將比傳送的訊息總數高出約2個交易。

在這種模式下,只要至少有三分之一的生產者是誠實的,通訊就會得到保證。此外,即使一個生產者腐敗,如果他們簽署任何可能破壞輕客戶(或者叫外部區塊鏈)的訊息,他們會自動受到懲罰。

最後,傳遞到另一個區塊鏈的往返時間取決於每個鏈不可逆的最終確定性等待時間。一個基於EOS.IO的鏈將能夠傳送一條訊息給外部的EOS.IO鏈,並在3秒內得到一個密碼學驗證的響應。

這種級別的鏈間通訊和安全性使得能夠以非常低的延遲在鏈之間建立雙向掛鉤。雖然雙向掛鉤是最常見的例子,但任何商業之間的通訊都可以用同樣的方法進行。


公有/私有通訊

透過跨鏈通訊,私有區塊鏈可以與公有區塊鏈進行安全的雙向通訊。這使得各種不適合公有性質的傳統區塊鏈應用成為可能。例如,有人可以建立瑞士銀行的區塊鏈,除了銀行業主和個人之外,對每個人都是超級秘密。


開發進展

為了交付我們的公共測試網路,我們將開發劃分為兩條平行路徑,以便我們可以重構程式碼的重要部分以實現可讀性、效能和跨鏈通訊。這個重構工作已經在eos-noon分支上開展。

在過去的更新中,我們表示我們打算專注於共享記憶體架構,以便開發人員可以輕鬆地與其他合約執行同步讀取訪問和原子事務。這種方法的後果是喪失了單臺高效能機器的水平擴充套件性。

藉助EOS Dawn 3.0,我們將透過使用最多65000個不同的分割槽region來恢復執行多機橫向擴充套件的能力。所有分割槽將共享相同的帳戶和合約程式碼,但在記憶體資料庫中是獨立的。一個分割槽內的合同必須使用非同步交易與其他分割槽的合作伙伴進行通訊。有了這個架構,一個塊生產者可以作為一個叢集來實現。


整合蘋果的安全硬體

在上次更新中,我們宣佈了我們打算支援Apple,Android和許多智慧卡使用的橢圓曲線。我們的eos-noon分支現在包括一個全功能的驗證概念,在最新的MacBook Pro上使用Touch ID(也包括Face ID)對訊息進行簽名和驗證。類似的程式碼也適用於本機iPhone應用程式。這意味著基於EOS.IO的移動應用將成為已知最安全的區塊鏈錢包

此外,eos-noon分支現在已經整合了對多種簽名型別的支援,這意味著可以使用安全硬體來簽名需要在eos-noon上進行驗證的交易。


500毫秒區塊確認

在我們的eos-noon分支上,我們對底層的DPOS框架實施了一些改變,以支援500 ms的塊(每秒2個塊)。這一變化將大大提高去中心化應用程式的響應速度。為了實現這一點,我們在區塊排程發生方面進行了一些改變。

同一個生產者將連續生產12塊,然後交給下一個生產者。這解決了從生產者到生產者交接的塊生產中最大的瓶頸。在新的結構下,意外延遲可能會導致每次切換時都會丟失幾個塊,但是在切換之間應該有非常快的確認。我們將嘗試不同的交接期。交接期時間越長,在正常操作期間丟失的塊越少,但是如果單個節點停機,則停機時間越長。在500毫秒的時間內,每隔12個區塊,“停機時間”也不會比單個生產者在Steem和BitShares上丟失單個區塊時更差。在這種情況下,首次確認可能需要6秒。


去除替補生產者

跨鏈通訊需要輕客戶端跟蹤活躍生產者集合發生變化的所有區塊。“替補生產者名錄”造成每分鐘會增加或刪除一個新生產者,這迫使輕客戶每分鐘處理至少一個塊頭。為了減少生產者變更的頻率,我們改變了區塊排程結構,只包括前21名生產者。我們正在考慮為替補生產者提供某種待命薪酬,但他們實際上不會負責生產區塊。


一秒不可逆

每個區塊生產者將簽署每個區塊,只要大於2/3的生產者簽署了該區塊,這個區塊就可以被標記為不可逆的。生產者只能在每個塊高度上籤署一個塊頭。這意味著,如果有分叉,生產者不能在兩條分叉的相同高度上簽名區塊。任何這樣的簽名都是生產者不當行為的密碼證明,可以透過多種方法處理,包括自動喪失生產者地位,潛在的抵押損失,以及仲裁可能造成的損害賠償責任。

不像其他協議需要在出下一個塊之前收集大於2/3的簽名,EOS的DPOS流水線允許區塊鏈在“等待狀態”中前進而簽名收集。這些額外的簽名發生在區塊鏈之外,並且在Steem或BitShares的傳統DPOS規則下,區塊在變得不可逆轉之後可以進行修剪。

在這個模型下,有可能實現拜占庭容錯,因為任何塊不可能接收到大於2/3的非拜占庭節點的密碼證據簽名。


刪除生產者洗牌計劃

為了最小化生產者切換期間丟失塊數量,我們希望可以最小化兩個生產者之間的延遲。如果紐約的生產者計劃跟隨中國的生產者,在正常情況下(塊間隔的50%)可能需要250ms的時間才能接收到該資料塊,如果網路擁堵,可能需要更長的時間。另一方面,紐約和得克薩斯州的生產者只有50ms的延遲(塊間隔的10%)。這意味著在從紐約到德克薩斯的交接比從紐約到中國的路由丟失的可能性要低得多。

如果我們安排從紐約到德克薩斯州、加利福尼亞州、夏威夷、日本、中國、印度、以色列、義大利、英國、冰島,然後回到紐約的區塊生產,那麼從來沒有超過50到100ms。但是,如果順序是隨機的,那麼平均交接時間將顯著增高。

生產者洗牌被引入,以最大限度地減少一個生產者選擇後續生產者的潛力。這個風險存在於一個生產者被認為是惡意的世界,但在高度審查公有的生產者與高品質的資料中心的世界裡,它不再有意義。如果一個生產者故意傷害他的鄰居,會有憲法和可預期的行為流程來解決爭端。

在EOS下,生產者將以平均等待時間最小化的方式對生產者排序進行投票,把網路擁塞而導致的總丟失塊最小化。


已知的問題

EOS Dawn 2.0 存在一些已知的問題,不過早期版本出現嚴重的不穩定性也在預料之內。 這次釋出的目的在於展示基本功能,在未來的 6 個月,我們的團隊將會致力於解決 bug,提高穩定性和效能。

為了支援測試網路的穩定性,我們已經禁止了生產者投票。


結束語

在這裡要感謝我們的開發團隊,為了開發交付 EOS Dawn 2.0,全球範圍內展開了通力工作,,這是一個將成為最強大,效能最高,最分散的應用平臺的 alpha 版本。 我們正在按照我們釋出的路線圖執行,並提供比原計劃更多的功能和能力。 我們期待到2018年,並且有信心在EOS令牌分發完成之前,所有功能都將完成並解決錯誤。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;