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. 自己紹介 氏名 小倉 聡司 経歴 2016年新卒でSoftBank入社 業務 2017〜 HIVEX向けGateway開発 2021〜

    Blockchain R&D 2021〜 事業の種探し SNS Connpass o3osatoshi Twitter o3osatoshi GitHub o3osatoshi 2
  2. ライフサイクル 譲渡/転売 受取/購入 チケットの入手 提示 チケットの使用 参加証明 チケットの保管 Walletアドレス に一括mint

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

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

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

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

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

    存在チェック QRスキャン (スタッフ) OneTimeToken署名検証 transferabilityをfalseに変更 OneTimeToken 検証 「チケット使用完了」 画面チェック ユーザ/スタッフ (ブラウザ) 仕組み|もぎり|処理詳細 ※ユーザ側でチケットを  使用する処理がスタート 9
  8. 仕組み|もぎり|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
  9. ユーザ/スタッフ用画面 OneTimeToken (認証/もぎり用情報) 認証/もぎり処理 SoftBank サーバー Polygon The Graph IPFS

    ERC721 Token毎の譲渡可不可 ERC721 ユーザの署名検証 譲渡可不可チェック/変更 イベントコントラクト生成履歴 チケット生成/譲渡/使用履歴 EventをEntityとしてストア イベント情報 チケット情報 NFTメタ情報のストア データ 機能 MetaMask 仕組み|データ データの流れ ※SoftBankサーバに重要な情報を保持しない 12
  10. 仕組み|データ|チケット詳細画面 種類 カテゴリ 静的/動的 サービス イベント タイトル 静的データ IPFS 概要

    コントラクト チケット 画像 概要 使用可不可 動的データ The Graph 使用日時 譲渡履歴 チケット詳細画面 14
  11. 仕組み|データ|リンク集 サービス 項目 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
  12. チケットNFT仕組み|まとめ 1 デザイン NFTとして発行、”もぎり”でSBT化 メリット NFTの良さを享受しつつ、SBTの良さも享受する 思想 リアルなチケットの動きのイメージに近づけたかった 懸念点 “もぎり”処理が遅延する可能性

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

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

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