4. 学習用アカウントの準備
本書では、実ネットワーク上の資産を扱うのではなく、テストネット上で動作を確認できるように専用のアカウントを用意します。 テストネットでは faucet(フォーセット)を利用して、少量の XYM を無料で受け取ることができます。 これにより、安全に開発や学習を行うことが可能です。
4.1 ニーモニックからの生成
4.1.1 4 つのアカウントを生成
Symbol SDK では、ニーモニックから複数のアカウントを派生させることができます。 学習においては、送信者、受信者、マルチシグ関連、特殊用途などを想定し、あらかじめ 4 つのアカウントを生成しておくと便利です。
【コード例:ニーモニックからアカウントを生成】
4.1.2 コンスタントクラスに設定
生成したアカウントをプログラム内で使いやすくするため、定数クラスにまとめます。 これにより、学習中にアカウントを都度生成する必要がなく、ソースコードの可読性と再利用性が向上します。
- TypeScript
- Python
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;
}
}
from symbolchain.Bip32 import Bip32
from symbolchain.facade.SymbolFacade import KeyPair, SymbolFacade
class KeyStore:
mnemonic = (
'evil method angle water happy candy dawn follow stand identify expand only '
'***** ***** ***** ***** ***** ***** ***** ***** ***** ***** ***** *****'
)
password = ''
def __init__(self, network_type='testnet'):
max_accounts = 4
self.keypairs: list[KeyPair] = []
self.facade = SymbolFacade(network_type)
bip32_node = Bip32().from_mnemonic(self.mnemonic, self.password)
for i in range(max_accounts):
bip32_path = self.facade.bip32_path(i)
child_bip32_node = bip32_node.derive_path(bip32_path)
keypair = SymbolFacade.bip32_node_to_key_pair(child_bip32_node)
self.keypairs.append(keypair)
@property
def AlicePrivateKey(self):
return self.keypairs[0].private_key
@property
def AlicePublicKey(self):
return self.keypairs[0].public_key
@property
def BobPrivateKey(self):
return self.keypairs[1].private_key
@property
def BobPublicKey(self):
return self.keypairs[1].public_key
@property
def CarolPrivateKey(self):
return self.keypairs[2].private_key
@property
def CarolPublicKey(self):
return self.keypairs[2].public_key
@property
def DavePrivateKey(self):
return self.keypairs[3].private_key
@property
def DavePublicKey(self):
return self.keypairs[3].public_key
4.2 テストネットでの利用
4.2.1 フォーセットから少量 XYM を取得
テストネットの XYM は以下のフォーセットから入手できます。
- フォーセット: https://testnet.symbol.tools/
テストネットの XYM を受け取るには、10 人以上のフォロワーと作成から 31 日以上経過した x.com アカウントが必要です。
4.2.2 デスクトップウォレットに設定
取得した XYM を確認するために、公式の Symbol デスクトップウォレットに学習用アカウントをインポートします。 ウォレットに設定しておくことで、トランザクションの確認や署名状態の可視化などを簡単に行えるようになります。