狠狠撸

狠狠撸Share a Scribd company logo
TECHNOMOBILE
GROUP
HEAD OFFICE
TOKUSHIMA development section
| 5floor Column Minamiaoyama,7-1-5,Minamiaoyama,Minato-ku,Tokyo 107-0062,Japan
| 3floor Tokushimakenkohkagaku-center,Hiraishisumiyoshi,Kawauchi-cho,Tokushima-shi Tokushima 771-0134,Japan
Hyperledgerのチュートリアルで理解する基幹システム向けブロックチェーンハンズ
オン
2
Hyperledgerのチュートリアルが理解できたので共
有します。ほかにわからないことはたくさんあるの
で気づいた点はフィードバックください。
IBMのCloudにあるHyperledgerはバージョンが古く
サンプルが動かないようです。
ほんと情報が少ないです。
6
目的
3
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
みなさんBitcoin知ってますか?
4
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
逮捕されたり。。。仮想だし。。。
なんか怖いですよね
5
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
マウントゴックスの件は、不正会計や
かってに送金されただけで、Bitcoinの
セキュリティーをがハックされたわけ
ではないのです。
6
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
上下しながら取引されています。
7
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
Bitcoinで使われているブロックチェー
ンは通貨だけではなく広くサービスと
して使われつつあります。管理サー
バー無しで。。
Swarm
クラウドファンディングのプラットフォーム
Storjcoin X
分散型ストレージサービス
Gems
分散型メッセンジャーアプリ
LTBcoin
「Let's Talk Bitcoin」というビットコインのPodcastサービスの広告枠の利用等
に使用
8
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
まずはBitcoinを使ってみましたか?
EthereumやBitcoinCoreなどいろいろ環境
はありますが、
今回は、Hyperledgerを使い、仮想通貨だ
けではなくビジネスにつかえるブロック
チェーン環境を学びます。
9
「Hyperledgerのインストール」ページを参考にインストールをしておいてくださ
い。
狠狠撸ShareのスライドをDownloadしておくと、テキストのコピペが楽になりま
す。
6
事前準備
10
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
この学びの対象者は?
→Bitcoinなどに使われているブロックチェーンを操
作しながら理解?体験したい人。簡単なプログラム
を理解できる人。Docker,Linuxの基本コマンドが分
かる人。
Ethereumと比較したい人。
ブロックチェーンアプリを作りたい人。
WindowsのDocker環境を前提としています。
Macでも動作するとは思いますが未検証です(たぶん
volumeのフォルダー指定をMacに合わせれば大丈夫
かと)。
教えないことは?
→ブロックチェーンの専門家ではないので。。。
11
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
講師
Gashfara,Inc.代表
デジタルハリウッド大学院客員講師
茂木健一
mogi@gashfara.com
kenichi.mogi@tcmobile.jp
http://facebook.com/mogiken
http://www.slideshare.net/mogiken1
自己紹介
[プロフィール/実績]
もぎ?けんいち●青山学院大学大学院卒。Gashfara,Inc.代表。本社はハワイですが出社したことなし。
ホノルルマラソンには参加w
青山学院大学大学院卒:エニックスでオリジナルゲーム制作(Z80アセンブラ CP/M)、SmallTalkで
人工知能開発(企業買収)。
(株)東洋情報システム退社後、(株)エイチアイ、グランスフィア(株)、(株)ファッション
ウォーカー(えびもえのEC)など数社のベンチャー企業の立ち上げ?創業期に参画し、ガシュファ
ラ?インクをUSで起業。システム開発ではゲーム、TOL(ツタヤオンライン)の立ち上げ。動画配
信システム(USENのGate01:Gyaoの前進)、電子マネーシステム(Bitcash)、ECフルフィルメント
システムなど、多彩な分野を経験。IT関連教育では1998年ころからデジハリの2.5階に間借りしな
がら教育コンテンツ作成(JIB社)。Brew、Java、セキュリティーなどの講師として活躍。現在、
(株)HUGGを設立し、スマホのカップル向けSNSサービス[HUGG]をグローバルに展開。㈱テクノ
モバイルにて技術サポート。
【著書】
BREWプログラミング実践バイブル [共著] (インプレス)、PHP逆引き大全 516の極意[共著](秀和
システム)
12
成長を実現させるシステム”モバイルトータルソリュー
ション”
Web
システム
1
スマホ
アプリ
2 ゲーム
アプリ
3
モバイルトータルソリューション
B2B2C
? コンシューマ向けの大規模Webシステムの開発からアプリ?ゲーム開発までをマルチデバイスで対応
高い技術力 市場ニーズとマッチ
大規模
Webシステム
に強い
Java,PHP
Strong1
最先端技術?独自
フレームワークで
効率的な
開発
Strong2
高トラフィック、
インフラ
ネットワーク
に強い
Strong3 プライマリー
ベンダー、
ヒアリング?
要件定義
に強い
StrongⅠ
情報資産の活用
最先端と
知見に強い
StrongⅡ
最先端のマルチ
デバイス
ウェアラブルに
強い
StrongⅢ
Mashup Awards 5年連続 受賞
会社名 株式会社テクノモバイル
設 立 2008年
資本金 2,500万円
代 表 播田 誠
従業員数 100名(グループ合計)
本社所在地
〒 107-0062
東京都港区南青山7-1-5 コラム南青山 5F
開発室
〒771-0134
徳島県徳島市川内町平石住吉209-5
徳島健康科学総合センター 3F
ベンチャー企業に誘われていろいろと!
TOL,BitCash,TokyoGirlsCollection,G
yaoとか立ち上げに参加。もちろんデジハリも
。
最近はカップル向けアプリの企業を立ち上げ!
Co-Founderで!
1億2千万円集めて2年間で使い
きりました!ごめんなさいorz
勉強会やってます!
最近は
ドローン飛ばしたり
Bitcoinを使って
募金サイトつくっ
たり
Androidアプリの
先生やってます
バイオリン
イスラエルのブロックチェ
ーンスタートアップに
Join
経営&サービス目線で創業期のシステムを設計?開
発するのが得意です。特許も考えます。
おもしろいシステムしか作りません( ?`д??)???
最近の勉強会の内容はスライドシェアで共有してま
す。
http://www.slideshare.net/mogiken1
17
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
Bitcoinとは
?2009年から運用が始まった仮想通貨。単
位:BTC
?管理サーバーを持たず、ルールに基づいた
P2Pネットワーク上に信用のもと構築?運用
?手数料が安い
?信用はブロックチェーンの仕組み。
?誰でも情報にアクセスして検証することが
できる
?取引所で現金化も可能
?実店舗でも利用可能。
http://jpbitcoin.com/shops
※ここがわかりやすい。
http://gigazine.net/news/20131007
-what-is-bitcoin/
18
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
ブロックチェーンとは
?この解説が一番わかり易い。
http://www.slideshare.net/cookle/5-58379474
こまかいロジックはBitcoinのソースコードを
読むのが正解らしい。。。
※ポイントは。。。。
チェーンの改ざんを抑止するためにハッシュ値の計算(マイニング)
する難しさを定期的に調整しているが、調整が間に合わないような高速
演算できる環境を持ち込まれると長いチェーンを作成されてしまい、改
ざんできる余地がある。→完璧ではない。十分難しい状態のまま。
19
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
?この書籍がわかりやすい。おすすめ
http://amzn.to/2gcfcb2
20
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
Hyperledgerとは
IBMや日立など大手が参加しているビジネス向
けブロックチェーンプロジェクトです。
Fablicがそのアプリケーションです。
?仮想通貨のような機能はありません
?プライベートネットワークのみ対応
?プログラムはGO、Javaで開発。将来的には
JavaScriptも
?ワールドステートにKey,Value形式のデータ
を保存できる。
21
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
3つのサービスからなります。
?メンバーシップサービス
アカウントの管理、権限、証明書発行など
?ブロックチェーンサービス
ブロックチェーンの登録など管理します。
?チェーンコードサービス
GOなどで書かれたプログラムの実行管理
22
DockerにHyperledgerの環境を作成します。Windows環境で説明しますが、Mac
でも問題ないと思います(未検証)。参考:https://goo.gl/xRYUHr
1.Docker Toolboxのインストール
https://www.docker.com/products/docker-toolbox からDockerToolboxをダウン
ロードしてインストールしてください。デフォルトのままインストールを進めて
OKです。
インストールされたDocker Quickstart Terminalを起動して下記のようなターミナ
ルが表示されればインストールはOKです。
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
Hyperledgerのインストール
23
2.HyperledgerのDockerイメージのDownload
Hyperledgerは2つのプロセス「memberサーバー」「peerサーバー」からな
ります。
Dockerで下記のコマンドを実行しDockerイメージをDownloadしてください。
docker pull hyperledger/fabric-membersrvc:latest
docker pull hyperledger/fabric-peer:latest
下記のコマンドでpullしたイメージが表示されれば成功です。
docker images
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
24
1.docker-composeを使った起動設定を行います。複数のコンテナを管理するた
めに使います。
docker-compose.ymlというファイルを下記のようなパスに作成します。"mogi"
の部分は自分の環境(Windowsのログインアカウント)に合わせてください。デ
フォルトではWindowsのDockerはc:Usersの自分のアカウント以下のフォルダー
にしかアクセスできません。つまり「d:DockerTest」などのフォルダーは指定
できません。mogi以下のパスは自由な場所で大丈夫です。
作成場所例:
c:UsersmogiDocumentsDockerHyperLedgerdocker-compose.yml
docker-compose.ymlの内容は次ページになります。Windowsのテキストエディ
タなどで編集してください。
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
Hyperledger起動
25
membersrvc:
image: hyperledger/fabric-membersrvc
command: membersrvc
vp0:
image: hyperledger/fabric-peer
ports:
- "7050:7050"
- "7051:7051"
- "7052:7052"
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=http://172.17.0.1:2375
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_SECURITY_ENABLED=true
- CORE_SECURITY_ENROLLID=test_vp0
- CORE_SECURITY_ENROLLSECRET=MwYpmSRjupbT
volumes:
- '/c/Users/mogi:/share'
links:
- membersrvc
command: sh -c "sleep 5; peer node start --peer-chaincodedev"
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
"mogi"の部分は自分の環境に合わせてください。volumesではWindowsの
c:Usersmogiのフォルダーをコンテナ内では/shareにマウントすることを指定し
ています。
26
2.起動
Dockerで、下記のように1で作成したdocker-compose.ymlまで移動します。
cd /c/Users/mogi/Documents/Docker/HyperLedger/
下記のコマンドで起動します。
docker-compose up
起動しているかどうかは新しいDockerTerminalを起動して下記のコマンドで確認
できます。
docker ps -a
コンテナ名は
hyperledger_membersrvc_1 hyperledger_vp0_1
終了はCtrl+Cで。正式な方法はあるかも?
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
27
デフォルトのアカウント情報が既に登録されています。
新しいDockerTerminalを開き下記のコマンドでメンバーサーバーにログインしま
す。
docker exec -it hyperledger_membersrvc_1 /bin/bash
アカウント情報を確認しましょう。users:がアカウント情報です。
vi $GOPATH/src/github.com/hyperledger/fabric/membersrvc/membersrvc.yaml
アカウントjimをよくサンプルで使います。
jim: 1 6avZQLwcUe9b bank_a
1=role(1:client, 2: peer, 4: validator, 8: auditor:要調査:ToDo)
6avZQLwcUe9b=パスワード
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
デフォルトのアカウント情報の確認
28
プログラムをGo言語などで記述し、peerサーバーにチェーンコードとして登録
することにより、外部からプログラムを実行することができます。
1. /shareにマウントしたフォルダーにチュートリアルプログラムをダウン
ロードします。
exampleにあるコードに日本語でコメントを追記しています。peerサーバーで
wgetを使いダウンロードしてもOKです。
https://drive.google.com/open?id=0Bw5FRKM4Lv-SRXBRMTJZVXJxZ1E
保存先例:
c:UsersmogiDocumentsDockerHyperLedgerchaincode_example02.go
2.peerサーバーにログインします。
docker exec -it hyperledger_vp0_1 /bin/bash
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
チェーンコードの登録
29
3.ビルドします.
cd /share/Documents/Docker/HyperLedger 保存先に移動
go build -o chaincode_example02
chaincode_example02が作成されれば成功。
4.peerサーバに登録して実行待ちにする。まだブロックチェーンには登録され
ていない。
CORE_CHAINCODE_ID_NAME=mycc
CORE_PEER_ADDRESS=0.0.0.0:7051 ./chaincode_example02
「Received REGISTERED, ready for invocations」というメッセージが表示され
れば成功。
myccという名前で登録。ポートは7051(なぜ7051なのかCurlでは7050を指定。要
調査:ToDo)。実行中にしないとこのあとのcurlでの実行時にエラーになる。
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
30
Curlを使い、チェーンコードを実行する。これがアプリケーションになります。
今回のサンプルchaincode_example02.goにも記述されているように下記の4つ
の関数を用意する必要があります。これらをCurlで実行します。
Init関数
初期化処理を記述する
デプロイ操作時に実行される(ブロックチェーンに登録される?要調査:ToDo)
1回のみ実行。2回目は無視される(OKのstatusは返ってくる)。
チェーンコードプロセスを再起動すれば再度初期化を実行できる。
再実行しても登録済みのKey,Valueの値はそのまま。
Invoke関数
一般的な取引に当たるようなものを記述する
Query関数
データの参照を行うような処理を記述する
main関数
chaincodeプロセスの起動。固定のプログラム。
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
チェーンコードの実行
31
新しくDockerTerminalを開きpeerサーバーにログイン。
docker exec -it hyperledger_vp0_1 /bin/bash
※WindowsなどホストPCなどの外部からCurlで実行することも可能。localhost
は192.168.99.100のように「docker-machine ls」で表示されるIPアドレスになる。
Curlの'は削除しないとパースエラーになる。
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
32
1.ログイン
アカウントjimでログイン。ログインしないと実行できない。
echo '{"enrollId": "jim","enrollSecret": "6avZQLwcUe9b"}' |curl -X POST -H
"Content-Type: application/json" -d @- http://localhost:7050/registrar
2.myccをDeploy。登録して初期化する。最初に実行が必要。jimアカウントで
登録初期化。 methodにdeployを指定 init関数を実行してaさんに100,bさんに200
を設定。2回実行しても初期化されない。
echo '{ "jsonrpc": "2.0", "method": "deploy", "params": {"type":
1,"chaincodeID":{"name": "mycc" }, "ctorMsg": { "args":["init", "a", "100", "b",
"200"]}, "secureContext": "jim" }, "id": 1 }' |curl -X POST -H "Content-
Type: application/json" -d @- "http://localhost:7050/chaincode"
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
33
3.実行 methodをinvokeにする。関数invokeを実行する。aさんからbさんに10
を送金。 "message":"2b0f20ad-b04c-4d06-ae78-b445d5356732"が返ってくる。
これがトランザクションID
echo '{ "jsonrpc": "2.0", "method": "invoke", "params": {"type":
1,"chaincodeID":{"name": "mycc" }, "ctorMsg": { "args":["invoke", "a", "b",
"10"]}, "secureContext": "jim" }, "id": 2 }' |curl -X POST -H "Content-
Type: application/json" -d @- "http://localhost:7050/chaincode"
4.クエリー実行。methodをqueryにする。関数queryを実行する。aさんの残高
90を返す。
echo '{ "jsonrpc": "2.0", "method": "query", "params": { "type": 1,
"chaincodeID":{ "name":"mycc" }, "ctorMsg": {"args":["query",
"a"]}, "secureContext": "jim" }, "id": 3 }' |curl -X POST -H "Content-
Type: application/json" -d @- "http://localhost:7050/chaincode"
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
34
Curlの実行結果と、コードを見ながら解説します。
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
chaincode_example02.goの解説
35
chaincode_example02.goをmyccとmycc1として別の名前でチェーンコードに登
録すると、別のスコープとしてKey,Valueが登録されるのが確認できます。
チェーンコード間の連携は04、05のサンプルにあります。
https://github.com/hyperledger/fabric/tree/master/examples/chaincode/go
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
Key、Valueのスコープ
36
key,valueの高級な検索機能をHyperledgerに期待していたが、サンプルを見ても
Keyから1つ取り出すか、 RangeQueryStateを使って全件取り出すかくらいのサ
ンプルしかなく検索性はわるいかも?
shimライブラリのAPIを見るとCreateTableみたいのがあるがサンプルがなく使
い方が不明。
知っている人はフィードバックください。ToDo
ライブラリのAPI
https://goo.gl/y5J8uB
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
ブロックチェーンの最大のデメリット
検索性はよいのか?
37
COPYRIGHT(C) TECHNOMOBILE ALL RIGHTS RESERVED.
6
さらにHyperledgerを学ぶには
?http://amzn.to/2fO9uuo

More Related Content

贬测辫别谤濒别诲驳别谤のチュートリアルで理解する基干システム向けブロックチェーンハンズオン

Editor's Notes

  • #13: 弊社がご提供しているソリューション内容です。 企画から運営?保守にいたるまでを一気通貫で、 軸となるコンシューマ向けの大規模Webシステムをはじめ、スマホアプリ、ゲーム開発などをご提供しております。 特に大きな実績として、大規模ECシステム、求人検索サイトの開発となっております。 他にも音楽DLサイトや、業務を効率する管理系のシステムの実績も多数あります。 (30秒)