Slide 1

Slide 1 text

@taiponrock Visual Studio Codeと Hyperledger Fabric でブロックチェーンを始めてみる Taiji HAGINO IBM Developer Advocate @taiponrock

Slide 2

Slide 2 text

@taiponrock SPEAKER

Slide 3

Slide 3 text

Taiji HAGINO IBM Developer Advocate Specialist in Node-RED/Node.js, Swift @taiponrock f t in @taiponrock

Slide 4

Slide 4 text

Developer Advocate @taiponrock

Slide 5

Slide 5 text

TECHNOLOGISTS RULE THE WORLD 技術者が世の中を変えていくお⼿伝いをします︕ ・技術情報を提供します ・開発者と話をします ・開発者にとって何が⼀番良いかを考えます ・開発者の困ったを⼀緒に解決します ・開発者をヒーローにします @taiponrock

Slide 6

Slide 6 text

OUR ACTIVITIES こんな活動をしながら技術者のみなさまをサポートします︕ ・オンラインでの情報発信(Blog、SNS、Podcastなど) ・オフラインでの情報発信(書籍、雑誌など) ・セミナー、勉強会などでの登壇 ・コミュニティ、Meetupなどのリード ・ハンズオンワークショップなどでの講師 ・ハッカソン、ラボ、Dojoなどでのテックサポート @taiponrock

Slide 7

Slide 7 text

DEVELOPER ADVOCATE in TOKYO Tokyo Team is a part of Worldwide Developer Advocate Teams! Developer Advocate City Leader AKIRA ONISHI WW Developer Advocate KYOKO NISHITO WW Developer Advocate TAIJI HAGINO WW Developer Advocate AYA TOKURA Program Manager TOSHIO YAMASHITA WW Developer Advocate NORIKO KATO Client Developer Advocate YASUSHI OSONOI Digital Developer Advocate JUNKI SAGAWA @taiponrock

Slide 8

Slide 8 text

Yes, we are Developer Advocate @taiponrock

Slide 9

Slide 9 text

IBM Cloudへアクセス! https://ibm.biz/Bdz2Ju

Slide 10

Slide 10 text

@taiponrock Blockchainとは︖

Slide 11

Slide 11 text

@taiponrock 台帳

Slide 12

Slide 12 text

@taiponrock

Slide 13

Slide 13 text

@taiponrock 取引開始 現在

Slide 14

Slide 14 text

@taiponrock トランザクション トランザクション トランザクション トランザクション 取引開始 現在

Slide 15

Slide 15 text

@taiponrock トランザクション トランザクション トランザクション トランザクション 取引開始 現在 ブロック チェーン

Slide 16

Slide 16 text

@taiponrock 集中管理サーバー サーバー型

Slide 17

Slide 17 text

@taiponrock P2P(Peer to Peer)型

Slide 18

Slide 18 text

@taiponrock だから

Slide 19

Slide 19 text

@taiponrock 分散台帳

Slide 20

Slide 20 text

@taiponrock 20 リスクの低減 ビジネスエコシステムの最適化 新たな価値の創造 改ざん、不正に対し、 透明性⾼い取引の記録と共有を実現 ビジネスプロセスの改善 現⾏ビジネスモデルにとらわれない ⾮効率性を排除した新しいビジネスモデルを創造 ブロックチェーン活⽤の進展 ブロックチェーンは、ビットコインに代表される仮想通貨から、⾦融業界の決済処理、そして⾮⾦融業界も含 む新たなビジネスモデル創造へと活⽤範囲を広げています。 仮想通貨 契約管理 資産管理 サプライチェーン マネジメント 貿易⾦融 本⼈確認 IoT 保険 国際送⾦ 証券取引 ⾦融業界の 決済処理中⼼の拡張 ⾮⾦融業界への拡張 複数の業界を跨った処理連携

Slide 21

Slide 21 text

