コンテンツにスキップ

テスト用アカウントの作成 | JavaScriptでのXRPL開発 三段編

スクリプトの作成

  1. プロジェクトディレクトリにcreateAccounts.jsという新しいファイルを作成します。

  2. 以下のコードをcreateAccounts.jsに貼り付けます。

    import { Client, Wallet } from 'xrpl';
    // 作成したいアカウントリスト
    const accountNames = [
    'ISSUER_A',
    'ISSUER_B',
    'ALICE',
    'BOB',
    'CHARLIE',
    'DANIEL',
    ];
    // アカウントのウォレットを格納するオブジェクト
    const wallets = {};
    // クライアントを作成
    const client = new Client('wss://s.altnet.rippletest.net:51233');
    const main = async () => {
    await client.connect();
    for (const name of accountNames) {
    const wallet = Wallet.generate();
    wallets[name] = wallet;
    await fundAccount(wallet);
    console.log(`${name}_ADDRESS: ${wallet.address}`);
    console.log(`${name}_SEED: ${wallet.seed}`);
    }
    await client.disconnect();
    };
    // Faucetからアカウントに資金を追加する
    const fundAccount = async (wallet) => {
    const response = await client.fundWallet(wallet);
    // console.log(response);
    };
    main().catch(console.error);

スクリプトの実行

  1. コマンドラインで以下のコマンドを実行して、スクリプトを実行します。

    Terminal window
    node createAccounts.js
  2. 成功すれば、コンソールに以下が表示されます。

    Terminal window
    ISSUER_A_ADDRESS: r████████████████████████████
    ISSUER_A_SEED: s████████████████████████████
    ISSUER_B_ADDRESS: r████████████████████████████
    ISSUER_B_SEED: s████████████████████████████
    ALICE_ADDRESS: r████████████████████████████
    ALICE_SEED: s████████████████████████████
    BOB_ADDRESS: r████████████████████████████
    BOB_SEED: s████████████████████████████
    CHARLIE_ADDRESS: r████████████████████████████
    CHARLIE_SEED: s████████████████████████████
    DANIEL_ADDRESS: r████████████████████████████
    DANIEL_SEED: s████████████████████████████

    上記を元に、メモをしておきましょう。

    # トークン発行者A
    Address:
    Secret:
    # トークン発行者B
    Address:
    Secret:
    # アリス
    Address:
    Secret:
    # ボブ
    Address:
    Secret:
    # チャーリー
    Address:
    Secret:
    # ダニエル
    Address:
    Secret:

環境変数ファイルの作成

環境変数ファイル(.env)を利用することで、効率的なソース管理ができるようになります。

このテストプロジェクトでは、アカウントの秘密鍵を管理するために使用します。 .envファイルで管理することで、各ソースで共通のアカウントの呼び出しが可能になります。

プロダクションレベルのプロジェクトでは必須の知識となりますので覚えておきましょう。

ライブラリのインストール

dotenvライブラリをインストールします。

Terminal window
npm install dotenv

.env ファイルの作成

プロジェクトのルートに.envというファイルを作成し、以下のように定義してください。

ISSUER_A_SEED=s████████████████████████████
ISSUER_B_SEED=s████████████████████████████
ALICE_SEED=s████████████████████████████
BOB_SEED=s████████████████████████████
CHARLIE_SEED=s████████████████████████████
DANIEL_SEED=s████████████████████████████

※不可視ファイルのため、Finderなどでは標準で表示されません。

wallets.js の作成

プロジェクトのルートにwallets.jsというファイルを作成し、以下のソースを記述してください。

上記で作成した.envに定義した情報からアカウント情報生成し、オブジェクトをexportするスクリプトを作成します。

import { Wallet } from 'xrpl';
import { config } from 'dotenv';
config(); // dotenvの設定を読み込む
export const wallets = {
issuerA: Wallet.fromSeed(process.env.ISSUER_A_SEED),
issuerB: Wallet.fromSeed(process.env.ISSUER_B_SEED),
alice: Wallet.fromSeed(process.env.ALICE_SEED),
bob: Wallet.fromSeed(process.env.BOB_SEED),
charlie: Wallet.fromSeed(process.env.CHARLIE_SEED),
daniel: Wallet.fromSeed(process.env.DANIEL_SEED),
};

使用方法

以下のように使用することができます。

import { Client} from 'xrpl';
import { wallets } from './wallets.js';
const client = new Client('wss://s.altnet.rippletest.net:51233');
async function main() {
try {
await client.connect();
const { issuerA, issuerB, alice, bob, charlie, daniel } = wallets;
...
}
}

このように、少し工夫するだけで各ファイルで共通のアカウント情報を呼び出すことができるようになりました。

効率的に学習を進めることができると思いますし、自分で考えたプロダクトなどにも応用できるかと思います。