Slide 1

Slide 1 text

LINE Blockchain Developers APIではじめる Web3 SoftBank Tech Night Fes 2023 3月16日 Sawano Chika 1

Slide 2

Slide 2 text

まず最初に • 以下のQRコードからお手元で資料を確認できます。 2

Slide 3

Slide 3 text

今日のお話 *** 前半 *** LINE Blockchain Developers APIについて *** 中休み 小話 *** *** 後半 *** LINE Blockchain Developers APIを使ってみよう! 3

Slide 4

Slide 4 text

Who Am I? ➢ソフトバンク 法人事業統括で働くエンジニアです ➢2021年7月ソフトバンクに入社(SBクラウド出向) ➢SBクラウドでは、AI関連のプロダクト開発をひたすら。。 ➢ソフトバンクと合流後はLINEアプリの開発に従事 ➢現在は、LINEに関する技術問い合わせ窓口業務 ➢及びAndroid・iOSアプリの開発に従事 ➢クラウドは以前はAlibaba Cloudを使う事が多かったですが ➢現在は、 Google Cloud(GCP・GWS)を勉強中 4 現在は、業務の範囲が 多く、最近、遠方に出か けるちょっと変わった業務 に従事しましたw

Slide 5

Slide 5 text

LINE Blockchain Developers APIとは LINE Blockchainを利用できるAPIです。 LINEアカウントを利用することも可能。 さくっと 理解する 5 アーキテクチャ構成 API経由でLINE Blockchain が利用可能 APIのドキュメント

Slide 6

Slide 6 text

LINE Blockchain Developers APIで出来ること ✓トークンの発行、鋳造、焼却、更新、情報取得が出来ます※次スライド参照 ✓トークンは次のような様々な種類のトークンに対応 ✓サービストークン(fungible) ✓アイテムトークン(fungible/non-fungible) ✓Composableトークン(non-fungible) 6 暗号資産のLINKでも使 われています

Slide 7

Slide 7 text

LINE Blockchain Developers APIで出来ること ✓コレクションの作成、トークンの発行、鋳造、焼却について fungible/non-fungibleトークンの発行、鋳造、焼却が出来ます。 資料のリンク ✓トークンの更新について 様々な種類のトークン情報や属性を変更できます。 資料のリンク ✓トークンの情報取得について 様々な種類のトークン情報を取得できます。 資料のリンク ※Appendixにも資料を添付しましたのでご参照下さい 7

Slide 8

Slide 8 text

LINE Blockchain Developers APIの特徴 比較的簡単に、しかも無 料(重要!)ではじめること ができますよ! • 複雑なBlockchainの研究・開発や、 Solidity等の特殊な言語での開 発が不要!専門知識不要! • 無料ではじめられます!(重要!)※本番環境へのデプロイには別途費用が必要です。 • LINEアカウントから利用できる • 様々な種類のトークンに対応(前頁参照) • プライベートキーの使用でよりセキュアに利用可能 8

Slide 9

Slide 9 text

中休み このテーマを選んだキッカケ そもそも、 Blockchain に興味をもったキッカケについて。 ✓Blockchain技術に興味を持ったのは遅め(数年前) ✓エンジニアの同僚とマイニングについて話題に ✓自分でもマイニングしようとして情報収集(時期遅し) ✓面白そうだったのでBlockchainプログラミング(Solidityとか)を学習 ✓でも、どこか身近に感じることは無く数年が過ぎたころ、 ✓あるセミナーにて軽くショックを受ける事に。。。 9

Slide 10

Slide 10 text

フロントエンド (HTML,CSS,JS) バックエンド (Python,Java等) SQL,NoSQL データベース 中間のWebサーバと DBが無くなる 現 在 フロントエンド (HTML,CSS,JS) 分散型のスマートコントラクトVM ブロックチェーン よくあるWebの構成。 Webの3層アーキテク チャとも呼ばれます。 これから Web3アプリケー ションのアーキテク チャは、これまで とは全く違ったも のに! 私が衝撃を受けたWeb3のアーキテクチャ構成 10 図の出典:コチラの図が出典です。リンクのサイトではより詳しく書かれているので興味のあるかたはご参照下さい!

Slide 11

Slide 11 text

