リリースを明日に控えたLisk関連記事第二弾ということでEthereumとの違いを書きたいと思います。先日の記事では、DPOSについて書いたので今回の記事ではそれ以外のEthereumとの違いを書いていきます。
1.DAppsの基盤にサイドチェーンを利用
LiskがEthereumとは違う最大の要素は、DApps(分散型アプリケーション)の基盤がサイドチェーンになるということです。サイドチェーンを利用するというのは、メインのLiskのブロックチェーンの上にスマートコントラクトコードを直接書くのではなく、それぞれのDApps毎に一つずつブロックチェーンを用意しその上でコードを動作させるということです。メインチェーンにはサイドチェーンへのリンクのようなもののみが載るイメージです。
Ethereumでは、一本のメインのブロックチェーン上にスマートコントラクトコードを記述するのが基本となります。一応、Ethereumでも自分で勝手にブロックチェーンを立ち上げてEthereumのサイドチェーンにすることは可能です。一方で、Liskではユーザーがメインのブロックチェーンにスマートコントラクトコードを記述することはできません。
このため、EthereumではただコントラクトコードをプログラミングするだけでDAppsが動くのに対し、Liskではブロックチェーンを立ち上げた上でプログラミングを行わなければなりません。ブロックチェーンを立ち上げるというのは、メインのブロックチェーンとは別にコンセンサスアルゴリズムを動作させる必要があるということです。Liskのリリース後しばらくの間は、サイドチェーンのコンセンサスアルゴリズムはメインチェーンと同じDPOSであり、DAppsの開発者はdelegate(取引の承認者)を自分で用意するなどして選ばなければなりません。管理者が承認者を選ぶということで、LiskではDAppsのサイドチェーンは「プライベートチェーン」になります。デフォルトではサイドチェーンのdelegateの数もメインチェーンと同じ101人ですが、もっと少ない数に変更することも可能です。このコンセンサスの部分は今後自由に弄れるようにする予定らしく、ビットコインのようなProof of Workやその他Proof of Stakeなどよりパブリックなコンセンサスアルゴリズムも選べるようにする計画のようです。
(ホワイトペーパーでは開発者がdelegateを選びなおかつDPOSを採用するという矛盾するようなことも書いており、ここらへんはもしかしたら理解が違うかもしれません。DPOSとは、管理者ではなくブロックチェーン内の基軸通貨の保有者が投票でdelegateを選ぶものなので・・・。一応、「Each Dapp has its own unique private side chain」や「The signing of blocks by a master node against a given dapp is restricted by the dapp owners. 」という書き方をしているのでサイドチェーン=プライベートチェーンという理解です。今のホワイトペーパーの内容は薄いので詳細版待ちです。)
サイドチェーンのメリットは?
サイドチェーンにすることにより得られるメリットは主に二つ考えられます。
一つは、スケーラビリティ(性能・処理能力)の向上です。これはイメージで簡単に分かると思いますが、すべてのプログラムを一つだけのブロックチェーンだけでいろいろと動かすより、複数のブロックチェーンを使って別々に動かすほうが処理能力は高くなります。メインのLiskのブロックチェーンに載る情報はEthereumよりも少ないので、メインチェーンのスケーラビリティ向上にもつながります。
もう一つはより柔軟にDAppsを作成でき、より簡単にプログラムを変更しやすいということです。コードだけではなくブロックチェーン全体を扱うことになるため、より柔軟にDAppsを作りやすいのはイメージで分かると思います。また、サイドチェーンはプライベートチェーンとなるため、例えばDAppsに重大なバグが見つかった場合、各DApps開発者がサイドチェーンをロールバックするということも可能です。Ethereumでは、一度ブロックチェーンに載せたコードをDApps開発者が修正することは不可能です。(Ethereumの初期段階では開発チームがブロックチェーンをロールバックできました。LiskのサイドチェーンもProof of Workを採用するなどしてパブリック度を高めれば修正は難しくなると思います。)
サイドチェーンのデメリットは?
サイドチェーンではLiskのメインチェーンとは別に承認者(delegate)を用意しなければなりません。これは開発者の負担となり得、また、特に開発人数や利用者の少ない規模が小さいDAppsのブロックチェーンは攻撃を受けやすくセキュリティが低くなる可能性があります。ここらへんの議論は、プライベートチェーンがパブリックチェーンよりセキュリティで劣るという一般的な話にも通じるところがあります。
関連して、利用者は信用できるDAppsを選ばなければならないということにもなります。もっともこれはLiskだけではなくEthereumも同じ話で、コントラクトコードをオープンソースにしている十分信頼できるDAppsを選択することが必要でしょう。
delegateを用意するのが負担になるという話については、Liskチームも懸念として感じており、将来的にdelegateサーバーを有料で貸し借りできるマーケットプレイスのようなものの実装も考えているようです。
2.スマートコントラクトコードのプログラミング言語が違う
EthereumではSolidityという独自に作ったプログラミング言語を採用していますが、Liskではプログラミング言語の中では非常にポピュラーなJavascriptという言語を採用しています。私自身は、Solidityをまともに使ったことはない一方でJavascriptは数少ないよく使う言語のため、公正な評価ができなさそうでありプロのプログラマーというわけでもないので、この点は軽く触れるだけにしておきます。
ちなみに、Javascriptは浮動小数点の計算に問題があり金融コントラクトに向かないという話をちらほら見ますが、まともなJavascript開発者は対処法をいくつか知っているでしょうしbignumber.jsのような簡単に対応できるライブラリもあるので、そんなに問題にはならないと反論しておきます。
SolidityはSolidityで非常に歴史の浅い言語ですし、言語自体の優劣を決めるのは難しいのではないかと思います。
Javascriptは元々の開発者が非常に多くドキュメントも充実しているのはSolidityよりも優れている点と言えるでしょう。
3.(初期段階の)エンドユーザー向けのクライアントが充実
根本的な話ではありませんが、Liskではエンドユーザー向けのクライアントを一つの売りにしています。Ethereumにおける公式ウォレットmistは、一般ユーザーにとってはしばらくの間ただのウォレットとしてしか使えないものと思われますが、Liskの公式ウォレットは最初からDAppsブラウザーも兼ねており、iOSのAppStoreやAndroidのGoogle PlayストアのようなイメージでLisk上のDAppsをダウンロードできることになりそうです。
時期はよくわかりませんが、近いうちに軽量版のウォレットやモバイルウォレットもリリースされそうです。