LoginSignup
5
4

More than 5 years have passed since last update.

Hyperledger composerで投票システムを作ってみた【テスト編】

Posted at

最近はやりのブロックチェーンを触ってみよう!
ということで、手っ取り早く試せると定評のある「Hyperledger composer」で投票システムを作ってみました。

★★
スクリーンショットを取りながら書くとかなり長くなりそうだったので、
作成編とテスト編の2部構成に分けています。

作成編はこちら → https://qiita.com/sh003/items/8add167b71943aff9e73

なお、Hyperledger composer自体の解説は別の方が書かれているのでここでは割愛します

このサンプルの概要

やりたかったこと

  • 候補者A,B,Cの誰かに投票できるシステム
    • 投票者は任意に追加できる
    • 追加された投票者には投票権(1票)が付与される
    • 投票を行うと、投票された票の所有者がA,B,Cいずれかの有権者に変わる

利用したもの

  • Hyperledger composer Playground v0.14.0
    • Playground?:Hyperledger composerをWEB UIベースのお試し環境で触ってみれるもの(と認識しています)

作成したもの

  • model file(.cto)
    • 参加者(participant)、資産(Asset)、トランザクションなどを定義するファイル
  • script file(.js)
    • トランザクション処理の内容を記載するファイル。チェーンコードに相当。

以下、テスト手順

参加者(Participant)の生成

テスト画面を開く

スクリーンショット 2017-10-17 9.07.13.png

作成編の最後で実施したUpdate処理後に上部のTestタブを選択するとチェインコードのテスト実行モードになります。
この時点では、参加者も資産も生成されていないので、画面上にはemptyと表示されます。

候補者の情報を入力

スクリーンショット 2017-10-17 9.07.38.png

左側のメニューでParticipant > Userを選んだ状態で右上の+ Create New Participantを選択すると、新しい参加者を生成する画面になります。
今回は候補者「Aさん」を生成します。
* name:A
* type:候補者(candidate)

typeを定義していますが、現時点では特に意味はありません。

候補者の生成

スクリーンショット 2017-10-17 9.07.45.png

候補者情報を入力後、Create Newボタンを押すと、Test画面に生成された候補者の情報が表示されます。

スクリーンショット 2017-10-17 9.08.15.png

同様に候補者B,Cも生成します。

トランザクション実行

投票者生成トランザクションの設定

スクリーンショット 2017-10-17 9.11.01.png

画面左側下部Submit Transactionボタンから、投票者を新しく作成するトランザクションの情報を入力します。
* name:testUser001

投票者の生成

スクリーンショット 2017-10-17 9.18.59.png

情報入力後、submitボタンを押すとトランザクションが実行されます。
トランザクションの実行と同時に、Asset:Vote(この例では1票に相当)が生成されます。

正確には、ユーザ生成のトランザクション(addUser)のチェインコードにAssetを同時生成するように記述しています。

スクリーンショット 2017-10-17 9.19.04.png

投票者生成トランザクション実施後にParticipant > Userを確認すると、testUser001が増えていることを確認できます。

スクリーンショット 2017-10-17 9.21.41.png

同様に、testUserを3人生成しました。
次のステップでようやく投票を実施します。

投票先の設定

スクリーンショット 2017-10-17 9.22.12.png
画面左側下部Submit Transactionボタンから、トランザクション情報入力画面を開き、
上部のプルダウンからTransaction type : Votingを選択します。
これにより、JSON dataの表示が投票者と候補者の入力画面に変化します。
上記画面の例では「testUser001がAさんに投票する」という内容を設定しています。

投票の実施

スクリーンショット 2017-10-17 9.22.25.png

投票トランザクションでSubmitボタンを押すと、投票が実施されtestUser001の票の所有者(owner)がAさんに変わります。

これらを各ユーザで繰り返し、任意の候補者に投票を実施します。

スクリーンショット 2017-10-17 9.23.32.png

なお、投票時に誤ったユーザ情報(例ではtestUserXXX)を設定してSubmitしようとすると、そんなユーザはいませんと怒られます。


まとめ

以上、Hyperledger composerを使ってざっくり投票システムを作成してみました。
サンプルシステムの構成やチェーンコードの内容など、ちゃんと紹介できていない部分もありますが、
こんな感じという使用感を掴んでもらえたら幸いです。

参考:トランザクションの確認

スクリーンショット 2017-10-17 9.08.25.png

左側メニューTRANSACTIONS > All Transactionsから、実行したトランザクションの結果を確認できます。
この例は、上3つが候補者A,B,Cを生成したトランザクションです。

ブロックチェーン上に記録されるトランザクション(と認識しています)

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4