Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINEAR NETWORK Introduction & Future

LINEAR NETWORK Introduction & Future

Shiki Takahashi @shiki_developer
LINE Corporation Blockchain Lab エンジニア

blockchain.tokyo#16 での発表資料です。
https://blockchain-tokyo.connpass.com/event/113023/

53850955f15249a1a9dc49df6113e400?s=128

LINE Developers
PRO

January 24, 2019
Tweet

Transcript

  1. INTRODUCTION TO LINEAR Network LINE Corporation Blockchain Lab Shiki Takahashi

  2. 高橋 史季 Shiki Takahashi Software Engineer @LINE Blockchain Lab ・

    現在の業務 - LINK ScanのStorage周りの開発 ・ 個人的に今気になっているBlockchain – Ethereum2.0, Zilliqa, EOS ABOUT ME
  3. 1. Ethereum周辺の現在 2. LINEAR Networkとは 3. LINEAR Networkにおけるトランザクションの流れ 4. まとめ

  4. ・ LINK Chainのスケーリング方法(LINEAR Network)について理解する ・ LINEAR Networkのトランザクションフローについて理解する 今回のプレゼンテーションのゴール

  5. Ethereum周辺の現在

  6. https://www.stateofthedapps.com/stats Ethereum周辺の現在 Current Status ・ 1日当たりのDAU → Total DAU 14,000(Top

    DAU:3,651) ・ 1日当たりのトランザクション数 → 62290 TX/day ・ DAppsのカテゴリー → ゲームが中心
  7. ・ DAU、トランザクション数で見ても一般ユーザを取り込んだサービスは まだ登場していないという印象 ・ Ethereum自身はスケーラビリティ問題を抱えている ・ 今後、トランザクション数が増えると2017年の年末に話題になった CryptoKittiesのような「猫詰まり」の再来 Problem Ethereum周辺の現在

  8. ・ スケーラビリティ問題が解決するまではPrivate Chainでの運用を 行うサービスもある ・ 現在、スケーラビリティ問題を解決するソリューションの 研究・開発が進められている → Raiden Network,

    Plasma, Sharding Solution Ethereum周辺の現在
  9. LINEAR Networkとは

  10. LINEのプラットフォームとしての特徴 ・ 高いMAU(日本: 約7,800万人 日本・タイ・台湾・インドネシアの主要4カ国: 1億6,500万人) ・ 1日当たりのトランザクション数(50億メッセージ/day) ・ 様々な分野のサービスを展開

    (LINE MUSIC、LINEマンガ、LINEバイト、LINE NEWS、LINEほけん…etc) Current Status
  11. ・ LINEというプラットフォームを通してすでに日本だけで7,800万人以上のユーザが いるため、dAppを利用するには、1つのChainではTPSが足りない Problem LINEのプラットフォームとしての特徴

  12. → LINEAR Network ・ 各dAppごとにChainを用意して、全体のTPS向上を図る Solution LINEのプラットフォームとしての特徴

  13. ・ 1つのRoot Chainと複数のLeaf Chainから形成される ・ 各Leaf ChainにdAppをデプロイする ・ Leaf Chain間の取引はKafkaを使ったRelayerを介して行われる

    ・ Root Chainではユーザ間の取引を行わず、Leaf Chain間の送金の仲介を管理する ・ Root ChainとLeaf Chainの2階層のみで3階層以上のレイヤー構造は作らない LINEAR Networkの概要 Leaf Chain A Root Chain Leaf Chain B Relayer Leaf Chain C
  14. ・Apache Kafkaを使用したアプリケーション ・ Root Chainで発行したトークンをLeaf Chainに配布 ・ Leaf Chain間のトークンの送金 Relayerとは

    Relayer Producer Consumer Kafka Cluster Producer Producer Consumer Consumer 役割
  15. LINEAR Networkの今後 Relayer (Application) Protocol based Architecture Private Blockchain Public

    Blockchain NOW FUTURE LINK Chain LINEAR Network
  16. Protocolとは Leaf Chain A Root Chain Leaf Chain B Leaf

    Chain C ・ アプリケーションを介さずにブロックチェーン 同士を接続するための仕組み ・ Public Blockchainとして公開するときにブロックチェーンの機能として追加予定
  17. LINEAR Networkにおけるトランザクションの流れ 1. Chainの追加 2. dAppのDeploy 3. Tokenの発行 4. Chain間の送金

  18. 1. Chainの追加 ① Leaf Chainを構築する。 Leaf Chain A Leaf Chain

    Manger Contract Root Chain Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer
  19. 1. Chainの追加 ② Root ChainにLeaf Chain AのためのRelayer Contractを配置する。 Leaf Chain

    A Root Chain Leaf Chain A Relayer Contract Leaf Chain Manger Contract Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer
  20. 1. Chainの追加 ③ Root ChainのLeaf Chain Relayer Contract と Leaf

    Chain Manager Contractにアクセスできるユーザを追加する。 Leaf Chain A Root Chain user address user address Leaf Chain Manger Contract Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain A Relayer Contract
  21. Leaf Chain A dApp Contract Root Chain 2. dAppのDeploy ①

    Smart ContractをDeployする。 Leaf Chain A Relayer Contract SO Address SO Address(Service Operator Address): dAppの管理者権限を持つAddress Leaf Chain Manger Contract Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer
  22. 3. Tokenの発行 ① Root Chainのadmin userがLeaf ChainのためにTokenを発行する。 Leaf Chain A

    Root Chain Leaf Chain A Relayer Contract Leaf Chain Manger Contract Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer dApp Contract SO Address T
  23. ② RelayerはToken発行イベントを検知して、Leaf Chainの Leaf Chain Manager ContractにToken発行をリクエストする。 Leaf Chain A

    Root Chain 3. Tokenの発行 Leaf Chain A Relayer Contract Leaf Chain Manger Contract Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer dApp Contract SO Address T
  24. ③ Leaf Chain Manager Contractは発行対象のContractを探してTokenを 発行する。 Leaf Chain A Root

    Chain 3. Tokenの発行 Leaf Chain A Relayer Contract Leaf Chain Manger Contract Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer dApp Contract SO Address T T
  25. 4. Chain間の送金 ① Leaf Chain AのユーザがLeaf Chain Bのユーザへ送金リクエストを 発行する。 Leaf

    Chain B dApp Contract Leaf Chain A Root Chain Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract T Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer dApp Contract SO Address SO Address
  26. ② 正常なリクエストの場合、送金する分のTokenをロックし、ブロックに記録する。 Leaf Chain B Leaf Chain A Root Chain

    OK 4. Chain間の送金 T Success! Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract dApp Contract SO Address SO Address
  27. ② 正常なリクエストでなければ、失敗の内容をブロックに記録する。 この場合Relayerには記録されない。 Leaf Chain B Leaf Chain A Root

    Chain 4. Chain間の送金 T NG Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract Failure…
  28. ③ RelayerはLeaf Chain Aの送金リクエストを検知して、Root Chainに伝える。 Leaf Chain B Leaf Chain

    A Root Chain 4. Chain間の送金 T OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract
  29. ④ Root ChainでLeaf Chain Aに発行したTotal Supplyを確認して、正常な リクエストであれば、Root Chainのブロックにトランザクションを 書き込む Leaf

    Chain B Leaf Chain A Root Chain OK 4. Chain間の送金 T OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address Success! dApp Contract
  30. ④ トランザクションが正常に処理されず失敗するとそれをブロックに 記録し、その結果が Leaf Chain Aに伝わり、ロックが解除される。 Leaf Chain B Leaf

    Chain A Root Chain NG 4. Chain間の送金 T OK NG Failure… Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract
  31. ⑤ RelayerはRoot ChainのLeaf Chain Bへの送金リクエストを 検知してLeaf Chain Bにリクエストを伝える。 Leaf Chain

    B Leaf Chain A Root Chain OK 4. Chain間の送金 T OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract
  32. Leaf Chain B Leaf Chain A Root Chain OK NG

    ⑤ Leaf Chain Bが正常に動作しておらず、invokeが失敗する場合、 再度Root Chainを経由してLeaf Chain Aにトランザクションの失敗が 伝えられ、ロックが解除される。 4. Chain間の送金 T OK NG Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract Failure…
  33. ⑥ Leaf Chain Bは正常なリクエストであることを確認して、ユーザBに Tokenを送金して自身のChainで発行されているTokenのTotal Supplyを 増加させる。 Leaf Chain B

    Leaf Chain A Root Chain OK 4. Chain間の送金 T T OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address Success! dApp Contract
  34. ⑦ トランザクションの結果が、Relayerに伝わる。 Leaf Chain B Leaf Chain A Root Chain

    OK 4. Chain間の送金 T T OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address Success! dApp Contract
  35. ⑧ RelayerはLeaf Chain Bの送金が完了したことを検知してトランザクションの 結果をRoot Chainに伝える。 Leaf Chain B Leaf

    Chain A Root Chain OK 4. Chain間の送金 T T OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract
  36. Leaf Chain B Leaf Chain A Root Chain OK OK

    ⑨ Root Chainは送金の結果を受け取り、ブロックに書き込む。 4. Chain間の送金 T T OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address Success! dApp Contract
  37. ⑩ RelayerはRoot Chainの送金リクエストの結果を検知して、 Leaf Chain Aにその結果を伝える。 Leaf Chain B Leaf

    Chain A Root Chain OK OK 4. Chain間の送金 T T OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address dApp Contract
  38. Leaf Chain B Leaf Chain Manger Contract Dapp Contract OK

    Leaf Chain B Leaf Chain A Root Chain OK OK ⑪ Leaf Chain Aは送金の結果を受け取り、ロックを解除して全体のTotal Supplyを 差し引く。 4. Chain間の送金 T OK OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Relayer Kafka Cluster Producer Consumer Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address Success! dApp Contract
  39. Relayer Kafka Cluster Producer Consumer ⑫ Leaf Chain Aのトランザクション結果はRoot Chainに送られ、ブロックに

    記録される。 Leaf Chain B Leaf Chain A Root Chain OK OK OK 4. Chain間の送金 T OK OK OK Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract SO Address SO Address Success! dApp Contract
  40. Relayer Kafka Cluster Producer Consumer Leaf Chain B Leaf Chain

    A Root Chain T Leaf Chain Manger Contract Root Chain Manger Contract Leaf Chain Manger Contract Leaf Chain B Relayer Contract Leaf Chain A Relayer Contract dApp Contract ※ SO Address ※ SO Address ① Request Transaction ② ③ ④ Send to Leaf Chain B ⑥ Receive a token ⑦ ⑧ ⑧ Send the response to Root Chain ⑨ ⑪ ③ Send to Root Chain Send request result from Root Chain ⑩ ⑫ Send the transaction result ⑤ Leaf Chain間の送金のまとめ ※ SO Address(Service Operator Address): dAppの管理者権限を持つAddress dApp Contract
  41. まとめ

  42. Ethereum LINE Current Status ・DAU:全体で約14,000 ・ゲームが中心 ・MAU: 日本だけで7,800万 ・ゲーム、ソーシャルから Financialと多岐に渡る

    共通の課題 On Chainのスケーラビリティ問題に対応する 必要がある Raiden Network Plasma Sharding Private Chain Solution Relayer (Private Blockchain) Protocol (Public Blockchain) On Chain Now Future LINEAR Network
  43. THANK YOU