ブロックチェーンを利用したサービス開発について

 ブロックチェーンを利用したサービス開発について

2016年10月12日 GMOエンジニアトークにて公開

8ca514f93117daca13d14c7c87a02d46?s=128

GMO次世代

October 13, 2016
Tweet

Transcript

  1. ブロックチェーンを利⽤した サービス開発について GMOインターネット株式会社 次世代システム研究室

  2. ブロックチェーンを利⽤した サービス開発について GMOインターネット株式会社 次世代システム研究室 スマートコントラクト - 事実を証明できるプログラム -

  3. 1. ブロックチェーンとは 2. スマートコントラクトとは 3. 開発中サービスの紹介 4. スマートコントラクトの問題点と解決法

  4. • ビットコインの利⽤箇所の増加 • ビットコインはブロックチェーン実装の ひとつ • 改ざんが難しい • 耐障害性

  5. • トランザクション (Tx):記録されるメッセージ • ブロック:一定期間のトランザクション集合 • ハッシュ:ひとつ前のブロックのハッシュ値 Tx Tx Tx

    ハッシュ ブロック 5
  6. • Tx を変更するとブロックのハッシュ値が変更 • ハッシュの計算は数⼗秒程度かかる Tx Tx Tx ハッシュ 6

    ブロック
  7. • ハッシュ が変更するとブロックのハッシュ値が変更 • 先端までのすべてのブロックを変更するのは難しい ⇒過去の改ざんが難しい Tx Tx Tx ハッシュ

    7 ブロック
  8. • 全ノードが全データを持っている ⇒サービスがダウンしにくい 8

  9. • 改ざんされたくないデータを記述 • 作成者のサイン – 確かに、その人が作成したことを証明 AさんがBさんへ100円渡す Tx 9 A

  10. Tx AさんがBさんへ100円渡す Tx Tx BさんがCさんへ2,000円渡す CさんがAさんへ1,000円渡す A B C 10

  11. Tx Tx Tx 所持⾦ Aさん: 2,500円 Bさん: 1,200円 Cさん: 4,000円

    11
  12. • ブロックチェーンに書き込むプログラム • トランザクションにコード Tx contract Class { uint variable;

    function funcA() { variable= 1; } function funcB() constant returns (uint) { return variable; } } Tx Tx Class.funcA()
  13. • 2014年に最初のリリース • OSSのブロックチェーンのひとつ – C++ – Go • Solidityによりスマートコントラクトを実装

  14. • JavaScript に似た高級言語 • Ethereum で動作するコードにコンパイル可能 • ブラウザIDE がおすすめ –

    https://ethereum.github.io/browser-solidity/ – JavaScript VM、Ethereum クライアント接続可能
  15. contract SimpleStorage { uint storedData; function set(uint x) { storedData

    = x; } function get() constant returns (uint) { return storedData; } }
  16. • データを保存するコントラクト • constant はトランザクションを生成しな い Tx SimpleStorage インスタンスを作成 Tx

    Tx contract.set(10) contract.set(20) contract.get() = 10
  17. contract Coin { address public minter = msg.sender; mapping (address

    => uint) public balances; function mint(address receiver, uint amount) { if (msg.sender != minter) return; balances[receiver] += amount; } function send(address receiver, uint amount) { if (balances[msg.sender] < amount) return; balances[msg.sender] -= amount; balances[receiver] += amount; } }
  18. • 仮想通貨のコントラクト – 発⾏、送⾦ • msg.sender は送信者アドレス • 連想配列でそれぞれの所持⾦を管理

  19. • 誰が何をいつしたかを証明できる – すべての記録が残る – 改ざんができない • 応⽤例 – 通貨

    • ビットコインなど – “モノ”の所有権 • 近いうちに、、、
  20. • ブロックチェーン – 改ざんが難しい可⽤性の高い記録台帳 • スマートコントラクト – 事実を証明 • 誰が、何を、いつ

    – ブロックチェーンに書き込むプログラム
  21. • Node Proxy – Ethereum ノード以外でTx を実⾏ • データストア連携 –

    機密データの保管 – ファイルサイズの大きなデータの保存
  22. • バージョンアップができない • トランザクション実⾏コストが高い • コストの支払い者がエンドユーザ

  23. 解決済み • バージョンアップができない • トランザクション実⾏コストが高い • コストの支払い者がエンドユーザ