Zeppelin:用於區塊鏈應用的開源安全智慧合約架構

雪花又一年發表於2018-04-19

9月15日,Zeppelin的路線圖建議釋出。Zeppelin是一種構建安全智慧合約的開源架構,遵循MIT許可。該建議的推出正是時候,從DevCon2大會上圍繞著智慧合約形式驗證的報告和討論的次數上就可以證實這一點。

智慧合約解決方案的建立者Demian Brener和Manuel Aráoz是Zeppelin相關工作的先行者。Zeppelin是一個社群驅動專案,目的在於實現安全的、經測試的且經審計的智慧合約程式碼開發。到目前為止最大規模的智慧合約應用“DAO”,在今年早期由於在其智慧合約中所存在的一個漏洞而被攻擊,造成了六千萬美元的損失。這個事件說明了社群中的許多關注是合理的,這將形式驗證問題置於了一個重要位置。

鑑於以太坊是最廣為使用的智慧合約開發平臺,Zeppelin專案在初期是側重於為Solidity語言構建工具。在釋出的建議中,Brener提及將為Solidity語言構建下列的模組:

  • 拉動式支付(Pull payment)輔助模組:使用拉動式支付(起名源於其工作方式與需要傳送操作的推動式支付相反)策略可避免許多的安全問題(包括臭名昭著的“DAO被破解”事件)。我們已經具有了簡易的PullPaymentCapable.sol合約,但是仍需要更全面的工具、文件和例項。
  • 合約生命週期工具:當前在沒有過多考慮未來將會發生什麼的情況下,大部分的合約就被部署到區塊鏈中。我們需要構建能更好地去管理合約終結策略、合約屬主轉變、合約暫停及恢復、合約升級等的工具。
  • 容錯和自動挑錯獎勵:其中包括對漏洞的自動檢測、從不一致狀態恢復的工具、限定合約所管理資金規模的簡易工具。我們也在致力於漏洞獎勵合約,並期望去改進該合約,這樣可實現自動去支付可攻破我們合約固定部分的安全研究者。
  • 可重用的基礎元件:對於每個新的專案,其中的一些通用模組依然是需要從零開發重新實現。我們希望能為代幣發行、眾籌、表決、投注、工資單、收益共享等構建標準的合約。
  • 探究形式驗證理念:合約的形式驗證是一個活躍的研究領域。將這些研究工作成果整合到Zeppelin中,可為合約提供有意思的安全保障。形式驗證意味著對合約程式碼做靜態分析,以形式上驗證合約的正確性以及存在的問題。
  • 與oracle更好的介面:如何與離區塊鏈資料來源進行互動是智慧合約發展中的一個重要部分。其中一個值得去探究的有意思想法就是做反向控制。這種方式中,oracle通過通用介面方法呼叫合約(用於在Truth外進行通訊),並按所需去實現oracle邏輯,其中包括了值得信賴的專家、關閉的投票、開放投票、API包裝器等。這樣並非是合約從oracle請求資料,而是在資料發生了改變時由oracle去通知合約。
  • 更好的重用程式碼工具:當前Solidity的程式碼重用是基於拷貝-複製的,或是通過從其它的程式碼庫中下載已有的程式碼。一個成熟的生態系統應具有好的程式碼庫管理系統,就像NodeJS的npm和Ruby的gems這樣。對已部署到區塊鏈中程式碼重用的可能性,構成了以太坊的一個有意思的變體。我們正規劃去構建實現將合約輕易連結到已部署的程式庫上的工具。

這些功能模組的設計都是基於通用合約安全模式的。Zeppelin是與以太坊開發者所使用的首要構建架構Truffle相整合的。先期採用者可在Zeppelin開發者協作群組(Slack channel)上提問並追蹤進度,也可在BlockParty專案中學習如何使用Zeppelin。首個公共釋出版本計劃在11月釋出,該釋出將伴以基於Zeppelin構建的真正的DAO專案。

Zeppelin意圖在將來支援更多的區塊鏈平臺,其中包括Bitcoin、Tendermint、Bloq Ora等。

原文釋出時間為:2016年10月11日
本文作者: Jeevak Kasarkod
本文來源:InfoQ,如需轉載請聯絡原作者。


相關文章