LINE ブロックチェーンプラットフォームの概要 #linedevday - niwatakoのはてなブログ
寄付窓口はこちら

LINE ブロックチェーンプラットフォームの概要 #linedevday

本日はLINE Blockchain Platformをご紹介します。

f:id:niwatako:20201127130027p:plain

LINE Blockchain PlatformはあなたのサービスとLINE Blockchainの間にあります。

一番下にLINE Blockchainがあります。

LINEが使っているAlder ChainやBamboo Chainを聞いたことがある方もいらっしゃるでしょう。

今年6月より強力で安定した新しいバージョンのLINE Blockchainを公開しました

2つのネットワークを運営しています。TestnetのCashewとMainnetのDaphneです。でもこの2つはこのセッションではお話しません。

LINE Blockchain Platformにフォーカスします。

LINE Blockchain の上に LINE Blockchain Frameworkがあります。

f:id:niwatako:20201127164722p:plain

DaemonとGRPCサービスのコレクションです。

チェーンデータに対する強力なクエリーや安定したトランザクション管理、秘密鍵の安全な取り扱いなどがあります。しかしこれについても取り上げません。これらは内部の話で、アクセスする必要はないですしアクセスすることもできません。

LINE Blockchain Developersはサードパーティーの分散型アプリ向けのフルマネージドサービスです。つまりブロックチェーンサービスです。

f:id:niwatako:20201127165207p:plain

BITMAX WalletはLINEユーザー向けのユーザーフレンドリーなウォレットウェブアプリケーションです。LINE Blockchain Developersで作成されたトークンがここに表示されます。

f:id:niwatako:20201127165225p:plain

LINE Blockchain ExplorerはLINE Blockchain ViewerのWebアプリケーションです。ブロック、トランザクション、アドレスなどに関する情報を見つけることができます。開発中のデバッグにも役立ちます。

f:id:niwatako:20201127165339p:plain

このプラットフォームを利用して独自のブロックチェーンサービスを簡単に構築できます。

f:id:niwatako:20201127165514p:plain

BITMAX WalletはLINEのカストディアルウォレットです。

f:id:niwatako:20201127130227p:plain

カストディアルという用語は、LINEがすべて秘密鍵を安全に管理していることを意味します。したがって秘密鍵を失う心配がありません。

f:id:niwatako:20201127165550p:plain

ブラウザ拡張機能をインストールし、シードフレーズを自分で保持するというのは、ブロックチェーンを大量に採用するハードルになると考えました。

LINE Blockchain Platformではプレーンなウェブブラウザでトランザクションを許可できます。これをデモンストレーションしていきます。

名前が示すように、BITMAX WalletはBITMAXと緊密に連携します。

f:id:niwatako:20201127130302p:plain

BITMAXはLINEの暗号資産売買サービスです。ここでLINKを売買することができます。

すべてのBITMAXユーザーはBITMAX Walletユーザーでもありますが、その逆はありません。

BITMAXアカウントにLINKがいくらかある場合ここに表示されます。こちらからLINKリワードをLINKに交換できます。

LINKリワードプログラムに興味がある方は、こちらのリンクでご確認ください。

ユーザーはLINEアカウントで簡単にログインできます。Cashew、Daphneを選択できます。

f:id:niwatako:20201127130344p:plain

全サービスのトークンをリスト化し、トークンを簡単にラインフレンズに送ることができます。

次はLINE Blockchain Developersについてです。

f:id:niwatako:20201127170042p:plain

LINE Blockcain DevelopersはLINE Blockchain 向けの高レベルのRESTful APIサービスです。

f:id:niwatako:20201127130412p:plain

ブロックチェーンノードを実行する必要がありません。スマートコントラクトを作成して展開する必要もありません。新しい言語やツールチェーンの学習に費やす必要もありません。RESTful APIですぐにお気に入りの言語で使うことができます。

またコンソールUIを提供しています。サービスのAPIとSecretが割り当てられます。紛失した場合コチラでリセットできます。

f:id:niwatako:20201127170222p:plain

そして次のような運用タスクをConsoleで直接できます。

  • サービスウォレットの管理
  • ミント
  • トークン転送

この内容は包括的なドキュメントを提供しています。

f:id:niwatako:20201127170256p:plain

リファレンスやサンプルコードがあります。

ビジネスに必要な主要な機能を提供します。サービストークンはサービスの通貨のようなものです。ERC20に似ています。

f:id:niwatako:20201127130532p:plain

作成ミント残高書き込みなどを実行できます。

Item tokensは、NFT、代替不能なトークンです。

またブロックチェーントランザクションのコールバックURLも提供しています。

本日のDemoはLINE Blockchainコーヒーサービスを使います。

f:id:niwatako:20201127130623p:plain

2つのトークンを作成します。LBCC(LINE Blockchain Coffee Coin)。アメリカーノ1杯を200LBCCで購入できます。

もう一つリワードトークンとしてのLBCR。アメリカーノを1杯購入するとLBCCが1つもらえます。5つのLBCRでアメリカーノ1杯と交換できます。

ではやってみましょう。

