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

LINE Blockchain Developers APIではじめるWeb3

LINE Blockchain Developers APIではじめるWeb3

2023年3月16日に開催された「SoftBank Tech Night Fes 2023」の講演資料です。

LINE Blockchain Developers APIは様々なブロックチェーン機能を自分たちのサービスに適用することができるAPIです。比較的簡単に、しかも無料(重要!)ではじめることができます。今回はLINE Blockchain APIのはじめかた、管理Wallet及びトークンの作成方法についてお話します。また、LINE Blockchainのアーキテクチャの概要や特長にも触れたいと思います。

■関連スライド
・LINE eKYCって何だ?~その実力と開発チップスについて~
https://speakerdeck.com/sbtechnight/line-ekyctutehe-da-sonoshi-li-tokai-fa-titupusunituite

・LINE APIの種類&PCを使った5分でできるハンズオン
https://speakerdeck.com/sbtechnight/line-apinozhong-lei-and-pcwoshi-tuta5fen-dedekiruhanzuon

・LINEアプリ開発を さらに加速させる フレームワークとCI/CD技術
https://speakerdeck.com/sbtechnight/cdji-shu

■作成者
澤野 千賀(さわの ちか)
ソフトバンク株式会社
法人事業統括 クラウドエンジニアリング本部
アプリケーションエンジニア・AIエンジニア

■SoftBank Tech Nightについて
ソフトバンク株式会社のエンジニア有志が開催するテックイベントです。
各分野のエキスパートが、日頃培った技術や事例、知見について発信しています。
イベントは開催スケジュールはconnpassをご確認ください。
https://sbtechnight.connpass.com/

SoftBank Tech Night Fes 2023公式サイト
https://www.softbank.jp/biz/events/tech-night-fes-2023/

SoftBank Tech Night

March 16, 2023
Tweet

More Decks by SoftBank Tech Night

Other Decks in Technology

Transcript

  1. 今日のお話 *** 前半 *** LINE Blockchain Developers APIについて *** 中休み

    小話 *** *** 後半 *** LINE Blockchain Developers APIを使ってみよう! 3
  2. LINE Blockchain Developers APIの特徴 比較的簡単に、しかも無 料(重要!)ではじめること ができますよ! • 複雑なBlockchainの研究・開発や、 Solidity等の特殊な言語での開

    発が不要!専門知識不要! • 無料ではじめられます!(重要!)※本番環境へのデプロイには別途費用が必要です。 • LINEアカウントから利用できる • 様々な種類のトークンに対応(前頁参照) • プライベートキーの使用でよりセキュアに利用可能 8
  3. フロントエンド (HTML,CSS,JS) バックエンド (Python,Java等) SQL,NoSQL データベース 中間のWebサーバと DBが無くなる 現 在

    フロントエンド (HTML,CSS,JS) 分散型のスマートコントラクトVM ブロックチェーン よくあるWebの構成。 Webの3層アーキテク チャとも呼ばれます。 これから Web3アプリケー ションのアーキテク チャは、これまで とは全く違ったも のに! 私が衝撃を受けたWeb3のアーキテクチャ構成 10 図の出典:コチラの図が出典です。リンクのサイトではより詳しく書かれているので興味のあるかたはご参照下さい!
  4. LINE Blockchain Developers API を使ってみよう! ✓Cashew Partnerアカウントの作成! ✓管理Wallet及びNFTトークンの作成 ✓鋳造(Mint):LINE Blockchain

    Developers APIから実行 12 ハンズオンしたら面 白そうですが、今 回はスライドにて説 明します。 ハンズオンは次の 機会に!
  5. Cashew Partnerアカウントの作成! • LINE Blockchain Developersサイトで「Cashew Partnerアカウ ント」の申請を行います LINE Blockchain

    Developersサイトの 「ダッシュボード」をクリック します 審査完了に2,3日かかりま すので、申請は余裕をもっ て! まずは 13 必要事項を入力して 「申請」をクリック
  6. 管理Wallet及びトークンの作成方法 • 申請後に「LINE Blockchain DevelopersのCashew Partnerアカウントの登録 申請が承認されました。」というメールを受信したら、LINE Blockchain Developersサイトの「ダッシュボード」をクリックします。 「サービスを作成」をク

    リックします。 ※もし、まだアカウントが発行されていない場合は、「Cashew Partnerアカウント申請の審査中です」と表示さ れますので審査完了まで待ちましょう。 15
  7. 管理Wallet及びトークンの作成方法 • 作成されたBlockchainサービス情報を保存する。 API KeyとAPI Secretが生 成されます。生成されたAPI KeyとAPI Secretをコピーして 保存します。

    特にAPI Secretについては 再表示されないため、確実に 保存しておいてください。 保存したら、「確認」をク リックします。 23
  8. 管理Wallet及びトークンの作成方法 Item Tokenを作成します。 Item Tokenの「新 規作成」をクリックしま す。 ※ LINE Blockchainでは、

    サービストークン、アイテムトークン、 Composableトークンを作成す ることが出来ます。今回はnon- fungible(NFT)のアイテムトーク ンを作成していきます。 アイテムトークンのドキュメント 31
  9. トークンを鋳造(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
  10. トークンを鋳造(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
  11. トークンを鋳造(Mint)する #ファイルに実行権を付与したあとshellを実行します $ bash ./minting.sh { "responseTime": 1678273992844, "statusCode": 1002,

    "statusMessage": "Accepted", "responseData": { "txHash": "0A46F5084D5FBB8C4A0A4640D2656466DC19FF5362F585156D4DFFFA18B805DD" } } 39 ※出典:LINE社で公開しているこちらレポートを参考にさせて頂きました。 実行結果 statusMessage": "Accepted", と表示され、 responseData.txHashにhash 値が入っていたら成功です🎉🎉
  12. 発展① SDKを使用する方法 ▪SDKからLINE Blockchain Developers APIを使用する方法 今回は、比較的簡単に実装できるshellで実装しましたが、実際の開発では 公開されているSDKを利用して実装するのがオススメです。 ▪ LINE社公式SDK

    ➢JavaScriptライブラリ ※現在、公式SDKはJavaScriptのみ ➢JavaScriptライブラリガイド ▪LINE Blockchain開発者コミュニティ提供のSDK ➢Kotlinライブラリ ➢Goライブラリ URLリンクを挿入し ていますので、興味 のある方はご参照下 さい! 41
  13. ・アイテムトークンの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
  14. ・アイテムトークンコレクションを作成する ・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