Keys to the Oracle Cloud indexページ▶▶ 

Keys to the Oracle Cloud

第4回:【MICRO DATA編】
PaaSレイヤの実装①(Oracle Blockchain Platform Cloud Service)

大塚紳一郎, 2019年11月


著者紹介


大塚 紳一郎(おおつか しんいちろう)


2003年、株式会社野村総合研究所に新卒で入社。ミッションクリティカルシステムにおけるOracle Databaseの構築、運用、コンサルティングに関して15年以上の経験を持つ。毎年サンフランシスコで開催される世界最大のテクノロジーイベント「Oracle OpenWorld」を含む各種イベントでの講演多数。Autonomous DatabaseがGAされた年にOracle ACE Associateになれたことに運命を感じており、Oracleデータベース管理者の今後のロールモデルの構築に携わりたいと考え日々活動中。最新の登壇タイトルは「Boosting your career through Oracle Cloud Infrastructure 2018 Certified Architect Associate.」

‐ NRI認定ITアーキテクト
‐ Oracle ACE Associate
‐ Oracle MASTER Platinum10g,11g,12c(Platinum of the year 2016 in Japan)
‐ Oracle MASTER Cloud Oracle Database Cloud Service
‐ Oracle MASTER Cloud Oracle Java Cloud Service
‐ Oracle Cloud Infrastructure 2018 Certified Architect Associate

 

  • これからの内容はOracle Cloud Infrastructure (以下OCI)のサービスを前提としたものです。
  • 検証時点(2019年3月末)のOCIのサービス内容に基づいて記載しているため、内容が一部異なる場合があります。
  • 最新の情報については公式Webサイトをご確認頂きたく思います。
  • 本連載は私個人の理解に基づいており、事実と異なる可能性があることをご了承いただきたく思います。

こんにちは、NRIの大塚です。今回はMICRO DATA領域の連載4回目です。


 

テーマとするPaaSはOracle Blockchain Platform Cloud Serviceです。
今回はいよいよPaaS(Oracle Blockchain Platform Cloud Service)の実装です。

今回作成するのは図中赤枠(PaaSエリア)の部分です。


今回は以下の4ステップで説明していきます。

  • - Step1:Oracle Cloud管理コンソールへのログイン
  • - Step2:Oracle Blockchain Platform Cloud Serviceインスタンスの作成
  • - Step3:チャネルの作成
  • - Step4:サンプルチェーンコードのデプロイ

