メインコンテンツまでスキップ

4. 学習用アカウントの準備

本書では、実ネットワーク上の資産を扱うのではなく、テストネット上で動作を確認できるように専用のアカウントを用意します。 テストネットでは faucet(フォーセット)を利用して、少量の XYM を無料で受け取ることができます。 これにより、安全に開発や学習を行うことが可能です。

4.1 ニーモニックからの生成

4.1.1 4 つのアカウントを生成

Symbol SDK では、ニーモニックから複数のアカウントを派生させることができます。 学習においては、送信者、受信者、マルチシグ関連、特殊用途などを想定し、あらかじめ 4 つのアカウントを生成しておくと便利です。

【コード例:ニーモニックからアカウントを生成】

4.1.2 コンスタントクラスに設定

生成したアカウントをプログラム内で使いやすくするため、定数クラスにまとめます。 これにより、学習中にアカウントを都度生成する必要がなく、ソースコードの可読性と再利用性が向上します。

import { Bip32 } from 'symbol-sdk';
import { KeyPair, SymbolFacade } from 'symbol-sdk/symbol';

export class KeyStore {
private readonly mnemonic =
'evil method angle water happy candy dawn follow stand identify expand only ' +
'***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****';
private readonly password = '';

private keypairs: KeyPair[] = [];

constructor(networkType: 'mainnet' | 'testnet' = 'testnet') {
const maxAccounts = 4;
const facade = new SymbolFacade(networkType);
const bip32Node = new Bip32().fromMnemonic(this.mnemonic, this.password);
for (let i = 0; i < maxAccounts; i++) {
const bip32Path = facade.bip32Path(i);
const childBip32Node = bip32Node.derivePath(bip32Path);
const keypair = SymbolFacade.bip32NodeToKeyPair(childBip32Node);
this.keypairs.push(keypair);
}
}

public get AlicePrivateKey() {
return this.keypairs[0].privateKey;
}
public get AlicePublicKey() {
return this.keypairs[0].publicKey;
}

public get BobPrivateKey() {
return this.keypairs[1].privateKey;
}
public get BobPublicKey() {
return this.keypairs[1].publicKey;
}

public get CarolPrivateKey() {
return this.keypairs[2].privateKey;
}
public get CarolPublicKey() {
return this.keypairs[2].publicKey;
}

public get DavePrivateKey() {
return this.keypairs[3].privateKey;
}
public get DavePublicKey() {
return this.keypairs[3].publicKey;
}
}

4.2 テストネットでの利用

4.2.1 フォーセットから少量 XYM を取得

テストネットの XYM は以下のフォーセットから入手できます。

テストネットの XYM を受け取るには、10 人以上のフォロワーと作成から 31 日以上経過した x.com アカウントが必要です。

4.2.2 デスクトップウォレットに設定

取得した XYM を確認するために、公式の Symbol デスクトップウォレットに学習用アカウントをインポートします。 ウォレットに設定しておくことで、トランザクションの確認や署名状態の可視化などを簡単に行えるようになります。