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

チケットNFTの仕組み

 チケットNFTの仕組み

https://sbtechnight.connpass.com/event/266723/
2023/01/19(木) 18:50〜
増枠!SoftBank Tech Night #10 Web3.0の実用性を探る
@ソフトバンク

SoftBank Tech Night

January 19, 2023
Tweet

More Decks by SoftBank Tech Night

Other Decks in Technology

Transcript

  1. SoftBank Tech Night #10 Web3.0の実用性を探る チケットNFTの仕組み 氏名 小倉 聡司 日時 2023.01.19 18:00〜20:20

    場所 東京都港区海岸一丁目7番1号 Welcome
  2. 自己紹介 氏名 小倉 聡司 経歴 2016年新卒でSoftBank入社 業務 2017〜 HIVEX向けGateway開発 2021〜

    Blockchain R&D 2021〜 事業の種探し SNS Connpass o3osatoshi Twitter o3osatoshi GitHub o3osatoshi 2
  3. なぜ チケットNFT なのか 現実世界で役立てたい NFTの活用がキー 投機とは無縁に “価値ある紙”の代替 一般の人が利用し、発行に法的ハードルが低いもの = チケット

    3
  4. ライフサイクル 譲渡/転売 受取/購入 チケットの入手 提示 チケットの使用 参加証明 チケットの保管 Walletアドレス に一括mint

    NFTとして 自由な流通 専用サイトで もぎり同意 NFTのSBT化 専用サイトで 所有証明 NFT SBT もぎり 自由な2次流通 偽物と本物を判別可 チケットの使用可不可を判別可 参加証明 参加者限定の特典享受 = POAP と同様 ※様々実装が考えられる中で、自分たちが「良さそう」と考えた仕様 4
  5. SBT Soul Bound Token コンセプト Web3における 「社会的アイデンティティ」の創出 用途 ユーザの資格・履歴の証明 (=信用創造)

    仕様 代替不可能トークン(=NFT) 譲渡不可 SBT とは 信用ある 機関 ある人の ウォレット (Soul) 出生/卒業/資格 証明書SBT etc SBT 発行 SBT 参照 第三者 信頼できる! 5
  6. POAP とは POAP(ポープ) Proof of Attendance Protocol ※社名でもある コンセプト デジタル記念品として思い出を残す

    ”あなたの人生のブックマーク” 用途 イベントに参加したことの証明 保有者限定の特典を享受 仕様 ERC721を継承 “pause”機能を追加(=SBT化機能) ※ソースコード 6
  7. ユーザ/スタッフ用画面 OneTimeToken (認証/もぎり用情報) 認証/もぎり処理 SoftBank サーバー Polygon The Graph IPFS

    ERC721 Token毎の譲渡可不可 ERC721 ユーザの署名検証 譲渡可不可チェック/変更 イベントコントラクト生成履歴 チケット生成/譲渡/使用履歴 EventをEntityとしてストア イベント情報 チケット情報 NFTメタ情報のストア データ 機能 MetaMask 仕組み|全体像 データの流れ ※SoftBankサーバに重要な情報を保持しない 7
  8. ユーザ/スタッフ用画面 OneTimeToken (認証/もぎり用情報) 認証/もぎり処理 SoftBank サーバー Polygon The Graph IPFS

    ERC721 Token毎の譲渡可不可 ERC721 ユーザの署名検証 譲渡可不可チェック/変更 イベントコントラクト生成履歴 チケット生成/譲渡/使用履歴 EventをEntityとしてストア イベント情報 チケット情報 NFTメタ情報のストア データ 機能 MetaMask 仕組み|もぎり データの流れ ※SoftBankサーバに重要な情報を保持しない 8
  9. 8 Ticketもぎり デモ動画

  10. SoftBankサーバー Polygon MetaMask OneTimeToken 生成 OneTimeToken 署名 「チケット使用」タップ OneTimeTokenに署名 OneTimeToken

    存在チェック QRスキャン (スタッフ) OneTimeToken署名検証 transferabilityをfalseに変更 OneTimeToken 検証 「チケット使用完了」 画面チェック ユーザ/スタッフ (ブラウザ) 仕組み|もぎり|処理詳細 ※ユーザ側でチケットを  使用する処理がスタート 9
  11. 仕組み|もぎり|Solidity import "@openzeppelin/…/ERC721.sol"; import "@openzeppelin/…/AccessControlEnumerable.sol"; contract EventTicket is ERC721, AccessControlEnumerable

    { mapping(uint256 => bool) transferability; function disableTransferability(tokenId, oneTimeToken, signature) onlyRole(STAFF) { address signer = getSigner(tokenId, oneTimeToken, signature); require(signer == ownerOf(tokenId)); transferability[tokenId] = false; } function _beforeTokenTransfer(from, to, tokenId, batchSize) { require(transferability[tokenId] == true); super._beforeTokenTransfer(from, to, tokenId, batchSize); } … } ・OpenZeppelinのERC721を継承 ・transferability で譲渡可不可管理 ・管理者のみSBT化可能  ※ただしNFT所有者の署名が必要 ・Transfer前には transferability チェック 10
  12. 仕組み|もぎり|Solidityに”もぎり”の再現 ユーザ スタッフ 手渡す = もぎり同意 もぎる = もぎり実行 oneTimeToken

    への署名検証 管理者のみ SBT化可能 解釈 スマコン 表現 11
  13. ユーザ/スタッフ用画面 OneTimeToken (認証/もぎり用情報) 認証/もぎり処理 SoftBank サーバー Polygon The Graph IPFS

    ERC721 Token毎の譲渡可不可 ERC721 ユーザの署名検証 譲渡可不可チェック/変更 イベントコントラクト生成履歴 チケット生成/譲渡/使用履歴 EventをEntityとしてストア イベント情報 チケット情報 NFTメタ情報のストア データ 機能 MetaMask 仕組み|データ データの流れ ※SoftBankサーバに重要な情報を保持しない 12
  14. The Graph や IPFS は前回TechNightで説明しました 一般的な説明はそちらをご参照ください https://speakerdeck.com/sbtechnight/uniswapdeli-jie-suruweb3falseshi-zu-mi 仕組み|データ|The Graph &

    IPFS 13
  15. 仕組み|データ|チケット詳細画面 種類 カテゴリ 静的/動的 サービス イベント タイトル 静的データ IPFS 概要

    コントラクト チケット 画像 概要 使用可不可 動的データ The Graph 使用日時 譲渡履歴 チケット詳細画面 14
  16. 仕組み|データ|リンク集 サービス 項目 URL Polygon EventFactoryContract https://polygonscan.com/address/0x3a62034cfd491a67085f207d2e4d7e3c1d716680 Polygon EventContract https://polygonscan.com/address/0xda355ff8d67de2942937a047a36928e485f9f439

    The Graph apollo_event https://thegraph.com/hosted-service/subgraph/oguras48/apollo_event IPFS baseURI https://cloudflare-ipfs.com/ipfs/QmSXZX2dfMCxUmhs4MtBu89Bh51ZkESRjAQghBBBq7Nxuo IPFS Ticket No.0 MetaData https://cloudflare-ipfs.com/ipfs/QmSXZX2dfMCxUmhs4MtBu89Bh51ZkESRjAQghBBBq7Nxuo/0 IPFS Ticket No.0 Image https://cloudflare-ipfs.com/ipfs/QmdLDpQ7eyhAdhg3meAoeJY2rAmkMy3QDQjB8wyGr2Hmpj データはパブリックにあり誰でも参照可能 15
  17. チケットNFT仕組み|まとめ 1 デザイン NFTとして発行、”もぎり”でSBT化 メリット NFTの良さを享受しつつ、SBTの良さも享受する 思想 リアルなチケットの動きのイメージに近づけたかった 懸念点 “もぎり”処理が遅延する可能性

    ※処理速度がBlockchainに依存するため デザイン QRを介して、“もぎり”結果を双方に通知  双方 … ユーザ & スタッフ メリット そのユーザの所有するチケットNFTが 確かに使用されたことを双方で確かめられる 工夫点 QRのスクショ共有では不正使用できない仕組み デザイン SoftBankサーバに重要な情報を保持しない  主要な情報 Polygon, IPFS  付帯 情報 The Graph 思想 データはユーザのもの 反省点 できればSoftBankサーバもなくしたい 16
  18. チケットNFT仕組み|まとめ 2 デザイン ユーザがチケットを渡す  =もぎりへの同意  =OneTimeTokenへの署名 メリット ユーザの署名なしでは勝手にSBT化できない Blockchain上にも”ユーザの同意”ログを残せる 個人的懸念点

    Solidity上でOneTimeTokenの証明検証ってどうなん? 他のデザイン案 ユーザに“もぎりへのApprove”をしてもらう デザイン スタッフがもぎる  =管理者のみSBT化可能 メリット 運営側でSBT化のトランザクションを 起こすため、ユーザに手数料はかからない 課題 スループットが運営側の鍵数に依存する デザイン チケットNFTを応用した仕組みでSBTの所有確認が可能 メリット 目の前にいる人が確かに所有していることを確認可能 課題 ウォレット自体を誰かと交換されると気が付けない 協業 tokenproofがVCでNFTの所有を証明する仕組みを開発 17
  19. 譲渡/転売 受取/購入 チケットの入手 提示 チケットの使用 参加証明 チケットの保管 Walletアドレス に一括mint NFTとして

    自由な流通 専用サイトで もぎり同意 NFTのSBT化 専用サイトで 所有証明 もぎり チケットNFTで入場された方限定で ノベルティの配布を行います 懇親会時、ノベルティ配布ブースまでお越し下さい \ここの体験/ 18