Blockchain技術の将来性・実用性を確信(遅い!) この図を見て、初めて(!)、Blockchain技術が我々Web技術者に とって今後必須の技術であることに気が付いた。 近い将来、既存のWeb技術の構成からBlockchain技術の構成に 変わる。(セキュリティ等様々な要因で変わらざるを得ないとされる。) 11

Slide 12

Slide 12 text

LINE Blockchain Developers API を使ってみよう! ✓Cashew Partnerアカウントの作成! ✓管理Wallet及びNFTトークンの作成 ✓鋳造(Mint):LINE Blockchain Developers APIから実行 12 ハンズオンしたら面 白そうですが、今 回はスライドにて説 明します。 ハンズオンは次の 機会に!

Slide 13

Slide 13 text

Cashew Partnerアカウントの作成! • LINE Blockchain Developersサイトで「Cashew Partnerアカウ ント」の申請を行います LINE Blockchain Developersサイトの 「ダッシュボード」をクリック します 審査完了に2,3日かかりま すので、申請は余裕をもっ て! まずは 13 必要事項を入力して 「申請」をクリック

Slide 14

Slide 14 text

LINE Blockchain Developers API を使ってみよう! ✓Cashew Partnerアカウントの作成! ✓管理Wallet及びNFTトークンの作成 ✓鋳造(Mint):LINE Blockchain Developers APIから実行 14

Slide 15

Slide 15 text

管理Wallet及びトークンの作成方法 • 申請後に「LINE Blockchain DevelopersのCashew Partnerアカウントの登録 申請が承認されました。」というメールを受信したら、LINE Blockchain Developersサイトの「ダッシュボード」をクリックします。 「サービスを作成」をク リックします。 ※もし、まだアカウントが発行されていない場合は、「Cashew Partnerアカウント申請の審査中です」と表示さ れますので審査完了まで待ちましょう。 15

Slide 16

Slide 16 text

管理Wallet及びトークンの作成方法 LINEのmessaging APIやLINEアプリを開発している方はおなじみのLINE Developersサイトが開きます。 プロバイダーを選択(ない 場合は作成)して、 「新規チャンネル作成」をクリックして、チャンネル の種類で「ブロックチェーンサービス」を選択 16

Slide 17

Slide 17 text

管理Wallet及びトークンの作成方法 • 必要事項を入力してチャンネルを作成します。 今回は必須入力の箇所の み入力します。 国・地域は「日本」を選択、チャンネル名を20 文字以内、チャンネル説明を500文字以内で 入力します。 17

Slide 18

Slide 18 text

管理Wallet及びトークンの作成方法 • 必要事項を入力してチャンネルを作成します。 「大業種」及び「小業種」を入 力。「アプリタイプ」はウェブアプ リまたはネイティブアプリ、または 両方にチェックをします。 ➡今回はウェブアプリのみに チェック 18

Slide 19

Slide 19 text

管理Wallet及びトークンの作成方法 • 必要事項を入力してチャンネルを作成します。 必要事項を入力、規約同意 にチェックをして、最後に 「チャンネルを作成してLINE Blockchain Developers に移動」をクリックします。 19

Slide 20

Slide 20 text

管理Wallet及びトークンの作成方法 • 「情報利用に関する同意について」がポップアップするので同意します。 「同意する」をクリック します。 20

Slide 21

Slide 21 text

管理Wallet及びトークンの作成方法 • Blockchainサービスを作成します 「サービスを作成」の画面に遷移します。 チェーンはデフォルトの「Cashew (Testnet)」のまま、国・地域はデ フォルトの「日本」のままにします。 Cashew(Testnet)は、日本国内 でのみ利用できます。 21

Slide 22

Slide 22 text

管理Wallet及びトークンの作成方法 • Blockchainサービスを作成します 「サービスカテゴリー」を選択し、 「作成したサービスを賭博関連の サービスに使用しないことに同意し ます。」にチェックをして、「作成」を クリックします。 22

Slide 23

Slide 23 text

管理Wallet及びトークンの作成方法 • 作成されたBlockchainサービス情報を保存する。 API KeyとAPI Secretが生 成されます。生成されたAPI KeyとAPI Secretをコピーして 保存します。 特にAPI Secretについては 再表示されないため、確実に 保存しておいてください。 保存したら、「確認」をク リックします。 23

Slide 24

Slide 24 text

管理Wallet及びトークンの作成方法 • 作成したBlockchainサービス情報の確認 「Secretを確認」の画面が ポップアップします。Secretを 入力して「OK」をクリック 作成しました。のページが 表示されたら成功です。 「サービスを確認する」をク リックします。 24

