背景
前回までの記事では、イーサリアムベースの新規トークンの売買によって収益化が可能か検証したいと記事を作成していました。
思っていた方向性では進めることができなそうだったため、現在の進捗と方針を備忘録代わりに残しておこうと思います。
前回の記事はこちらです。
何が課題だったのか
新しいコントラクトの情報を得るためにweb3ライブラリを使用しているのですが、このライブラリを使用する際にはノードと呼ばれるものに接続する必要があります。
接続方法はいくつか種類がありInfuraというサービスを利用する予定だったのですが、思っていたよりもデータの取得可能量が少なかったという問題があることがわかりました。
必要なデータ量
今回作成したいプログラムはコントラクトの情報を学習してSCAM予測をする機械学習モデルです。
まずは1ヶ月分のデータを学習してみようと思ったのですが、1ヶ月分のデータはおよそ20-30万ブロックになることがわかりました。
Infuraは無料プラン / 有料プランとあるのですが、私の取得したいデータの場合は無料プランでは1日におよそ300ブロック分の情報しか得ることができませんでした。
月$225のプランにしたとしても1日におよそ3,000ブロック分のデータしか得ることができないためやりたいことは出来なさそうです。
Infuraのプラン
対応方法
うまくいくかはまだわかりませんが、ローカルで環境を作ってみることにしました。
環境を作るまでに必要な日数が1-2週間かかるようなので、上手くいきそうだった場合は環境構築の記事を作成しようと思います。
おまけ
ノードへの接続のの必要性やメリット・デメリットなどをChatGPTに聞いてみました。
100%正しいというわけではないと思いますが、参考程度に見ていただければと思います。
ノードへの接続の必要性
Ethereumや他のブロックチェーンネットワークは、中央集権的なサーバーの代わりに、世界中に分散された数千のノード(コンピューター)で構成されています。これらのノードは、ネットワークの健全性を保ち、トランザクションやスマートコントラクトの実行を可能にします。
Pythonのweb3ライブラリを使用する際、Ethereumネットワーク上のデータにアクセスするためには、これらのノードの1つに接続する必要があります。ノードに直接接続することで、リアルタイムのトランザクションデータやスマートコントラクトの状態を取得することができます。
ノードの接続方法とそのメリット・デメリット
以下は、ノードへの接続方法とそのメリット・デメリットを示す表です。
接続方法 | メリット | デメリット |
---|---|---|
ローカルノード | 安全性が高い、リアルタイムの情報取得 | セットアップが複雑、大量のディスクスペースが必要 |
リモートノード | セットアップが簡単、リソースを節約 | 信頼性に依存、遅延が発生する可能性がある |
Infuraなどのサービス | 高速、簡単なセットアップ、メンテナンス不要 | 月額料金が発生することがある、利用制限がある |
注意事項
私の経験上、初期設定の際には特にミスが発生しやすいです。以下に、初心者が特に注意すべきポイントをいくつか挙げます。
- 環境の確認: Windows環境での操作を行う場合、ライブラリのインストールやノードのセットアップには特別な手順が必要です。
- リソースの確認: ローカルノードを実行する場合、十分なディスクスペースとRAMが必要です。
- セキュリティ: トランザクションを送信する際には、プライベートキーや秘密情報を安全に保管することが非常に重要です。