週刊RUG #2 スリッページにご注意を!

Rugtori Blockchain
CryptoKudasaiJP
Published in
20 min readJul 29, 2021

みんな、ラグってる!?
こんにちは、ラグパーソナリティのやりとりそうちょう(@yakitoribit)です。

⠀⠀

先週の創刊号はいかがでしたでしょうか、
意外にも好評で嬉しいやら悲しいやら複雑な気持ちになりました。

こんなにRTしてもらってる!!!

創刊号はコチラから

わたしの屍を超えてみなさん魔界生活を乗り切ってください・・・
まあ他人の不幸は蜜って言いますしおすし!

そもそも、なぜ他人の不幸が蜜なのか?
これには科学的な根拠があって、脳の報酬系、線条体の活動に関係が・・・

0x_DeFi:bullish(はやくして)

あっごめんなさい!ではさっそく始めていきましょう!

今週も国立ください研究所より

やきとり平研究員

みんなのマフィアアイドルmican助手(@angel65535

bullish 0x_DeFiいぬはかせ(@0x_defi

の3人でお送りいたします。

実は、この記事は3号の予定だったのですが、おもしろ・・・じゃなくて注意を歓喜、違う違う喚起すべき事件があったので、急遽2号として出させて頂くことになりました。

直コン特集の次ということもあります。

直コン記事を読んでいない方はコチラから

なんと!今回の表紙はSwapBaby(@JkSwapさんが作成してくださいました!
JKをスワップするみたいなIDだけど大丈夫かな・・・

周りの力によって謎に豪華になっていく週刊RUG。一体どこを目指しているのか・・・!?


あと最近、記事書いてて思うんですが

RUG、多すぎません?

魔界では日常茶飯事ですが、有名所でも明らかに増えているような・・・

いぬはかせ、そのあたりどうなのでしょう?

0x_DeFi:bullish

はい、ではまずこちらから

画像はテレグラムから拝借しました

・特集① 磁力で引き寄せラグ

この件で魔界に名を馳せたogle氏

StableMagnet $SMAG

被害額:2200万ドル

夏の風物詩

BSCの独自スワップ、StableMagnetがラグった模様。
USDT・USDC・BUSDの3つをひとまとめにLPにする$EPSみたいな感じ。DoppleFinanceがフォーク元だそうです

RugDogによると、参照しているライブラリが独自のもので、そこまでは誰も監査していなかった模様。

思いっきり抜かれるステーブルコインたち

どうやら独自スワップでアプルーブした人は、勝手にウォレットから資金を抜かれる恐れがある模様。Revoke必須とのことです。

また、LP分解時に、トークン自体が消滅した人もいたようです。

まあここまでは普通のRUGっちゃRUGなんですが(RUGは本来普通じゃないですよ)、

ここからがドラマみたいな展開

どこで身元が割れたのか、Twitterとテレグラムに本名と顔写真と捜索願動画みたいなものが貼られます。

人違いだったらどうなるんだろう

からの

タイーホ

なんと、犯人は香港在住の大学生3人?だそうです。

どうやったのか分かりませんが、この方が尽力されたそう。

資金の91%を取り戻したとのこと。すごいな。

というか盗んだ資金をバイナンスに送ってるので、そこから足が付いたかもしれませんね。

9%はバイナンスの手数料かな。違うか。

Binanceもレバ20倍になってそのうちCZは概念になるらしい

https://etherscan.io/address/0xe5daac909a3205f99d370bc2b32b1810a4912a07#tokentxns

そのあとUSDTをerc20で受け取ってDAIに替えてるけど、何がしたかったんでしょう。

ただ、取り戻したお金はイギリス警察が保持しているとのことで、該当する方は連絡くださいとのことです。

日本人の方でやりとりされている方がいたのでご参考までに。

それではみかん先生によるコントラクト解説ですっ!

Mican:今回はかなりレベルが高いラグになりますね(;´∀`)

ではまず、問題となったtxから見ていきましょうか。

このswapメソッドは本来ステーブルコインをスワップするために使われるはずが、なぜかプールの中身すべて出金されてしまってます。

なぜなのか…。その真相を追求すべくMicanは暗い森の中へ足を踏み入れました….。

やきとり:その後ろをやきとりはそっとストーキングするのであった….。

基本的なところから見ていきましょう。

実行されたコントラクトの確認

問題となるメソッドはこちらです。とても短いプログラムですね。

このメソッドでは「swapStorage.swap」を呼び出しています。

「swapStorage」をわかりやすく説明すると、プログラムのショートカットのようなものです。

どこかに本体があり、ラグの原因になった部分はすべてそこに隠されています。

カラフルできれい

「swapStorage」本体はどこに存在するのでしょうか….?

解説を聞いているやきとりはこんな感じ

BSCScanでコントラクト全体を探したところ、SwapUtilsという汎用的なライブラリが本体であることがわかりました。

どこから見つけてきたんだろう

しかし、これが今回のラグを複雑にしている原因となっているのです。

このプログラムをいくら読んでも、プールの中身をすべて抜き出すような不正なコードを見つけることはできません。

フォーク元となったDoppleのコントラクトと比較すると一部書き換えられていましたが、そこが本質的な原因ではありませんでした。

「swapStorage」本体はどこに存在するのでしょうか….?(2回目)


やきとり:さらっと全体を探したとか言ってるけど、ヤバいことなのでは

らいぶらりーず

実は、solidityをコンパイルするときに、ライブラリを外部コントラクトとして指定することができます。

BSCScanでは一番下にひっそりと書かれていました。とても分かりづらいですね(´・ω・`)

やきとり:solidityはプログラム言語の名前です

さぁ、ついに本体を見つけることができました。

化けの皮を剥がしてやるぞ!

やきとり:micanちゃんの服も剥がしたい(;´Д`)

0x_DeFi:bullish

「swapStorage」の本体

コントラクトの逆コンパイル

問題となったコントラクト本体を特定することができましたが、プログラムの中身を読むことができないようになっていました…。

たまに見て不安になる画面

それでは、コントラクトを逆コンパイルして解析してみましょう。

やきとり:めちゃめちゃ専門的になってきましたね

と、その前に…。

どのメソッドが呼び出されているのか、トランザクションの生データを確認します。

トランザクションの生データには呼び出されたメソッドやコントラクトを含めたすべてのログが残っています。

やきとり:日本語でおk つまり犯人がどんな作業をしたのか履歴が全部残っていると!

RawTransaction

https://bscscan.com/vmtrace?txhash=0xf0ba46c8a20e1e75ad382e42c509bf71393e1b3b90326165c747a5d3cc5d967c&type=gethtrace2

もう何を囲っているのかすら分からない

多すぎてわけがわからないので、とりあえず、

「0xe25d05777bb4bd0fd0ca1297c434e612803eaa9a」で検索すると…。


でました!

「0xfa861014」といったメソッドが呼び出されていましたね。

このメソッド名を逆コンパイルしたデータで検索すると、swapコントラクトらしきものがヒットしました。

どうやら、ハッカーのアドレスで実行された場合と、それ以外で処理が全く異なっているようです。

ひどい話です

ハッカー専用の処理が実装されていた

ハッカーがswapメソッドを実行した場合は、プールの残高を取得後、自身のアドレスにすべて送金。

それ以外の人がswapメソッドを実行した場合は、通常通りの処理になるように設計されていました!!!

ついに化けの皮を剥がすことができました。

やきとり:えええええすごおおおおおおおおおおおおおおおおおおおおおおおお

0x_DeFi:bullish

最初から持ち逃げするつもりだったのか?

トークンの残高を取得し、0になるまでループ

いかがだったでしょうか?

すこしレベルが高すぎましたね(;´∀`)

普通は逆コンパイルまでしてラグチェックをする必要はありませんよ。

プログラムの読めないコントラクトは総じて怪しい!!

これがみんなに伝わっていれば今回の内容がわからなくても大丈夫です。

やきとり:たしかに、売れないトークンとかも総じてプログラムが読めないようになってますね。大体は売れなくなってから気づくんですけど。

諸行無常の響きあり

みかん先生ありがとうございました。

まさか、運営側にトークンが吸い寄せられる磁石とは思いませんでしたね!


さてお次は

・特集② まさかの対面ラグ

被害額:1000万円相当

要約

NFT交換しようぜ!

→黒塗りの高級車からスーツ3人組現る

→浮かれてPCあけっぱなしにしてトイレ行く

→ホテルに戻って着拒されててあわててウォレットチェック

→1000万円とられてるううううううううううううう

らしいです。

大金に浮かれちゃったんでしょうか。。。そんな場所に1人で行くのも怖いですね。

実世界でもラグがいっぱい!安息の地はどこに!?

・特集③ おしえて!みかん先生!!いろいろおしえて!!!

さてはじまりました、みかん先生に聞いてみようのコーナー!私がみかん先生の色んな画像を見たいがために作ったと言っても過言ではないこのコーナー!

キャーミカンチャーン/

今日の講義は、

・スリッページについて

です。

前回ご紹介した直コンとも関係が深いこのスリッページ、それは一体!?

ちょうどいいタイミングでTwitter上で話題になっていたので、まずは具体例から見てみましょう。

どこにいても開発者が飛んでくるとウワサのJPYCです。

最初は国産RUG的なアレなのか!?!?って思ってましたが違うようです。ちぇっ(怒られる)。

何が起こったかと言いますと、直コンでスワップしたために、

約5万円分の $ETH と300円分の $JPYC が交換された

ということがありました。

え?

5万円が・・・300円?

やったぜ!160倍の値段で話題のJPYCを手に入れたぞ!

何か見間違えたかと思いますよね。

気分的にはこんな感じ

事実だけ書くと、

・スワップ直前にJPYCの値段が吊り上げられる

・160倍高値掴みマン爆誕

・直後に値段吊り上げマンがJPYC売り切り

ということになります。

一体何が起こったのか・・・!?

どうしてこんなことが起きたのか・・・!?


みかん先生、解説をお願いします!

Mican:ぎゃー…。これはツライ…ツラすぎますね。

スリッページとは取引するときに取得するトークン量のブレで許容できる範囲を意味しています。

uniswapではここで設定できますね!

滑り度、やきとりの頭の中にはいつも大阪人が思い浮かびます

スリップページ…?スリッページ…?

うーん…。日本語訳は置いておいて、ようするに注文のスリップ許容値の設定のことですね。

ここでは主に%で指定します。

50%なら購入額から1.5倍高い値段まで許容

0.5%なら注文額から1.005倍高い値段まで許容

やきとり:滑ってもいい量ってことですかね

ぐんぐん値段が上がっていく場面では高めに、ほとんど値段の変わらないものでは低めに設定することが多いですね。

このスリッページ、直コンの場合%表記で指定することはできません!

直コンで指定する場合は、amountOutMinへ適切な数値を入れてあげる必要があります。

(uniswapのフロントから注文する場合は、リアルタイムで価格を取得してamountOutMinを自動的に設定します)

やきとり:急いでる時に計算できないよ!むりむりむりむりかたつむり!!!早くトークンほしい!!

そうですよね…。

自分でスリッページの計算は非常に難しいです。

特に上場直後のトークンに関しては価格もわからないので大変です。

そこで、私がおすすめする方法は「最低限これくらいはほしい量を指定する」です!

例えば、1枚1ドルで上場するトークンを直コンで購入したい場合は….。

「んー…。10倍ぐらいになると思うから5倍までなら許容できるかな。」

とおぼろげながらに浮かんだ数字を指定しましょう。

1ドルを10倍すると、10ドルになるんですよ

おぼろげながらに浮かんできた数字で大丈夫です。

なにも難しいことはありませんよね….!

まちがっても、「0」なんて数字を入力しないように注意してくださいね。

やきとり:例えば1ドルで上場するトークンを100枚買う時に、5倍まで許容するってことは・・・5ドルで100ドル分だから・・・20枚かっ

amountOutMinに20を入れたらいいんでしょうか?

Mican:おしい!

前回の直コン特集でも取り上げましたが、小数点を考慮するのを忘れないでくださいね!

スマートコントラクト上では小数点を扱うことはできず、すべて0以上の整数で表現されています。


今回のBUSDでは小数点が18桁あるので、1BUSDを表現したい場合は1の後に0を18個付ける必要があります。


小数点の表現はトークンによって様々なので注意してくださいね!

引用元:週RUG1.5

やらかしTx

JPYC高値掴み事件のtx

「AmountOutMin 0」は「価格はいくらでもいいからとりあえずトークンをくれ!」という意味になるのでどんな値段で買わされても文句は言えません…。

くれぐれも注意してください…!

やきとり:なぜ危険かというと、そのトランザクションを出した瞬間にサンドイッチマンがやってきて値段を吊り上げられる可能性があるからです!

普段は値段吊り上がったら失敗するのに、0だと注文通っちゃうんですよね・・・

伊達と富澤の間に挟まれます

なんだろう・・・

サンドイッチするのやめてもらっていいですかね・・・

やきとり:怖すぎる・・・

特集④ いぬはかせのベイベコーナー

さて、最近のトレンドをいぬはかせに聞いてみようのコーナーです!

最近はどんなものが流行っていましたか?

0x_DeFi:最近は、Baby○○が流行ってました blah blah….

やきとり:なんですかそれ

⠀⠀

0x:Babycakeトカ

やきとり:あー!あの持ってたら別のトークンをもらえるやつですか!

0x: ye

やきとり:思い出した、Babyなんちゃらでラグられまくったんだった(辛い記憶は消すタイプ)

0x:bullish

やきとり:はかせ的に推しベイビーはいましたか?旬のやつとか好きなBabyがいたら教えてください!

0x:僕の推しはBabyGhostTokenデス幽霊のように(RUG)消えました。hehe あともうすぐ赤ちゃんアマゾン社長とか。。。始りそう

やきとり:幽霊のように消えた(笑)

赤ちゃんアマゾン社長ってなんですか、その前にアマゾン社長がいるのか・・・?ベゾストークン?BTC採用FUD?

0x:BabyBezosデスhehehe

Amazonて

やきとり:思いっきりアウトでわろた

SUNもいた
途中でCZおじも見つけてしまった。なんか渋かったから載せたけど買っちゃダメよ

やきとり:ベイビーベゾスって。ホールドしてアマゾンの株もらえるとかならおもろいですけど。むしろTezosください

0x:僕も欲しいです。。。。暫くはBabyラッシュが続いていくと思います!

やきとり:しばらくはBabyに注目ですね!

意味分からないなこのPV

イベントのお知らせ

[AMA with Avalaunch]

CryptoKudasaiJP Presents⠀

AMA with Avalaunch

27th July 24:00 JST [15:00 UTC]

PRIZE:500 USD

https://twitter.com/AvalaunchApp

気合い入りすぎてBGM付きの宣伝動画ができました。

私たちは何処に向かっているのでしょうか。

とか言うてるうちにAMA終わってしまいました。

recap記事はコチラからどうぞ!

[AMA with IDEXO]

CryptoKudasaiJP Presents⠀

AMA with Avalaunch

29th July 21:00 JST [12:00 UTC]

PRIZE:500 USD

https://twitter.com/idexo_io

気合い入りすぎてBGM付きの宣伝動画が(ry
CEOが浮いてる気もしますが気にしない!!!

[AMA with MoonRabbit]

CryptoKudasaiJP Presents⠀

AMA with MoonRabbit

31th July 20:00 JST [11:00 UTC]

PRIZE:500 USD

https://twitter.com/moonrabbitAZ

開催中のイベント

あげますイベント3つ開催中!

Nuts Gaming https://t.me/KudasaiAnn/7

Mars4 https://t.me/KudasaiAnn/8

Kalmar https://t.me/KudasaiAnn/9


色々無料でもらえるチャンス!要チェックや!!


Kalmarは8/1からdepositしないといけないので急いで!


ここで何か宣伝したい方はやきとりまでご連絡ください。

だいたい気づきません。テレグラムだと埋もれて絶対に気づきません。

週刊RUG powered by CryptoKudasaiJP

今週号はいかがでしたでしょうか。

個人的に一番驚いたのは対面ラグですね。

サイフ置いたまんまトイレに行くようなもんですもんね・・・


あ…ありのまま 今 起こった事を話すぜ!

「おれは に絵を売りに行ったと

思ったら いつのまにか1000万円とられていた」

な… 何を言っているのか わからねーと思うが


みたいな感じですね。おそろしい・・・

Doxxedこわい!

はいっ!みなさんご一緒にっ!

「信じられるのはブロックチェーンだけ!」

では今週もご安全に!Stay Rug!!

ポルナレフもびっくり

--

--