2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Web3] ミームコインで爆損したので、PythonとSolana APIで「負けない」ための分析Botを自作する

2
Posted at

この記事の要約

SolanaオンチェーンデータをAPIでリアルタイム解析する。そして独自の基準でふるいにかけ、信頼性の高いコインの情報や暴落情報などをTelegrambotで即時通知するシステムを作った。

【免責事項】
この記事は技術的な知見の共有を目的としており、投資助言や特定の銘柄の購入を推奨するものではありません。
記事内で紹介しているプログラムや手法を用いた結果、いかなる損失が発生しても筆者は責任を負いかねます。暗号資産(仮想通貨)の取引は価格変動リスクが高く、特にミームコインは資産価値がゼロになる可能性もあります。必ず余剰資金の範囲内で、自己責任(DYOR)のもとで行ってください。
また紹介しているAPIの仕様変更等により、無料枠が無くなる可能性やレート制限が厳しくなることがあります。

はじめに

最近日本国内でもミームコインが流行っています。ミームコインというのは文字通りミームをモチーフに作られた仮想通貨で、有名なものだとカエルのPepeやイーロンマスクが取り上げて一気に注目を集めた柴犬モチーフのDogecoinなどがあります。

Web3の知識があまりなかったので勉強がてら実際にミームコインを買ってみようと思い、何日か動向を観察していたのですが・・・結果はとんでもないほどのマイナス。調子に乗って原資を回収しなかったことが原因なのですが、俺はここでただでくたばる男ではない。実際に身銭を切って、痛みを伴って、振り返ったうえで色々わかったことがあります。

何を見たらいいのか、どう判断したらいいのかわからない!!!

ほとんどの初心者が思うことだと思います。そもそものコインも馬鹿みたいに多いし、ちょっと調べた人はDexscreenerやBubblemapsを使うと良さそうと気づきますが、おそらく開いた瞬間に心が折れることでしょう。


Dexscreenerの実際の画面

自分で調べたりAIにぶち込めば各用語の意味はわかりますが、結局どの値がどれくらいなら買うべきか、売るべきかというのがわからずよくわからないまま話題になっているコインを買ってカモにされるというのが大半の人の現状でしょう。

そこでこの膨大な情報を定量的な指標でフィルタリングして売買の判断をしやすくするためのツールを作ることにしました。今回は今話題のSolanaのミームコインに特化したものを作り、なぜか仮想通貨界隈でよく使われているtelegramにbotが情報を送るというところまで作ります。俺の金で儲けたやつ絶対に許さないからな今に見てろ

前提知識

そもそも仮想通貨とかミームコインとかよくわからん
という人のために最低限知っとくといいことを超絶簡単にまとめておきました。素人の解説なので話半分にみるのがおすすめ。間違ってたらコメントとかで教えてください。

仮想通貨 ブロックチェーンで管理されたデジタルな通貨。中央管理者(銀行みたいな)がおらず個人感で直接送金できる。電子マネーと違い市場の動きによって価値が変動する。
Web3 ブロックチェーン技術を基盤とした分散型インターネット。要はGoogleみたいな大企業へデータを集中させずみんなでデータを管理しようという新しいインターネットの仕組み
ブロックチェーン その名の通りブロックという取引のデータを鎖のように時系列にまとめる技術。データの改竄が非常に難しく、さらに参加者みんなでデータを管理するため信頼性と透明性が高い。
Solana 高性能なのに手数料が格安なブロックチェーンプラットフォーム。有名なBitcoinやEthereumは1秒間に7件とか15件程度の取引ができるのに対しSolanaは数千から数万件でき、理論値は7万くらい。これはクレカのVisaに匹敵する処理能力らしい。ネイティブ通貨はSOLで手数料とかいろんなことに使われる。
details Solanaとミームコインの関係 最近Xで話題になっているミームコインの多くはSPL TokenというSolanaの規格で作られたもの。DogecoinやPepeはSolana系のミームコインと比べ取引速度が遅い、ガス代(手数料)が高い、寿命が長い、などの違いがある。 Pump.funというブロックチェーンやプログラムの知識がなくても簡単かつ無料でミームコインが作れるプラットフォームができ、Solana上では1日に何万もの新しいコインが生まれているらしい。そしてそのほとんどがすぐに価値を失う。

全体の流れ

大雑把に流れを説明すると以下の通り。

1 DexScreeerとHeliusのapiでトレンド一覧や新着一覧などの情報を取得。
2 情報を分析してスコアやランクを算出する。
3 基準を満たしたもののみ任意のテレグラムチャンネルに通知を送り一定時間監視する。
4 しきい値を超えて急騰、暴落したものはさらに通知を送る。

なぜ2つもAPIを使うのか

取得できる情報に違いがあるから。
ざっくり言うとDexScreenerは市場のデータ、Heliusはオンチェーンを直接参照したデータを取得できる感じ。

Heliusは生のデータを参照しているからこいつだけでいいと思われる方もおられるでしょう。しかしHeliusのみだと価格計算が大変面倒。ブロックチェーンには1ドル=160円といったデータが存在しないからです。しかしDexScreenerでは面倒な計算をせずとも直接価格を取得できます。

