Share
Embed
LINEAR NETWORK Introduction & Future
Shiki Takahashi @shiki_developer
LINE Corporation Blockchain Lab エンジニア
blockchain.tokyo#16 での発表資料です。
https://blockchain-tokyo.connpass.com/event/113023/
LINE Developers
January 24, 2019
Transcript
43 slides
-
高橋 史季 Shiki Takahashi Software Engineer @LINE Blockchain Lab ・
現在の業務 - LINK ScanのStorage周りの開発 ・ 個人的に今気になっているBlockchain – Ethereum2.0, Zilliqa, EOS ABOUT ME -
https://www.stateofthedapps.com/stats Ethereum周辺の現在 Current Status ・ 1日当たりのDAU → Total DAU 14,000(Top
DAU:3,651) ・ 1日当たりのトランザクション数 → 62290 TX/day ・ DAppsのカテゴリー → ゲームが中心 -
・ スケーラビリティ問題が解決するまではPrivate Chainでの運用を 行うサービスもある ・ 現在、スケーラビリティ問題を解決するソリューションの 研究・開発が進められている → Raiden Network,
Plasma, Sharding Solution Ethereum周辺の現在 -
LINEのプラットフォームとしての特徴 ・ 高いMAU(日本: 約7,800万人 日本・タイ・台湾・インドネシアの主要4カ国: 1億6,500万人) ・ 1日当たりのトランザクション数(50億メッセージ/day) ・ 様々な分野のサービスを展開
(LINE MUSIC、LINEマンガ、LINEバイト、LINE NEWS、LINEほけん…etc) Current Status -
・ 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 -
・Apache Kafkaを使用したアプリケーション ・ Root Chainで発行したトークンをLeaf Chainに配布 ・ Leaf Chain間のトークンの送金 Relayerとは
Relayer Producer Consumer Kafka Cluster Producer Producer Consumer Consumer 役割 -
LINEAR Networkの今後 Relayer (Application) Protocol based Architecture Private Blockchain Public
Blockchain NOW FUTURE LINK Chain LINEAR Network -
Protocolとは Leaf Chain A Root Chain Leaf Chain B Leaf
Chain C ・ アプリケーションを介さずにブロックチェーン 同士を接続するための仕組み ・ Public Blockchainとして公開するときにブロックチェーンの機能として追加予定 -
1. Chainの追加 ① Leaf Chainを構築する。 Leaf Chain A Leaf Chain
Manger Contract Root Chain Root Chain Manger Contract Relayer Kafka Cluster Producer Consumer -
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 -
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 -
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 -
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 -
② 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 -
③ 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 -
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 -
② 正常なリクエストの場合、送金する分の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 -
② 正常なリクエストでなければ、失敗の内容をブロックに記録する。 この場合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… -
③ 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 -
④ 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 -
④ トランザクションが正常に処理されず失敗するとそれをブロックに 記録し、その結果が 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 -
⑤ 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 -
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… -
⑥ 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 -
⑦ トランザクションの結果が、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 -
⑧ 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 -
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 -
⑩ 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 -
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 -
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 -
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 -
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