Slide 25

Slide 25 text

管理Wallet及びトークンの作成方法 サービスの管理に使うOwner Walletを作成します 「ダッシュボード」に遷移しま す。作成したサービスが表 示されていますので、右側 の「Wallet」をクリックします。 サービスの管理に使うOwner Walletの名前を入力し 「作成」をクリック 25

Slide 26

Slide 26 text

管理Wallet及びトークンの作成方法 サービスの管理に使うOwner Walletを作成します 生成されたWallet Secretをコピー して保存します。再表示されないた め、確実に保存しておいてください。 「確認」をクリックします。 「Secretを確認」の画面が ポップアップします。Secretを 入力して「OK」をクリック 26

Slide 27

Slide 27 text

管理Wallet及びトークンの作成方法 以下のように表示されたらWallet作成に成功です🎉 「詳細」をクリックする とWalletの詳細を確 認できます。 詳細では、Wallet情報、残 高、トランザクション履歴、出 庫情報を確認することが出 来ます。 27

Slide 28

Slide 28 text

管理Wallet及びトークンの作成方法 Non-fungible Item Token(略称NFT:非代 替性トークン)を作成します。 ➡NFTとは、「ブロックチェーン上に記録される代替不 可能かつユニークなデータ単位」のことです。詳細な説明 は今回割愛します。興味のある方はこちらのWikiをご参 照下さい。 「資産」をクリックします。 下までスクロールして、「コ レクション」の「作成」をク リックします。 28

Slide 29

Slide 29 text

管理Wallet及びトークンの作成方法 Item Token用のコレクションを作成します。 「コレクション名」を入力し、 「Owner Wallet」をドロッ プダウンリストから選択します。 最後に「作成」をクリック Owner Walletの Wallet Secretを入力 して「OK」をクリック 29

Slide 30

Slide 30 text

管理Wallet及びトークンの作成方法 以下の画面に遷移すれば成功です🎉 「確認」をクリック します。 30

Slide 31

Slide 31 text

管理Wallet及びトークンの作成方法 Item Tokenを作成します。 Item Tokenの「新 規作成」をクリックしま す。 ※ LINE Blockchainでは、 サービストークン、アイテムトークン、 Composableトークンを作成す ることが出来ます。今回はnon- fungible(NFT)のアイテムトーク ンを作成していきます。 アイテムトークンのドキュメント 31

Slide 32

Slide 32 text

管理Wallet及びトークンの作成方法 Item Token作成のページでは、FungibleトークンとNon-fungibleトークンを両方作成す ることが出来ます。今回は、Non-fungibleを選択します。 「Token名」を入力 して、「作成」をクリッ クします。 Owner Walletの Wallet Secretを入力 して「OK」をクリック 32

Slide 33

Slide 33 text

管理Wallet及びトークンの作成方法 以下のページが表示されたら成功です🎉 「確認」をクリック します。 NFTと表示されてい ることを確認 33

Slide 34

Slide 34 text

管理Wallet及びトークンの作成方法 作成されたトークンが表示されていることを確認。 お疲れ様でした!あとは、利用するだけです!! NFTと表示されている ことを確認 34

Slide 35

Slide 35 text

LINE Blockchain Developers API を使ってみよう! ✓Cashew Partnerアカウントの作成! ✓管理Wallet及びNFTトークンの作成 ✓鋳造(Mint):LINE Blockchain Developers APIから実行 35

Slide 36

Slide 36 text

鋳造(Mint)とは? ✓Non-fungible Item Tokenの実体を生成 ➡オブジェクト指向プログラミングに例えると「インスタンスの生成」 36 ここでは、鋳造することで 「量が増える」という理 解でOK

Slide 37

Slide 37 text

トークンを鋳造(Mint)する LINE Blockchain Developersサイトで発行した次のものを使用します! • サービスのAPI KEY • サービスのAPI SECRET • 契約ID(CONTRACT ID) • OWNER WALLET ADDRESS • OWNER WALLET SECRET これらを次のページにあるコードの以下の箇所に設定します • SERVICE_API_KEY=ここに設定 • SERVICE_API_SECRET=ここに設定 • CONTRACT_ID=ここに設定 • OWNER_WALLET_ADDRESS=ここに設定 • OWNER_WALLET_SECRET=ここに設定 37

