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

2024新卒技術研修_ブロックチェーン

Avatar for DMM.com_新卒採用 DMM.com_新卒採用
September 10, 2024
55

 2024新卒技術研修_ブロックチェーン

DMM.comの24新卒エンジニア技術研修_ブロックチェーン研修の資料です

Avatar for DMM.com_新卒採用

DMM.com_新卒採用

September 10, 2024
Tweet

Transcript

  1. 自己紹介 最近の活動 最近のハッカソン歴 ETH Global Tokyo :Pool Prize…🏆 Web3エンタメハッカソン:ドリコムPrize 🏆🏆$3000

    ETH Taipei :ファイナリスト🏆🏆🏆 ETH Global AW :Prizeなし... Wave Hack Global :Grant 🏆約$3000 略歴 2013〜現在 Web系開発(個人) スマホアプリ開発/サイト構築/VR•AR開発 2015〜 コロプラ VRゲーム/IPを使った位置ゲー/スマホゲーム開発 2018〜 ブロックチェーン系開発(副業) ブロックチェーンゲーム/マケプレ/Mintサイト等 2020〜 DMM.com アドテク/SRE/マーケティング横断部署Manager 株式会社DMM Crypto(DMMのWeb3事業)CTO Twitter:https://twitter.com/miyata_17_ Youtube:https://www.youtube.com/@web3fm/videos 登壇とか:https://speakerdeck.com/miyatakoji その他:国内カンファレンスでのハッカソンで審査員やった り、K-1のアマチュアの試合出たりしてます。 5 宮田航志 @miyata_17_
  2. web3のゲーム開発項目の例 ミッション ポイント 発行・管理 エアドロ 広告運用 ポイント→FT 換金 ゲーム施策 分析・改善

    資産運用 ユーザーウォレ ット FT流動性供給 大会運用 事業者ウォレッ ト 開発資金用意 集客分析 フレンド NFT送付 称号 Fiat換金・出金 NFT2次流通 FT発行・管理 インゲーム実装 認証機能 準備① NFT発行・管理 集客 FT上場 開発 リリース 運用 チャット お問い合わせ 対応 KYC 確定申告 サポート UGCコイン ロイヤリティ 受取 NFT レンディング NFT1次流通 お問い合わせ 窓口・管理 決済系 アイテム系 基礎機能系 NFT発行・管理 応用機能系 クレカ決済 FT決済 プロフィール FT レンディング 利用規約 セキュリティ チェック 法準拠サポート 7 〜〜〜 ←web3だから発生する工程
  3. web3のゲーム開発項目の例 ミッション ポイント 発行・管理 エアドロ 広告運用 ポイント→FT 換金 ゲーム施策 分析・改善

    資産運用 ユーザーウォレ ット FT流動性供給 大会運用 事業者ウォレッ ト 開発資金用意 集客分析 フレンド NFT送付 称号 Fiat換金・出金 NFT2次流通 FT発行・管理 インゲーム実装 認証機能 準備① NFT発行・管理 集客 FT上場 開発 リリース 運用 チャット お問い合わせ 対応 KYC 確定申告 UGCコイン ロイヤリティ 受取 NFT レンディング NFT1次流通 お問い合わせ 窓口・管理 決済系 アイテム系 基礎機能系 NFT発行・管理 応用機能系 クレカ決済 FT決済 プロフィール FT レンディング 利用規約 セキュリティ チェック 法準拠 8 〜〜〜 ←web3だから発生する工程 こんなに大変なら ブロックチェーン 使わなければいいのに
  4. カストディアルウォレット ノンカストディアルウォレット セミカストディアルウォレット 事業者が秘密鍵を管理 ユーザーが秘密鍵を管理 複数箇所で秘密鍵を管理 事業者の権限で利用者の 暗号資産を移転できる 利用者の協力がないと 暗号資産を移転できない

    利用者の協力がないと 暗号資産を移転できない 事業者が持つ責任が大きく、 日本においては暗号資産交換業 のライセンスが必要 利用者責任で資産管理ができる が、秘密鍵の紛失等で資産を失 ったりUXの課題がある 秘密計算の技術で秘密鍵を管理 しUXとセキュリティを向上 これによりライセンスは不要 取引所(CEX)等 Metamask等 Fireblocks等 16 ウォレットの定義(秘密鍵管理主体による定義)
  5. 18 ウォレットの定義(機能の分類による定義をするなら) 狭義のウォレット 広義のウォレット 秘密鍵を管理するためのソフトウェア 資産を管理・操作するためのサービス ・秘密鍵の生成 ・秘密鍵の復元 ・アカウント/アドレスの作成 ・トランザクションへの署名

    ・RPCへのブロードキャスト ・所持しているFT/NFTの確認 ・所持しているFT/NFTの送信 ・所持しているFT/NFTのステーキング ・ブリッジ/スワップ機能 ・接続チェーンの切り替え ・NFTのmint/burn ・OAuth認証機能 ・暗号資産以外のオフチェーンデータ (lazymint前のNFT等)の確認 等々..... 「ウォレット」という言葉は多義的なので、言葉の定義を合わせるとチーム開発はよりスムーズに進みます
  6. 20 狭義のウォレットのコア技術を理解しよう 暗号学入門!!! • 暗号とは • 共通鍵暗号方式 ◦ シーザー暗号 •

    公開鍵暗号方式 ◦ RSA暗号/楕円曲線暗号 • 署名とは • 秘密計算とは を数式を使わずに説明してみます。
  7. 鍵配送問題の解決方法はあり 現在でも共通鍵暗号方式は広く使われています! 例:無線LAN Webのhttps(ちょっと工夫してから使われてる) 27 共通鍵暗号方式 暗号化と復号に関して共通のルールを使う暗号方式 共通鍵 事前に共有するルール 平文

    伝えたいメッセージ 暗号文 平文を暗号化したメッセージ 鍵配送問題 事前に渡す共通鍵がバレて復号される問題 共通鍵暗号方式:暗号学の用語で捉え直しましょう
  8. 「5個後の文字にずらす」という共通鍵の場合 「を」という文字は「え」になる 37 シーザー暗号を思い出しましょう あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん 1 2345 あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん 1 2345678

    9.....................................................................................................................47 ....................................................................................................................................... .............................100 「100個後の文字にずらす」という共通鍵の場合 「を」という文字は「き」になる
  9. 44 0 1 2 3 4 0 0 1 2

    5で割った余り 3で割った余り 0➗5のあまり=0 0➗3のあまり=0 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 これがこの2次元においてどこにマッピングされるか試してみよう
  10. 45 0 1 2 3 4 0 0 1 1

    2 5で割った余り 3で割った余り 1➗5のあまり=1 1➗3のあまり=1 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 これがこの2次元においてどこにマッピングされるか試してみよう
  11. 46 0 1 2 3 4 0 0 1 1

    2 2 5で割った余り 3で割った余り 2➗5のあまり=2 2➗3のあまり=2 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 これがこの2次元においてどこにマッピングされるか試してみよう
  12. 47 0 1 2 3 4 0 0 6 3

    1 1 7 4 2 5 2 5で割った余り 3で割った余り 7➗5のあまり=2 7➗3のあまり=1 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 これがこの2次元においてどこにマッピングされるか試してみよう
  13. 48 0 1 2 3 4 0 0 6 3

    9 1 10 1 7 4 2 5 11 2 8 5で割った余り 3で割った余り 11➗5のあまり=1 11➗3のあまり=2 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 これがこの2次元においてどこにマッピングされるか試してみよう
  14. 49 0 1 2 3 4 0 0 6 12

    3 9 1 10 1 7 13 4 2 5 11 2 8 14 5で割った余り 3で割った余り 14➗5のあまり=4 14➗3のあまり=2 2次元で考えてみよう(!?) ある数字を、「3で割ったあまり」と「5で割ったあまり」 これがこの2次元においてどこにマッピングされるか試してみよう
  15. 51 2次元で考えてみよう(!?) 0 1 2 3 4 5 0 1

    2 6で割った余り 3で割った余り 他の数字でもできるか? 「3で割ったあまり」と「6で割ったあまり」で試す
  16. 52 2次元で考えてみよう(!?) 0 1 2 3 4 5 0 0

    1 1 2 2 6で割った余り 3で割った余り 2➗6のあまり=2 2➗3のあまり=2 他の数字でもできるか? 「3で割ったあまり」と「6で割ったあまり」で試す
  17. 53 2次元で考えてみよう(!?) 0 1 2 3 4 5 0 0

    3 1 1 4 2 2 5 6で割った余り 3で割った余り 他の数字でもできるか? 「3で割ったあまり」と「6で割ったあまり」で試す 5➗6のあまり=5 5➗3のあまり=2
  18. 0 54 2次元で考えてみよう(!?) 0 1 2 3 4 5 0

    6 3 1 1 4 2 2 5 6で割った余り 3で割った余り 6➗6のあまり=0 6➗3のあまり=0 かぶってしまった。。
  19. 0 1 2 55 0 1 2 3 4 5

    0 6 3 1 7 4 2 8 5 6で割った余り 3で割った余り 2次元で考えてみよう(!?) かぶってしまった。。
  20. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 60 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  21. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 61 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  22. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 62 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  23. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 63 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  24. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 64 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  25. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 65 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  26. 0 1 2 3 4 0 0 6 12 3

    9 1 10 1 7 13 4 2 5 11 2 8 14 66 他には? 改めて、2次元として見てみて、0から数字をたどって線を引いてみましょう
  27. 公開鍵暗号 デジタル署名 Aさんが 太郎の公開鍵で 署名の検証 76 公開鍵暗号とデジタル署名 Aさんが 太郎の公開鍵で 暗号化

    Cさんが 太郎の公開鍵で 暗号化 Bさんが 太郎の公開鍵で 暗号化 太郎が 太郎の秘密鍵で 復号 Cさんが 太郎の公開鍵で 署名の検証 Bさんが 太郎の公開鍵で 署名の検証 太郎が太郎の 秘密鍵で 署名の作成
  28. 受信者 Aさん 送信者 太郎 さん 77 デジタル署名のフロー メッセージ メッセージ ハッシュ値A

    ハッシュ値B 署名 太郎の 秘密鍵 ハッシュBとハッシュCを比較して 同じであれば署名の検証が成功 暗号化 ハッシュ関数 ハッシュ関数 受信した署名 復号 ハッシュ値C 太郎の 公開鍵 ① ② ② ③ ③ ④
  29. 78 ブロックチェーンにおける秘密鍵と公開鍵 ブロックチェーンにおいて ・秘密鍵がランダムに作成されそれがウォレットで厳密に管理される ・秘密鍵から公開鍵が作成される ・公開鍵からウォレットアドレスを作る ・ウォレットアドレスは誰でも見れる ビットコインにおいては 1. 公開鍵をSHA-256でハッシュ化する

    2. 1のハッシュ値をRIPEMD-160でハッシュ化する(RIPEMD-160とは) 3. 2のハッシュ値の前にVersion Prefixを付与する(Version Prefixは通常00を設定) 4. (Version Prefix + 2のハッシュ値)をSHA-256でハッシュ化する 5. 4のハッシュ値を更にSHA-256でハッシュ化する 6. 5で得られたハッシュ値の先頭4バイトをChecksumとし(Version Prefix + 2のハッシュ 値)の末尾に付与する 7. (Version Prefix + 2のハッシュ値 + Checksum)をBase58エンコードする
  30. 83 ・そろそろちゃんと「中国剰余定理」を理解したい!(鯵坂もっちょ さん) https://www.ajimatics.com/entry/2021/03/29/182759 ・トーラスと楕円曲線のつながり(光成滋生 さん) https://www.slideshare.net/herumi/ss-58815597 ・楕円面上の測地線(rikunora さん) https://rikunora.hatenablog.com/entry/20100905/p1

    ・【完全保存版】Astar におけるSubstrateとEVMのアカウントの関係について(ユウキさん) https://note.com/standenglish/n/na9194a4ecd24 ・Schnorrベースのマルチシグネチャスキーム「MuSig」(安土 茂亨さん) https://techmedia-think.hatenablog.com/entry/2018/01/25/125426 ・秘密分散ベースのMPCプロトコルSPDZ(安土 茂亨さん) https://techmedia-think.hatenablog.com/entry/2020/04/09/231951 ・[Bitcoin]自分でビットコインアドレスを作ってテスト送信してみた https://qiita.com/yamaguchi3/items/4d536a4a24067505abea 参考