逆にDexScreenerのみだとコインの設定などがわからず詐欺コインに引っかかる可能性が大いにあります。後ほど詳しく説明しますがHeliusではコインの権限や誰が何枚持っているかという情報が得られます。つまり致命的な罠を割けるためにはHeliusが必須というわけ。


Gemini先生がまとめてくださった表

ちなみに最初はHeliusのみを使っていましたが、APIクレジットをハイペースで使っていて割と危機感を感じていました。最初期は情報の選別がうまくできておらず無駄な情報を取得していたことが原因です。ところが驚くべきことにDexScreenerのAPIはいくら使っても無料!結果的にDexで大まかな情報を取得、可能性のあるものだけをより高性能なHeliusで検査するという形で落ち着きました。
おかげでAPIクレジットの利用量も大幅に削減できました。Heliusも毎月100万クレジットが無料で使えますが情報をしっかり選別したりHelius単体でいくと普通に使い切りかねません。
一応Dexも無料とはいえ毎秒とんでもない数のリクエストを送るとIPブロックされて使えなくなるそうなので、ほどほどに抑えるべきかと。

具体的な判定基準

どうすればゴミコインを無視しつつ上がる可能性の高いコインを見抜けるのか?
誰も対して価値の上がらないコインに興味はなく、ましてやマイナスになるコインなど1番知りたくありません。いかにこの基準の質を高めるかがポイントです。価値のないゴミコインを取得しているとそれで通知は溢れかえり、かといって条件がガチガチすぎると値動きのないコインしか発見できません。

自分の資産を爆発的に増やしつつ、でも絶対に損はしたくないというワガママを叶えるのははっきり言って無理です。そんな方法あるなら今頃俺はこんな記事を書かずに南国のリゾートでバカンスを楽しんでます。ですが明確に、これだけは除害しないといけないという項目があります。
格付けチェック風に言うと「絶対アカン」コインです。

絶対アカン

  1. Freeze Authority (凍結権限) が ON
  2. Mint Authority (発行権限) が ON
  3. LP (流動性) がロックまたはバーンされていない

正直これらに該当するものは何も考えず切り捨てOKですが、一つずつ説明します。

まず1は特定の買った人を取引禁止にできる権限です。
こいつがONだと魅力的なトークンに見えるけど、実態は購入はできるけど売却ができないという滅茶苦茶なコインにいつでもなれる状態です。俗に言うハニーポット(Honeypot)と呼ばれるやつです。数字上のコインの価値が上がり続けても結局開発者しか売れないので完全に養分にされるというわけです。

続いて2は開発者がトークンを無限に増やせる権限です。言い換えると通貨発行権を個人が持っている状態。
感の良い人はお気づきかもしれませんが、第一次世界大戦後のドイツみたいになるぞと宣言しているようなものです。当時のドイツでは政府が借金返済のために金を擦りまくった結果インフレが急激に進み、物一つ買うのに大量の札束が必要になりました。教科書で子供が札束を積み木として遊んでいる写真を見たことがありませんか?ただでさえ価値の変動が激しいミームコインにおいて開発者の意思で、この状態になる可能性があるのは致命的です。

最後の3は簡単に言うとポンジスキームができるかどうかという話です。
ミームコインを買うとき開発者から直接買っているのではなくLP(流動性プール)というところと取引しています。こいつはメダルゲームの自販機みたいなものでSOLを入れると自動的にミームコインがでてきます。大勢の人が買えば買うほど自販機には売上金であるSOLが溜まります。このとき開発者が自販機の鍵を持っている場合いつでもこの売上であるSOLを引き出せますよね?この鍵をLPトークンというのですが、これを開発者が放棄していない状態がLPがバーンされていないという状態です。

ロックというのは鍵を時限付きで第三者機関などに預けておりその期間中は開発者は持ち逃げできないという状態です。その間の安全は保証されていますが、ロック期間が3日という詐欺もあるそうなのでバーンされているものが確実です。ちなみにこの持ち逃げのことをラグプル(Rug Pull)といいます。
ただよく話題になっているコインの殆どがpump.funで作られたものですが、仕組み上LPを持ち逃げするという意味でのラグプルは起きないのであまり気にしなくてもいいかもしれません。

例を示すとこんな感じ
# 発行権限がONかどうか(時価総額がでかい場合は報酬やゲーム内通貨として権限が必要なまともなプロジェクトがある)
        if token_data.get('mintAuthority'):
            #mcapは時価総額
            if mcap < 1000000:
                return (False, "Mint権限有効", "Mint Authority Enabled")
                
# 凍結権限がONかどうか
        if token_data.get('freezeAuthority'):
                return (False, "Freeze権限有効", "Freeze Authority Enabled")

これら3つを避けるだけでもいきなり致命傷を負うことは避けられるでしょう。一応それぞれステーブルコインやNFTなどに使われたりとメリットもありますし、正確には100%アウトとも言い切れないのですがここでは割愛します。
当たり前ですがこれら3つを満たしているだけでは到底話になりません。ここからさらにヤバいコインを削って、時にはリスクとリターンを天秤にかけて条件を設定していく必要があります。

