⚠️注意点 ソースコードはあくまで一例なので、動作は自己責任でお願いいたします!
2.1 Pythonスクリプトの構造
1. フォルダ・ファイル構成
• main.py:エントリーポイントとなるメインスクリプト
• config.py:トークンアドレスやネットワーク情報などの設定ファイル
• utils/:価格取得、トランザクション管理など汎用的な関数をまとめたディレクトリ
こうすることで、役割ごとにファイルを分け、保守性を高めることができます。
2. 依存ライブラリ
pip install web3
pip install python-dotenv
pip install requests
pip install pandas
などのライブラリを使用しています。web3.py
は当然として、秘密鍵などの管理に.env
を活用するためpython-dotenv
が必須です。また、データ分析用にpandas
を入れておくと便利です。
3. configファイルの記述例
# config.py
INFURA_URL = "https://mainnet.infura.io/v3/xxxxxx"
UNISWAP_ROUTER_ADDRESS = "0x..."
WALLET_ADDRESS = "0xあなたのウォレットアドレス"
# ...etc
このようにネットワーク関連やアドレスを一元管理しておくと、テストネットや別チェーンに移行する際にも簡単に設定を切り替えられます。
2.2 主要な関数の紹介
fetch_price()
– 価格取得
この関数では、Uniswap V2やV3のサブグラフ、あるいはChainlinkのPrice Feedなどからトークン価格を取得します。- pythonコードをコピーする
def fetch_price(token_address): # Example: The Graph API or DEX reserves # ここでHTTPリクエストを投げたり、web3でコントラクトを読み込んだりする return current_price
ポイントは「価格情報の信頼性」と「更新頻度」。APIが落ちたり遅延したりする可能性もあるので、バックアップ手段を用意すると安心です。 trade()
– トレード実行
トークンA→トークンBへスワップする場合に呼び出す関数です。pythonコードをコピーするdef trade(token_in, token_out, amount_in): # UniswapなどのRouterコントラクトを呼び出してswapを実行 # tx_hashを返すなどして実行結果を確認できるようにする return tx_receipt
スリッページやガス代を設定する箇所が重要で、過度なスリッページによるロスやガス高騰時の失敗を防ぐためのロジックが必要になります。monitor_gas()
– ガス代監視
イーサリアムの場合、ガス代の高騰が激しいときにトランザクションが失敗したり、成功しても手数料がかなりかかったりします。pythonコードをコピーするdef monitor_gas(): # EtherscanなどのAPIから現在のガス価格を取得 return gas_price
一定の閾値以上にガスが高騰している時は、トレードを控える・送信を遅延させるといった処理を入れておくことで無駄なコストを減らせます。
2.3 環境変数の管理
- .envファイルで秘密鍵を管理bashコードをコピーする
# .env PRIVATE_KEY=0xyourprivatekey
こんな感じで秘密鍵を直接コードに書かず、.env
にだけ記載します。Gitリポジトリには.env
ファイルを含めないように**.gitignore**を設定し、漏洩を防止しましょう。 - AWS Secrets Managerなどの活用
重要な運用を想定するなら、クラウドのシークレット管理サービスを使うのがおすすめです。CI/CDパイプラインと連携させることで、秘密情報をさらにセキュアに扱うことができます。 - 複数ネットワーク・複数アカウント
テストネット用と本番用でウォレットやRPCエンドポイントを切り替える場合は、環境変数を別々に用意しておきましょう。.env.dev
:RopstenやGoerliなどテストネット用.env.prod
:Mainnet用
といった形で分けると、誤ってメインネットに送金してしまうリスクを低減できます。
第2章のまとめ
- コード管理の基本:メインスクリプト・設定ファイル・共通関数を分けることで、保守・拡張性を高める。
- 主要関数のポイント:価格取得、売買実行、ガス監視など、DeFi自動売買に欠かせない機能をしっかり分割。
- セキュリティ・設定管理:秘密鍵やネットワーク情報は
.env
やSecrets Managerを活用し、漏洩リスクを最小化。
コメント