最初に必要なのはチャンネルの作成です。チャンネルを作成するとチャンネルIDとチャンネルシークレットが提供されます。

f:id:niwatako:20201127170539p:plain

f:id:niwatako:20201127170651p:plain

ブロックチェーンチャンネルを選択します。

f:id:niwatako:20201127130726p:plain

Cashewパートナーアカウントを申請する必要があります。

f:id:niwatako:20201127170736p:plain

Cashewは無料のテストネットです。世界中で利用できますが、ダフネは日本のみです。

チャネルが作成されたあとこのようなメールが届きます。

f:id:niwatako:20201127171031p:plain

ブロックチェーンタイプのチャンネルができました。

f:id:niwatako:20201127171115p:plain

チャネルが作成されたあとブロックチェーンサービスを作成します。

チャネルIDとチャネルSecretはこちらです。

f:id:niwatako:20201127171144p:plain

f:id:niwatako:20201127171210p:plain

ブロックチェーンのタブに行きます。

f:id:niwatako:20201127171235p:plain

ここからはLINE Blockchain Developers Consoleの一部になります。

f:id:niwatako:20201127171353p:plain

これでService ID、API Key、API Secretができました。

f:id:niwatako:20201127171339p:plain

APIシークレットはこの1回しか表示されません。ぜひバックアップを取ってください。

f:id:niwatako:20201127171448p:plain 

サービスが作成できたらユーザーウォレットとは異なるサービスウォレットが必要になります。これは、サービスオペレーション用です。例えばさービスウォレットを使ってトークンをミントできます。

f:id:niwatako:20201127171504p:plain

最大20のサービスウォレットが作成できます。

f:id:niwatako:20201127171549p:plain

ここでは新しくOwnerのウォレットを作りましょう。

ウォレットのシークレットをなくさないでください。

f:id:niwatako:20201127171625p:plain

さて、LINE Blockchain Coffee Coinを作成しましょう。

f:id:niwatako:20201127171653p:plain

サービスの通貨のようなものです。

f:id:niwatako:20201127171739p:plain

初めての供給の場合、単位に気をつけてください。1000000分の1なのでゼロを6つ足してください。

f:id:niwatako:20201127171812p:plain

複数のウォレットがある場合このトークンのオーナーになるウォレットを選択できます。

これでサービストークンの識別子であるコントラクトIDが取得できました。

f:id:niwatako:20201127171918p:plain

ノンファンジブルリワードトークンをつくてみましょう。

f:id:niwatako:20201127171955p:plain

ノンファンジブルを選びます。

f:id:niwatako:20201127172016p:plain

複数のアイテムトークンを作成できますが全てこのContractIDを共有しています。代わりに、Token Typeがあります。

f:id:niwatako:20201127172046p:plain

f:id:niwatako:20201127172205p:plain

これらはブロックチェーンの観点からはただのトランザクションです。Exploreから見に行くことができます。

f:id:niwatako:20201127172217p:plain

TX Hash

f:id:niwatako:20201127172241p:plain

Explorerでターゲットネットワークを選んで

f:id:niwatako:20201127172312p:plain

f:id:niwatako:20201127172320p:plain

テストネットはCashewを使っています。Cashewは各サービスにユーザーは最大100人までの制限があります。

f:id:niwatako:20201127172409p:plain

ユーザーをコンソールUIに追加します。フォームはとてもシンプルです。

f:id:niwatako:20201127172513p:plain

ただし、ユーザーがログインするまでUserIDを取得できません。だから最初にサービスを実行してから戻ります。

f:id:niwatako:20201127172552p:plain

このサンプルアプリケーションはJavascriptで動いています。

f:id:niwatako:20201127172641p:plain

最もポピュラーな言語でどなたにもわかりやすいからです。

非公式なnpmパッケージを見つけました。うまく動きます。もし今みていたら、ありがとうと言いたいです。

f:id:niwatako:20201127131337p:plain

プロジェクトで変数を必要としていまして、この赤い部分の値が必要になります。

f:id:niwatako:20201127172905p:plain

リポジトリをクローンし環境変数をexportしdev環境モードで動かします。

f:id:niwatako:20201127172834p:plain

LINE Loginを構成するためにコールバックURLをコピーしました。

f:id:niwatako:20201127173024p:plain

f:id:niwatako:20201127173048p:plain

サービスから自分のLINEアカウントにログインします。

f:id:niwatako:20201127173120p:plain

f:id:niwatako:20201127173135p:plain

f:id:niwatako:20201127173139p:plain

これがこのサービスの私のユーザーIDです。

f:id:niwatako:20201127173158p:plain

テストユーザー登録画面に戻ります。自分のUserIDを追加し、自分のサービスのオーナーウォレットからLBCCを直接送れます。

f:id:niwatako:20201127173249p:plain

f:id:niwatako:20201127173342p:plain

100送ります。0が6個付きます。

自分のBITMAX Walletで確認します。

f:id:niwatako:20201127173443p:plain

f:id:niwatako:20201127173550p:plain

Historyにも出ています。

f:id:niwatako:20201127173602p:plain

f:id:niwatako:20201127173522p:plain

このサービスコンソールを使ってあなたのサービスの構成をしました。