@taiponrock 21 様々なブロックチェーン技術とその分類 コンソーシアム /標準化団体 パブリック コンソーシアム /プライベート 暗号通貨 仮想通貨 仮想通貨 (ビジネス・ユースケース) 汎⽤的な利⽤ ビジネス向けブロックチェーン

Slide 22

Slide 22 text

@taiponrock 22 改めてブロックチェーンの特性と適⽤分野を考える スマート・コントラクト ü 必ず実⾏されるコントラクト 分散台帳技術 ü 参加者で同じ内容の台帳を保持 ü 改ざんできない ü 取引履歴・来歴を持つ ブロックチェーンの特性が活かせるエリアの例 ü 複数参加者で情報を共有することにより新しいビジネス的価値を創出できるエリア ü 取引の改竄防⽌により、資産の正当性を担保することが必要なエリア ü 資産の来歴を共有することにより、ビジネス・プロセスを変⾰できるエリア ü 取引プロセスの⾃動化により、迅速性と正確性の向上が期待できるエリア

Slide 23

Slide 23 text

@taiponrock 23 ブロックチェーンである理由は A社 パートナー企業 グループ企業 A社 経済圏 ⼀社の信⽤⼒で システムやデータの信頼性を保証 ブロックチェーンの信⽤⼒で システムやデータの信頼性を保証 顧客 取引先 APIア ク セ ス 異業種パートナー企業 海外パートナー企業 新規パートナー企業 同業他社 当局 台帳 台帳 台帳 台帳 台帳 台帳 ブロックチェーン 業種や国境をまたがる協業を促進 8 i / /10/1 2 / A I M A 9a BC 9ao h 9a BC 9ao h n API I c I I p k t t t t t t l r

Slide 24

Slide 24 text

@taiponrock 24 商⽤化が進む業界ブロックチェーンプラットフォーム 貿易物流 地⽅創⽣ ⾷の信頼 グローバル実績 貿易物流 貿易⾦融 デジタルID ⾷の信頼 ⽇本での注⼒分野 国際送⾦ デジタル通貨 資格証明 医療・製薬 卒FIT対応

Slide 25

Slide 25 text

@taiponrock 25 今年に⼊り国内で様々な取り組みがされています。

Slide 26

Slide 26 text

@taiponrock 26 今年に⼊り国内で様々な取り組みがされています。

Slide 27

Slide 27 text

@taiponrock 27 TradeLens IBMとMaerskが共同開発する国際貿易のデジタル化を⽬指した業界プラットフォーム ペーパレス・トレード パッキング リスト 輸出書類 船荷証券(B/L) 出荷指⽰書 送り状 (インボイス) 出荷情報パイプライン 原産地証明書 危険物申告書 ISF 事前申告書 通関許可書 原産地証明書 貨物特有の証明書 輸⼊書類 ⽀払済 インボイス コン テナ 追跡 開始 空 コ ン テ ナ の ピ ク ア プ 空 コ ン テ ナ の 到 着 予 定 時 刻 登 録 空 コ ン テ ナ の 到 着 時 刻 実 績 登 録 コ ン テ ナ へ の 搭 載 コ ン テ ナ 総 重 量 検 査 ︵ VGM ︶ コ ン テ ナ 封 鎖 コ ン テ ナ の ピ ク ア プ ゲ ト イ ン 予 定 時 刻 登 録 輸 出 ⽤ ゲ ト 通 過 時 刻 実 績 登 録 コ ン テ ナ の タ ミ ナ ル 出 発 予 定 時 刻 登 録 コ ン テ ナ の 船 積 み 輸 出 申 告 ・ 許 可 通 知 書 確 認 MRN 番 号 発 ⾏ コ ン テ ナ の タ ミ ナ ル 出 発 時 刻 実 績 登 録 コ ン テ ナ の タ ミ ナ ル 到 着 予 定 時 刻 登 録 温 度 の モ ニ タ リ ン グ コ ン テ ナ の 荷 揚 げ 予 定 時 刻 登 録 輸 ⼊ 申 告 ・ 許 可 通 知 書 確 認 検 査 対 象 コ ン テ ナ の 選 別 コ ン テ ナ の タ ミ ナ ル 到 着 時 刻 実 績 登 録 コ ン テ ナ の 荷 揚 げ ゲ ト ア ウ ト 予 定 時 刻 登 録 輸 ⼊ ⽤ ゲ ト の 通 過 時 刻 実 績 登 録 コ ン テ ナ の ⽬ 的 地 到 着 予 定 時 刻 登 録 コ ン テ ナ の ⽬ 的 地 到 着 時 刻 実 績 登 録 コ ン テ ナ 開 封 コ ン テ ナ か ら の 積 み 降 ろ し 空 コ ン テ ナ の ピ ク ア プ 準 備 完 了 空 コ ン テ ナ の ピ ク ア プ 空 コ ン テ ナ の 空 コ ン テ ナ 保 管 所 到 着 輸出者 海貨業者 陸上輸送 税関 港湾 船社 海貨業者 陸上輸送 輸⼊者 港湾 税関

