背景
前回の記事では、イーサリアムベースの新規トークンの売買によって収益化が可能か検証したいと記事を作成しました。
この記事では、その具体的な情報取得手段を検討しようと思います。
第一弾の記事はこちらです。
取得したい情報について
既に色々なサイトで暗号資産に対してのSCAMリスクは数値化されています。
私は普段下記のサイトを利用してSCAMであるかの判定に利用しています。
使用しているサイト
どのサイトも比較的似たような情報を用いてSCAMリスクの判定を行っています。
まずはこれらのサイトで使用している情報を取得していきたいと思います。
取得したい主要項目
- 売却不可ではないか
- 購入 / 売却手数料
- 所有権が放棄されているか
- ブラックリストがないか
- 作成者の保有トークン量
- 時価総額
- 流動性
- 流動性がロックされているか
既存サービスは何がいけないのか
既に色々なサイトでSCAMリスクが判定されているのであればわざわざ自分で検証する必要はなさそうに思えます。
実際に上記のサイトは非常に便利でSCAMリスクが高いとされるトークンは本当にSCAMである確率は高いです。
しかし、これらのサイトを自分で利用してみてわかった事がいくつかあります。
- 3つのサイトでそれぞれSCAM判定ロジックが異なる
- 3つのサイトでSCAM判定されなくてもSCAMのトークンは存在する
- 毎回3つのサイトを利用するのは手間がかかる
これらの理由から、3つのサイトを利用するよりもSCAM判定精度を高めることができないか。というのが検証の目的となります。
情報取得先
今回の検証で必要な情報を取得するにあたり下記のライブラリを使用する想定で考えていました。
※ライブラリごとに取得する情報は調べる前のイメージです
- web3:新しいトークン(暗号資産)の情報を取得
- etherscan:コントラクトの取引履歴や流動性
ライブラリごとの取得可能な情報の違いについてChatGptに質問をしてみたところ下記の結果が返ってきました。(真実かは未確認)
基本的にはweb3で取得可能なようなのでweb3で取得していこうと思います。
→実際に調べてみたところ、web3ではソースコードを取得することができないようでした。
そのため、etherscanも使っていこうと思います。
情報の種類 | web3 | etherscan |
---|---|---|
アカウントの残高 | ◯ | ◯ |
トランザクションの詳細 | ◯ | ◯ |
ブロックの詳細 | ◯ | ◯ |
コントラクトのソースコード | ◯ | ◯ |
ガス価格 | ◯ | △ (APIを直接呼び出す必要がある) |
トランザクションのレシート | ◯ | △ (APIを直接呼び出す必要がある) |
コントラクトのイベントログ | ◯ | △ (APIを直接呼び出す必要がある) |
ERC20トークンの残高 | ◯ | ◯ |
ERC721トークンの所有者 | ◯ | △ (APIを直接呼び出す必要がある) |
ブロックチェーンの現在のブロック番号 | ◯ | △ (APIを直接呼び出す必要がある) |
トランザクションの送信 | ◯ | × |
※この表は一部の情報のみを比較しています。両ライブラリはそれぞれ異なる特性と機能を持っているため、具体的な使用目的によって選択することをお勧めします。
足りない情報
上記の情報だけでは時価総額や流動性の情報がありません。
こちらもChatGptに質問をしてみると、これらのライブラリでは流動性などの情報は取得できないようです。
取得可能な情報先としていくつかライブラリやAPIの候補が出てきましたが、取得可能な情報は概ね同じようです。こちらも真実かは確認していません。
細かい部分の差異としてトークンの指定方法やレート制限などが異なりそうなので実際に使った上で取得先を決定しようと思います。
以下は、CoinGecko、CoinMarketCap、CCXT (CryptoCurrency eXchange Trading) Library、Coinpaprika API、およびNomics APIでできる主な機能の比較表です。
機能 | CoinGecko | CoinMarketCap | CCXT Library | Coinpaprika API | Nomics API |
---|---|---|---|---|---|
価格データの取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
マーケットデータの取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
ボリュームデータの取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
コインのリスト取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
マーケットペアの取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
ヒストリカルデータの取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
取引所のリスト取得 | ◯ | ◯ | ◯ | ◯ | ◯ |
信頼スコアデータの取得 | ◯ | × | × | × | × |
ソーシャルメディアデータの取得 | ◯ | × | × | × | × |
取引所の取引機能 | × | × | ◯ | × | × |
アカウント情報の取得 | × | × | ◯ | × | × |
オーダーブックの取得 | × | × | ◯ | × | × |
この表は一部の機能のみを比較しています。各APIはそれぞれ異なる特性と機能を持っているため、具体的な使用目的に応じて選択することが重要です。
特にCCXT Libraryは、他のAPIとは異なり、多くの取引所との取引機能を提供しており、取引所のアカウント情報の取得やオーダーブックの取得など、取引に関連する機能が豊富です。
web3ライブラリとは
web3ライブラリはPython用のイーサリアムライブラリで、これを使うことでPythonからイーサリアムネットワークと直接通信することが可能となります。具体的には、トランザクションの送信、スマートコントラクトの呼び出し、イーサリアムのブロックチェーンの読み取りなど、イーサリアムの主要な機能へアクセスできます。さらに、新規に生成されたスマートコントラクト(トークン)の情報、特定のアドレスのトークン残高、またはトランザクションの詳細などを取得することも可能です。これらの情報は、新規トークンの早期発見やトークンの価値を評価する上で非常に有用です。
web3ライブラリを利用して取得できる情報
web3ライブラリを使用することで、イーサリアムのブロックチェーンから以下の情報を取得することが可能です。
- ブロック情報:
- ブロック番号: 現在のブロック番号を取得。
- ブロック詳細: 特定のブロック番号を指定し、そのブロックに関する詳細情報(タイムスタンプ、取引数、マイナーなど)を取得。
- トランザクション情報:
- トランザクション詳細: トランザクションのハッシュを指定し、そのトランザクションの詳細(送信者、受信者、金額、ガス代など)を取得。
- トランザクションの受信/送信: 特定のアドレスから送られたまたは特定のアドレスに送られたトランザクションの一覧を取得。
- スマートコントラクト:
- スマートコントラクトの情報: スマートコントラクトのアドレスを指定し、そのスマートコントラクトに関する詳細情報(コード、ABIなど)を取得。
- スマートコントラクトの呼び出し: スマートコントラクトの関数を呼び出し、その結果を取得。例えば、ERC20トークンのスマートコントラクトの場合、特定のアドレスのトークンの残高を取得するための`balanceOf`関数を呼び出し。
- アカウント情報:
- イーサリアム残高: 特定のアドレスのイーサリアム残高を取得。
- トークン残高: 特定のERC20トークンの特定のアドレスの残高を取得。
下記の記事にデータ取得方法のサンプルを書いているので参考にしていただければと思います。
まとめ
下記の2種類のライブラリを用いることでやりたいことがなんとなくできそうな気がします。
→最低でもetherscanライブラリは必要そうだったので3つのライブラリが必要でした。
実際に作業を進めていくうちに取得したい情報の実現可否がわかると思うので場合によってはまた方針を変える必要がありそうです。
- web3ライブラリ
- etherscanライブラリ
- 流動性などを取得するライブラリ
今後の調査予定
次回は、web3ライブラリ+etherscanライブラリを使用して必要なデータを整理してみる予定です。