LINEのブロックチェーンに対する取り組みーLINK Chainについて

この記事は 1/24に開催されたイベントblockchain.tokyoにおいて公開された、LINEのブロックチェーンに対する取り組みについてのイベントレポートです。
LINEがブロックチェーンの開発をしていることは知っていても具体的な中身は知らない、という人にとってはLINEの取り組みを具体的に知ることができるかと思います。
アウトラインは以下の通りです。
  • LINK Chainで動くスマートコントラクト by鷹見氏
    • なぜLINEがブロックチェーンのプラットフォームを開発しているか
    • LINK Chainの仕様の解説
  • Introduction to LINEAR Network by LINE blockchain Lab 高橋氏
LINK Chainで動くスマートコントラクト by鷹見氏

LINKがブロックチェーンのプラットフォームを開発している理由

イベントにおいては、まずLINEが提供するプライベートチェーンLINK Chainの開発者鷹見さんからLINEの考える経済圏とブロックチェーンの関係性について語られました。

鷹見さんは他にもログミーでLINKについて語っているので、よければこちらもご覧ください。

LINEは決済サービスを提供する他に、現在ではサードパーティのサービスとして利用されるようになりましたが、より多くの人に利用してもらうためにはContents Platform、LINE Platform、Fintech Platformとカスタマーの考える価値が繋がれなくてはなりません。これらを価値の交換という形で繋ぐための実装がLINK Chainであり、LINK Chainによって実現されるのがLINE token economyです

LINEのブロックチェーンに対する2つの取り組み

そもそもLINEのブロックチェーンに対する取り組みは二つあります。
一つは資産管理業務および取引所の運営です。LVCというLINEの関連会社とシンガポールに拠点をおくLINE Tech Plusで行なっている資産管理業務です。これは日本とアメリカ以外で利用される取引所Bitboxを運営しています。
もう一つが独自ブロックチェーンです。韓国最大のブロックチェーン、ICON FoundationとLINE Blockchain Labが共同開発したLINK Chainがこれに当たります。
ここではLINKという暗号通貨を提供しており、これはすでにBitboxに上場しています。日本でもポイント等の形で利用することは可能です。そして現在LINEのシステムの一部にも使用されています。
LINK Chainは最終的にはフレームワーク化することでサードパーティもLINK Chainの上でアプリケーションを動かせるようにしたいとのことでした。

LINK Chainとは何か

LINK Chainをイーサリアム2.0と実装の観点から比較してみましょう。
イーサリアムがパブリックであるのに対して、LINKは現在プライベートチェーンです。またイーサリアムはPoWおよびPoSをコンセンサスアルゴリズムとして採用していますが、LINKはpBFTを使用しています。もっともファイナリティはどちらも備えていますので、分散型の決済はどちらもされていると言って良いだろう、というのがLINEの考え方のようです。
またコントラクトはイーサリアムがeWASMで動作するのに対してLINKはPython3の環境で実行可能で、より簡便であるように個人的には思われました。
またLINK Chainの特徴として、DAppを追加した時に裸のブロックチェーンを使用するのではなく、より上位のAPIを使って開発できる「LINK Framework」があります。そしてトークンとしては、ETHーERC20の関係に当たるのがLINKーLINK Pointの関係であるようです。

LINK Framework

次に鷹見さんはLINK Chainの構成要素についてお話くださいました。(写真がぼやけていてすみません…)

まずはもっとも内側のLINK NetworkとしてはCノードとSノードがあり、
Cノードがブロックの生成を行います。Sノードがプロキシを読みこみ、より上位層のアプリケーションレイヤーとの接続を行います。
ここまでがLINK Networkで、それを使ってさらにLINK Chainを拡大しているのがLINK Frameworkです。
LINK Frameworkとして、API,LINK SCANなどがあり、さらにRelayerが別のインスタンスとやり取りをする機能などがあります。
なおCノードとSノードの構造は全く一緒で、Cノードがブロックを接続するためにコンセンサスアルゴリズムがある一方Sノードにはない、という違いしかありません。
これらをP2PのLINK NetworkおよびMessage Queueを通じて
  • LINK Core:ブロックの生成と検証を行う。コンセンサス、P2Pの状態管理などを行う
  • LINK Service:コントラクトの実行とノードの統括管理を行う
につなげます。これをさらに、外部からインターフェースを通すことで、LINK Chainを実行します。

LINKにDappをつなげる

最後に鷹見さんはLINK Chainでキャンディーを配布するサービスを作ろうとする場合を例にあげて、アプリケーションの接続順序について説明してくださいました。
順序としては大きく
  1. アプリケーションを作りたいことについて、LINK Chianに参加を要請する
  2. Pythonで内容精査して、大丈夫と判断されればAdmission Operatorと呼ばれるウォレットを作成し、そこにトークンを紐づける。
  3. P2Pネットワークにスマートコントラクトをブロードキャストし、ホワイトリストを更新する

と言った仕組みになっています。なお現在は外部からの申請を受け付けるサービスないプライベートですが、今後アップデートしていく予定のようです。

詳しくはこちらのスライドで公開されています。

Introduction to LINEAR Network

鷹見さんの次にLINE blockchain Lab 高橋さんによってLINEAR Networkの紹介がありました。

Ethereumとの比較から見たLINK Chainのスケーリング方法について