Slide 28

Slide 28 text

@taiponrock 28 IBM Food Trust WalmartとIBMが協業した⾷の安⼼・安全を提供するプラットフォーム 10⼈中1⼈ が毎年⾷中毒にかかり、 42万⼈が死亡 4⼈に1⼈ の消費者のみが、 今⽇の⾷のシステムを信頼 80% の⾷品メーカーで 紙ベースの業務が存在 1 / 3 の⽣鮮果物と野菜が、 品質劣化を理由に廃棄 追跡 証明書管理 鮮度分析 消費者アプリ モジュール ブロックチェーン 専⽤モジュールを通じてサプライチェーン全体の情報へ安全にアクセス IBM Food Trust Dole, Nestlé, Unilever, Driscoll’s, Golden State Foods, Kroger, McCormick and Company, McLane Company, Tyson Foods, Walmart サプライチェーン アーリーアダプター

Slide 29

Slide 29 text

@taiponrock スマートコントラクト

Slide 30

Slide 30 text

@taiponrock スマートコントラクト コントラクト(契約)をスマートに⾏うプロトコル スマートコントラクト=契約の⾃動化 契約の条件確認から履⾏まで、⾃動的に実⾏可能 取引プロセス⾃動化 決済期間の短縮や不正防⽌、⾃動化によるコスト削減への期待から、各国 で取り組みが活発。 ブロックチェーン上でスマートコントラクトを利⽤すると、P2P型取引で ある⾮中央集権型のサービスを実現可能。

Slide 31

Slide 31 text

@taiponrock スマートコントラクトのフロー 契約定義 イベント 契約履⾏ 決済 ⾃動実⾏

Slide 32

Slide 32 text

@taiponrock ⾃動販売機もスマートコントラクトの⼀種

Slide 33

Slide 33 text

@taiponrock Hyperledgerでのスマートコントラクト チェーンコード https://hyperledger-fabric.readthedocs.io/en/release- 1.4/chaincode.html

Slide 34

Slide 34 text

@taiponrock Build APPLICATION

Slide 35

Slide 35 text

@taiponrock アプリを作ってみる︕

Slide 36

Slide 36 text

@taiponrock https://ibm.biz/Bdzce8 なにはともあれ先ずはIBM Cloudのアカウント!

Slide 37

Slide 37 text

@taiponrock https://developer.ibm.com/patterns/global- financing-use-case-for-blockchain/ IBM Blockchain Platform Extension for VS Code でグローバルファイナンスブロックチェーンアプリを作る

Slide 38

Slide 38 text

@taiponrock バイヤーによる発注 お店による商品提供元への連絡 配送業者による配達 ⾦融機関による⽀払い処理 USECASE ① ② ③ ④

Slide 39

Slide 39 text

