仮想通貨xプログラミングで稼ぐ実例 Part 1
このシリーズについて
自分が実際に使ってお金を稼いだコードをほぼそのまま公開しつつ、どのような考えや工夫をして作ったのかを共有していこうと思っています。Part 2以降はまた別の収益が得られる機会があれば書いて公開していこうと思いますが、候補は特にない状態なので首を長くして待っていてください。
この記事をきっかけに気づきを得て、「仮想通貨×プログラミング」で稼げる日本人が増え、技術や知見を共有し合い、さらに大きな収益につながるようになればと考えています。
単なるコードのサンプル集ならChatGPTなどに尋ねれば質の良いコードを書いてくれる時代なので、この記事では当時の私自身の考え方や工夫、取り組んだ背景を中心に書こうと思います。また、基本的な環境構築どうすればいいのか?などは記載はしませんので、適当に記事内容をピックアップしてChatGPTなどに渡しながらわからないところは自己解決して取り組んでもらえるといいかと思います。
コードは書けるけど仮想通貨についてよく知らない
仮想通貨について詳しいけどコードは書けない
コードも仮想通貨もそこそこわかるが、どこで収益源を見つければよいかわからない
こうした方々にこの記事が届けば嬉しいです。
今回の舞台 SoSoValue
さっそく本題に入りますが、SoSoValueというBaseチェーン上で展開されているプロトコルが、特定の条件を満たすアドレスを対象にMAG7.ssiというトークンを配布するキャンペーンを開始しました。
https://x.com/SoSoValueCrypto/status/1884572464279339324
配布方法はClaim形式で行われ、配布されるトークン量はランダムで以下のように約4.7ドル〜47000ドルの範囲で決定されます。(厳密にはMAG7.ssiは仮想通貨のインデックスのようなもので価格変動がありますが、即時売却すればこの程度の価格でした。)
4.7ドル
47ドル
470ドル
4700ドル
47000ドル
まず、この仕様を把握した上で、ランダムで割り当てられるトークン量が「既にアドレスごとに割当が決まっている」のか、「Claimするタイミングで決まる」のかを調査しました。
確認方法はシンプルで、Rabbyなどのウォレットに搭載されているトランザクションのシミュレーション機能を利用し、何度か試して結果を比較しました。
その結果、「Claimするタイミングで決まる」ことが分かりました。そこで、タイミングを狙えば大きな報酬を得られる可能性があると考え、スクリプトを作成しました。また、どのようなウォレットでもClaimできてすぐ報酬が取られてしまう、といったものでもなかったため、可能な限り多くの人に報酬を得てほしいと思い、Kudasaiで共有しました。
作るものを考える
どのような仕組みを作れば利益を最大化できるかを検討しました。
トランザクションをシミュレーションし、4700ドル以上の場合にClaimを実行する
複数アカウントをBundleでシミュレーションし、最高額の47000ドルが出るタイミングを狙って実行する
自分が持っている対象となるアカウントが10個もなかったため、本来は2番目の方法が最も利益が大きくなります。しかし、Claimの進捗が遅く、期間内に47000ドルが出るか不確実だったため、より現実的な1番目の方法を選択しました。
ソースコード
実際に書いたソースコードがこちらです。
# app.py
from web3 import Web3
from eth_account import Account
import time
import os
import requests
import config
RPC = <tx simuration対応しているもの>
w3 = Web3(Web3.HTTPProvider(RPC))
def simulate(tx):
# tx simurationのエントリポイントを叩き、
# 結果から得られるトークン枚数を取得する。
# 送信元アカウントの設定
# 必要に応じて増やす
txs = [
(os.getenv("PK1"), config.TX1),
(os.getenv("PK2"), config.TX2),
]
while True:
for pk, tx in txs:
amount = simulate(tx)
print(f"{tx['from']} amount={amount}")
if amount < 4700:
time.sleep(1)
continue
print("💰️")
# トランザクションの送信
try:
signed_tx = Account.from_key(pk).sign_transaction(tx)
tx_hash = w3.eth.send_raw_transaction(signed_tx.raw_transaction)
except Exception as e:
print(f"Error: {e}")
continue
print(f"Transaction hash: {Web3.to_hex(tx_hash)}")
break
# config.py
TX1 = {
"chainId": 8453,
"from": "xxxx",
"to": "0x6EF3c884Ac0fF45A8E2275F52787471d46E82f1C",
"data": "xxxxx",
"gas": "0x2cd6d",
"maxFeePerGas": "0x2fddd00",
"maxPriorityFeePerGas": "0x2fddd00",
"nonce": "0x0",
}
大まかな流れは以下の通りです。
①トランザクションをシミュレーションして、期待する報酬が得られるか確認
②期待した報酬が得られる場合はトランザクションを送信、得られない場合は次のアカウントに進む
トランザクションをシミュレーションする方法はいくつかありますが、ここでは代表的なものを2つ紹介します。今回も実際に使用しましたが、レートリミットが厳しかったため別の手段を採用しました。その別の手段については「とある非公開APIを利用した」とだけ記載しておきます。
自分が対象アカウントを複数持っていたため、抽選を行うトランザクションをRabbyのApprove画面まで進め、「View Raw」で表示されたトランザクションをコピーしていきました。ABIを準備する必要がなく、必要な情報が付加されているため、とても便利でした。
あとはこのプログラムを実行したまま放置しました。だいたい1日に1回ほどの頻度で当たりを引ける確率でした。
想定外の出来事
順調にスナイプを成功させていましたが、ある時、残りのアカウントの報酬がすべてClaimされるという出来事がありました。その後、プロトコルのClaim方式が変更されたため、「運営側による強制抽選」のような措置だったのかもしれません。
https://basescan.org/tx/0x13947b97f0eb4fb700ef69cb52c9e58df6261b28a56b68e1b9f2391465a8a80a
結果(2月時点)
結果として、4700ドルの報酬を4アカウント分獲得することができました。
4700ドル × 4 = 18,800ドル(ドル円149円換算で2,801,200円)となります。
+280万円ぐらいでフィニッシュです・・・
— 5000e12.eth | かんた | .lens (@5000e12) February 1, 2025
あと+210万ぐらい取れる予定だったのに・・・ https://t.co/9xfIAtgZt6
強制的な抽選がなければ、さらに210万円ほど獲得できる可能性がありましたが、十分な利益を得られたので良しとします。
結果(3月18日時点)
「2月は最強月!」というアノマリーがTwitter上で溢れてたので、すぐに利確せずに放置してました。
はい、みなさん御存知の通り実際には大きな下落があったため-30%ぐらいくらいました。
4700 * 0.6886 * 4 = 12945.68 = 1,928,906円
90万円ぐらい利益消えてました。相場を読む能力はありませんでした。
おわりに
プログラミングがわかる方なら、こんな少ないソースコードでこんなに利益が得られるのか!?って思われた方もいるかと思います。仮想通貨がわかる方ならこうやってbotterは稼いでいるんだ!ということがわかってもらえたかと思います。
アトミックアビトラやMLを使ってトレードなど、高い技術力で戦う分野はレッドオーシャンだと思いますが、ベーシックな技術と仮想通貨のプロトコルに関する知識で戦える分野もまだまだあるかと思います。
市況はあまりよろしくないですが、このような収益源を見つけてプログラミングを駆使して儲けていきましょう✊️
コメント