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

リアルとデジタルをつなぐ、Web3社会実装への取り組み

 リアルとデジタルをつなぐ、Web3社会実装への取り組み

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

NFT取引高の減少、長期に渡る暗号資産価格の低迷、LUNAの崩壊、FTXの経営破綻。昨今、「暗号資産の冬」と呼ぶにふさわしい、厳しい環境にクリプト界隈は置かれています。しかし、そんな時だからこそ、数年後の春を見越してWeb3の実用性・可能性を探る活動を虎視眈眈と続けています。今回は、そんな活動の一端をご紹介します。
- OracleとDynamicNFTを組み合わせた検証
- SBT化によって"もぎり"を再現する「チケットNFT」の検証

■関連スライド
・Uniswapで理解するWeb3の仕組み
https://speakerdeck.com/sbtechnight/uniswapdeli-jie-suruweb3falseshi-zu-mi

・チケットNFTの仕組み
https://speakerdeck.com/sbtechnight/tiketutonftnoshi-zu-mi
 

■作成者
小倉 聡司(おぐら さとし)
ソフトバンク株式会社
テクノロジーユニット サイバーセキュリティ本部 Payment連携開発部
Blockchain Researcher / Engineer

■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. SoftBank Tech Night Fes 2023
    リアルとデジタルをつなぐ、
    Web3社会実装への取り組み
    氏名 小倉 聡司
    日時 2023.03.16 14:00〜14:25
    場所 東京都港区海岸一丁目7番1号
    Welcome

    View full-size slide

  2. 自己紹介
    氏名
    小倉 聡司
    経歴
    2016年新卒でSoftBank入社
    業務
    2017〜 HIVEX向けGateway開発
    2021〜 Blockchain R&D
    2021〜 事業の種探し
    SNS
    Twitter @o3osatoshi
    2

    View full-size slide

  3. 本日のゴール
    便利かも! 面白そう!
    よくわからん
    3

    View full-size slide

  4. 本日のトピック
    チケットNFT スタンプラリーNFT
    NFT→SBT Oracle & dNFT
    4

    View full-size slide

  5. 本日のトピック
    チケットNFT スタンプラリーNFT
    NFT→SBT Oracle & dNFT
    5

    View full-size slide

  6. なぜ チケットNFT なのか
    現実世界で役立てたい NFTの活用がキー
    投機とは無縁に “価値ある紙”の代替
    一般の人が利用し、発行に法的ハードルが低いもの
    = チケット
    6

    View full-size slide

  7. ライフサイクル
    譲渡/転売
    受取/購入
    チケットの入手
    提示
    チケットの使用
    参加証明
    チケットの保管
    Walletアドレス
    に一括mint
    NFTとして
    自由な流通
    専用サイトで
    もぎり同意
    NFTのSBT化
    専用サイトで
    所有証明
    NFT SBT
    もぎり
    自由な2次流通
    偽物と本物を判別可
    チケットの使用可不可を判別可
    参加証明
    参加者限定の特典享受
    = POAP と同様
    ※様々実装が考えられる中で、自分たちが「良さそう」と考えた仕様
    7

    View full-size slide

  8. NFT
    Non-Fungible Token
    コンセプト
    デジタル所有権
    「私がそれを所有している」の証明
    特徴
    On Chain : MappingData管理
    : 譲渡機能等提供
    Off Chain : MetaData保存
    仕様
    ERC-721
    ※公式 EIPS
    ※OpenZeppelin サンプル実装
    NFT とは
    Blockchain
    Wallet
    分散型ストレージ
    (IPFS)
    tokenURI = ipfs://{CID}
    ※通信はしません
    State (MappingData)
    key value
    walletAddress tokenId
    tokenId tokenURI
    Content (MetaData)
    key value
    CID image: ..,
    title: ..,
    description: ..,
    誰が何を持ってるか
    NFTのMetaDataがどこにあるか
    NFT毎のMetaData
    参照
    トランザクション実行
    NFTのMetaData取得
    ※最も一般的なNFTの構成の場合
    8

    View full-size slide

  9. SBT
    Soul Bound Token
    コンセプト
    Web3における
    「社会的アイデンティティ」の創出
    用途
    ユーザの資格・履歴の証明
    (=信用創造)
    仕様
    NFT & 譲渡不可
    SBT とは
    信用ある
    機関
    ある人の
    ウォレット
    (Soul)
    出生/卒業/資格
    証明書SBT
    etc
    SBT
    発行
    SBT
    参照
    第三者
    信頼できる!
    9

    View full-size slide

  10.  NFT
    POAP とは
    POAP(ポープ)
    Proof of Attendance Protocol
    ※社名でもある
    コンセプト
    デジタル記念品として思い出を残す
    ”あなたの人生のブックマーク”
    用途
    イベントに参加したことの証明
    保有者限定の特典を享受
    仕様
    ERC721を継承
    “pause”機能を追加(=SBT化機能)
    ※ソースコード
     SBT ( ≒ POAP)
    ※POAPはSBTの一種
    10

    View full-size slide

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

    View full-size slide

  12. Ticketもぎり
    デモ動画
    12

    View full-size slide

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

    View full-size slide

  14. ソフトバンク
    サーバー
    MetaMask
    OneTimeToken
    生成
    OneTimeToken
    署名
    「チケット使用」タップ
    OneTimeTokenに署名
    OneTimeToken
    存在チェック
    QRスキャン
    (スタッフ)
    OneTimeToken署名検証
    transferabilityをfalseに変更
    OneTimeToken
    検証
    「チケット使用完了」
    画面チェック
    ユーザ/スタッフ
    (ブラウザ)
    仕組み|もぎり|処理詳細
    ※ユーザ側でチケットを
     使用する処理がスタート
    Polygon
    14

    View full-size slide

  15. 仕組み|もぎり|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 チェック
    15

    View full-size slide

  16. 仕組み|もぎり|Solidityに”もぎり”の再現
    ユーザ スタッフ
    手渡す
    → もぎり同意
    もぎる
    → もぎり実行
    oneTimeToken
    への署名検証
    管理者のみ
    SBT化可能
    解釈
    スマコン
    表現
    16

    View full-size slide

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

    View full-size slide

  18. The Graph や IPFS は前々回TechNightで説明しました
    そこから数ページ抜粋します
    https://speakerdeck.com/sbtechnight/uniswapdeli-jie-suruweb3falseshi-zu-mi
    仕組み|データ|The Graph & IPFS
    18

    View full-size slide

  19. HTTP(ロケーション指向型プロトコル)
    IPFS(コンテンツ指向型プロトコル)
    IPFS | とは
    HTTPの補完/置換をするコンテンツ指向型プロトコル
    https://hogehoge.com/aaa/hello.html

    hello.htmlファイル
    aaaディレクトリ
    hogehoge.comサーバ

    ipfs://bafybeietctxou4mhqdqfacncf33lvqurrctxzegbezy7nshrtv2tzvymxi
    中身がこのハッシュ値(CID)のファイル 19

    View full-size slide

  20. IPFS | エコシステム(Filecoin)
    IPFSノード C
    IPFSノード B
    IPFSノード A
    (Pinata)
    Developer
    (Uniswap Labs)
    リソース提供者
    (IPFSノード運用)
    Pin
    ユーザ
    (トレーダー/流動性供給者)
    メリット
    - 耐障害性
    - 負荷分散
    - 耐検閲性
    - 耐改ざん性
    静的コンテンツ
    (React)
    ipfs://baf…mxi
    20

    View full-size slide

  21. The Graph | エコシステム
    Developer
    (Uniswap Labs)
    subgraph
    リソース提供者
    (Graphノード運用)
    ユーザ
    (トレーダー/流動性提供者)
    静的コンテンツ
    (React)
    21

    View full-size slide

  22. The Graph | How it works
    ユーザ
    (トレーダー/流動性提供者)
    静的コンテンツ
    (React) Token
    DayData
    Pair
    DayData
    Uniswap
    DayData
    Token Pair
    Uniswap
    Factory
    Swap Burn Mint
    Block
    Block

    receiptsRoot

    Rc Rc
    Receipt
    Block
    log
    Transfer
    Event
    Transfer
    Event
    Sync
    Event
    Swap
    Event
    Entity
    Mapping
    GraphQL
    Graphノード
    Ethereumノード
    22

    View full-size slide

  23. ※ 「Blockchain Data」は、Contract Accountのステート(storageに保持されるデータ)を指す
    ※ EthereumのFull Nodeでは、最新の128blockしかステートが保持されない
      Archive Nodeを参照することで、過去の全ステートを参照することは可能
    ユーザが”欲しいデータ”を”取得しやすい手段”で提供する
    The Graph | 存在理由
    Blockchain Data
    (Ethereum上のステート)
    Indexed Data
    (TheGraph上のデータ)
    データの中身 基本データ 基本データ + 加工済みデータ
    データの時制 基本的に”現在”の値のみ
    加工(保持)の仕方次第で
    “過去”も可能
    Queryの利便性
    コントラクトのFunction依存
    基本的にGetterのみ
    GraphQL APIで可能な検索
    Sort, Filter, etc
    Blockchain DataとIndexed Dataの比較
    23

    View full-size slide

  24. 仕組み|データ|チケット詳細画面
    種類 カテゴリ 静的/動的 サービス
    イベント
    タイトル
    静的データ IPFS
    概要
    コントラクト
    チケット
    画像
    概要
    使用可不可
    動的データ The Graph
    使用日時
    譲渡履歴
    チケット詳細画面 24

    View full-size slide

  25. 仕組み|データ|リンク集
    サービス 項目 URL
    Polygon EventFactoryContract https://polygonscan.com/address/0x3a62034cfd491a67085f207d2e4d7e3c1d716680
    Polygon EventContract https://polygonscan.com/address/0x0b0349E9E9A20462e3E274f8b43BCA79C7932Fb5
    The Graph apollo_event https://thegraph.com/hosted-service/subgraph/oguras48/apollo_event
    IPFS baseURI https://cloudflare-ipfs.com/ipfs/QmSJrw8BotEDjeUBm7w6afS4wnbSpznG5C4ji4PfhMhCZa
    IPFS Ticket No.0 MetaData https://cloudflare-ipfs.com/ipfs/QmSJrw8BotEDjeUBm7w6afS4wnbSpznG5C4ji4PfhMhCZa/0
    IPFS Ticket No.0 Image https://cloudflare-ipfs.com/ipfs/Qmd9TdzgLzTEFurxks1n7jxJ3DLTHfSbW1PDrp7rhSpnct
    データはパブリックにあり誰でも参照可能
    25

    View full-size slide

  26. チケットNFT|工夫点等まとめ 1
    デザイン
    NFTとして発行、”もぎり”でSBT化
    メリット
    NFTの良さを享受しつつ、SBTの良さも享受する
    思想
    リアルなチケットの動きのイメージに近づけたかった
    懸念点
    “もぎり”処理が遅延する可能性
    ※処理速度がBlockchainに依存するため
    デザイン
    QRを介して、“もぎり”結果を双方に通知
     双方 … ユーザ & スタッフ
    メリット
    そのユーザの所有するチケットNFTが
    確かに使用されたことを双方で確かめられる
    工夫点
    QRのスクショ共有では不正使用できない仕組み
    デザイン
    SoftBankサーバに重要な情報を保持しない
     主要な情報 Polygon, IPFS
     付帯 情報 The Graph
    思想
    データはユーザのもの
    反省点
    できればSoftBankサーバもなくしたい
    26

    View full-size slide

  27. チケットNFT|工夫点等まとめ 2
    デザイン
    ユーザがチケットを渡す
     =もぎりへの同意
     =OneTimeTokenへの署名
    メリット
    ユーザの署名なしでは勝手にSBT化できない
    Blockchain上にも”ユーザの同意”ログを残せる
    個人的懸念点
    Solidity上でOneTimeTokenの証明検証ってどうなん?
    他のデザイン案
    ユーザに“もぎりへのApprove”をしてもらう
    デザイン
    スタッフがもぎる
     =管理者のみSBT化可能
    メリット
    運営側でSBT化のトランザクションを
    起こすため、ユーザに手数料はかからない
    課題
    スループットが運営側の鍵数に依存する
    デザイン
    チケットNFTを応用した仕組みでSBTの所有確認が可能
    メリット
    目の前にいる人が確かに所有していることを確認可能
    課題
    ウォレット自体を誰かと交換されると気が付けない
    協業
    tokenproofがVCでNFTの所有を証明する仕組みを開発
    27

    View full-size slide

  28. 本日のトピック
    チケットNFT スタンプラリーNFT
    NFT→SBT Oracle & dNFT
    28

    View full-size slide

  29. 現在開発中
    本日は概要だけご説明します
    29

    View full-size slide

  30. 地点Cを再訪問
    スタンプラリーNFT サービス概要
    地点A
    地点B1
    地点C
    mint transform 1 transform 2
    天候・時間・レアリティで変化
    1
    訪問場所で変化
    訪問回数で変化
    2 3
    地点B3にいること
    地点B2にいること
    地点Cを再訪問
    ・各地点でNFTをmint
    ・条件を満たすことでNFTが
     変化(transform)したりする
    30

    View full-size slide

  31. スタンプラリーNFT 仕組み概要
    ソフトバンク
    サーバー
    Polygon
    Chainlink
    IPFS
    位置情報
    GPS
    mint
    transform
    on
    chain
    off
    chain
    リアル デジタル
    31

    View full-size slide

  32. 各サービス・仕組みの詳細が気になる方
    ぜひ次回のWeb3勉強会にご参加ください
    チケットNFTのように
    スタンプラリーNFT(Oracle & dNFT)体験を提供予定です
    ※シナリオは体験しやすいものに変更見込みです
    32
    \お楽しみに!/

    View full-size slide

  33. 本日のまとめ
    チケットNFT スタンプラリーNFT
    NFT→SBT Oracle & dNFT
    33
    チケットNFTのサービス概要
    仕組みの詳細
    利用したサービスのサービス概要
    サービスと仕組みの概要
    次回勉強会の宣伝

    View full-size slide

  34. One more thing...

    View full-size slide

  35. DAO はじめます
    Purpose
    ● チケットNFT所有者
    ※SBグループメンバー多め(たぶん
    ● NFT・DAOの実験
    ● オープンイノベーション
    ● 技術の無駄遣い(実験的開発)
    ● 勉強会開催
    What
    ● コミュニケーションはDiscord
    ※SoftBank Tech Night用
     チケットNFTで所有認証を行う
    How
    Member
    ● 細部はまだ考えてません
    やりながら考えましょ
    ● 詳細は小倉のTwitterで連絡予定
    小倉アカ @o3osatoshi
    ● 本活動は小倉がプライベートで
    取り組むものであり、
    会社は一切関係ありません
    Caution
    35

    View full-size slide