Lisk SDK (lisk-client)を使いながらJavaScriptを勉強してみない? - その2 -
こんばんは!万博おじです。
今回で3回目、内容は「文字列操作:パスフレーズからアドレスを取得」です。
準備
JavaScriptの基本:パスフレーズを生成
文字列操作:パスフレーズからアドレスを取得
非同期処理:APIからアカウント情報を取得
ループ処理:APIからトランザクション情報を取得
トランザクションの生成と送信
トランザクション手数料の取得
はじめに
前回はJavaScriptの基本ということで、JavaScriptの関数を作ってみたり、変数・定数について書きました。
今回は文字列操作について触れつつ、前回生成したパスフレーズからLiskのアドレスなどを取得していきます。
それではしばしお付き合いください😊
前回
今回のお勉強用ソースコード
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>画面タイトルです</title>
<script src="https://js.lisk.com/lisk-client-5.2.2.min.js" defer></script>
<style>
html { font-size: 10px; }
body { font-size: 1.6rem; }
input[type="text"],
input[type="number"],
input[type="password"],
textarea,
button {
font-size: 1.6rem;
padding: 5px;
}
</style>
</head>
<body>
<div>
<button type="button" style="width: 150px;" onclick="createAccount()">アカウントを作成</button>
</div>
<hr>
<!-- (1)パスフレーズの表示場所 -->
<h4>パスフレーズ:</h4>
<div id="lisk-passphrase"></div>
<!-- (2)アドレスの表示場所 -->
<h4>アドレス:</h4>
<div id="lisk-address"></div>
<div id="lisk-bufferAddress"></div>
<!-- (3)公開鍵の表示場所 -->
<h4>公開鍵:</h4>
<div id="lisk-publicKey"></div>
<!-- (4)残高の表示場所 -->
<h4>残高:</h4>
<div id="lisk-balance"></div>
<script>
/*
* アカウント作成処理
*/
function createAccount() {
// (1)パスフレーズを生成して画面に表示
const mnemonic = lisk.passphrase.Mnemonic.generateMnemonic();
document.querySelector("#lisk-passphrase").innerHTML = mnemonic;
// (2)アドレスと公開鍵を取得して画面に表示
const addressAndPublicKey = lisk.cryptography.getAddressAndPublicKeyFromPassphrase(mnemonic);
const bufferAddress = addressAndPublicKey.address;
const publicKey = addressAndPublicKey.publicKey;
document.querySelector("#lisk-bufferAddress").innerHTML = `(${bufferAddress.toString("hex")})`;
document.querySelector("#lisk-publicKey").innerHTML = publicKey.toString("hex");
// (3)アドレスを取得して画面に表示
const address = lisk.cryptography.getLisk32AddressFromAddress(bufferAddress);
document.querySelector("#lisk-address").innerHTML = address;
// (4)残高は0LSKとする
document.querySelector("#lisk-balance").innerHTML = "0LSK";
}
</script>
</body>
</html>
前回からの変更点
ボディ部にアドレス、公開鍵、残高を追加しました。
アドレス(id="lisk-address" と id="lisk-bufferAddress")
公開鍵(id="lisk-publicKey")
残高(id="lisk-balance")
また、createAccount 関数にアドレス取得などの機能を追加しました。
画面を開くとこんな感じです。
「アカウントを作成」ボタンを押すとアカウント情報を表示します。
ソースコードの説明:HTML
<!-- こめんと -->
HTMLのコメントです。
画面上に表示したくないプログラム上のメモを記載する場合に使用します。
<!-- がコメント開始
--> がコメント終了
を表します。
ℹ️ここで何をしているかはプログラムを書いた本人でもしばらくしたら忘れてしまうのでコメントはできる限り書くようにしましょう。😂
コメントはあまり長くならないように端的に何をしているのかを書くといいと思います。
ソースコードの説明:JavaScript(lisk-client)
lisk.cryptography.getAddressAndPublicKeyFromPassphrase
パスフレーズからアドレスと公開鍵を取得します。
なお、この関数で取得した結果は以下のような形式となっています。
{
address: [1, 2, 3, 4, 5, …],
publicKey: [1, 2, 3, 4, 5, …]
}
lisk.cryptography.getLisk32AddressFromAddress
アドレス(バイナリデータ)からlsk始まりのアドレスを取得します。
ソースコードの説明:JavaScript
// こめんと
JavaScriptのコメントです。
1行コメントと言われ // をつけた後ろがコメントとして扱われます。
/* こめんと */
JavaScriptのコメントです。
複数行にわたってコメントを書く際に使用します。
/* がコメント開始
*/ がコメント終了
を表します。
const bufferAddress = addressAndPublicKey.address;
lisk.cryptography.getAddressAndPublicKeyFromPassphraseで取得した結果内のaddressをbufferAddressという名前の定数に設定します。
const publicKey = addressAndPublicKey.publicKey;
lisk.cryptography.getAddressAndPublicKeyFromPassphraseで取得した結果内のpublicKeyをpublicKeyという名前の定数に設定します。
toString()
文字列ではないものを文字列にします。
なお、バイト配列に対してtoString("hex")とすると16進数の文字列になります。
`○○${変数など}○○`
バッククォート(`)で囲まれている範囲を文字列結合します。
変数などを${}で囲むとその前後にある値と結合されます。
おわりに
今回はここまで!お疲れさまでした!
前回よりは優しいかなーと思います😂
バッククォートを使った文字列の結合はとても便利なのでぜひ覚えてください。
次回はまたちょっと難しくなると思うのでのんびりご覧ください😉
万博おじについて
Liskに関するツールなど開発したりノード管理したりしています。
何かあればTwitter等でご連絡ください。
個人アカウント
Twitter:ys_mdmg
GitHub:lisknonanika
Discord:ys_mdmg#5646
Lisk Explorer:lisk observer, lisk scan
デリゲートアカウント(共同管理)
Twitter:liskcommulab
Discord:CommuLab#0097
Lisk Explorer:lisk observer, lisk scan
管理
ノード:Mainnet / Testnet
Lisk Service:Mainnet / Testnet
デリゲートサイト:Lisk CommuLab