それでは、さっそくはじめたいと思います。

 

  1. Oracle Cloud管理コンソールへのログイン

    しばらくの間Computeでの操作が多かったかと思います。PaaSの実装を行う際にはOracle Cloud 管理コンソール直下からの操作になりますので、再度確認するところから始めたいと思います。
    早速Oracle Cloud Webコンソールへログインしてみましょう。URLは以下です。
    https://cloud.oracle.com/ja_JP/sign-in



    Oracle Cloud 管理コンソールを活用して実装をしていきます。
    下図のとおり「Blockchain Platform」を押下してください。

  2.  

  3. Oracle Blockchain Platform Cloud Serviceインスタンスの作成

    「インスタンスの作成」を押下します。





    確認画面に遷移しますので、内容に問題が無ければ「作成」を押下してください。





    インスタンスが作成されます(2つのADで冗長化されています)ので、「Blockchain Console」を押下してください。





    「Blockchain Console」に遷移します



  4.  

  5. チャネルの作成

    Oracle Blockchain Platform Cloud ServiceはHyperledger Fabricがベースとなっています。
    Hyperledger Fabricはチャネルごとにブロックチェーンの台帳を保有します。
    ブロックチェーンを実際に体験してみるにあたり、まず、チャネルを作成します。
    Oracle Blockchain Platform Consoleにて「Channels」を選択し、
    「Create a New Channel」を押下してください。



    チャネルの作成画面が表示されますので値を入力していきましょう。

  6.  

  7. サンプルチェーンコードのデプロイ

    デプロイするチェーンコードはOracle Blockchain Platform Cloud Serviceのサンプルを用いたいと思います。
    Blockchain Consoleの「Developer Tools」を押下してくだい。
    以下のような画面に遷移しますので、「Samples」を押下してください。




    今回は「Balance Transfer」を実行したいと思います。

    • Aさん、Bさんそれぞれに初期値として金額を設定
    • AさんからBさんに残高を移動
    • ブロックチェーンに記録された移動の履歴を確認したいと思います

     



    Installの設定画面に遷移しますので値を入力します。





    Installed on peersが「2」になったことを確認したら「Instantiate」を押下してインスタンス化したいと思います。







    下図のように「Info」にてインスタンス化のアクションがバックエンドで開始された旨が表示されますので画面を閉じます。





    インスタンス化したことにより「Instantiated on channels」が「1」になっています。
    準備が整いましたので実行したいと思います。「Invoke」を押下してください。





    以下のような画面が表示されますので値を入力して「Execute」を押下しましょう。





    リクエストが成功した旨が表示されます。





    Transaction Resultsとして、Aさんの残高「100」が表示されます。





    Action「Query A」を実行したのですが、サンプルチェーンコードを見てみたいと思います。
    Balance Transfer(送金アプリ)の「Download sample here.」を押下してください。





    「BalanceTransfer.zip」をどこか好きな場所に保存し、解凍してください。
    その後、解凍したディレクトリの以下パスまで移動をしてください。



    BalanceTransfer\artifacts\src\github.com\go


    上記ディレクトリ配下の「example02_cc.go」が実際のチェーンコードです。エディタで開いてみてください。
    150行目からがAction「Query A」の該当箇所です。



    // query callback representing the query of a chaincode
    func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response {
    	var A string // Entities
    	var err error
    
    	if len(args) != 1 {
    		return shim.Error("Incorrect number of arguments. Expecting name of the person to query")
    	}
    
    	A = args[0]
    
    	// Get the state from the ledger
    	Avalbytes, err := stub.GetState(A)
    	if err != nil {
    		jsonResp := "{\"Error\":\"Failed to get state for " + A + "\"}"
    		return shim.Error(jsonResp)
    	}
    
    	if Avalbytes == nil {
    		jsonResp := "{\"Error\":\"Nil amount for " + A + "\"}"
    		return shim.Error(jsonResp)
    	}
    
    	jsonResp := "{\"Name\":\"" + A + "\",\"Amount\":\"" + string(Avalbytes) + "\"}"
    	fmt.Printf("Query Response:%s\n", jsonResp)
    	return shim.Success(Avalbytes)
    }


    それでは次に

    • AさんからBさんに残高を移動
    • ブロックチェーンに記録された移動の履歴を確認したいと思います


    「Invoke」を押下してください。

     



    今度は「Transfer from A to B」を選択します





    Amount「10」としてAさんからBさんに送金してみます。





    送金が完了しました。





    Bさんの残高を確認したいと思います。期待値は「210」です(初期値200+Aさんからの送金「10」の和である為)





    期待どおりの値が表示されました。





    ブロックチェーンの情報を見てみたいと思います。チャネルごとに台帳が管理されていますので、
    「Channels」タブを押下してください。





    6個のブロックが存在していることが分かります。





    4つ目のブロックを選択して下図のようにTxIDの三角マークを押下してください。
    すると、AさんからBさんに「10」送金した記録を確認することができます。
    これは改ざんすることのできない記録として台帳で管理され続けます。





    最後にユーザ権限のお話をします。Oracle Blockchain Platform cloud Service のインスタンスを作成したOracle Cloudユーザ以外のユーザへの権限付与の仕方を紹介したいと思います。

    権限設定はOracle Cloud 管理コンソールから行います。ログインしてみましょう。URLは以下です。

    https://cloud.oracle.com/ja_JP/sign-in





    Oracle Cloud 管理コンソールを活用して実装をしていきます。





    「Identity Cloud」を押下します。





    「ハンバーガーボタン」→「Applications」を押下します。





    以下2つに接続許可させたいユーザをアサインしておきましょう。
    まずBlockchan Consoleへの接続許可。





    次にOracle Blockchain Platform cloud Serviceインスタンスへの接続許可。
    こちらは、かなり下のほうにあり、忘れがちですので要注意です。





    驚くほど簡単にブロックチェーン環境を構築することができました。
    今回はここまでといたします。読んで頂きありがとうございました。


 

 

AutonomousDatabaseを無期限 / 無料(Always Free)で使用可能になりました。

Cloudをまだお試しでない方は、無料トライアルをご利用下さい。