f:id:niwatako:20201127173625p:plain

ではLINE Blockchain DevelopersのAPIを呼び出します。

API-Server間であなたがユーザーなら、あなたのユーザーがサービスにCallをすると、あなたのサーバーがLINE Blockchain Developer APIを呼びます。

右のサーバー間コールは左側より高いセキュリティ標準が必要です。全ユーザーに影響するためです。

署名申請は我々が提供するセキュリティ特性の一つです。開発環境ですとcurlやPostmanなどのインタラクティブツールを使うのは大変です。そこで今日のデモ用にシンプルな代理署名を作りました。これでAPIエンドポイントを変えるだけで署名申請をスキップできます。

f:id:niwatako:20201127173908p:plain

ではLINE Blockchain Developers APIをどう使うか見てみましょう。

API参照ページをいくつか開くとカテゴリがあります。基本的な仕様の構成は他と同じですのでまずはList all service walletsを開きます。

f:id:niwatako:20201127131640p:plain

~/dbp-signing-proxy.json に代理署名のconfigがあります。エンドポイントはCashew、APIシークレットをここに入れ

f:id:niwatako:20201127174325p:plain

ポート8282でrunしています。

f:id:niwatako:20201127174405p:plain

必要なヘッダーということで、Signature、Timestamp、nonceを代理署名でスキップできました。

f:id:niwatako:20201127174425p:plain

ではもう一つ別の例です。ユーザーのサービストークンバランスをクリック。

自分のユーザーIDをコピーします。

f:id:niwatako:20201127174507p:plain

f:id:niwatako:20201127174517p:plain

LBCCを含む3つのサービストークンがあります。

f:id:niwatako:20201127174540p:plain

いま100LBCC。リワードトークンはまだありおません。

f:id:niwatako:20201127174559p:plain

手作業でミンティングします。

f:id:niwatako:20201127174720p:plain

f:id:niwatako:20201127174731p:plain

ところでブラウザ拡張ベースのウォレットがダイアログボックスをどう起動するかご存じでしょうか。

拡張をインストールし、ロードしたすべてのページにJavascriptのオブジェクトが出ます。

f:id:niwatako:20201127174847p:plain

そうするとクライアント側のJavascriptコードを起動できます。

しかし我々は別の方法を取ります。

LINEとBITMAXウォレットがあるので拡張インストールなしにユーザーとインタラクションできるからです。

ユーザーがトークンの移動をリクエストをする方法は2つあります。

一つはLINE Message経由。もう一つはサービスクライアントがWebアプリであればページリダイレクトを使います。

コーヒーを買うのは、200LBCCウォレットをAOA(Aggressive Official Account)ウォレットに送金することになります。

ラインメッセージのようなシステムです。

これをトライしましょう。

f:id:niwatako:20201127175147p:plain

LINEメッセージが入ってきました。内容をチェックしましょう。

f:id:niwatako:20201127175209p:plain

Confirmしました。

f:id:niwatako:20201127175259p:plain

サービスでコミットトランザクションのコールをしブロックチェーン取引をします。1LBCRをミンティングし、NFTリワードをユーザーへ。これはWebアプリケーションなのでページリダイレクトも使えます。

f:id:niwatako:20201127175538p:plain

f:id:niwatako:20201127175547p:plain

f:id:niwatako:20201127175601p:plain

別なリワードトークンがもらえました。5リワードトークン以上あると使えます。5もらいましょう。

f:id:niwatako:20201127175725p:plain

Redeem 交換ボタンが使えるようになります。

いろいろな形のRedeemがありますが、ここではオーナーウォレットへ送ります。

f:id:niwatako:20201127175745p:plain

NFT向けのバッチトランスファーサポートがあります。一つずつNFTを送る必要はありません。

NFTをミントする間にメタフィールドで有益な情報を残します。LBCRに何が書いてあるか

f:id:niwatako:20201127175830p:plain

LBCR作成のときにBaseImageURIを省略しました。

BitmaxWalletにLBCRトークンがありデフォルトアイコンがあります。

自分のアイコンを付けられます。

Githubpageでやってみます。

ルールは簡単です。ファイル拡張せずにPNGやJPEGでイメージファイルを乗せるだけです。

f:id:niwatako:20201127175859p:plain

githubPagesのURIを載せます。それだけです。

f:id:niwatako:20201127175948p:plain

全て本日のトピックについて開発者の視点でお話できました。なぜみなさんのためのLINE BlockchainPlatformなのか

f:id:niwatako:20201127180023p:plain

私の回答はこうです。LINEには巨大なユーザーベースがあり皆さんのサービスはこれを活用できるのです。

エンドユーザーにもデベロッパーにも使いやすさを追求しています。

我々はLINK Rewards Programを提供しています。みなさんもこのキャンペーンをお使いいただけます。

いくらするの?と思うかもしれません。こちらが価格帯です。

f:id:niwatako:20201127180113p:plain

サービスをCashewでつかうのは無料です。DaphneのAPIコールは優良です。価格帯、これは魅力的ではありませんか?

ご清聴ありがとうございました。みなさんのクリエイティブなブロックチェーンサービスを楽しみにしています。