読了時間:4分
概要
プログラミングといえば、JavaScriptを使ったことがない、あるいはその名前を聞いたことがないという人はほとんどいないでしょう。JavaScriptは当初、クライアントサイドのスクリプト言語として開発されましたが、現在ではクライアントおよびサーバーアプリケーションで広く使用されている、機能豊富なオブジェクト指向および手続き型言語となっています。 JavaScriptの構文はJavaやC++から影響を受けており、ECMAScript仕様に基づいています。1,444,231を超えるライブラリが存在し、その数は増え続けており、今日のJavaScriptは、イーサリアム上のdApp(分散型アプリケーション)の開発を含め、事実上あらゆる場面で活用されています。このガイドでは、Ethers.jsを使用してJavaScriptでイーサリアムアドレスを作成する方法について解説します。
前提条件
- お使いのシステムにNode.jsがインストールされていること。
- テキストエディタ
- ターミナル(別名:コマンドライン)
イーサリアムアドレスとは何ですか?
インターネット上のどのプラットフォームにログインする際も、認証情報を使って本人確認を行う必要があります。イーサリアムアドレスをユーザー名、それに対応する秘密鍵をパスワードと見なしてください。イーサリアムアドレスは公開されており、他人と共有することも可能ですが、秘密鍵は常に秘密にしておく必要があります。この組み合わせを使用することで、イーサリアムブロックチェーンとやり取りを行うことができます。 イーサリアムアドレスはブロックチェーン上でのあなたのIDであり、次のような形式になります。「0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE」。有効なイーサリアムアドレスは、以下の目的で必要となります:
- イーサリアムの送受信
- 取引の署名・送信
- 分散型アプリケーションへの接続
イーサリアムアドレスの生成方法:
まず、64文字(16進数)のランダムな秘密鍵(256ビット/32バイト)が生成されます。 例:
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
その後、生成された秘密鍵を用いて、楕円曲線デジタル署名アルゴリズム(ECDSA)により、128(16進数)文字(64バイト)の公開鍵が導出されます。例えば:
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
その後、公開鍵(128文字/64バイト)にKeccak-256ハッシュ関数を適用し、64文字(32バイト)のハッシュ文字列を生成します。この文字列の最後の40文字/20バイトに0xを接頭辞として付加したものが、最終的なイーサリアムアドレスとなります。例えば:
0xd5e099c71b797516c10ed0f0d895f429c2781142
注:コーディングにおける「0x」は、その数値または文字列が16進数で表記されていることを示します。
Ethers.js とは何ですか?
Ethers.js は、現在最も広く使用されているイーサリアム用ライブラリであるWeb3.js の軽量な代替ライブラリです。Ethers.js は、他のライブラリに比べて安定性が高く、バグも少ないと一部で評価されており、充実したドキュメントも備えています。また、このライブラリは初心者にも非常に親しみやすいものです。Ethers.js はメンテナンスがしっかりと行われており、多くの新規開発者から Web3.js よりも好まれています。
Ethers.js の詳細や、Ethers.js を使ってイーサリアムネットワークに接続する方法については、こちらをご覧ください。
JavaScriptでイーサリアムアドレスを生成する
まず最初に、システムに Node.js がインストールされているかどうかを確認します。確認するには、ターミナルまたはコマンドプロンプトで以下の内容をコピーして貼り付けてください:
$ node -v
インストールされていない場合は、Node.jsのLTS版を公式サイトからダウンロードできます。
Node.jsが正しくインストールされていれば、npm(Node Package Manager、Node.jsの一部)を使ってEthers.js(バージョン6)ライブラリを追加してみましょう。
$ npm i ethers
このステップで最もよく発生する問題は、`node-gyp` の内部的な不具合です。node-gyp のインストール手順については、こちらをご覧ください。
注:node-gypに関する問題が発生した場合は、お使いのPythonのバージョンが、上記の手順に記載されている互換バージョンのいずれかと一致している必要があります。
もう1つよくある問題として、キャッシュが古くなっていることが挙げられます。次のコマンドを入力して、npmのキャッシュをクリアしてください:
$ npm cache clean
Ethers.js のインストールが正常に完了したら、イーサリアムアドレスの作成に進みましょう。
address.js という名前のファイルを作成します。これは、ランダムな秘密鍵を生成し、その鍵からイーサリアムアドレスを作成する簡単なスクリプトです。以下の内容を address.js ファイルにコピー&ペーストしてください:
var ethers = require('ethers');
var crypto = require('crypto');
var id = crypto.randomBytes(32).toString('hex');
var privateKey = "0x"+id;
コンソール.log("保存はしますが、共有はしないでください:", privateKey);
var wallet = new ethers.ウォレット(秘密鍵);
コンソール.log("アドレス: " + wallet.address);
上記のコードの説明
1行目~2行目:Node.jsに付属するethersライブラリとcryptoモジュールをインポートする
4行目:cryptoオブジェクトを使用して32バイトのランダムな16進数文字列を生成し、それをid変数に格納します。
4行目:id内の文字列に「0x」という接頭辞を追加し、その新しい文字列をprivateKeyという変数に格納します。
6行目:警告を表示しながら秘密鍵を出力します。
8行目:privateKeyを使用して新しいウォレットを作成し、それをwallet変数に格納します。
9行目:「Address:」というメッセージとともに、新しく作成されたウォレットのアドレスを出力します。
スクリプトを保存して実行し、新しいイーサリアムアドレスを生成してください。
$ node address
コードが正常に実行されると、出力は下のスクリーンショットのようなものになります。1行目は秘密鍵、2行目は新しく作成されたイーサリアムアドレスです。
結論
イーサリアムアドレスは、イーサリアムネットワーク上でのあなたのIDです。ネットワークとやり取りしたり、トランザクションを実行したりするには、これが必要です。Ethers.jsの学習を続けるには、「Ethers.jsを使用してイーサリアムトランザクションを送信する方法」というガイドをご覧ください。Ethers.jsに関する詳細情報は、公式ドキュメントでご確認ください。 ご覧の通り、JavaScriptと最新のライブラリを使えば、新しいイーサリアムアドレスの生成はあっという間に完了します。イーサリアムブロックチェーン上でのdApp開発は、急成長を続けるイーサリアムコミュニティによって継続的に更新・改善されている様々なツールによって支えられています。手頃な価格で超高速なイーサリアムノードを提供するQuicknodeから、さらにわかりやすいガイドをぜひご期待ください。Quicknodeの始め方や、わずか数分で独自のイーサリアムエンドポイントをセットアップする方法について学んでみましょう。
イーサリアムに関する記事やガイドをもっと読みたい方は、ぜひニュースレターにご登録ください。ご意見やご感想がございましたら、Twitterからお気軽にお寄せください。また、Discordコミュニティサーバーでは、これまで出会った中で最もクールな開発者たちが集まっていますので、いつでもお気軽にチャットで交流してください :)
