• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 自媒體 查看內容
    • 3396
    • 0
    • 分享到

    BM重磅宣布:EOS Dawn 3.0上線,可開發百萬吞吐量Dapp了

    2018-4-6 19:45

    來源: cc-value


    在Dawn 3.0中完成的許多功能在最初的EOSIO白皮書中都沒有涉及,但是在構建高性能、靈活且易于開發的平臺的過程中,我們開發了這些功能。


    本文于4月6日發表在Daniel Larimer的medium上,標題為《EOSIO Dawn 3.0 Now Available》。Daniel Larimer是EOS的創始人,簡稱BM。


    注:本譯文由IMEOS獨家編譯


    Block.one已經激動地宣布EOSIO第一個功能完整的預發布--EOSIO Dawn 3.0。此預發布版本代表著即將在2018年6月發布的EOSIO1.0道路上的一個重要里程碑。


    為了使EOSIO成為構建區塊鏈應用程序的最強大平臺,我們全球的開發團隊一直在全天候工作。距離我們發布EOSIO Dawn 2.0以來已經過去四個月了,而我們有很多要展示的東西。





    構建最先進的區塊鏈架構是一個隨著我們開發進度不斷調整的過程。我們在Dawn 3.0中完成的許多功能在最初的EOSIO白皮書中都沒有涉及,但是在構建高性能、靈活且易于開發的平臺的過程中,我們開發了這些功能。


    可擴展性


    可擴展性意味著通過擴展來不斷滿足市場需求。我們的團隊在每一步都將未來擴展需求納入設計中。


    也就是說,Dawn 3.0只實現了一小部分潛在的優化,可以讓EOSIO進行擴展。我們設計了EOSIO,以便將來的實現可以利用并行計算來加速吞吐量,不需要通過硬分叉就能繼續升級。


    跨鏈通訊


    跨鏈通訊是終極的可擴展性功能,業界一直在尋找諸如側鏈,plasma和分片等技術實現跨鏈通訊。


    跨鏈通訊使一個區塊鏈能夠以可證實的安全方式驗證另一個區塊鏈上的事件的真實性。目標是讓區塊鏈之間的通訊像智能合約之間的內部鏈式溝通一樣安全,我們認為我們已經實現了這一目標。


    我們認為,跨鏈通訊只不過是具備將輕客戶端作為智能合同的能力。 輕客戶端可以驗證區塊鏈中的交易,而無需處理整個區塊鏈。這反過來意味著建立一個有效和安全的輕客戶端驗證的POS區塊鏈。


    因此,輕客戶端驗證必須納入協議設計中,否則,跨鏈通訊幾乎不可能實現。


    稀疏區塊頭驗證


    傳統的輕客戶端需要處理每個區塊頭,然后驗證區塊頭的證據。現在EOSIO可以每秒生成兩個區塊,區塊鏈至少需要2 tps才能處理每個區塊頭的數據。


    這不適用于存在相對頻率不高的跨鏈通訊上。為了解決這個問題,我們創建了第一個帶拜占庭容錯稀疏區塊頭驗證的區塊鏈。


    具體而言,為了試圖欺騙輕客戶端,它需要超過2/3的區塊生產者(例如,21個中的15個以上)腐敗。


    此外,輕客戶端只需處理兩種區塊頭數據:活躍區塊生產者們發生的變化以及那些包含相關跨鏈通訊的信息。這大大減少了維護拜占庭容錯輕客戶端的開銷,并大大提高了跨鏈通訊的效率。


    “上下文無關”行為


    “上下文無關”是實現高效跨鏈通訊的關鍵功能之一。它們是特殊的行為,因為它們可以包含在交易中,但不依賴于區塊鏈狀態,因此它們是“無上下文”的。


    “上下文無關”的一個例子是驗證merkle證明或簽名。 由于這些計算是“上下文無關”的,因此可以并行進行簡單驗證,并且可以剪除那些重復計算。


    每個“上下文無關”的動作也可以引用一個事務的部分特殊可修剪數據。


    這意味著可以修剪大型Merkle證明,并且在區塊鏈重復時跳過復雜的計算。


    上下文無關的行為使我們能夠并行化與跨鏈通訊相關的絕大部分算力承載。


    它們還使我們能夠平行處理并修剪昂貴的計算隱私技術,如機密交易,Bullet proofs和zkSNARK等。


    為了激勵"上下文無關"行為,當計算作為“上下文無關”的一部分而不是作為傳統交易的一部分執行時,區塊生產者僅僅只向用戶收取部分CPU使用費。


    上下文無關的內聯方式生成事件


    EOSIO Dawn 2.0開發人員一直在尋找一種有效的方式來生成由外部來源處理的事件。


    在以太坊,這些事件用于通知關于合同內部運作的結構化信息。通過增加上下文無關的行為,我們也有可能實現上下文無關的內聯方式。


    內聯方式是由合同代碼生成并作為當前交易的一部分執行的行為。一個“上下文無關”的內聯行為可以廉價且平行地處理。


    由于所有內聯操作都包含在Merkle根目錄中,因此可以將這些操作用作可證明的通知給外部服務和其他區塊鏈。


    交易壓縮


    有很多交易存在大量的可壓縮數據。其中最不可避免的例子是合約WebAssembly代碼本身。其他例子包括ABI規范和與賬戶/合約相關的李嘉圖合約。某些應用程序(如社交媒體)可能還希望可以壓縮用戶在區塊鏈生成的內容。


    利用交易壓縮,區塊鏈可以更有效地存儲和傳輸大量交易,并且對于記賬用戶來說,擁有可壓縮數據的交易少于不可壓縮數據的交易。


    解釋器 & 即時編譯器


    Dawn 2.0最大的變化之一就是WebAssembly運行時環境的抽象。 


    Dawn 3.0現在默認使用Binaryen WebAssembly解釋器,而不是更快的Just-in-Time(JIT)編譯器。這個決定會降低性能,但會增加穩定性和標準一致性,同時允許我們在需要時輕松交換更高性能的JIT環境。


    解釋器也解決了我們面對Dawn 2.0所面臨的最大挑戰之一:因編制合約所造成的延誤。將來,我們可以使用解釋器來實現新部署合約更低延遲的執行,與此同時,我們可以在后臺撰寫和優化智能合約。


    這種雙重實現意味著我們所有的單元測試都針對編譯和解釋代碼進行了測試,因此在部署混合方法之前,我們便可以發現潛在的非確定性或非標準符合性行為。


    資源計量速率限制


    隨著Dawn3.0,我們現在有一個全新的資源速率限制系統。也許最大的改變是引入了客觀指令計數算法。當我們著手構建EOSIO時,我們的目標是完全采用主觀限速和強制執行。


    我們發現,主觀執法的成本幾乎與更加客觀的方法相同。我們現在使用混合解決方案,其中用戶按客觀使用收費,但區塊生產者也會在合約中部署主觀掛鐘時間限制。這些主觀限制防止了目標計費方式的濫用。


    我們采用這種方法的主要原因之一是允許單個交易執行比以前更多的計算。從理論上講,區塊可以包含一個需要100 ms運行的事務,而在舊模型下,每個事務必須在1 ms以內運行。


    限速的另一個變化是將限制與定義令牌的需求分開。 這使得EOSIO可以在沒有使用令牌的情況下,應用于私人的、經過許可的區塊鏈上。


    公鏈可以采用系統合約----通過放樣來實現限制,社區可以動態地升級如何分配資源而這與分配的實施方式無關。


    500 ms出塊間隔 & BFT-DPOS混合共識


    隨著Dawn3.0我們已經從3秒的塊間隔縮短到0.5秒的間隔。這大大縮短了確認之前的等待時間。當BFT DPOS結合使用時,交易可在1秒內不可逆轉地得到確認。


    直到不可逆轉之前的延遲對跨鏈通訊有重要影響,因為另一個區塊鏈必須等到不可逆轉的確認時,才能與來自外部鏈的證據合作。


    兩個基于EOSIO的區塊鏈應該能夠在3秒內執行往返通信。以太坊的類似交互模式需要9分鐘,比特幣需要3個多小時。


    BFT-DPOS尚未實施,因為它是非硬分叉優化。我們將在發布EOSIO 1.0之前實施BFT-DPOS混合共識算法。


    BIOS結構


    BIOS結構是EOSIO Dawn 2.0最大的體系結構變化之一。在EOSIO Dawn 3.0下,絕大多數區塊鏈業務邏輯已經轉變為智能合約,可以由社區動態更新而不需要硬分叉。


    一個簡單的EOSIO區塊鏈現在是一個單一的生產者,沒有任何代幣,投票或委托權益證明。核心區塊鏈代碼中唯一實現的是權限系統,它包括創建帳戶,部署合約和強制執行資源配額的功能。


    一切構成區塊鏈的DPOS機制(包括代幣,投票,權益和資源分配)現在由基于Web Assembly的系統合同定義。


    借助這種新架構,我們能夠將開發重點放在區塊鏈的靜態非WebAssembly部分。


    這些是穩定性最關鍵的部分 - 最難升級。在發布EOSIO Dawn 3.0和EOSIO 1.0之間,我們將制定系統合約的最終細節,權益和投票。


    安全特性


    安全對于任何計算系統都至關重要,我們設計EOSIO是市場上最安全的區塊鏈。安全是一個多維問題,必須考慮到黑客攻擊,硬件故障,硬件丟失和密碼丟失的風險。硬件錢包擅長防范黑客入侵,但如果失敗,可能會將您鎖定在帳戶外。此外,硬件錢包的紙張備份可能會丟失或被盜。


    安全延遲交易


    EOSIO Dawn 3.0最重要的功能之一是增加了用戶可配置的延遲以適應不同的操作。有了這種延遲,交易必須在區塊鏈上廣播幾個小時或幾天,然后才能應用。


    在這段延遲期間,用戶可以采取措施重置具有更高權限級別的帳戶,然后取消交易。


    這是一個重大改進:在其他區塊鏈平臺上,等你知道你被黑客攻擊時,為時已晚。(注:類似于我們通過延遲到賬以打擊金融詐騙,減少損失。)


    丟失密碼可恢復


    每個帳戶至少有兩個權限級別:“owner”和“active”。owner的許可級別應該是多重簽名腳本的NofM機制,其中所有的N都不包含owner的私鑰。


    任何時候活動密鑰丟失或被盜,"owner"的權限級別都可以重置active權限。


    如果你失去了“owner”密鑰,或者您的多重簽名合作伙伴不合作,則賬戶的active權限可以在,owner權限閑置30天后請求重置owner權限。owner則有7天時間通過更新active權限來抵制請求。


    在此模式下,由一個或多個硬件錢包控制的帳戶所有者權限將可以安全地防止黑客攻擊和設備故障。


    如果該設備是帶有硬件和指紋/ Face ID安全私鑰的Apple iPhone,則攻擊者需要強迫你的多重簽名合作伙伴,竊取您的手機并竊取指紋或臉部。理想情況下,您的多重簽名合作伙伴也正在使用生物識別安全硬件設備。


    交易的提案系統


    用戶可以在他們自己的時間獨立添加或移除他們的權限,而不是在有限期限的傳統交易窗口必須收集所有的簽名,這使得多重簽名更加容易。


    在交易提案系統內,任何人都可以提出一個交易,并且參與交易的各方都可以簡單的批準它。在獲得你的批準和獲得必須的門檻這段期間內的任何時間,你可以移除你的批準。


    為了實現這個系統,我們增加了新的API,允許合約評估一組賬戶權限是否足以授權交易。這使我們通過部署新的WebAssembly來升級多重簽名,而不是需要一個硬分叉。


    簡化合約開發


    對于EOSIO,我們的許多目標之一就是讓合約的開發盡一切可能輕松。如果開發人員知道如何編寫一個C++類的方法,那么他們應該能夠編寫一個盡可能不復雜的智能合約。


    我們很高興已經簡化我們的“hello world”合約到幾行簡單的代碼。我們的工具鏈已經自動化生成合約ABI的過程,并且調用用戶action到定義于你類目的方法。開發合約從來就不是一件容易的事。


    浮點支持


    簡化智能合約開發的一部分,是使其更容易實現數學算法開發人員的需要。區塊鏈發展最困難的方面之一就是缺乏浮點運算和相關能力、根和三角函數。


    許多算法,例如Bancor,都是更容易實現浮點方面,而不是強迫所有計算指令容易出錯和內存密集定點。


    我們用WebAssembly合約集成一個軟件浮點庫,解決了硬件浮點的不確定性。


    通過軟件浮點,我們可以在復雜的情況下,以不大于固定點的代價獲得確定性和易用性的好處。在許多情況下,定點比確定性浮點表示更容易出錯或內存密集。


    C++ 標準模板庫支持


    對于EOSIO Dawn 3.0,我們付出了巨大的努力來增加對大多數C ++標準模板庫的支持。這意味著開發人員可以使用他們熟悉的工具,庫和算法,同時消除由于這些算法的非標準實現而導致的潛在錯誤。


    計劃事務


    對于計劃事務開發者,只要合約提供了足夠的帶寬,他們就能夠永久運行合約。其他平臺需要在鏈下才能在適當時間喚醒合約。


    通過計劃事務,我們無需開發人員托管自己的服務器來維持合約運行就可以提高效率和易用性。


    自動示波器檢測


    在EOSIO Dawn 2.0下,每個事務都需要聲明它將訪問的數據范圍。這對開發人員來說是易出錯和累贅的。在Dawn 3.0下,區塊生產者負責確定訪問哪些數據范圍并解除沖突。


    這使得所有事務更小,并將調度系統開銷移動到區塊生產者,而不是將其推回到用戶,開發人員或全節點上。


    多重索引數據庫API


    EOSIO Dawn 3.0 引入映射boost::multi_index_container的權限數據庫API。


    通過這個API,我們可以很簡單的支持數據庫表的多鍵排序、查找項目、使用上下限,以及在數據庫中前后反復迭代。這個新的API使用迭代器接口,可顯著提高掃表的性能。


    現在也可以在64位,128位,256位和512位整數以及64位浮點(雙精度)上使用索引。在發布EOSIO 1.0之前,會添加對字符串索引的支持。


    這是靈活性和開發簡便性的顯著改進,因為現在可以在同一個表上擁有幾乎無限數量的索引字段。


    性能


    實際性能是我們團隊一直密切關注的事情,我們現在對結果非常滿意。我們通過幾種不同的配置對我們的軟件進行了基準測試,以了解未來優化時性能的上限和下限。


    所有這些測試都假設令牌傳輸在計算復雜度方面與比特幣或Ethereum ERC20令牌傳輸相當。


    最糟糕的情況---1000 tps


    這是我們未經任何優化的基準性能。我們能夠使用運行具有單線程簽名驗證的解釋器的多節點網絡來支持超過1000 TPS。


    正常平均情況--3000 TPS


    打開JIT編譯器后,我們可以使用運行具有單線程簽名驗證的解釋器的多節點網絡來維持3000 TPS。


    最好的情況----6000 TPS


    一旦我們實現了并行簽名驗證,我們可以假設掛壁時鐘每次簽名的時間將接近0,因為并行程度和簽名數量在。


    我們可以通過禁用簽名驗證來模擬此環境。在這個模型下,我們可以用JIT編譯器在多節點網絡上達到6000 TPS。


    理想情況---8000 TPS


    如果我們從等式中刪除網絡代碼,并只關注CPU在關閉簽名驗證和使用JIT時能夠執行的操作,那么我們可以在單線程上達到8,000 TPS。要在單一鏈上走得更高,需要實現WebAssembly的并行執行和更高級的程序調度。


    在這種情況下,使用解釋器而不是JIT,我們可以看到,僅達到2700 TPS。這表明啟用JIT的相對簡單的改變將使我們的轉移性能提高約3倍。這些測量是在MacBook 2.8Ghz i7上進行的。


    無限制每秒事務數


    對于TPS的定義就好比比較蘋果與橙子。由于跨鏈通信,我們可以根據需要在不同鏈之間分配工作量。代幣可以可靠并且安全的在不同鏈之間轉移。


    由于相同(或不同)礦工并行運行1000條鏈,我們可以看到每秒數百萬的交易。這代表了其他區塊鏈提出的理論擴展方案的實際實現。


    我們強烈鼓勵基于EOSIO的公開網絡的礦工根據需要運行盡可能多的鏈以滿足用戶需求。所有鏈都可以使用相同的代幣作為權益和資源分配的基礎。


    這將最大可能的創造單一代幣的網絡效應,并充分利用高市值資本化代幣形成經濟激勵的信任和安全性。


    像交易所,貨幣和社交媒體這樣的應用程序可以在許多并行鏈上平衡其負載。


    未來之路


    EOSIO Dawn 3.0的核心在于平臺的穩定性。在接下來的一個月中我們將準備最終的智能合約,以能夠執行所有的權益、投票和治理機制。我們也將最終確定我們的代幣標準。


    一旦系統合約成熟到令我們滿意,我們將啟動一個新的公共測試網絡。在此之間,我們會大大簡化搭建測試網絡和開發應用的過程。


    在接下來的幾周內我們會逐漸關閉當前的測試網絡,同時會準備新的測試網絡以減少開發人員的困惑。


    總結


    EOSIO Dawn 3.0是一個擁有穩定API的功能完備的開發者版本。我們認為該平臺現在已經足夠穩定,可供認真的應用程序開發人員開始構建應用程序。


    EOSIO已經變得比我們一年前想象的更加強大和容易開發。我們的團隊在成長,開發也在以創紀錄的速度向前推進。我們的倉庫在過去的一個月里一直是github中十大最活躍的C ++倉庫之一。


    為了EOSIO 1.0在六月份發布高質量的公開版本,一切都在穩步推進!


    翻譯原文內容來自Daniel Larimer的medium發布文章《EOSIO Dawn 3.0 Now Available》如果有表述不一致的地方,以英文版本為準!

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频