Zilliqa進度更新第21期

weixin_34127717發表於2018-12-11

2018年11月12日

Yiling Ding 釋出於Zilliqa部落格,Rita譯

上週,我們在推特和官方電報群和大家分享了專案和主網上線的最新進展。最終,我們將主網上線日期確定在2019年1月底,距離Zilliqa代幣發行剛好一年整。

主網上線詳細路線圖

Zilliqa主網將是一個大規模的分散式網路,這意味著它非常複雜,其工程難度要遠超比特幣和以太坊等基於中本聰協議的專案。作為科學家和工程師,我們一直希望為主網實現儘可能多的新功能,並盡全力進行徹底的測試和校準。經過深思熟慮,我們將主網上線日期定在這個時間,並認為這一時間上線不會犧牲主網的去中心化特性、穩定性和安全性。

Zilliqa主網釋出的首要考慮因素是安全性。正如幾周前我們在官方電報群社群中所討論的那樣,我們必須要確保在主網啟動初始階段、雜湊算力相對較低期間,網路免受攻擊。這就是為什麼Zilliqa在主網上線後,首先會渡過一個引導階段(bootstrap phase),來確保網路的安全性。在引導期,礦工挖礦可正常獲得獎勵,但網路並不處理交易。當我們認為雜湊算力已足夠、生產的區塊數滿足一定值之後,孵化引導期將自動結束。

挖礦將是Zilliqa網路的重要組成方面。我們將在11月底分享有關Zilliqa挖礦的更多細節和分步驟說明,屆時我們還將釋出3.0版測試網,讓大家體驗與主網上線後基本一致的公開挖礦。

對於那些熟知我們測試網以及新加坡美食的朋友們,您能猜出3.0版Zilliqa測試網的代號嗎?

如您有更多關於主網及其他方面的問題,歡迎參加於11月15日下午3點在我們的官方電報群舉辦的自由問答AMA交流活動,與心書、Amrit和Yiling一起互動!活動詳情和問題提交可查閱網址: https://www.reddit.com/r/zilliqa/comments/9swvn6/ask_us_anything_zilliqa_ama_15th_nov_2018/

同往常一樣,如您想要了解Zilliqa的更多資訊或與我們討論專案技術,請隨時通過以下官方渠道與我們聯絡:

電報群: https://t.me/zilliqachat

Slack: https://invite.zilliqa.com

推特:https://twitter.com/zilliqa

Reddit:https://www.reddit.com/r/zilliqa/

Github: https://github.com/Zilliqa/zilliqa

Gitter:https://gitter.im/Zilliqa/ecogrant(開發相關專用頻道,包括“生態構建資助計劃”)

已舉辦的活動

一方面,我們的技術團隊在積極推進主網上線;另一方面,團隊其他成員在亞洲各地出席活動,努力推動區塊鏈教育並吸引更多開發人員一起發展Zilliqa生態體系。我們很高興地與大家分享,新加坡交易所CoinHako已經支援ZIL/MYR、ZIL/IDR以及最重要的我們當地的ZIL/SGD交易對。

En Hui和Yiling出席了在香港舉辦的數字媒體亞洲活動,幫助推動區域鏈技術教育的普及,還向諸位優秀的記者和媒體機構介紹了區塊鏈生態系統的整體情況。

我們的CMO Yiling在香港數字媒體亞洲演講

我們團隊的Edison(區塊鏈應用程式開發人員)和Sophia(中國商業開發)赴北京在清華大學介紹了公鏈擴容與區塊鏈在遊戲中的應用。

與穿著Zilliqa帽衫的清華學生和區塊鏈遊戲開發者合影