現在パブリックチェーンの代表例であり、しばしば「ワールド・コンピュータを目指している」とも呼ばれるイーサリアムですが、依然DAU、トランザクションは少なく、ユースケースとしてもゲームが多く一般ユーザを取り込んだサービスは少ないです。一方でユーザーが増えたとしてもスケーラビリティ問題を抱えているので、エンタープライズとしてはスケーラビリティ問題が解決するまではプライベートチェーンやコンソーシアムチェーンでの運用を行うサービスなどもあります。

一方でLINEはプラットフォームとしてはMAUは日本で7800万人、メッセージは一日50億回です。となると一つのチェーンではTPSが足りないため、イーサリアムと同様にスケーリングソリューションが必要になり、それを実現するのがLINEAR Networkです。

LINEAR Networkの全体像

まずLINEAR Networkにおいては一つのチェーンからイーサリアムのPlasmaのように分岐するのではなく、それぞれのAppごとにチェーンを用意します。
これは一つのルートチェーンと複数のリーフチェーンから形成されており、リーフチェーンにDappをデプロイする、というものです。つまりイーサリアムのメインチェーンにあたるのがルートチェーン、そこからPlasmaのように派生した一つ一つのリーフチェーンにアプリがデプロイされている、というわけです。
もっとも何層もの階層構造をとるPlasmaと異なり、LINEAR Networkにおいてはルートチェーンとリーフチェーンの二層しかありません。
ここで鍵となるのが、LINEAR NetworkにおいてはKafka(カフカ)を使ったリレイヤーによって仲介されているということです。
リレイヤーはApache Kafkaを使ったアプリケーションです。「クラスタ」「プロデューサ」「コンシューマ」により構成されており、ルートチェーンで発行したトークンをLeafに配布したり、Leaf Chain同士のトークンの送信を実施したりします。
一見ブロックチェーンぽくないと思ってしまいますが、これは現在のLINK Chainがプライベートチェーンとしての使用を想定しているためで。将来的にはパブリックチェーンとして公開したいため、このリレイヤーはプロトコルベースになっていくようです。そうなればリレイヤーのプロトコル化が完成し、アプリケーション同士が自律的に繋がるようになるでしょう。

LINEAR Networkのトランザクションフローについて理解する

最後に高橋さんによって、LINEAR Networkにおけるトランザクションの流れが説明されました。少々複雑ですのでこちらのスライドを直接ご覧になりながら読む方が良いかもしれません。

1.Chainの追加

  1. もともとLINEAR Networkにはルートチェーンとリレイヤーがデフォルトで存在しているので、ここにリーフチェーンを構築します。
  2. リーフチェーンを構築すると自動で「マネージャー・コントラクト(manager contract)」がデプロイされるので、このマネージャーコントラクトからリレイヤー (Relayer)に新しいチェーンについての情報が伝達されます。
  3. ルートチェーンにリーフチェーン(ここではAと名付けます)のためのリレイヤーコントラクトを配置します
  4. 最後にリーフチェーンAのマネージャーコントラクトとリレイヤーコントラクトにアクセスできる人を指定すれば、チェーン構築は完了です。

2.Dappsのスマートコントラクトをデプロイする

スマートコントラクトをデプロイします。
ここでLINEAR Networkがイーサリアムと違う点として「サービスオペレーターアドレス」というDappsの管理者権限も追加する必要があるという点です。

3.トークン発行

  1. ルートチェーンを管理するユーザー(アドミンユーザー)がリーフチェーンのためにトークンを発行します。
  2. リレイヤーが発行イベントを検知して、リーフチェーンのマネージャーに発行リクエストします。
  3. 受け取ったマネージャーコントラクトは発行対象のコントラクトを探してトークンを発行します。
LINKChain自身ではなくユーザーがトランザクションとなっています。

4.Chain間の送金

リーフチェーンAのユーザーがリーフチェーンBにトークンを送金したいと思ったとき、正常なリクエストの場合は送金する分をチェーンに記録し、正常でなければ失敗したという内容をブロックに記録します(この失敗についての情報はリレイヤーに届きません)。もしリレイヤーに情報が正しく伝われば、リレイヤーはリーフAの送金リクエストを検知してルートチェーンに伝えます。
ルートチェーンはリーフチェーンAに発行したトータルサプライを確認して、あってればルートチェーンのトランザクションに書き込み、正しく処理が完了した点でリーフチェーンBに情報を伝えます。Bが正常であれば、トランザクションの結果をリレイヤーに伝え、リレイヤーはルートチェーンに伝え、最後ルートチェーンからまたリーフAに伝え、トータルサプライを差し引きます。そして最後にルートチェーンのブロックに記録します。

まとめ

イーサリアムもLINKもオンチェーンのスケーラビリティに問題がありますが、イーサリアムのソリューションとしてはプライベートチェーンで実用性をカバーしたり、オンチェーンならPlasmaやShardingを使用しています。一方でLINKは自分たちでブロックチェーンを作ることにしました。それがLINEAR Networkであり、そのために今はリレイヤーという形で仲介者を介在させていますが、今後はパブリックチェーンにしていく予定なの、ここもプロトコルになっていくだろう、とのことでした。
日本でLINEのブロックチェーンについて語られることはほとんどなかったため、今回は非常に珍しい機会隣、とても有用でした。LINEは現在Wizballという質問箱サービスなどでLINKを使えるようにしているので、ユーザーエクスペリエンスを実感するためにもまだ体験していない人はぜひ一度LINEのサービスを使ってみてはいかがでしょうか?