ZeppelinOS
ざっくり言うと
ZeppelinSolutionsが2017年7月にWhitepaperを公開し立ち上げたプロジェクトで、2018年5月に最初のバージョンがリリースされている
ZeppelinOSはEVM上で動く分散型アプリケーション開発の基盤(オペレーティングシステム)になることを目指したプロジェクトで、ZeppelinOSはモジュール群の集合体の名称
Scheduler / Marketplace / ZEP Token / off-chain Tools / State Channelなど、将来的に機能がモリモリになる様だが、現在はカーネルと呼ばれるライブラリ群を利用できる状況
ZeppelinOSとは
ZeppelinOSとは、EVMで動くスマートコントラクト用に特別に設計されたオペレーティングシステム。
スマートコントラクトアプリケーションを安全に開発および管理するためのツールとサービスの分散プラットフォーム
ZeppelinOS チームの現状分析と課題認識、課題に対する解決策の提案
現状分析
EthereumはEVMと呼ばれる分散グローバル共有バーチャルマシンを作成することで、世界を大きく変えてきている。
誰でもこのバーチャルマシンを使用して、現金を処理し、コードを介して契約関係を正式化するプログラム(スマートコントラクト)を実行することができる様になった。
結果、スマートコントラクトは大きな社会的インパクトを生み出し、このスマートコントラクトとして構築するソフトウェアに基づいたグローバル、かつネイティブなデジタルエコノミクスを作り出してきている。
大きな社会インパクトが生み出されてきているものの、現在も多くの課題が残っている
課題
スマートコントラクトは社会に大きなインパクトを生み出してきているものの、
インパクトを生み出しているコントラクトを開発するためのツールは現状かなり初歩的なものとなっている。
コントラクトがネットワークにデプロイされると、セキュリティの理由でアップデートするのは不可能となる。(現状、アップグレーダブルなアプローチなどは生まれてはきている)
アップデート不可というのはつまり、継続的な機能改善、修正が不可能だということ。
これは従来のソフトウェア開発のパラダイムとは大きく異なる部分です。
開発者たちは既にデプロイされたコントラクトのコードをコピー/ ペーストをして再利用しており、このアプローチはデプロイコスト(Gas cost / コードレビュー作業)を増やしている。
そして、作業現状コントラクトの例外的な関数呼び出しをデバックすることは現在のツールでは難しい。
提案
オペレーティングシステムが豊富な機能を備えたアプリケーションの開発を可能にした、インターネット普及初期の時代と同様に、複雑なスマートコントラクトアプリケーションの開発にも同じことが必要だと考える。
それはつまり、EVM用のOSが必要だということ。
「分散型アプリケーションを構築する際のイノベーションの割合は、開発者が基本的なユーザビリティとセキュリティを確保するために必要とする手作業による重複した努力により制限されている」と考えており、
"基本的なユーザビリティとセキュリティを確保するために必要とする手作業による重複した努力" を極限まで減らすことでより多くのイノベーションが生まれやすくなるはずだと考える。
この極限まで減らす手段として考案したのがZeppelinOSというEVM用のOSである。
整理すると、
スマートコントラクトが生み出した社会インパクトは大きい
コントラクト開発現状はかなり初歩的で、原始的な状況
具体的には、
デプロイ後の継続改善はできない (非中央集権制とトレードオフな項目ではあるものの)
コントラクトのコードをコピー/ペーストで再利用し、デプロイコストの支払いとエラー検証の実施
例外的な関数呼び出しの検証を行うことが現在のツール群では難しい
これらの現状と課題を踏まえるとインターネット普及初期の時代と同様に、豊富な機能を有しアプリケーション開発を容易に行える様にしたOSを開発する必要があると考えている
これに対する答えが、EVM用のOSであるZeppelinOS
ZeppelinOSが提供する3つのメリットと端的な説明
コミュニティ内で検証されたコードライブラリを再利用する (Githubに公開されているOpenZeppelin-Solidityのライブラリがver1.0)
アプリケーションの標準機能の一連のスマートコントラクトライブラリを活用する
アップグレードとパッチ機能
ZeppelinOSは開発者にコードのアップグレードを提案し、使用しているコードが安全、最新の状態に保たれる様にする
チェーン上のスマートコントラクトをアップグレードする
バグやセキュリティ上の脆弱性を修正し、新しいインスタンスを再デプロイせずにアプリケーションに新しい機能を導入する
ZeppelinOSが提供する4つの機能群とオフチェーンツール
ZeppelinOS kernel library
ZeppelinOS Scheduler
ZeppelinOS Marketplace
ZeppelinOS Statechannel
offchain tools (Software Development Kit)
https://gyazo.com/fcd3af8de890111192fcb0b8301e07b4
ZeppelinOS カーネル標準ライブラリ
ZeppelinOS カーネルのカーネルの目標(GOAL)は、スマートコントラクトが利用する機能セットを提供し、ゼロから機能群を再実装するのではなく、OSからサービスを要求し使用するようにすること
カーネルとは、スマートコントラクトアプリケーション開発用に共有された標準ライブラリコード群
この標準ライブラリ群の初期バージョンは、現在のOpenZeppelin-Solidityフレームワークを指す
ライブラリ群を利用することで開発が得られるベネフィットの例
独自のERC20トークンを作成し、カスタマイズします。
上限のある、払い戻し可能な、および/またはホワイトリストのクラウドセール契約を作成
信頼できないバグの賞金を創り出す
一時停止可能、所有可能、および残高制限付き契約を作成
トークンの権利確定またはトークンロックの契約を設定
ライブラリはこちら
セキュリティパッチと継続的改善の実施
ZeppelinOSのコア開発者は、脆弱性が発見されるとすぐにオプションのセキュリティ緩和策とパッチを公開し、OS上にあるスマート契約のすべてのユーザーを即座に保護することができます
継続的な改善は、
AragonとZeppelin-Solutionsが提案したプロキシライブラリーパターンを用いて利用される
バグバウンティ
バグバウンティは重要なコードを監査するために監査人を引き付ける手段として、スマートな契約開発の標準的な慣行(ならわし)
分散型ガバナンスバウンティプールメカニズムが将来的に実装される予定
セキュリティ研究者は費用効果の高い方法でコードを見るように誘因を与えられます
バウンティの仕組みにより、多くのユーザーが利用して、多くのユーザーがバグが存在しない方にベットしているコード(仮にバグを見つけた場合に多くの報酬を得られる機会がある)をより厳密に監査しようとする
スマートコントラクト開発と保守を容易にするためのツールを提供
攻撃管理
zeppelinOSは、攻撃に対処するための緊急ツールボックスを提供する
緊急停止をトリガ / 前回の妥協していない状態に戻す
アップグレード管理
zeppelinOSカーネル自体のアップグレードに加えて、基本的な実装がOSのユーザーに利用可能にされ、スマートコントラクトのアップグレード可能性が可能になります。
その結果、コントラクトにSolidityのセキュリティパッチ(バグ修正)や、機能の段階的な導入を展開することができる
新デプロイメント
共通のバイトコードを繰り返し使用するのではなく、プロキシを使用してオンチェーンライブラリを使用できるようにすることで、デプロイメントのサイズが小さくなり、ガスコストが削減される
その結果、スマートな契約開発の経験が向上する
カーネルはZEPトークンホルダーによって管理される保証メカニズムを使用する分散型アップグレードメカニズムによってサポートされている
トークンベースのアップグレード可能性ガバナンスメカニズム
Zepトークンホルダーが特定バージョンのカーネルを保証し、再利用可能なモジュールの特定のバージョンに対する承認を通知できる
ZeppelinOS スケジューラー
ZeppelinOSスケジューラーは、コントラクトが非同期関数の実行を要求できるEVMでの非同期実行を可能にする
現状の課題とスケジューラーが解決する仕組み
非同期実行が可能になれば、Ethereumのコントラクト実行モデルが抱える問題の解決に役立つ
具体的な課題として挙げられるのは、複数のアクションにまたがったスマートコントラクトの実行においてのガス支払い問題です。
例として最適なのがマルチシグウォレットコントラクトで、このコントラクトは最後に承認したユーザーが比較的ガスコストの大きい送信処理などでのガスコストを負担するという状態になっています。この一者のみが負担をしている様な状況をスケジューラーにより提供されるコントラクトの非同期実行の仕組みにより承認ユーザーとガス費用を支払うユーザーを分離することが可能になる
Zeppelin マーケットプレイス
マーケットプレイスとは、ZeppelinOSを用いた分散型アプリケーションが提供するサービスを販売し、他の分散型アプリケーションが購入してサービス利用できる様にする場所のこと。
異なるサービスを提供するコントラクトに相互運用性を持たせるのがZeppelinOS マーケットプレイスの狙い
このマーケットプレイス機能があることによってエンジニアにサービス開発のプラグ&プレイ体験を提供する
※プラグ&プレイとは、複数の異なる機能を持つサービス群が簡単に相互作用できる様にする機能のことを指す (PCの様な感じ)
今後、分散型アプリケーションの指数関数的成長を促進するために、スマートコントラクトは標準的な方法で相互にやり取りできる必要があると考えている。
イメージChromeのウェブストア
Pay per Call / One time Fee / Subscriptionなど複数の支払いモデルが想定されているが、これらは全て共通の支払いインターフェースで管理できる
サービス利用には独自通貨であるZEP Tokenを用いる予定
完全にコンセプト(夢)ベースであるため具体的な仕様は載っていない
Zeppelin Statechannel
将来的にStatechannel supportを組み込む予定
これにより、より安価な通信メカニズムを提供することに加えて、プラットフォーム内のオフチェーン決済ネットワークとの統合も可能になるだろうと考えている
完全に夢
ZeppelinOS オフチェーンツール (Software Development Kit)
分散型アプリケーション開発、デバック、テスト、デプロイ、及び監視を簡素化するための一連のオフチェーンツールを提供を目指す
分析/監視ツール
自動コード解析
開発者ツール
スマートコントラクト開発者の開発経験は本当に最悪だという認識をZeppelinOSのチームは持っている
未熟なツール群、頻繁なブレークを要するデバッグは非常にイライラする
既存のツールとの連携も考えており、ZeppelinOSがスマートコントラクト開発においてのサービスプラットフォームになることを最終ゴールとしている
truffle / testrpc / web3.js / Infura etc...
ZeppelinOS 開発ロードマップ
ロードマップは3段階に分かれている
0-12ヶ月 : ZeppelinOS カーネルおよびコントラクト開発ツールの開発
カーネルはもっとも重要なコンポーネントであると考えている
最初の12ヶ月間をカーネルの開発に費やす予定
カーネルはアップグレード可能な、ビルドイン・スタンダード・ライブラリ
2018年後半にはカーネルの改善が始まっている予定
様々なバージョンのカーネル開発と監査にインセンティブを与える支払いメカニズムとオプトイン自動アップグレードをサポートするために必要なコントラクト開発ツールを構築
スケジューラーとOracleインターフェースの構築
12~24ヶ月 : ZeppelinOSプラットフォームとSDKの開発
現在の環境では、EVMにスマートコントラクトを導入しようとするには多くの技術的障壁が存在している
この障壁をなくすべく、いくつかのツールを開発する
分析と監視のためのオフライン監視ツール
コントラクト運用Webアプリケーション
自動セキュリティチェックの導入
24ヶ月以上 : ZeppelinOSマーケットプレイスとコントラクト交渉ツールの開発
ZeppelinOS Marketplace
ZeppelinOS Scheduler
ZeppelinOS State Channel
その他のコントラクト対話ツールを構築する
直近の開発状況
- 5月にver1.0.0がリリースされ、現在は1.4.0
ZeppelinOSのプロジェクト
district0x
Props
Decentraland
OpenBazaar
RCN Global Lending
Livepeer
Storej
Winding Tree
結論
ZeppelinOSはEVMを用いたスマートコントラクトを支える周辺ツールの集合体としての存在を目指す
現在のアプリケーション実行を支えているOSのスマートコントラクト部分の座席を狙う存在として野心的なプロジェクト
Zeppelin-Solutionsが書いたWhitepaperでさえもエモい (夢が多い / 表現がアレ)
参考
勉強会中のスレ
nrryuya.icon < ここに色々書いてね
nrryuya.icon < EthPMと何が違うのだ?
社長 < ICOしてるの? -> いまのところしていない(ZEP tokenを売り出すつもりはない?)
トークンメカニズムを用いてガバナンスに使うよという話は出てくる
アップグレード可否を投票で決める
osuke.icon < スケジューラーの話、俺書いたよおおお
nrryuya.icon < これ、特定の期間に実行しなかったら報奨金もらえない的な感じかな
確かに実行しないインセンティブあると怖い気がする
yamarkz.iconがホワイトボードで説明
osuke.icon<set protocolがzos使ってるよ