Hyperledger Indy・Ariesによる分散型IDアプリケーション開発ガイド

2. 環境構築編

TIS Blockchain Promotion Office
12 min readSep 7, 2021

目次

  1. はじめに
  2. 環境構築
    事前準備
    プロキシ設定
    ACA-Pyの起動

1.はじめに

TIS Blockchain推進室では、Blockchainユースケースの1つとして分散型アイデンティティ(以下「分散型ID」)に関する技術検証やリサーチを行っています。

前回の記事では「概要編」として、分散型IDの概要と、分散型IDのアプリケーションを実装するためのフレームワークであるHyperledger Indy・Ariesについてご紹介しました。

今回は、Hyperledger Ariesでの開発環境をローカルPC上に構築するための手順をご紹介します。Aries Frameworkは「Aries CloudAgent Python(ACA-Py)」を使用します。

◆ 本記事のゴール

Hyperledger Ariesの開発環境を構築し、最終的に「ACA-Pyを起動し、Swagger(REST-APIをブラウザのGUIから呼び出せるぺージ)にアクセスできること」をゴールとしています。 なお、ACA-Pyを使用した実際のアプリ開発については次回の記事でご紹介予定です。

2. 環境構築

◆ 事前準備

まず初めに、下記のダウンロード、およびインストールを行ってください。

Git for Windows

「GitBashの起動」まで実施します(ユーザー名・メールアドレスの登録は不要)。

Maven

最後(「mvn -v」での動作確認)まで実施します。

Docker for Desktop

python3

Aries-CloudAgent-Python(ACA-Py)

zipをダウンロードして適当な場所に展開(※git cloneでもOK)

VON-network

zipをダウンロードして適当な場所に展開(git cloneでもOK)
※ 「VON-network」は、Indyのノード群をDocker環境で構築してくれるパッケージソフトです

※ VON-networkについて
VON」とは「Verifiable Organisations Network」の略で、 カナダのブリティッシュ・コロンビア州でその地域の人々やサービスのために開発されている、 「オープンで統合された、信頼できる組織」のネットワークです。リソースは主にGoogleドライブ(一部Github)で公開されており、その1つとしてポータブル版(= Docker環境)のindy-nodeのネットワークとしてVON-networkが登録されています。

◆ プロキシ設定

※ プロキシ環境下の場合に実施してください

< 環境変数の設定 >
「http_proxy」、「https_proxy」という名前でWindowsの環境変数を設定します。 値はプロキシサーバのURLになります。

図1_環境変数の設定

< Gitのプロキシ設定 >
コマンドプロンプトを起動し、以下のコマンドを実行します。

git config --global http.proxy {プロキシサーバのURL、ポート}git config --global https.proxy {プロキシサーバのURL、ポート}

< Mavenのプロキシ設定 >
「(Mavenのインストールフォルダ)\conf\settings.xml」のプロキシ設定欄に、以下の内容を設定します。
※ デフォルトではコメントアウトされているので、コメントを外す必要があります。

<proxy><id>optional</id><active>true</active><protocol>http</protocol><userName></userName><host>{プロキシサーバのURL}</host><port>{プロキシサーバのポート}</port><nonProxyHosts>{プロキシを使用しないURL群} ※必要な場合</nonProxyHosts></proxy>

< Dockerのプロキシ設定 >
Docker Desktopの設定画面から、プロキシを設定します。

図2_プロキシサーバの設定(Docker Desktop)

「C:\Users(ユーザー名).docker\config.json」を、以下の内容に書き換えます。

{
"credStore": "desktop",
"credsStore": "desktop",
"proxies": {
"default": {
"httpProxy": "{プロキシサーバのURL、ポート}",
"httpsProxy": "{プロキシサーバのURL、ポート}",
"noProxy": "{プロキシを使用しないURL群}"
}
},
"stackOrchestrator": "swarm"
}

◆ ACA-Pyの起動

  1. von-networkを起動し、DIDを登録する
  • GitBashを開き、von-networkの場所に移動します。
図3_von-networkの起動準備
  • 以下のコマンドを実行し、コンテナをビルドします。
./manage build
  • ビルドが完了したら、以下のコマンドを実行してコンテナを起動します。
./manage start --logs

von-networkが起動したら、以下のURLから管理コンソールにアクセスする事ができます。

http://localhost:9000

図4_VONネットワーク管理コンソール
  • 「Wallet seed」に適当な文字列(32文字)を入れ、「Register DID」を押してください。
図5_組織の登録1
図6_組織の登録2

2. Genesisファイルの作成(デモアプリからコピー)

  • 「aries-cloudagent-python-main/demo」配下にある「local-genesis.txt」を、「aries-cloudagent-python-main/aries_cloudagent」にコピーしてください。
図7_Genesisファイルの作成1

3. Genesisファイルの編集

  • von-networkの管理コンソールから「Genesis Transaction」ボタンを押し、開いたテキストをすべてコピーして、先ほどコピーしたlocal-genesis.txtに上書きしてください。
図8_Genesisファイルの作成2

4. 起動ポートの設定

  • 「scripts/run_docker」を開き、最下行を以下のように変更してください(ポートを記入)
図9_起動ポートの設定
$CONTAINER_RUNTIME run --rm -ti --name "aries-cloudagent-runner_${RAND_NAME}" \$ARGS aries-cloudagent-run "$@"

$CONTAINER_RUNTIME run --rm -ti --name "aries-cloudagent-runner_${RAND_NAME}" -p 8030-8032:8030-8032 $ARGS aries-cloudagent-run "$@"

※ 1行にまとめています。 また、指定するポートは任意のポートで構いません。
※ ACA-Pyを複数台用意する際は、フォルダごと複製した上で、ここのポートを違う値に変えてください(同じだと衝突するため)

5. ACA-Pyの起動

  • Gitbashを開き、「aries-cloudagent-python-main」で以下のコマンドを実行してください
    ※ ポートは(4)で指定したものと対応するようにしてください
./scripts/run_docker start \--endpoint http://{自端末のIP}:8030 \--ledger-pool-name default_pool \--genesis-file ./aries_cloudagent/local-genesis.txt \--admin 0.0.0.0 8032 \--admin-insecure-mode \--inbound-transport http 0.0.0.0 8030 \--outbound-transport http \--log-level INFO \--wallet-name holder_wallet \--wallet-key test \--wallet-type indy \--wallet-local-did \--seed 00000000000000000000000000000000 \--recreate-wallet \--auto-provision
図10_ACA-Pyの起動

「Listening…」と表示されたら起動完了です。
「Administration API」と書かれたポートから、Swaggerにアクセスできます。 Swaggerではブラウザ上の操作でREST APIの呼び出しが行えるため、ここで接続やCredentialなどのAPIを試すことができます。
http://localhost:8032

図11_ACA-Py起動後のSwagger画面

ここまで、ACA-Pyの環境構築手順を紹介してきました。
次回の記事ではACA-PyのSwaggerを使用しつつ、実際にアプリを開発する際のポイントについてご説明します。

Hyperledger Indy・Ariesによる分散型IDアプリケーション開発ガイド
1. 概要編
2. 環境構築編
3. 実装編

お問い合わせ: bc_prom@ml.tis.co.jp
記:TIS Blockchain Promotion Office (Hiromichi Abe)
Thanks to Takahiro Uchidate and Hideki Nakachi.

--

--