3.アカウント
アカウントは秘密鍵に紐づく情報が記録されたデータ構造体です。アカウントと関連づいた秘密鍵を使って署名することでのみブロックチェーンのデータを更新することができます。
3.1 アカウント生成
アカウントには秘密鍵と公開鍵をセットにしたキーペア、アドレスなどの情報が含まれています。まずはランダムにアカウントを作成して、それらの情報を確認してみましょう。
新規生成
以下の手順で秘密鍵を作成し、秘密鍵より公開鍵を導出します。
aliceKey = new symbolSdk.symbol.KeyPair(symbolSdk.PrivateKey.random());
console.log(aliceKey);
aliceAddress = facade.network.publicKeyToAddress(aliceKey.publicKey);
console.log(aliceAddress);
出力例
> KeyPair {_privateKey: PrivateKey, _keyPair: {…}}
_keyPair: {
publicKey: Uint8Array(32),
privateKey: Uint8Array(32)
}
_privateKey: PrivateKey {
bytes: Uint8Array(32)
}
> Address {bytes: Uint8Array(24)}
秘密鍵と公開鍵の導出
console.log(aliceKey.privateKey.toString());
console.log(aliceKey.publicKey.toString());
> 1E9139CC1580B4AED6A1FE110085281D4982ED0D89CE07F3380EB83069B1****
> D4933FC1E4C56F9DF9314E9E0533173E1AB727BDB2A04B59F048124E93BEFBD2
注意事項
秘密鍵を紛失するとそのアカウントに紐づけられたデータを操作することが出来なくなります。また、他人は知らないという秘密鍵の性質を利用してデータ操作の署名を行うので、秘密鍵を他人に教えてはいけません。組織のなかで秘密鍵を譲り受けて運用を続けるといった行為も控えましょう。 一般的な Web サービスでは「アカウント ID」に対してパスワードが割り振られるため、パスワードの変更が可能ですが、ブロックチェーンではパスワードにあたる秘密鍵に対して一意に決まる ID(アドレス)が割り振られるため、アカウントに紐づく秘密鍵を変更するということはできません。
アドレスの導出
aliceRawAddress = aliceAddress.toString();
console.log(aliceRawAddress);
> TBXUTAX6O6EUVPB6X7OBNX6UUXBMPPAFX7KE5TQ
これらがブロックチェーンを操作するための最も基本的な情報となります。また、秘密鍵からアカウントを生成したり、公開鍵やアドレスのみを扱うクラスの生成方法も確認しておきましょう。
秘密鍵からアカウント生成
aliceKey = new symbolSdk.symbol.KeyPair(
new symbolSdk.PrivateKey(
"1E9139CC1580B4AED6A1FE110085281D4982ED0D89CE07F3380EB83069B1****",
),
);
aliceAddress = facade.network.publicKeyToAddress(aliceKey.publicKey);
公開鍵クラスの生成
alicePublicAccount = new symbolSdk.symbol.PublicKey(
Uint8Array.from(
Buffer.from(
"D4933FC1E4C56F9DF9314E9E0533173E1AB727BDB2A04B59F048124E93BEFBD2",
"hex",
),
),
);
console.log(alicePublicAccount);
console.log(alicePublicAccount.toString());
出力例
> PublicKey {bytes: Uint8Array(32)}
> D4933FC1E4C56F9DF9314E9E0533173E1AB727BDB2A04B59F048124E93BEFBD2
アドレスクラスの生成
aliceAddress = new symbolSdk.symbol.Address(
"TBXUTAX6O6EUVPB6X7OBNX6UUXBMPPAFX7KE5TQ",
);
console.log(aliceAddress);
console.log(aliceAddress.toString());
出力例
> Address {bytes: Uint8Array(24)}
> TBXUTAX6O6EUVPB6X7OBNX6UUXBMPPAFX7KE5TQ
3.2 アカウントへの送信
アカウントを作成しただけでは、ブロックチェーンにデータを送信することはできません。
パブリックブロックチェーンはリソースを有効活用するためにデータ送信時に手数料を要求します。
Symbol ブロックチェーンでは、この手数料を XYM という共通トークンで支払うことになります。
アカウントを生成したら、この後の章から説明するトランザクションを実行するために必要な手数料を送信しておきます。
フォーセットから送信
テストネットではフォーセット(蛇口)サービスから検証用の XYM を入手することができます。
メインネットの場合は取引所などで XYM を購入するか、投げ銭サー ビス(NEMLOG,QUEST)などを利用して寄付を募りましょう。
テストネット
- FAUCET(蛇口)
メインネット
- NEMLOG
- QUEST
エクスプローラーで確認
フォーセットから作成したアカウントへ送信が成功したらエクスプローラーで確認してみましょう。
- テストネット
- メインネット
3.3 アカウント情報の確認
ノードに保存されているアカウント情報を取得します。