@taiponrock 今⽇やること IBM Blockchain Platform Extension for VS Codeを使 ⽤してNode.jsスマートコントラクトをパッケージ化す る この拡張機能を使⽤して、Hyperledger Fabricネット ワークのローカルインスタンスをセットアップし、その 上にコントラクトをインストールしてインスタンス化す る

Slide 40

Slide 40 text

@taiponrock

Slide 41

Slide 41 text

@taiponrock VS Code⽤のIBM Blockchain Platform Extensionを使⽤して、以下のこ とを⾏います。 1. スマートコントラクトをパッケージ化します。 2. ローカルのHyperledger Fabric Networkを起動します。 3. ピアノードにチェーンコードをインストールします。 4. ピアノードでチェーンコードをインスタンス化します。 5. Global Financeアプリケーションを使って、 fabric-network npmライ ブラリを使ったAPI呼び出しを通してHyperledger Fabricネットワーク とやり取りします。管理者はアプリケーションを使⽤して新しい参加者 を作成することもできます。

Slide 42

Slide 42 text

@taiponrock 必要なコンポーネント • VSCode version 1.26 or greater • Node v8.x or greater and npm v5.x or greater • Yeoman (yo) v2.x • Docker version v17.06.2-ce or greater • Docker Compose v1.14.0 or greater

Slide 43

Slide 43 text

@taiponrock コンポーネント補⾜ IBM Blockchain Platform Extension for VS Code は、Hyperledger Fabric 環境への接続を含む、スマートコントラクトの開発、テスト、および展 開を支援するように設計されています。 Hyperledger Fabric v1.4 は、高度な機密性、回復力、柔軟性、およびス ケーラビリティを提供するモジュラーアーキテクチャーに支えられた分 散型元帳ソリューションのプラットフォームです。 Visual Studio Code は、最新のWebおよびクラウドアプリケーションの 構築およびデバッグ用に再定義および最適化されたコードエディタです。

Slide 44

Slide 44 text

@taiponrock ⼿順

Slide 45

Slide 45 text

@taiponrock 1. Clone the repo 2. Use the VS Code extension to set up a smart contract on a basic Fabric network 3. Run the application シンプルな 3ステップ

Slide 46

Slide 46 text

@taiponrock リポジトリのクローン git clone https://github.com/IBM/global-financing-blockchain.git

Slide 47

Slide 47 text

@taiponrock VS Code extension でFabricネットワーク にスマートコントラクトを設定する 1. Visual Studio Code を開き contract フォルダを開きます。 2. F1 キーを押します。 3. IBM Blockchain Platform: Package a Smart Contract Project を選択します。

Slide 48

Slide 48 text

@taiponrock VS Code extension でFabric ネットワークにスマートコ ントラクトを設定する 1. IBM Blockchain Platform 拡張ボタンをクリックします。 2. パッケージ化されたコントラクトが⼀番上に表⽰され、ブ ロックチェーン接続が⼀番下に表⽰されます。

Slide 49

Slide 49 text

@taiponrock ローカルでFabricを設定する 1. LOCAL FABRIC OPS のメニューをクリックし Start Fabric Runtime を選択して ネットワークを起動します。 2. ローカルのFabric設定に必要なDockerイメージがダウンロードされ、ネットワーク が起動します。 3. ネットワークが設定されると、出⼒ウィンドウが表⽰されます。

Slide 50

Slide 50 text

@taiponrock ローカルでFabricを設定する 1. LOCAL FABRIC OPS の下に、スマートコ ントラクトをインストールしてインスタン ス化するためのオプション、あなた の Channels の情報、 Nodes の下のピア、 そして Organizations の下の organization msp が表⽰されます。

Slide 51

Slide 51 text

@taiponrock スマートコントラクトのインスタンス化 (準備) 1. LOCAL FABRIC OPS コンソールの Installed ドロップダウンの下にあ る +Install をクリックします。 2. こちらのピアを選択します: peer0.org1.example.com

Slide 52

Slide 52 text

