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

616 views

Published on

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

Published in: Business
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
616
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

ブロックチェーン入門〜ただし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まで!

×