Oracle Blockchain Cloud Serviceのインスタンスを作成してサンプルChaincode動かしてみた
ひさびさに筋トレをしたら全身がむちゃくちゃな筋肉痛になりました、身動きがとれない、ふとんから出られなーい
やったこと
内容
Oracle Cloud Advent Calender 2018の16日目のやつとしてOracle Blockchain Cloud ServiceのリッチヒストリーDB連携のエントリ書こうと思ったんだけど、なんか書いてたら長すぎるので事前準備編を別エントリとして書くことにしました、そしてこのエントリがその事前準備編その1です。
ここではOracle Blockchain Cloud Serviceのインスタンスを作成し、その後サンプルChaincodeを動かしていきます。
Oracle Blockchain Cloud Serviceとは
Oracle Cloudで提供されるHyperledger FabricベースのPaaSです、略称はOBCSなのでよろしくな。こちらにご紹介がありますので見てくださいませ
www.slideshare.net
インスタンス作成
まずOracle Cloudにログインするじゃろ、そんで左のほうにあるメニューバー的なやつからAutonomous Blockchainというのを選びます、そんでBlockchain Cloud Serviceのサービス画面に行くのでここで「インスタンス作成」ボタンを押しますね
そうすると↓の構成設定画面になります。いくつかの設定をします
- Instance Nameには任意のインスタンス名を入れましょう。使えるのはアルファベット小文字と数字のみです。また、インスタンス名がそのままHLFのOrganization名になるのでそのつもりで
- Create a new Networkにチェックをつけると、インスタンス作成時に新しいHLFネットワークを作成します。既存のHLFネットワークに参加させたい場合はチェックを外しましょう。このエントリでは単独OrgのHLFネットワークを新たに作成したいのでチェックを入れておきます。
- Configurationはシェイプ的なものを選ぶところです。割り当てられるCPU,メモリなどのリソース量、VMの冗長構成、作成できる最大Peer数、1時間あたりの最低課金単位量に関わってきます。このエントリでは特にそのあたりの要件ないので、一番最低課金が安いDeveloperを選びます。
「次へ」ボタン押すと確認画面に遷移するので、確認したら「作成」ボタンを押しましょう。無事インスタンス作成リクエストが通ると以下のようにCreating service...になります、待ちましょう。だいたい5分~40分くらいで終わると思う
待っている間に公式ドキュメントでも読むか、、、というひとは↓にありますので存分に読みましょう
Oracle Blockchain Platform - Get Started
インスタンス作成完了~ブロックチェーンコンソール画面
インスタンス作成が終わりましたね?そうしたらBlockchain Cloud Serviceのサービスページから、できあがったインスタンスの右のほうにあるハンバーガーメニューをクリックし、「Blockchain Console」をくりっくくりっく
このような↓ダッシュボード画面が開きます、やったぜ
いちいちサービスページから遷移してくるのも面倒なので、このページをブックマークしておくのがおすすめです。
このコンソール画面から他のOrganizationをネットワークに参加させたり、Peerを追加したり削除したり起動停止したり、各種設定を変更したり、ブロックを眺めたりといろいろなことができるというわけじゃよ
どういうことができるかは前述の公式ドキュメントを読んでもいいですが、↓の動画がわかりやすくておすすめです
サンプルChaincodeを動かしてみる
ここからはOBCSでかんたんに試せるように用意されている、サンプルChaincodeを動かしてみます。
チャネルの作成
まずはチャネルを作成しましょう。OBCSのダッシュボードから、Channelsのタブを選択します
チャネル一覧画面が表示されます。最初からdefaultチャネルが用意されていますが、このチャネルはChaincodeをインストールしたりする用途には使うべきでない特殊なチャネルです。新しくチャネルを作成しましょう。Create a New Channelをクリック
↓のフォームが出ます。Channel Nameには任意のチャネル名を記載し、Peers to Join Channelにはひとつ以上のPeerを選択してSubmitしましょう。「チャネル作ると消せないけどおk?」という確認ダイアログが出たらYesしてください。
Submit後、ちょっと待ったらリロードしてみましょう。1分くらいでチャネルができあがります。
これでチャネル作成は完了です、かんたんですね
サンプルChaincodeのインストールとインスタンス化
次はサンプルChaincodeをインストールして動かしてみます。Developer Toolsタブをクリックし、左のSamplesメニューをクリックすると↓の画面が表示されます。Balance TransferのサンプルChaincodeのInstallボタンを押しましょう。
↓のフォームが出ます。Peersには先ほどチャネルに所属させたPeerのうちひとつ以上を選んでください。そんでInstallボタン
Installed on Peersの数字が増えていますね。次にこのChaincodeをチャネル上でインスタンス化しましょう。Instantiateボタンをクリック
Channelは先ほど作成したチャネルを選択、Initial Parameters of ChaincodeのBalance of A、Bにはそれぞれ任意の自然数を入力しましょう。これらがA,Bそれぞれの初期アカウント残高になります。REST Proxyはrestproxy1~4のどれかひとつを選択してください。サンプルChaincodeのInvokeをREST経由で行っているため必要になるものです。そんでInstantiate and Enable in REST Proxyボタンをくりっくくりっく
リクエストが通った旨の↓のようなメッセージが出るのでフォームを閉じましょう。
サンプルChaincodeの実行
インスタンス化したことにより、Instantiated on Channelsの数字が増えています。チャネル上で有効になり、Chaincode実行の準備が整いました。ということで実行しましょう。Invokeボタンをクリック
Channelは先ほどInstantiateしておいたチャネルを選択。ActionはとりあえずQuery AのままExecuteボタンで実行!
戻ったSamples画面の下部にChaincode実行=トランザクションの結果が表示されます。先ほどActionをQuery Aにしたので、Aのアカウント残高である100(Instantiate時に設定しておいたBalance of Aの値)が表示されました。やったぜ
先ほどど同様、Invokeの画面からActionを指定することで、アカウントA/Bの残高クエリおよびAからB、BからAの残高移動が行えます。いずれも結果はSamples画面下部に表示されます。いろいろ試して遊んでみてください。
トランザクション履歴の確認
ここまででサンプルChaincodeを実行したことにより、当該チャネルの台帳にはトランザクション履歴が発生しているはずです。HLFでトランザクション履歴が格納されているのは、、、そう、みんな大好きブロックチェーン部分ですね。見ましょう
Channelsタブに移動してチャネル一覧画面でChaincodeを動かしたチャネルのチャネル名の部分のリンクをクリック
Ledgerのページが表示されます。User Transactionが1(以上)になっているBlockの行をクリックしてみましょう。
ページ下部に選択したBlockに含まれるUser Transactionの一覧が表示されます。各トランザクションの行の左側にある三角形のマークをクリックすると↓のように詳細が表示されるでよ
ということでけっこうかんたんにChaincodeを動かしてそのトランザクション履歴を見られました、よかったですね