@taiponrock 3. globalfinancing@0.0.1 コントラクトを選択します スマートコントラクトのインスタンス化 (準備)

Slide 53

Slide 53 text

@taiponrock 4. スマートコントラクトのインストールが成功したことの通知と LOCAL FABRIC OPS コンソールの Installed の下にリストされているスマートコントラクトが表⽰ されます。 スマートコントラクトのインスタンス化 (準備)

Slide 54

Slide 54 text

@taiponrock 1. LOCAL FABRIC OPS コンソールの Instantiated ドロップダウンの下 の +Instantiate をクリックします。 2. こちらのチャネルを選択します: my channel. スマートコントラクトのインスタンス化 (実⾏)

Slide 55

Slide 55 text

@taiponrock 3. globalfinancing@0.0.1 コントラクトを選択します。 スマートコントラクトのインスタンス化 (実⾏) 4. 関数に instantiate と⼊⼒します:

Slide 56

Slide 56 text

@taiponrock 5. オプションの引数については Enter を押す ことができます。 6. これがうまくインスタンス化されると、ア ウトプットビューに成功した通知とあなた の LOCAL FABRIC OPS コンソール の Instantiated の下にリストされたスマー トコントラクトが⾒えるようになります。 スマートコントラクトのインスタンス化 (実⾏)

Slide 57

Slide 57 text

@taiponrock 1. CAノードにIdentityを追加します。 LOCAL FABRIC OPS コンソールの Nodes ド ロップダウンの下の ca.org1.example.com を右クリックして Create Identity を選択して ください。表⽰された⼊⼒ボックスに User1@org1.example.com を⼊⼒しEnter を押します。 CAノードにIdentityを追加 GitHubからCloneしたソースコードの中にIdentityの情報や認証に使⽤する鍵ファイル も含まれていますが、ご⾃⾝の環境に合わせ書き換える(置き換える)必要があります。

Slide 58

Slide 58 text

@taiponrock CAノードにIdentityを追加 すると FABRIC WALLETS コンソールの local_fabric_wallet の配下に User1@org1.example.com が追加されたのが確認できます。

Slide 59

Slide 59 text

@taiponrock 1. WalletをExportします。 2. アプリケーションが認証処理で参照するディ レクトリに、エクスポートしたファイルをコ ピーします。 Walletをエクスポートする 追加したIdentityの情報をアプリケーションが認証に使えるようにするため、VS Code のExtensionからWalletをエクスポートします。エクスポート先は任意の場所で結構で す。 対象のディレクトリは以下になります。 GitHubからCloneしたファイルが既に存在して いますので、それらは削除して下さい。 /global-financing-blockchain/web-app/controller/restapi/features/fabric/_idwallet/User1@org1.example.com

Slide 60

Slide 60 text

@taiponrock アプリの実⾏

Slide 61

Slide 61 text

@taiponrock 1. 新しいターミナルで web-app ディレクトリへ移動します 2. npm installを⾏い、実⾏します $ cd global-financing-blockchain/web-app/ $ npm install $ npm start

Slide 62

Slide 62 text

@taiponrock

Slide 63

Slide 63 text

@taiponrock CONCLUTIONS

Slide 64

Slide 64 text

@taiponrock 1. Hyperledger Fabricを使えばかんたん 2. フロントは普通のWebアプリ 3. 読んで勉強するよりアプリを作ること 4. Visual Studio Codeならすぐに使える

Slide 65

Slide 65 text

@taiponrock 65 IBM Champions https://developer.ibm.com/champions/

Slide 66

Slide 66 text

@taiponrock 66

Slide 67

Slide 67 text

@taiponrock

Slide 68

Slide 68 text

@taiponrock github.com/taijihagino Taiji HAGINO Developer Advocate IBM facebook.com/taiponrock f t in linkedin.com/taiponrock @taiponrock THANKS!

Slide 69

Slide 69 text

@taiponrock DOC ID / Month XX, 2018 / © 2018 IBM Corporation