結論: HOME
を指定してdfx identity new
またはdfx identity get-principal
を実行します。
はじめに
こんにちは、@bioerrorlogです。
dfx (dfinity sdk)を使うと、identityを生成することが出来ます。
一番シンプルなやり方は単にidentity new
コマンドを使うことでしょう。
dfx identity new alice # Creating identity: "alice". # Created identity: "alice". ## identity: aliceが作成されたことを確認 dfx identity list # alice # anonymous # default * ## identity: alice用のprivate keyはホームディレクトリ配下に生成される ls ~/.config/dfx/identity/alice/ # identity.pem
しかしこのやり方だと、ホームディレクトリ配下~/.config/dfx/identity/
に変更が入ってしまいます。
一時的なテスト用途のダミーidentityを生成するだけなら、できれば任意のディレクトリにprivate keyを生成したいものです。
今回は、dfxを使って任意のディレクトリ配下にidentityを生成するやり方をメモします。
任意のディレクトリ配下にidentityを生成する
やり方
環境変数HOME
を指定してidentity new
を実行することで、指定のディレクトリ配下にidentityを作成することが出来ます。
(冷静に考えれば当然かもですが。。)
mkdir alice HOME=alice dfx identity new alice # Creating identity: "alice". # Creating the "default" identity. # - generating new key at alice/.config/dfx/identity/default/identity.pem # Created the "default" identity. # Created identity: "alice". ## 指定ディレクトリにdefault identityが生成されたことを確認 HOME=alice dfx identity list # alice # anonymous # default * ls alice/.config/dfx/identity/alice/ # identity.pem ## HOMEを指定しなければ元のホームディレクトリ配下のidentityが参照される dfx identity list # anonymous # bob # default *
これで、雑にディレクトリを切ってそこにテスト用のidentityを作成することが出来ます。
補足: dfx identity get-principalを使ったやり方
dfx identity get-principal
を実行した場合でも、HOME
指定のディレクトリに既存のidentityが存在しない場合はprivate keyが生成/default identityが作成されます。
mkdir alice HOME=alice dfx identity get-principal # Creating the "default" identity. # - generating new key at alice/.config/dfx/identity/default/identity.pem # Created the "default" identity. # tly4z-2hi4s-n3und-lovjl-3kn62-ofqjp-akobz-uuwfa-pjvea-boajs-oqe ## 指定ディレクトリにdefault identityが生成されたことを確認 HOME=alice dfx identity list # anonymous # default * ls alice/.config/dfx/identity/default/ # identity.pem ## HOMEを指定しなければ元のホームディレクトリ配下のidentityが参照される dfx identity list # anonymous # bob # default *
活用事例
こうした任意ディレクトリ配下でのidentityは、shellスクリプトでcanister callのテストを書くときに活用できそうです。
複数のidenittyを切り替えながらcanister callのシナリオをテストしたいとき、上記のようなやり方で一時的なダミーidentityを複数生成し、HOME
を切り替えることでidentityをスイッチすることが出来ます。
Rocklabsの下記コードが事例として参考になります。 github.com
おわりに
今回は、dfxで任意のディレクトリ配下にidentityを生成する方法をメモしました。
先述のRocklabsのコードを眺めていて、なるほどshellでidentitiy切り替える時はこういう戦法があるのかーと思って備忘がてらに書きました。
ic-replなどツールでは大抵ランダムidentityの生成機能が提供されていますが、素のshellでパッと書きたいときの参考になれば幸いです。
[関連記事]