我們還於11月10日在Gitter頻道上(地址https://gitter.im/Zilliqa/ecogrant)與多位“Zilliqa生態資助金”獲獎者共同舉辦了以開發錢包為主題的對話會活動。這次對話富有成效,激發了多個合作創意,其中包括Zilliqa增強提案(Zilliqa Enhancement Proposal,縮寫SEP)和在Github組織OpenZesame(https://github.com/OpenZesame)下整合Zilliqa社群開發專案等。我們將繼續舉辦這個對話活動,頻率是兩週一次,從而讓我們的社群開發者更好地參與Zilliqa生態系統建設。敬請大家期待未來更多精彩的對話活動!

11月對我們來說將是一個相對安靜的月份,因為我們把重點放在了關鍵技術和主網合作伙伴關係的開發上,目前已確認的活動有:

1、11月12–13日,新加坡

區塊鏈和網路安全研討會

http://sgcsc.sg/Blockchain-and-Cybersecurity-Workshop-2018/

點此連結註冊,可免費參加於11月13日舉辦的Zilliqa安全智慧合約研討會:https://www.eventbrite.sg/e/zilliqa-workshop-on-secure-smart-contracts-tickets-51866230291

2、11月25日17:00,Gitter頻道線上

第二次“Zilliqa生態資助金”獲獎者對話會

網址:Https://gitter.im/Zilliqa/ecogrant

技術進展

從前文我們分享的路線圖中可以看出,技術團隊當前主要專注於測試,包括單元測試編碼和執行系統級測試。同時,我們還對現有的三個功能進行了增強,並實現了其中一個新功能的首個版本。

增強檢視更改機制

如果DS委員會層面的一輪共識由於DS領導者沒有響應而停止了相當長時間,則DS備份節點會觸發檢視更改以恢復停滯的共識。此前版本中,檢視更改演算法始終選擇第一個相鄰節點作為新的候選DS領導者,但實際上這一演算法意味著此行為是可預測的,從而有被惡意節點利用的潛在威脅。

為了解決這個問題,我們現在將候選DS領導者這一過程進行隨機化。此外,由於檢視更改機制僅在一段時間後才被啟用,因此存在DS備份落後於其他節點的可能性,所以在進入檢視變化之前需要新增預檢查。在預檢查期間,DS備份節點向查詢節點查詢最新的可用DS塊和終塊。如果查詢到的塊資訊表明DS備份確實落後於網路的其餘部分,則DS備份會跳過執行檢視更改,而是開始重新加入過程。最後,由於檢視變化可能發生在各種複雜的場景中,我們對單元測試用例進行了改進,以感應多種共識失速情況。

目錄服務微塊(DS MB)和終塊(FB)共識合併

在之前版本中,DS委員會從每個分片收到提交的微塊後,會發生兩輪共識協議。第一輪,委員會就其自己的微塊(即DS MB)達成共識,然後在掌握所有微塊的基礎上,就終塊達成第二輪共識。我們認為這個兩輪流程最終可以合併為一個,所以用了大概兩週時間來實現這一想法。合併的明顯好處是減少了每個交易週期的總執行時間,此外,在整個過程中我們也減少了終塊的儲存需求。

增強升級機制

此前,我們升級機制的工作原理是,讓節點在目標DS週期中自動下載、解壓並安裝我們最新發布的GitHub軟體包。從初始版本開始,我們在釋出包生成中慢慢新增了許多檔案,包括配置常量和DS節點的初始列表。此外,我們的升級機制需要一個單獨的daemon程式在升級後重新啟動節點,截至目前,該程式專門針對我們基於Kubernetes的內部測試環境而設計。對於實際部署,我們現在已經建立了daemon程式的指令碼版本,以及一個示例指令碼來指示使用者執行它。

節點恢復

節點恢復是我們在過去幾周內完成的重要功能之一。如果節點因任何原因(如完成升級)而終止然後重新啟動,它將讀取儲存在機器資料庫中的持久資料(如DS委員會組成、分片結構、DS塊、終塊等資料)以恢復其最後的已知狀態並開始與網路的其餘部分重新同步。整個恢復過程僅依賴於節點自己的資料庫,而不需查詢其他節點,從而能夠防止惡意節點反覆重新自我啟動而浪費網路流量。一旦所有資料被讀出,節點就開始執行類似於前面針對檢視改變機制描述的預檢查。該節點向查詢節點查詢最新的可用DS塊和終塊資訊,並在發現它落後於網路其餘部分時開始重新加入過程。

Scilla直譯器

工作繼續圍繞現金流分析原型展開。我們現在支援多型性和除了列表、maps在內的所有內建ADT。另外,雖然目前不支援庫函式,但已支援內建函式。現金流量分析器的目的是,為每個欄位確定該欄位是否在合約中以某種方式用於表示貨幣。

例如,請注意下面Crowdfunding合約中顯示的goal欄位和backers欄位:

contract Crowdfunding ( Immutable parameters ) (owner : ByStr20, max_block : BNum, goal : Uint128)

(* Mutable fields ) field backers : Map ByStr20 Uint128 = Emp ByStr20 Uint128 field funded : Bool = False ( Backers can invoke it donate funds *)

transition Donate ()

end

(* Allows the owner to get funds out of the contract *) transition GetFunds ()

end

(* Allows backers to claim back money if the campaign is not successful *) transition ClaimBack ()

end

goalUint128)代表眾籌合約的目標。該欄位清楚地表示金額,並且分析能夠正確識別它。backers欄位是從backers的地址(ByStr20)到他們貢獻的金額(Uint128)的對映。分析還應並可以做到將其識別為代表資金。

同時,我們也開始研究另一種資源分析器的工具。

請注意,執行智慧合約需要向礦工支付預付gas費。根據正在執行的轉換和轉換的輸入,執行它所消耗的gas費可以變化。Scilla的資源分析是靜態分析(這意味著實際上沒有執行轉換,但只分析原始碼),它提供了對特定轉換可能消耗的gas費的估計,作為輸入的引數。

舉一個簡化的例子,分析可以表明處理n個元素列表的成本是n * (cost of processing one element of the list)。我們已經完成了分析器的設計並開始實施它。敬請關注下一次更新來了解更多資訊!

開發工具

正如此前承諾的那樣,我們最終釋出了Zilliqa JavaScript庫的v0.2.0以及文件。它們可以通過npm / yarn安裝,如下所示:

- @ zilliqa-js/zilliqa

- @ zilliqa-js/account

- @ zilliqa-js/contract

- @ zilliqa-js/core

- @ zilliqa-js/crypto

- @ zilliqa-js/util

我們建議您使用next標籤(如npm install @zilliqa-js/zilliqa@ next),這樣您將始終安裝通常每天釋出的最新版本(包含所有修復程式)。

請注意,此版本不適用於當前的公開測試網。希望測試新版本的開發人員應使用https://api-scilla.zilliqa.com和https://explorer-scilla.zilliqa.com。

與往常一樣,請隨時在我們的Gitter 和 Slack頻道向我們反饋任何意見和錯誤報告!

Zilliqa新聞報導

TechRepublic上刊登的對Amrit和Ilya的採訪,分別介紹了Zilliqa和智慧合約語言Scilla:

https://www.techrepublic.com/article/how-scilla-could-speed-up-blockchain-transactions/

https://www.techrepublic.com/article/these-industries-will-benefit-most-from-optimized-blockchain-tech/

日文對Zilliqa的報導:

https://crypto.watch.impress.co.jp/docs/event/1150479.html

https://crypto.watch.impress.co.jp/docs/news/1152633.html

有關Zilliqa的3.0版公測網和主網訊息的報導:https://www.cryptorecorder.com/2018/11/08/zilliqa-zil-testnet-end-of-november-upbit-btc-market-listing-in-24-hours-its-a-good-day-for-zil-investors/