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

デジタル空間でのブロックチェーン応用事例 / Blockchain use cases in digital space

デジタル空間でのブロックチェーン応用事例 / Blockchain use cases in digital space

2019/10/5「HAKODATE Developers Conference 2019」の登壇資料です。

Nao Hanamura

October 05, 2019
Tweet

More Decks by Nao Hanamura

Other Decks in Technology

Transcript

  1. 2 名前: 花村直親(@naomasabit) 経歴: エンジニア/ ITコンサル (ITコンサル / SI会社) =>

    データアナリスト / ブロックチェーンR&D / エンジニアリード(デロ イト) => ブロックチェーンスタートアップ共同創業( catabira) => ITコンサル・エンジニアでフリーランス(法人化予定) 最近よくやること:  プロダクト立ち上げ支援、ノード運用、ブロックチェーンデータ分析、 鍵管理、スマートコントラクト設計 etc 最近よく使うもの:  Go, Python, Solidity, Kubernetes, Ethereum 自己紹介 発信: Neutrinoで働くブロックチェーンエンジニアのブロ グ https://www.blockchainengineer.tokyo/ ブロックチェーンをデータから見るノート https://note.mu/naohanamura
  2. 8 SUICA, LINE Pay, PayPay 「電子マネーをどう作るか?」を考えた時の2パターン 第3者を信頼する電子マネー 第3者を挟まない電子マネー Bitcoin, Ethereum

    etc ・第3者の事業者が価値を保証 ・円と同等の価値が保証されている ・第3者がなくなると価値がなくなる ・第3者が介在しない ・法定通貨との保証をしている第3者もいない ・システムの崩壊には参加者全てをなくさない といけない
  3. 10 信頼する第3者を挟まない場合、P2Pのネットワーク通信の場合、 トランザクションが改ざんされてしまう可能性がある 送金者A 送金者A 伝播者B 伝播者M 着金者Cを指定し て通貨を送る 悪意を持った伝播

    者Mが送金先を書 き換える 着金者Cを指定し たトランザクション を送る 着金者C 伝播者Bはトランザク ションをネットワーク に伝播する 通 常 攻 撃 例 伝播後、Cの元に 着金する Cの元に着金しな い 着金者C
  4. 12 秘密鍵を用いて中間者から保護しても、送金者が悪意を持つ場 合、二重支払いを起こす可能性がある 送金者M 着金者B 1.秘密鍵で署名してコーヒーの 対価として通貨をBに送る 2.Bは着金を確認したら対価 としてコーヒーを送る 悪意を持った人がコーヒーを暗号通貨で購入するケース

    送金者M 着金者B 3.コーヒーを受け取った後、秘密鍵で送付済 トランザクションを書き換えて送った通貨を 再利用できるようにする。Mはコーヒーを無 料で入手できる 4.Bは受け取っていたと思った通貨を 失う
  5. 13 送信済のトランザクションを改竄し辛いようにする処理としてマイ ニングがある 1.マイニングを行い、その時点の トランザクションを確定する マイニングとは、トランザクション等とナンス値と呼ばれる任意の数値をまとめてハッシュ化し、一定の数値より 小さくなるナンス値を探す作業 ナンス値 ブロック ハッシュ

    前のブロック ハッシュ ブロック ハッシュ ナンス値 2.前のブロックのハッシュ値を含 めてマイニングを行う 前のブロック ハッシュ ブロック ハッシュ ナンス値 前のブロック ハッシュ ブロック ハッシュ ナンス値
  6. 14 送信済のトランザクションを改竄し辛いようにする処理としてマイ ニングがある ナンス値 ブロック ハッシュ 前のブロック ハッシュ ブロック ハッシュ

    ナンス値 前のブロック ハッシュ ブロック ハッシュ ナンス値 送金者M 送金者Mが、送ったトランザクションを改竄し ようとするにはマイナー相当のパワーが必要 になる 前のブロック ハッシュ ブロック ハッシュ ナンス値
  7. 19 スマートコントラクトではブロックチェーン上に任意資産の管理台 帳を発行できる ID、パラメータ、所有者を変数で持つ事で、アイテムを擬似的に発行できる ID 名前 攻撃力 1001 ブレード ソード

    100 持ち主 A contract ItemToken{ uint256 ID; #ID string name; #名前 mapping (uint256 => address) IdToOwner; #IDと所有アドレスのマッピング uint256 attackPoint; #攻撃力 …. スマートコントラクトでの表現例 (EthereumのSolidity)