LoginSignup
17
4

More than 1 year has passed since last update.

Tomb系崩壊で死にかけた私がDEX botで首の皮一枚繋げていた話

Posted at

自己紹介

閲覧ありがとうございます
仮想通貨botter Advent Calendar 2022の2日目に参加させていただきました、塩ハム(d)と申します
仮想通貨関連アカウントでは右腕の毛と名乗っています(ややこしい)

今回紹介させていただくのは経験談であり、エッジが消えているものなので後追いはできません
しかし我々の戦場は変化の激しい仮想通貨界隈、いつかこの経験を活かすことができるかもしれません
では以下紹介していきます

今年の3月頃FantomブロックチェーンのTomb関連銘柄の崩壊に巻き込まれた、今年の1月後半に仮想通貨に手を出した私
そんな冒頭から死にかけの私が所属しているDiscordで、ある実験的プロジェクトを見つけたとの書き込みがありました
コードが読めることが望ましい、興味のある方は紹介します
とのことだったのでいずれbotが組みたいと思っていた私は勇気を絞り、搾りたての勇気でプロジェクトを紹介してもらいました

Defi Olympiads

照会していただいたのは、Fantomで立ち上げられた、Defi Olympiads(終了済)というプロジェクトです
よくわかりませんが、監査に時間とお金をかけるぐらいならユーザー自らにコードを見てもらい判断させろ、という趣旨らしいです
Discordでは、このプロジェクトの書き方的にアンドレ(yearn.financeを開発した天才)じゃね? と噂されていました
(真相は私にはわかりませんでした)

テストプロトコルの後に本番プロトコルが実施される予定だったそうです
テストプロトコルのルールはいたって単純でした

1.プレイヤーはDOLAというドルペグトークンをCurve.financeで購入し、それを3か月ロックすることでDOLAと同量のTicketトークンを受け取ります
2.Ticketトークンを消費することで、ある数式に基づきMedalトークンが発行されます
3.参加者は可能な限りMedalトークンを集めることで、この次に始まる(予定だった)本番プロトコルのエアドロップを得ることができます
4.ハッキングや悪意のコントラクトなどによるありとあらゆる手段(暴力を除く)が許されます、すべては自己責任です
5.最初の7日間に限り、デポジットを追加することでゲームに参加可能です

流れをグラフにすると以下のようになります

Medalの発行に使う数式は以下のものが使われていました

y = (x\times r \times t - x\times s) / (y + x)

y = 受け取るMedalトークンの量
x = 消費Ticket
r = 1秒当たりのMedalトークン排出率
t = コントラクト開始からの秒数
s = 総排出Medalトークン

ははあ、これ立ち回りめっちゃむずいやつだ()
数式からすると、時間が経つごとにMedal発行数が上がっていくが、Medalが発行されると総排出量が増えるため発行のたびにMedal発行数下がるやつだ
ダッチオークションというらしいですね、これ
あきらめて1DOLAだけ買って何とか頑張ろう……そう思っていました

流動性の追加

3月23日 23時6分52秒(unix時間:1648044412)
コントラクトがアップロードされ、Medalの発行が始まりました
始まってほどなくして、SpookySwapにTicket/Medalの流動性が追加されました
……もう一度書きます、 SpookySwapTicket/Medal の流動性が追加されました

これが何を意味するかというと

1.Ticketを消費しMedalを発行
2.発行したMedalをTicketにswap
3.1に戻る

の手順を踏み、レートによりますがTicketを増やすことができるようになりました
ガス代と引き換えに、3月24日 20時15分時点で以下のようになりました

image.png
character_choujin_tangatamanu.png

なんかbotでもできそうだなーと思いつつ直コンでポチポチしてました

その後もポチポチしつつ過ごしていた3月28日頃
SpookySwapにTicket/USDCの流動性が追加されました
……もう一度書きます、 SpookySwapTicket/USDC の流動性が追加されました

nigaoe_nitobe_inazou.png

botを作ることに決めました

Dutch Auction mint bot

当時の私にあったのはある程度のC言語のスキルと、ほんの少しのJavaの経験、そして何となく独学中のPythonの知識でした
調べたところ、Pythonでweb3.pyを使うのが一番難易度が低そうです
私にも作れそうなプログラムだと、以下のような簡単なフローチャートになりました

3月30日に一応のbot完成、しかしトランザクション失敗やガス代の調整失敗、Nonceの取得ミスなどでよくエラー落ちするものでした
改修を重ねつつ動かしてはそれぞれを増やしていました
Discordに残っていたログを見ると以下のような動作結果が残っていました

4月1日 13時17分
image.png
4月1日 13時19分
image.png

わかりづらいですが、Ticketを6枚消費しMedalを57枚発行しています

そんなこんなでMedal発行とTicket交換、ガス代調達を繰り返すこと2か月……
続報のないまま以下の数値まで攻略していました

image.png

おそらくこのプロジェクトで一番効率よく動けたのは私ではないかと思っています

そして6月20日 3時10分
残念なことにTwitterにてプロジェクト失敗との発表がありました
6月22日にはTicket/USDCの流動性が抜かれ、完全にプロジェクトは終了しました

今まで仮想通貨界隈で生き残れたのはこのプロジェクトで稼ぎ、いろいろなところで経験を積めたからなのだろうと思います
私の生命線といえるプロジェクトでした

この経験を通して私が学んだのは稼ぐためのエッジは人それぞれあり、それを見つけられるかどうかにかかっているのだろうということです
退場さえしなければ誰にでもチャンスはある、そんな気がするのです

最後にgithubに上げた、稼げていたbotのリンクを貼って締めさせていただきます
読んでいただきありがとうございました

17
4
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
17
4