セキュアな e-投票アプリを作成する

概要

ブロックチェーンは、分散型レジャー、スマート・コントラクト、否認防止機能によって組織のビジネスの在り方を変革しています。選挙業界もその例外ではありません。この開発者コード・パターンでは、IBM Blockchain Platform を使用して、投票を容易にするとともに二重投票を確実に防止する、Web ベースのブロックチェーン・アプリを実装する方法を説明します。

説明

大統領選挙の投票数は実際にどのように集計されているのか疑問に思ったことはありませんか?ボランティアに毎日、何時間もかけて手作業で投票数を集計してもらうのではなく、ブロックチェーンでサポートされたアプリを使って各有権者の票を記録し、二重投票を不可能にできるとしたら公正だと思いませんか?その方法を説明するのが、このコード・パターンです。ここで構築しようとしている Web アプリについて説明すると、有権者は自分の運転免許証を使ってこのアプリに登録し、一意の投票者 ID を入手します。その ID でアプリにログインして票を投じると、その投票がブロックチェーン上で記録され、Web アプリに現在の支持率が表示されるという仕組みです。

このアプリケーションでは最初に、ユーザーが運転運転免許証番号、住民登録している地区、氏名を入力して投票者として登録します。このステップで、運転免許証が有効であり、以前に登録されていないことを確認できます。問題がなければ、クラウド上で実行されている認証局を使用して投票者用の秘密鍵と公開鍵を作成し、その鍵ペアをウォレットに追加します。

次に、ユーザーは運転免許証番号を使用して投票を送信します。その際、アプリケーションによって、その運転免許証番号の投票者が以前に投票していないかどうかが確認されます。その特定の免許証番号がすでに使用されているものでなければ、その投票にコンセンサス・ポリシーが適用されてから、ワールド・ステートが更新されます。これにより、そのユーザーが投票した政党の現在の支持率が更新されて、アプリケーションに表示されます。

順序付けサービスに送信される各トランザクションには、有効な秘密鍵/公開鍵ペアによる署名がなければなりません。したがって、監査の際にはどのトランザクションでも、アプリケーションに登録済みの該当する投票者までたどることができます。

ブロックチェーン上で記録されてネットワーク上のコンセンサスを得たトランザクションはすべて不変であることを考えると、投票にブロックチェーンを使用すれば、市民と政府との間の信頼を築く上で役立ちます。さらに、スマート・コントラクトを使用して票の登録を自動化することで、投票が遥かにセキュアでコスト効率の高いプロセスになります。このアプリケーションはシンプルですが、選挙での不正行為の可能性を低減させて投票アプリケーションを強化するために Hyperledger Fabric Web アプリケーションを実装し、ブロックチェーン・テクノロジーを利用する方法を理解できるはずです。

フロー

フロー

  1. ブロックチェーン・オペレーターが IBM Blockchain Platform サービスをセットアップします。
  2. IBM Blockchain Platform により、IBM Kubernetes Service 上で Hyperledger Fabric ネットワークが作成されます。オペレーターはこのネットワークにスマート・コントラクトをインストールしてインスタンス化します。
  3. Node.js アプリ・サーバーが Fabric SDK を使用して、IBM Blockchain Platform 上にデプロイされたネットワークとやり取りし、Web クライアント用の API を作成します。
  4. Vue.js クライアントが Node.js アプリケーション API を使用してネットワークとやり取りします。
  5. ユーザーが Vue.js Web インターフェースを操作して、票を投じ、ワールド・ステートを照会して現在の支持率を確認します。

手順

このコード・パターンに取り組む準備はできましたか?詳細な手順については、README を参照してください。手順の概要は以下のとおりです。

  1. リポジトリーのクローンを作成します。
  2. IBM Cloud™ サービス・インスタンスを作成します。
  3. ネットワークを構築します。
  4. voterContract スマート・コントラクトをネットワーク上にデプロイします。
  5. アプリをネットワークに接続します。
  6. アプリを実行します。