Slide 38

Slide 38 text

トークンを鋳造(Mint)する #!/bin/bash SERVICE_API_KEY= SERVICE_API_SECRET= CONTRACT_ID= TOKEN_TYPE=10000001 OWNER_WALLET_ADDRESS= OWNER_WALLET_SECRET= TO_ADDRESS=$OWNER_WALLET_ADDRESS NFT_NAME=MyCard TIMESTAMP=`curl -s -X GET https://test-api.blockchain.line.me/v1/time -H "service-api-key: $SERVICE_API_KEY" | jq -r .responseTime` NONCE=`echo "${TIMESTAMP:5:8}"` MESSAGE="${NONCE}${TIMESTAMP}POST/v1/item-tokens/$CONTRACT_ID/non- fungibles/$TOKEN_TYPE/mint?name=$NFT_NAME&ownerAddress=$OWNER_WALLET_ADDRESS&ownerSecret=$OWNER_WALLET_SECRET&toAddress=$TO_A DDRESS" SIGNATURE=`echo -n $MESSAGE | openssl sha512 -binary -hmac "$SERVICE_API_SECRET" | base64` curl -s -X POST https://test-api.blockchain.line.me/v1/item-tokens/$CONTRACT_ID/non-fungibles/$TOKEN_TYPE/mint ¥ -H "service-api-key: $SERVICE_API_KEY" ¥ -H "nonce: $NONCE" ¥ -H "timestamp: $TIMESTAMP" ¥ -H "signature: $SIGNATURE" ¥ -H "Content-Type: application/json" ¥ -d " { ¥"ownerAddress¥": ¥"$OWNER_WALLET_ADDRESS¥", ¥"ownerSecret¥": ¥"$OWNER_WALLET_SECRET¥", ¥"name¥": ¥"$NFT_NAME¥", ¥"toAddress¥": ¥"$TO_ADDRESS¥" } " | jq 38 ※出典:LINE社で公開しているこちらレポートを参考にさせて頂きました。 API実行はHTTP Request Headerに以下が必 要です ①サービスのAPI KEY ②timestamp: ミリ秒単位のUnix Time ③nonce: 8文字の任意の文字列 ④signature: APIリクエストの内容をサービスのAPI Secret Keyで署名した結果 こちらのコードを.shファイル (shell)として保存します。 ファイル名の例) minting.sh

Slide 39

Slide 39 text

トークンを鋳造(Mint)する #ファイルに実行権を付与したあとshellを実行します $ bash ./minting.sh { "responseTime": 1678273992844, "statusCode": 1002, "statusMessage": "Accepted", "responseData": { "txHash": "0A46F5084D5FBB8C4A0A4640D2656466DC19FF5362F585156D4DFFFA18B805DD" } } 39 ※出典:LINE社で公開しているこちらレポートを参考にさせて頂きました。 実行結果 statusMessage": "Accepted", と表示され、 responseData.txHashにhash 値が入っていたら成功です🎉🎉

Slide 40

Slide 40 text

トークンを鋳造(Mint)する 鋳造に成功すると鋳造量が増えることが確認できます! Walletの残高が増 えました🎉 40

Slide 41

Slide 41 text

発展① SDKを使用する方法 ■SDKからLINE Blockchain Developers APIを使用する方法 今回は、比較的簡単に実装できるshellで実装しましたが、実際の開発では 公開されているSDKを利用して実装するのがオススメです。 ■ LINE社公式SDK ➢JavaScriptライブラリ ※現在、公式SDKはJavaScriptのみ ➢JavaScriptライブラリガイド ■LINE Blockchain開発者コミュニティ提供のSDK ➢Kotlinライブラリ ➢Goライブラリ URLリンクを挿入し ていますので、興味 のある方はご参照下 さい! 41

Slide 42

Slide 42 text

発展② その他の機能 今回は、Item Token(NFT)の鋳造を行いました🎉 LINE Blockchain Developers APIでは、様々な種類のトークンの 発行、鋳造、焼却、更新、情報取得を行うことが出来ます! ぜひ、いろいろ試してみてください!! APIのドキュメント 42

Slide 43

Slide 43 text

Solidityなどブロックチェーンの開発プログラミングをやったことがある方だったら、 APIをリクエストするだけで実装できるなんて、 なんて簡単なんだ! と同意してくれると思いますが、、 まだ、少しハードルが高い。。と思う方。 ここからは、おまけの話 43

