Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ブロックチェーン入門〜ただしFinTechを除く〜

20,016 views

Published on

FinTech以外でのブロックチェーンの使い方のアイディア。
①ブロックチェーンのメリット
②サプライチェーンマネジメントとADEPTが目指すもの
③Bluemix上のIBM Blockchainサービスの使い方

Published in: Business

ブロックチェーン入門〜ただしFinTechを除く〜

  1. 1. Blockchain入門 〜ただしFinTechを除く〜 2016年4月16日 株式会社エルブズ/TIS株式会社 油谷実紀
  2. 2. 自己紹介 油谷実紀(ゆたにみき) 株式会社エルブズ 取締役副社長 TIS株式会社 フェロー 戦略技術センター長 兼 AI技術推進室長 ■「社会性エージェント」の開発とサービス化 ■AI・ロボット・IoT・SDI、認知科学等を用いた ヒューマン・コンピュータ・コミュニケーションの実現 ■製造業向け生産管理・EDIシステム構築 Facebook: 油谷実紀 Twitter: @blackaplysia
  3. 3. 今日おはなしすること  BlockchainはFinTech以外にも使えるのか?  IBM Blockchainとは何か?  IBM Blockchainを使ってみた(スクショ集)
  4. 4. Blockchainとは(復習)
  5. 5. Blockchainは分散台帳技術である  Blockchainは、ピア・ツー・ピアに分散さ れた台帳技術を用いて次世代の取引アプリ ケーションを実現する
  6. 6. Blockchainは分散台帳技術である  Blockchainは、ピア・ツー・ピアに分散さ れた台帳技術を用いて次世代の取引アプリ ケーションを実現する  重要な概念  ピア・ツー・ピア(peer-to-peer, P2P)  非集中、自律的構成、単一障害点なし  台帳(ledger)  改竄、盗聴などのセキュリティ対策  取引(transaction)  ビジネス的にアトミックな処理  スマートコントラクト
  7. 7. 分散台帳は今までと何が違うのか  ファイル転送  クライアント・サーバ ・一意性低い ・効率性低い (同期に時間がかかる) ・単一障害点 ・攻撃に弱い ・スケール問題 ・オブジェクト単位のアクセス制御
  8. 8. 分散台帳とは今までと何が違うのか  分散台帳 ・改竄困難 ・効率的 ・一意性?
  9. 9. Blockchainのメリット  信頼性(trust)→合意プロトコル  胴元がいない複数者間の取引における合意  説明可能性(accountability)→チェーン  関連のある複数取引の履歴  その取引が存在するという証憑  透明性(transparency)→公開鍵暗号  当事者にはいつでも情報を開示  効率性(efficiency)→スケールアウト  リアルタイム化の要求
  10. 10. 非金融における活用  一般的な契約書(general contract)  存在している事実は公開される  コンテンツセキュリティは今後整理される  ブロックチェーンの外部では無価値になる コンテンツでなければならない ex. 著作物共有には使えない  プライベート・ブロックチェーンの可能性  マーケットプレイス  オークション  ○○株
  11. 11. 非金融における活用  Supply Chain Management (SCM)  因果関係のある多数のプロセス  契約に内包することで扱いやすくなる  コンテンツ公開・非公開制御の課題  複数企業にまたがる調達プロセスの統合  プロセス自動化  リアルタイムEDI →漸くファイルの時代の終焉に向かう?  Value ChainとSupply Chainの統合  ニーズを取り込みプロセスへ反映  契約のチェーンによる業務再設計
  12. 12. ADEPT―デバイスデモクラシー  IBMが提唱する、数千億個のデバイスが接続 し「デバイスデモクラシー」(デバイス民主 主義)を実現する基盤 出典:IBM(2015), Device democracy. http://public.dhe.ibm.com/common/ssi/ecm/gb/en/gbe03620usen/GBE03620USEN.PDF
  13. 13. ADEPTのデザイン  ADEPTはブロックチェーン自身ではない  相互信用を前提としないピア・ツー・ピア メッセージングシステム  ブロックチェーン  コンテンツハッシュ  分散ファイル共有  P2P型ファイル同期  自律的なデバイス協調・デバイス識別  IoTデバイスをトリガーとする ビジネスプロセスの自律実行
  14. 14. ADEPTのアーキテクチャ  スタック型アーキテクチャ  アプリケーション  サービス  プロトコル  既存プロジェクトの活用  TeleHash: 暗号化メッシュプロトコル  BitTorrent: P2P型ファイル共有(同期)  Ethereum: スマートコントラクト
  15. 15. ADEPTとブロックチェーン  デバイス間I/Fをすべて台帳に記録 出典:IBM(2015), Device democracy (Solid 2015). http://www.slideshare.net/_hd/ibm-adept
  16. 16. ADEPTユースケース  自律型洗濯機 出典:IBM(2015), Device democracy (Solid 2015). (前掲)
  17. 17. ADEPTユースケース②  自律プロセス(洗剤の自動再発注) 出典:IBM(2015), Device democracy (Solid 2015). (前掲)
  18. 18. ADEPTユースケース③  自律プロセス(保証書つき部品交換) 出典:IBM(2015), Device democracy (Solid 2015). (前掲)
  19. 19. ブロックチェーンの活用についてのまとめ  ブロックチェーンは分散することによるメ リットをもった取引台帳  ブロックチェーンは、一般的な契約書やSCM 領域においてプロセス管理の手法と組み合わ せて活用できる可能性がある  IBMが主導するADEPTでは、大量のIoTデバ イスを繋いだ「デバイスデモクラシー」の時 代における、ビジネスプロセスを自律的に実 行するプラットフォームの基盤技術としてブ ロックチェーンを採用している
  20. 20. IBM Blockchainとは何か
  21. 21. IBM Blockchainの実体  IBM BlockchainはBluemix上のサービス Labs サービス
  22. 22. IBM Blockchainの実体  Labs→Network→Blockchainを追加する
  23. 23. Blockchainサービスが提供するもの  Blockchainネットワーク  P2P接続された2サーバ  認証局(CA)  10ユーザアカウント  Open Blockchain (OBC) API  上記の詳細はBluemix Credentialsに 定義されている
  24. 24. Blockchainサービスのpeer定義 "peers": [ { "discovery_host": "78c1f7d2-8ee3-4f38-a0a2- 1cd6bd19a4b7_vp1-discovery.blockchain.ibm.com", "discovery_port": 30303, "api_host": "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7_vp1- api.blockchain.ibm.com", "api_port_tls": 443, "api_port": 80, "type": "peer", "network_id": "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7", "container_id": "76d19b8ccad9cd0a8dda264b6cd5b40cf623d3563fec56103059072 2d8eb9174", "id": "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7_vp1", "api_url": "http://78c1f7d2-8ee3-4f38-a0a2- 1cd6bd19a4b7_vp1-api.blockchain.ibm.com:80" }, { … } ], ↓サービスUUID ↑APIエンドポイント ↑ピアID
  25. 25. BlockchainサービスのCA定義 "ca": { "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7_ca": { "url": "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7_ca- api.blockchain.ibm.com:30303", "discovery_host": "78c1f7d2-8ee3-4f38-a0a2- 1cd6bd19a4b7_ca-discovery.blockchain.ibm.com", "discovery_port": 30303, "api_host": "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7_ca- api.blockchain.ibm.com", "api_port_tls": 30303, "api_port": 80, "type": "ca", "network_id": "78c1f7d2-8ee3-4f38-a0a2-1cd6bd19a4b7", "container_id": "e53c135b9a2c5a1e4395f09ce5ddba589ea8ea18a9d7101b6dd17c0 663b13648" } },
  26. 26. Blockchainサービスのユーザ定義 "users": [ { "username": "user_type0_73ab5d57ec", "secret": "ea1745ad13", "enrollId": "user_type0_73ab5d57ec", "enrollSecret": "ea1745ad13" }, … ]
  27. 27. (やる気のない)使い方の説明  ほかのBluemixサービスと同様の手順で使う 1. 環境変数からcredentialsをとってくる 2. PeerのAPIエンドポイントを通じてオブ ジェクト(ブロック等)を操作する
  28. 28. 関連サイトまとめ:Getting Started  https://console.ng.bluemix.net/docs/services/blockch ain/index.html 関連ドキュメント ・Marblesデモ ・OBC APIリファレンス ・OBCドキュメント ・Hyperledgerサイト
  29. 29. Hyperledger Project  Hyperledger Project  https://www.hyperledger.org/  先進的なブロックチェーン技術活用提案  Linux Foundation (2015/12〜)  Technical Steering Committee (TSC) Chairman→IBMエンジニア
  30. 30. HyperledgerとOpen Blockchain (OBC) fabricリポジトリ →この中にAPIが定義されている fabric/core/rest/*.go fabric/docs/API/CoreAPI.md →実体はIBMのOpen Blockchain (OBC) https://github.com/openblockchain →その実装例がIBM Blockchain (in Bluemix)
  31. 31. IBM Blockchainサンプルを試す ①Marbles ②Commercial Paper
  32. 32. Marblesデモ  https://github.com/IBM-Blockchain/marbles  https://www.youtube.com/watch?v=HxaO9dCehfI
  33. 33. Marblesデモ  IBM DevOps Servicesを使ってBluemixへ のデプロイを開始 Bluemix & DevOps Servicesアカウント https://hub.jazz.net →IBM DevOps Services (CIツールとビジュアル ワークフローエディタ)
  34. 34. Marblesデモ  デプロイ先情報を入力しデプロイ実行 環境を入力・選択 ・アプリ名 ・region ・organization ・space
  35. 35. Marblesデモ  すべて完了するまで待機・・・ デプロイ 進捗状況
  36. 36. Marblesデモ  起動する前にBluemixダッシュボードへ 下 へ
  37. 37. Marblesデモ  Blockchainサービスを選択して・・・
  38. 38. Marblesデモ  テスト環境をローンチする
  39. 39. Marblesデモ  ここでアプリを呼び出す
  40. 40. Marblesデモ  Marblesデモを実行
  41. 41. Marblesデモ  Marblesのブロックを見る 上へ引きずり出すと・・・ ブロックのリストが表示される
  42. 42. Marblesデモ  Monitorで全体の動作状況を確認 ネットワークに所属する各ピア、 CAの稼働状況とログ
  43. 43. Marblesデモ  Blockchainタブで統計情報と詳細を確認 統計情報 下へ スクロール すると・・・
  44. 44. Marblesデモ  ブロックの中身を取り出して表示 各ブロックの 詳細が出てくる
  45. 45. Marblesデモ  いくつかmarblesを作成し売買を実行 Marbleの生成 ドラッグで売買 (オーナー移転) ブロック チェーンが成長
  46. 46. Marblesデモ  ブロックの成長→payloadには詳細を記録
  47. 47. Commercial Paperデモ  Commercial Paper (約束手形)の売買デモ
  48. 48. Commercial Paperデモ 約束手形のサンプル CUSIP: user_type0_f0dd25b7ff000ADT TICKER: TICKER0 PAR: $100,000.00 QTY: 1 DISCOUNT: 3.25 MATURITY: 15 ISSUER: user_type0_f0dd25b7ff OWNER: user_type0_f0dd25b7ff
  49. 49. Commercial Paperデモ  Monitorは同一URL
  50. 50. Open Blockchain (OBC) REST API一覧  最新のOBCドキュメントではAPIが若干異なっている ex. /devops/*はdeprecatedとなり/chaincodeに統一 https://github.com/hyperledger/fabric/blob/master/docs/API/CoreAPI.md API 意味 GET /chain/blocks/{Block} Block情報を取得 GET /chain Blockchain情報を取得 POST /devops/deploy Chaincodeのデプロイ POST /devops/invoke Chaincodeの呼び出し POST /devops/query Chaincodeステータスの取得 POST /registrar CAへのユーザ登録 DELETE /registrar/{enrollmentID} ローカルユーザログイントークン削除 GET /registrar/{enrollmentID} CAに対するユーザ登録確認 GET /registrar/{enrollmentID}/ecert ユーザ証明取得 GET /transactions/{UUID} トランザクションのコンテンツを取得
  51. 51. APIといえばCurl(/chain) $ curl -s https://233395ed-76cf-40ec-be94-9c497522338a_vp1- api.blockchain.ibm.com:443/chain | jq . { "previousBlockHash": "7Td70mg+zq26FM498iMjLDqbqnC5N2GQuP+3aLXXKbICMk3WNG TBluCYTbgp1SIJ25nOWTr4iZ7MoTwekwyuYQ==", "currentBlockHash": "forzyFK3efLnEY/oYoMd0i/z/S3VxORyfVmDAjh1jCFaNPDqPq6oKRJF bPA3NJ+049VVImaN0wTDImoRJrn/mA==", "height": 6 }
  52. 52. APIといえばCurl(/chain/block) $ curl -s https://233395ed-76cf-40ec-be94-9c497522338a_vp1- api.blockchain.ibm.com:443/chain/blocks/5 | jq . { "nonHashData": { "localLedgerCommitTimestamp": { "nanos": 322162294, "seconds": 1460632589 } }, "previousBlockHash": "7Td70mg+zq26FM498iMjLDqbqnC5N2GQuP+3aLXXKbICMk3WNG TBluCYTbgp1SIJ25nOWTr4iZ7MoTwekwyuYQ==", "stateHash": "XZU7PA0IQtscLxXGOdqWxC5lWAvfDZjkTl1uQvNbqV9iirs95hL+svI 7yuHxIxxYVnVo+x4lM9gNVPC7UZ7T1g==",
  53. 53. APIといえばCurl(/chain/block②) "transactions": [ { "signature": "MEUCIEpiea1anNgnJkE920H6iH31yRfHY+OCzeqk2B87HG9LAiEAh Q4fr7Ya2Bk5rMJHCmRf6KDZg0c6VocCC7v4N+9eZOI=", "cert": "MIIB0TCCAXigAwIBAgIBATAKBggqhkjOPQQDAzApMQswCQYDVQQ GEwJVUzEMMAoGA1UEChMDSUJNMQwwCgYDVQQDEwN0Y2EwHhc NMTYwNDE0MTEwMTQ4WhcNMTYwNzEzMTEwMTQ4WjA7MQswCQ YDVQQGEwJVUzEMMAoGA1UEChMDSUJNMR4wHAYDVQQDDBV1c2 VyX3R5cGUxX2NkZTM0MjM0MDkwWTATBgcqhkjOPQIBBggqhkjOPQ MBBwNCAATdC2eSw4E7X9tWtiAMeWciExndddZ5IR3vGjm9V0qfMr2 NY/b28CyCBRy7hABHQ322Wi3T9m2Me3Si0JBHp6Zgo38wfTAOBgN VHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADANBgNVHQ4EBgQE AQIDBDAPBgNVHSMECDAGgAQBAgMEMD0GBioDBAUGBwEB/wQws jbNGu6tgOTY0gjAaeO0nTxRbkxjG+HlEfMFuEbwawNdLTclsdQ09HbE RutrzC01MAoGCCqGSM49BAMDA0cAMEQCICHXqBTxT4DqiwvYp9Q 9PqhcECtOrAnXwI00s3AYAkHCAiA8fQ5wiMosygt0Xlh2HbZ37JnEKR QCE6fp6FaTrxow4g==",
  54. 54. APIといえばCurl(/chain/block③) "timestamp": { "nanos": 291041833, "seconds": 1460632588 }, "uuid": "96d4e155-1dcd-4930-a40a-012ebda88532", "payload": "CrIBCAESgwESgAFjNTE4MWIyZWNkMGMyOTFkM2JkYzY5MjkyMWJ hNjVlNThkNTAyYWEzNWRiMmEwNjUzOWU4YTQxMzk4NTQ4ZjMwY zc2OTkwNTQ0ZjJlZGNjMTBiYTRkMjU2MjFkZDFlZjdlNGM5ZjA0Y2Nh YjFiOTA3ZGRjNjkxNGMzYmMzOWE2NBooCgtpbml0X21hcmJsZRIHc mduZDI4OBIFd2hpdGUSAjE2EgVsZXJveQ==", "chaincodeID": "EoABYzUxODFiMmVjZDBjMjkxZDNiZGM2OTI5MjFiYTY1ZTU4ZDUw MmFhMzVkYjJhMDY1MzllOGE0MTM5ODU0OGYzMGM3Njk5MDU0NG YyZWRjYzEwYmE0ZDI1NjIxZGQxZWY3ZTRjOWYwNGNjYWIxYjkwN 2RkYzY5MTRjM2JjMzlhNjQ=", "type": 3 }]}
  55. 55. APIといえばCurl(/transactions) $ curl -s https://233395ed-76cf-40ec-be94-9c497522338a_vp1- api.blockchain.ibm.com:443/transactions/96d4e155-1dcd- 4930-a40a-012ebda88532 | jq . { "signature": "MEUCIEpiea1anNgnJkE920H6iH31yRfHY+OCzeqk2B87HG9LAiEAh Q4fr7Ya2Bk5rMJHCmRf6KDZg0c6VocCC7v4N+9eZOI=", "cert": (…)", "timestamp": { "nanos": 291041833, "seconds": 1460632588 }, "uuid": "96d4e155-1dcd-4930-a40a-012ebda88532", "payload": "CrIBCAESgwESgAFjNTE4MWIyZWNkMGMyOTFkM2JkYzY5MjkyMWJ hNjVlNThkNTAyYWEzNWRiMmEwNjUzOWU4YTQxMzk4NTQ4ZjMwY zc2OTkwNTQ0ZjJlZGNjMTBiYTRkMjU2MjFkZDFlZjdlNGM5ZjA0Y2Nh YjFiOTA3ZGRjNjkxNGMzYmMzOWE2NBooCgtpbml0X21hcmJsZRIHc mduZDI4OBIFd2hpdGUSAjE2EgVsZXJveQ==",
  56. 56. APIといえばCurl(/transactions②) "payload": "CrIBCAESgwESgAFjNTE4MWIyZWNkMGMyOTFkM2JkYzY5MjkyMWJ hNjVlNThkNTAyYWEzNWRiMmEwNjUzOWU4YTQxMzk4NTQ4ZjMwY zc2OTkwNTQ0ZjJlZGNjMTBiYTRkMjU2MjFkZDFlZjdlNGM5ZjA0Y2Nh YjFiOTA3ZGRjNjkxNGMzYmMzOWE2NBooCgtpbml0X21hcmJsZRIHc mduZDI4OBIFd2hpdGUSAjE2EgVsZXJveQ==", "chaincodeID": "EoABYzUxODFiMmVjZDBjMjkxZDNiZGM2OTI5MjFiYTY1ZTU4ZDUw MmFhMzVkYjJhMDY1MzllOGE0MTM5ODU0OGYzMGM3Njk5MDU0NG YyZWRjYzEwYmE0ZDI1NjIxZGQxZWY3ZTRjOWYwNGNjYWIxYjkwN 2RkYzY5MTRjM2JjMzlhNjQ=", "type": 3 } (推測)マーシャリング ×base64エンコード
  57. 57. APIといえばCurl(/users) # ログイン状態の確認 $ curl -s https://a95743bd-a524-40e7-a009-1176ccd2dba0_vp1- api.blockchain.ibm.com:443/registrar/user_type2_1b0bcc27a9 | jq . { "Error": "User user_type2_1b0bcc27a9 must log in." } # ログイン(レジストラへの登録) $ curl -s -X POST -H 'Content-Type: application/json' -d '{"enrollId": "user_type2_1b0bcc27a9", "enrollSecret": "9f830a5c39" }' https://a95743bd-a524-40e7-a009-1176ccd2dba0_vp1- api.blockchain.ibm.com:443/registrar | jq . { "OK": "Login successful for user 'user_type2_1b0bcc27a9'." }
  58. 58. APIといえばCurl(/users②) # 証明書の取得 $ curl -s https://a95743bd-a524-40e7-a009-1176ccd2dba0_vp1- api.blockchain.ibm.com:443/registrar/user_type2_1b0bcc27a9/ ecert | jq .{ "OK": "-----BEGIN+CERTIFICATE----- %0AMIIBojCCAUmgAwIBAgIBATAKBggqhkjOPQQDAzApMQswCQYD … qJFA%3D%0A-----END+CERTIFICATE-----%0A" } # ログアウト(レジストラへの登録削除) $ curl -s -X DELETE https://a95743bd-a524-40e7-a009- 1176ccd2dba0_vp1- api.blockchain.ibm.com:443/registrar/user_type2_1b0bcc27a9 | jq . { "OK": "Deleted login token and directory for user user_type2_1b0bcc27a9." }
  59. 59. IBM Blockchainのまとめ  IBM Blockchainは、Linux Foundationによ るHyperledger ProjectにIBMが提供した Open Blockchain (OBC) APIの実装である  MarblesとCommercial Papersのデモは実際 の取引を行うアプリと、取引状況を確認する モニタから構成されている
  60. 60. 最後に  TIS/エルブズでは、以下のような方を常時 募集しています。  自然言語処理や感情認識等に詳しい方 (とくに対話コーパス作成)  ロボットアプリケーション開発 (ROS等)の経験者  本日ADEPTのアプローチに興味を持ち、 ブロックチェーンで新しいSCM/EDIプ ラットフォームを作りたいと思った方 ←New☆  興味のある方は@blackaplysiaまで!

×