追加で知っとくべき

上記3つはまず切り捨てていいと言いましたが他にも切り捨てていいものがあります。
それは上位10人のホルダーの保有率が異常に高い&メタデータが変更可能なコインです。

コインの保有率に偏りがあるということはその上位勢が一人でも売り抜けた場合大暴落します。そして大抵そういうコインは開発者の別ウォレットあるいは友人などが上位勢なのでまとめて一気に売り抜けます。もう目も当てられません。人によって意見が異なりますが、リスクを抑えたいなら上位10人の割合が20%前後のものがいいと思います。40%以上は流石にリスクが高いかと。ただ初期のコインだと60,70%を上回っているコインもざらにあるのでしっかり見極めるか、自身がなければ不用意に手を出さないのが吉です。

メタデータが変更可能というのはトークンのアイコンやウェブサイトのリンクをあとから変えることができるというものです。ある程度時間が経っているのにこの機能がオンのコインは避けたほうが良いと思います。

Telegramに送信

条件をコネコネしたらあとはTelegramに送るだけ。ただ日本ではあまり馴染みがない、というか闇バイトとかで悪い意味で有名になってしまったTelegramをなぜ使うのか疑問に思う方もいるでしょう。実際最初はDiscordのbotを作ろうと考えていたのですが、AIで壁打ちを行っているときにTelegramのほうがいいと感じたので変えました。

具体的な理由としてはDiscordと比べて、APIの仕様がシンプルで初心者でも簡単に作れる点やチャット画面の上にHTML5/JSベースのWebアプリをスムーズに表示できる点などがいいと思いました。あとはTelegramのほうが仮想通貨界隈では人気なので将来的にbotを公開したときに人が集まりやすいという面も選んだ理由です。

作り方

大まかに流れを説明すると

  1. Telegram公式の管理ボットである「BotFather」でbotを作成
  2. ボットの表示名とユーザー名を設定し、トークンを取得。
  3. PythonにTelegram botのライブラリをインストールしてコードを実行。

たったこれだけであなたもTelegramに通知を自動で送るbotが作れます。今までbotなんて作ったことがないド素人でもあっという間に作ることができました。


分かる人は分かる元ネタ あと偽物botに注意!

詳細な作り方は以下のリンクを参考にしてください。katさんの記事の最後の方にTelegramのインストールと初期設定の方法があるので先にそちらを見たほうがいいかも。ブラウザ版もあるのでそっちもあり。

注意 歴戦の猛者たちには言うまでもないのですがこのトークンは外部に公開しないように。いわゆるAPIキーみたいなものなのでコードに直接記述せず環境変数を使用しましょう。わからん人はAIに聞きましょう。(AIに直接トークンをぶち込むのも駄目ですよ!!!)

まとめ

無事にbotで通知を送ることができました。
結局やっていることはAPIから情報を取得して必要な情報を選別、選別した情報をさらにAPIでアプリに送るというありふれた工程です。扱う内容が内容だけに怪しいことをやっているように見えますが。
アプリ自体は日本語に対応していないのがネックですが、通知の文では日本語を問題なく使えるので色々応用が効く気がします。


6割でAランクはいかんでしょ 赤点すれすれやぞ😠😠😠

bot公開するのかしないのかどっちなんだい!

条件を調整して、多分世界で誰も実装していない機能を付け加えたら実際に公開してみてもいいかなと考えています。自分ひとりであれこれ唸っても限界があるので他者からのフィードバックが必要だと感じています。ただ警察や金融庁のお世話になりたくはないのでそのあたりの確認はしっかりするつもりです。

最後に

結局ミームコインにせよビットコインにせよ、あるいは株ですら言えることかもしれませんが基本的には自分の資産を増やしたいというのが根底にあるわけです。仮想通貨は投資ではなく投機という意見がありますが、素人目にみても胴元有利なギャンブルという側面は否定できません。
この記事をみて実際に仮想通貨を始めた人たち、ちゃんと余剰資金でやろうな。お兄さんとの約束だぞ!

あと今後botを公開するかもしれませんが、botが紹介したコインを買うと必ず儲かるわけではありません。あくまでbotは一定の基準を満たしたものの情報をを送っているだけ。判断材料にはなりますが、最終的な判断をするのはツールを使うあなたです。つまるところ自己責任ということです。自身がない人は無理せずちゃんと調べてから手を出すように。

おまけ

ぽっと出の新米がいきなりWeb3だの仮想通貨だの怪しすぎるだろ!
と自分でも思います。もともとはクリーンなwebアプリとかメタクエスト用のVRアプリとか作ってたんですよ?まあ結果的にやる前よりはWeb3について詳しくなれたので作って良かったです。

記事を書くうえで色々調べながら書きましたが、誤ったことを書いているかもしれません。ご意見ご感想があればZennやXにコメントしていただけると助かります。

今後も色々なものを作っていくのでXのフォローをよろしくお願いします🌸

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?