Slide 44

Slide 44 text

じ、じつは、NFTの配布であればもっと簡単に出来ます!! (恐らく、今はユースケース的にはNFTの配布が多そう。) ここからは、おまけの話 44

Slide 45

Slide 45 text

配布だけならもっと簡単に実現できます!! ここからは、おまけの話 トークルームでNFTをスタンプのよ うに贈れるNFT LINE NFTギフト LINEでNFTや 暗号資産を管理 LINE NFT Pocket 45

Slide 46

Slide 46 text

最後に、ホワイトペーパーとおススメの本の紹介 Web3とWeb3.0両方あ るの知っていましたか!何が 違うのか? 実際Web3って、何なの か?ブロックチェーン、スマー トコントラクト、NFT、DAO それぞれどう違うのか?が、わ かりやすく書かれています。 出版社が、SBクリエイティ ブなのは偶然ですw 46 LINE Blockchainの ホワイトペーパー(定義書的 な詳細を記載したもの) Web3はエンジニア目線 から言うと「永続性を 持ったストレージ+コン ピュータ」(著者)

Slide 47

Slide 47 text

難しい(or怪しい?)というイメージが先行してしまっている ところもありますが、Blockchainの世界を少しでも 身近に感じて頂けたら幸いです! ご清聴ありがとうございました!! 47 Blockchain技術は近い将来、エンタープライズの 分野でも使われる可能性を秘めた技術です。 一緒に注目してきましょう~🌸

Slide 48

Slide 48 text

おやくそくのやつ 48

Slide 49

Slide 49 text

ソフトバンクではさらなる事業拡大のため キャリア採用を実施中です ソフトバンク キャリア採用 詳細はこちら 時期的に少な目でしたが、イロ イロありました。 49

Slide 50

Slide 50 text

Appendix 50

Slide 51

Slide 51 text

・アイテムトークンのcontract情報を取得する ・TxHashで作成したアイテムトークンコレクションの情報を取得する ・Fungibleアイテムトークン一覧を取得する ・Fungibleアイテムトークンの情報を取得する ・Fungibleアイテムトークンの保有者を取得する ・Non-fungibleアイテムトークンの一覧を取得する ・Non-fungibleアイテムトークンのtypeを取得する ・Non-fungibleアイテムトークンの情報を取得する ・Non-fungibleアイテムトークンの特定Token Typeの保有者を取得する ・特定のnon-fungibleアイテムトークンの保有者を取得する ・Non-fungibleアイテムトークンの子一覧を取得する ・Non-fungibleアイテムトークンの親を取得する ・Non-fungibleアイテムトークンのルートを取得する ・複数のfungible tokenアイコンの状態を取得する ・複数のfungible tokenのメディアリソースの状態を取得する ・複数のfungible tokenのサムネイルの状態を取得する ・複数のnon-fungible tokenアイコンの状態を取得する ・複数のnon-fungible tokenのメディアリソースの状態を取得する ・複数のnon-fungible tokenのサムネイルの状態を取得する ※資料リンク 51 トークンの情報取得に関するAPI

Slide 52

Slide 52 text

・アイテムトークンコレクションを作成する ・Fungibleアイテムトークンを発行する ・Fungibleアイテムトークンを鋳造する ・Fungibleアイテムトークンを焼却する ・Non-fungibleアイテムトークンを発行する ・Non-fungibleアイテムトークンを鋳造する ・Non-fungibleアイテムトークンを複数鋳造する ・複数のnon-fungibleアイテムトークンをそれぞれ指定された受信者に対して一括鋳造する ・Non-fungibleアイテムトークンを焼却する ・Fungibleアイテムトークンの情報を更新する ・複数のfungible tokenアイコンを更新する ・複数のfungible tokenのメディアリソースを更新する ・Non-fungibleアイテムトークンのtypeを更新する ・Non-fungibleアイテムトークンの情報を更新する ・複数のnon-fungible tokenアイコンを更新する ・複数のnon-fungible tokenのメディアリソースを更新する ・複数のfungible tokenのサムネイルを更新する ・複数のnon-fungible tokenのサムネイルを更新する ・Non-fungibleアイテムトークンを結合する ・Non-fungibleアイテムトークンを分離する ※資料リンク:更新、 更新以外 52 コレクションの作成、トークンの発行、鋳造、焼却、更新に関するAPI