メインコンテンツへスキップ

Pythonで新しいイーサリアムアドレスを生成する方法

更新日:
2025年11月26日

読了時間:4分

概要

Pythonは、非常に汎用性の高いプログラミング言語の一つであり、その活用シーンは多岐にわたります。Pythonを使えば、クライアントサイドからバックエンドに至るまで、さまざまなアプリケーションを構築することができます。このガイドでは、Web3Pyライブラリを使用してPythonでイーサリアムアドレスを作成する方法について解説します。

前提条件

  • お使いのシステムにPython(バージョン3.6以上)とPip3がインストールされていること。
  • テキストエディタ。

イーサリアムアドレスとは何ですか?

インターネット上のどのプラットフォームにログインする際も、ユーザー名とパスワードの組み合わせが必要です。イーサリアムアドレスをユーザー名、それに対応する秘密鍵をパスワードだと考えてください。このアドレスと秘密鍵の組み合わせを使用することで、イーサリアムブロックチェーンとやり取りを行うことができます。 イーサリアムアドレスは、ブロックチェーン上でのあなたのIDです。その形式は「0xd5e099c71b797516c10ed0f0d895f429c2781142」のようになります。イーサリアムアドレスは公開されており、他人と共有することも可能ですが、秘密鍵は常に秘密にしておく必要があります。イーサリアムアドレスは、秘密鍵を使用して生成されます。以下に、イーサリアムアドレスが生成されるプロセスを説明します:

  • (64 文字(16進数)/256 ビット/32 バイト) のランダムな秘密鍵を生成する 
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
  •  公開鍵は、楕円曲線デジタル署名アルゴリズム(ECDSA)を用いて、秘密鍵(128文字(16進数)/512ビット/64バイト)から導出されます。 
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
  • 次に、(128文字/64バイト)の公開鍵に対してKeccak-256ハッシュ関数が適用され、(64文字/32バイト)のハッシュ文字列が生成されます。この文字列の末尾40文字/20バイトに0xを接頭辞として付加したものが、イーサリアムアドレスとなります。
0xd5e099c71b797516c10ed0f0d895f429c2781142

イーサリアムアドレスが必要となるものは、以下の通りです:

  • ETHの受信・送信。
  • 取引に署名・送信する。
  • アプリケーションへの接続。

Pythonとは何ですか?

Pythonは、幅広い用途に利用できる汎用プログラミング言語です。高水準のデータ構造を備え、動的型付けを採用しています。動的バインディングをはじめとする多くの機能を備えており、スクリプトや、異なるコンポーネントをつなぐ「グルーコード」として活用されるため、複雑なアプリケーションの開発に便利なツールとなっています。また、ほぼすべてのオペレーティングシステムでシステムコールを実行することも可能です。 Pythonは、ほぼすべてのシステムアーキテクチャ上で実行可能であり、広く普及していることから、汎用性の高い言語と言えます。Pythonは、インタプリタ型で対話的なオブジェクト指向プログラミング言語です。

Web3Pyとは何ですか?

Web3.py は、イーサリアムブロックチェーンとのやり取りを支援する Python ライブラリです。Web3.py を使用することで、分散型アプリケーション(dApp)向けのバックエンドクライアントを作成し、ブロックチェーンとのやり取り、データ読み取り、トランザクションの書き込み、スマートコントラクトロジックの実行を行うことができます。当初の API は Web3.js の JavaScript API を基に開発されましたが、時間の経過とともに改良が重ねられ、Python 開発者のニーズや要望により適切に対応できるようになっています。

ここではPythonを使用しているため、Web3.pyを使います。

それでは、Pythonで新しいイーサリアムアドレスを生成する方法を見ていきましょう。

Pythonでイーサリアムアドレスを生成する

まず最初に、お使いのシステムに Python 3.6 以降がインストールされているかどうかを確認しましょう。Python がインストールされているかどうかは、ターミナルまたはコマンドプロンプトで次のように入力することで確認できます:

$ python --version

インストールされていない場合は、Pythonの公式サイトの「ダウンロード」ページにある手順に従ってください

ここでは、イーサリアムとやり取りするために使用されるPythonライブラリ「Web3Py」を使います。PIPを使ってWeb3Pyをインストールします。ターミナルまたはコマンドプロンプトで、次のように入力してください:

$ pip install web3

注:Python やその他のライブラリのバージョンによって、よくあるインストール上の問題が発生することがあります。そのため、問題が発生した場合は、仮想環境を設定して、web3.py のインストールに関するトラブルシューティングを行ってみてください。

すべてが順調に進めば、Web3.pyがシステムにインストールされます。

それでは、Pythonファイルを作成して「address.py」という名前を付け、以下のコードをそのファイルにコピー&ペーストしましょう:

出典: eth_account からインポート Account
import secrets
priv = secrets.token_hex(32)
private_key = "0x" + priv
print ("保存はしても、これを共有しないでください:", private_key)
acct = Account.from_key(秘密鍵)
print("アドレス:", acct.address)

上記のコードの説明

1行目:Web3.pyのeth_accountモジュールからAccountをインポートする

2行目:Pythonの`secrets`モジュールをインポートします。これは、ランダムな16進数文字列を生成するのに役立ちます。

3行目:32バイト/64文字のランダムな16進数文字列を生成し、それを`priv`変数に格納する

4行目:privに格納されている64文字の16進数文字列に「0x」という接頭辞を付加し、新しい文字列を変数private_keyに格納します。

5行目:警告を表示しながら秘密鍵を出力します。

6行目:private_key を使用して新しいアカウントを作成し、それを変数 acct に格納します。

7行目:acct変数に格納されている口座の住所を、「Address:」という文字列とともに表示する

それでは、Pythonプログラムを実行してみましょう。

$ python address.py

手順を正しく実行していれば、次のような出力が表示されるはずです。1行目は秘密鍵、2行目はイーサリアムのアドレスとなっています。

結論

これで独自のイーサリアムアドレス(+秘密鍵)ができたので、トランザクションの送信やスマートコントラクトとのやり取りが可能になりました。詳細については、Web3.pyの公式ドキュメントを参照してください。

イーサリアムに関する記事やガイドをもっと読みたい方は、ぜひニュースレターにご登録ください。ご意見やご感想がございましたら、Twitterからお気軽にお寄せください。また、Discordコミュニティサーバーでは、これまで出会った中で最もクールな開発者たちが集まっていますので、いつでもお気軽にチャットで交流してください :)

このガイドをシェアする