こんにちは!ニナ(@_ninahaus_)🦆です。
BSC(バイナンススマートチェーン)上のDeFiプロジェクトで再び詐欺が出ました。多すぎるのでもういちいち数えていませんが、これまで記事にしたものとまた手口・怪しい点が違ったので記録します。
「Hidden Poolsを見つける方法」だけ知りたい方は目次からそこに飛んでください。
この出来事は3月5日と6日、日を挟んでのことでした。
欧州時間での記載しているため、一部「欧州では3月5日だったけど日本では既に3月6日だった」という箇所があります。
本記事で紹介するのはWhaleSwap(https://whaledefi.finance/)です。
※既にこのサイトはダウンしておりリンク切れです。
トークンは5日午後から購入可能で、そのトークンを利用したファーミングは同日20時開始とアナウンスされていました。
起きたことを分かりやすく伝えるためにフランクな書き方をしていますが、被害額の大きな方はBinanceや警察に相談してください。何か手があるかもしれません。
Binance問い合わせ先:
https://binance.zendesk.com/hc/ja/requests/new?ticket_form_id=360001272912
詐欺被害者に対し「詐欺されたお金を取り戻してあげる」と近づいてくる人には十分に気を付けてください!二次詐欺は定番です。
🐳浮かびあがる鯨影
TwitterによればWhaleSwapが登場したのは2月27日です。
(Twitterアカウント@whale_swapは削除済みです。)
リプをしている人達から何を感じるかはあなた次第。
🐳鯨の特徴:ホワイトペーパー
WhaleSwapは各所でスローガン「The safest AMM and yield farm on Binance Smart Chain.」を掲げていました。投資家目線での安全性重視、投資に成功して皆で鯨になろう…そんな呼びかけも行っており、裏付けとしてBSC新興DeFiプロジェクトにしては珍しく「ホワイトペーパー」を準備していました。一般的にホワイトペーパーとは、サービスの解説や市場分析などを文書にまとめたものです。
こちらがフルのホワイトペーパーです:
WhaleSwapWhitepaper.pdf
気になった点を順番に紹介します。
監査済み?
最近「監査済み」を主張するプロジェクトが増えました。
ユーザーの中には「監査済み=安全」と考える人がいるため、「とりあえず監査済みと言ったもん勝ち」という風潮が出来ています。当然ですが、それは間違いです。
監査法人がどこか、これまでどのようなプロジェクトに対し監査を行った実績のある会社なのか、本当にその監査法人が監査したのか(社名を勝手に使われただけでないか?)の事実確認、具体的に「何」を「いつ」監査したのか、監査後コードに変更はあったかどうか…そういったところをひとつひとつ見ていかねば本当に安全かどうか分かりません。
WhaleSwapは「EtherAuthority」という会社によって監査済みであるとのことでした。
Twitterアカウントは何故か凍結中。
ただし、EtherAuthorityという監査法人がインドに存在するのは本当のようです。
https://etherauthority.io/
「本当にこの会社が監査したのか(偽者に成りすまされていないか)」の事実確認はとっていません。鯨の今回の詐欺方法(Rugpull、Hidden Pools)はコントラクト監査では引っかからないと考えられるため、コントラクトが実在の監査法人にきちんと監査されたかどうかは関係ないためです。
Migratorコード除去済みアピール?
WhaleSwapはGoose FinanceのForkです。
そのこと自体は何も問題ありませんが、Goose Financeは「PancakeSwapにあるMigratorコードは危険で、我々はそれを削除した」というブログ記事を書いています。これ以降「PancakeSwapコード=Rugpullできるコード」という極端な話が一部に広がり、Goose Finance Forkは「我々はPancakeSwapと違ってMigratorコードを削除しているので安全」と主張するようになったように思います。
以下めちゃくちゃ個人的な見解
Goose Financeの記事にしろ鯨のこのページにしろ、やり口が小物なんですよね。
OSSとして公開されたPancakeSwapコードの恩恵に預かっておきながら(開発コストが大幅に削減できたはずです)、気に入らない点に関して大きな声で騒いで自分たちのほうが優れているように見せる姿勢、見るに堪えません。
「Migratorコードにはリスクがあり、我々には必要が無いので除去しました」で済むものを「PancakeSwapは理論的にはRugpullできるんです!」と主張する必要性がまったく感じられません。
ホワイトペーパーは自プロジェクトの良さをPRする場であって、他プロジェクト(しかも自プロジェクトのベースとなっているもの)の悪口を言う場ではないのです。これは投資だけでなく一般的に言えることですが、自分の価値を上げるために他人の価値を下げるのってダサいですね~。嫌だわ~。
私はPancakeSwapを応援していますが、もしシェフたちがPancakeSwapのFork元であるUniSwap、SuhiSwapをディスってPancakeアゲし始めたらウサ耳ちょうちょ結びにして顔面にCAKEぶつけますね。
こういった厚顔無恥プロジェクトを見つけるたびにTwitterで怒り狂っています。
It’s stupid to think that “No Migrator Code” proves safety, and it’s ridiculous to fork PancakeSwap saying “PancakeSwap still has migrator code it’s technically dangerous blah blah”. If you have doubts on the code of other project, just don’t fucking use it. 🙄
— Nina (@_ninahaus_) March 5, 2021
突然のEmergencyWithdrawへの言及?
WhaleSwapはEmergencyWithdraw方法をホワイトペーパーに書いていました。
もう1度言います。
WhaleSwapはEmergencyWithdraw方法をホワイトペーパーに書いていました。
「DDOS攻撃などでウェブサイトが落ちたときのバックアップ」としての想定であるとそれらしく記載していますが、界隈でRugpull詐欺が盛んで、ユーザーがコントラクト直叩きしていることを知っていたのでしょう。EmergencyWithdraw自体はUniSwapからの伝統でSushiSwap、PancakeSwap以下多くに存在する機能であり、WhaleSwap特有のものではありません。ホワイトペーパーに書く意味は全くなく、「詐欺プロジェクトに用心しているEmergencyWithdraw出来る人への安全性アピール」のように感じました。
自身で言及していることから察せますが、鯨のEmergencyWithdrawコードはGoose Financeとまったく同じで、特に不審な点はありませんでした。
鯨のEmergencyWidthdraw
// Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; uint256 amount = user.amount; user.amount = 0; user.rewardDebt = 0; pool.lpToken.safeTransfer(address(msg.sender), amount); emit EmergencyWithdraw(msg.sender, _pid, amount); }
https://bscscan.com/address/0xd2217fe8b002248693f408546008287a98b188dd#code
Goose FinanceのEmergencyWithdraw
// Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; uint256 amount = user.amount; user.amount = 0; user.rewardDebt = 0; pool.lpToken.safeTransfer(address(msg.sender), amount); emit EmergencyWithdraw(msg.sender, _pid, amount); }
https://bscscan.com/address/0xe70e9185f5ea7ba3c5d63705784d8563017f2e57#code
PancakeSwapのEmergencyWithdraw
// Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; pool.lpToken.safeTransfer(address(msg.sender), user.amount); emit EmergencyWithdraw(msg.sender, _pid, user.amount); user.amount = 0; user.rewardDebt = 0; }
https://bscscan.com/address/0x73feaa1ee314f8c655e354234017be2193c9e24e#code
それらしいRoadmap?
Roadmapがあるとユーザーに「これは長期運用を想定したプロジェクトです」とPRすることができます。鯨のRoadmapは夢物語風でもなく、やる気のあるプロジェクト感を醸し出そうとしている感がありました。具体性はまったくなかったですけどね。
独自AMM機能!第2のPancakeSwap?
ホワイトペーパーを読む限り、WhaleSwap自体がAMMとしての機能を有しているようです。Goose Finance含めPancakeSwapのForkプロジェクトはPancakeSwapのSwap機能を拝借しているのが一般的で、LPもCake-LPトークンになるのですが、まさかの鯨自前…!PancakeSwapに依存することなくSwapする上、独自のLP「WLPトークン」まで作るなんてなかなかやるじゃないですか。
PoolとFarmは合計6カ所?
まず最初はWHALE Pool1種、Farm5種、計6か所でステーキング&ファーミング出来るようです。全てWHALEペア(ステーブルペア無し)、最初からBTCペアがあるのは珍しいですね。
- WHALE-BNB
- WHALE-BUSD
- WHALE-USDT
- WHALE-CAKE
- WHALE-BTC
🐳ウェブサイトの内容
見た目はよくあるGoose Forkでした。
HOME

サイドバーには「Casino」が。
これからもどんどんリリースされますよ、という予告ですね。

Audit項目にはドキュメントが紐づけられていました。
フル文書はこちら:EtherAuthority.pdf
全部読もうと思いましたが、4ページ目で脱落しました。
フォントが揃っていないリリースドキュメントは信頼しない主義です。
EtherAuthority.pdfというファイル名も変ですね。
PoolとFarm
Poolはホワイトペーパー通りWHALE1種。
ローンチしたてプロジェクトとしては普通です。

Farmは4種。

ホワイトペーパーに5種って書いてましたよね。
- WHALE-BNB
- WHALE-BUSD
- WHALE-USDT
- WHALE-CAKE
- WHALE-BTC
今あるFarms4種
- WHALE-BUSD
- WHALE-USDT
- WHALE-USDC
- WHALE-DAI
1個足りないわけではなく、違うものが実装されています。
良く分からないのでGithubに公開されていたWhaleSwapリポジトリまでソースコードを見に行きました。この時点でWhaleSwapの詐欺可能性は非常に高いものになっていたため、逃走された後もコードを読めるようにリポジトリをまるっとForkしました。結局鯨は逃走時にGithubアカウントを削除したので、このForkは役に立ちました。
(後日、間違ってForkを削除してしまいました…)
pid: 0, WHALE-BUSD LP
pid: 2, WHALE-USDT LP
pid: 6, WHALE-USDC LP
pid: 7, DAI-WHALE LP
pid: 5, WHALE
Hidden Poolsを見つける方法
これは以前書いたFarm LPを抜く時実施する「pidの特定」とほぼ同じです。

1.MasterChef Contractを見つける
こちらは上記の記事に書いてあるので割愛します。
トークンアドレスからOwnerに行けばそこがMasterChef Contractです。
鯨の場合は以下でした。
https://bscscan.com/address/0xd2217fe8b002248693f408546008287a98b188dd
2.poolInfo, poolLength項目に行く
2-1.怪しいpidが分かっている場合
コードからpid: 1, 3, 4が飛んでいることが分かっています。
poolInfoに入力してみましょう。
2-2.怪しいpidが分かっていない場合
poolInfoからpidは0-7であることが分かるので、順番に叩いてみましょう。
Goose Finance丸コピで最初からPool/Farm数が多いとしても20個程度なので気合です。
3.pidからペア内容を確認する
pidを入力して、出て来たLPトークンアドレスリンクに飛んでペア内容を把握する、を繰り返します。
例えばpid: 0の場合、
出て来たhttps://bscscan.com/address/0x07475c6b827D574e76C6Cb4fA0661DC0298bF2b1に飛ぶと、WHALE-BUSDペアであることが分かります。
4.Pool/Farmを比較する
コントラクトから得たPool/Farmとウェブサイトに表示されているPool/Farmを比較します。
コントラクト のPool情報 |
ホワイトペーパー 記載 |
ウェブサイト 掲載 |
TX数 |
---|---|---|---|
pid: 0, WHALE-BUSD LP | 記載 | 掲載 | 280 |
pid: 1, WHALE 11 | 27 | ||
pid: 2, WHALE-USDT LP | 記載 | 掲載 | 91 |
pid: 3, WHALE-CAKE 2 LP | 記載 | 31 | |
pid: 4, WHALE-BTCB LP | 記載 | 17 | |
pid: 5, WHALE | 記載 | 掲載 | 866 |
pid: 6, WHALE-USDC LP | 掲載 | 30 | |
pid: 7, DAI-WHALE LP | 掲載 | 112 |
WhaleSwapの場合、ウェブサイトに載っていないPoolが3つありました。
WHALE-BTCB LP Farm、WHALE-CAKE 2 LP Farm、WHALE11 Poolです。
しかもTX(トランザクション)があるので、稼働中であるということです。
🐳捕鯨の時間だ
ユーザーに見えないプールがあり、しかも現在進行形でTXがある。
実際にここに資金を預け入れていないため、ファーミングが出来ているかは分かりません。しかしHidden Poolが裏に存在することに変わりは有りません。
Migrator code除去の部分でアヒルの鯨に対するヘイトは最高潮でしたので、テレグラムグループ(現在削除済み)に乗り込むことにしました。テレグラムでは鯨2名、Mod(モデレーター)2名が盛んに買い煽りをしており、これも異様な雰囲気でした。
to the moonとかはしゃいでるコミュニティに切り込むアヒル。
Whaleチーフから「間もなくもっとPoolを追加します」と白々しい返信があったので、pidも持ち出しました。この時点で100%WhaleSwapは詐欺だと確信していたので強気です。
ユーザーの質問はスルーして騒ぐ運営。
再度分かりやすく質問し直しました。
Whaleチーフから「それらのPoolは今使われてませんし、それらは今後数日でDeployされるものです」という回答が。「今使われるべきでないものが既にコントラクト上Readyになっている」「もうTXもあって使われている」のですが、鯨はあくまでしらばっくれるつもりのようです。
余談ですが、Boss鯨はidを隠していました。
テレグラムでは名前とプロフ画像の設定のみで簡単に成りすましができるため、自己の真正性はidで主張します。従ってまともな運営ならidを出します。
最近テレグラムに私の偽者も登場しているようなので気を付けてください。
先日PancakeSwapのコミュニティ運営メンバから「@ninahaussをBANしたよ」と教えてもらいました。
私のテレグラムidは@ninahausです。
さて、そんなカオス極めるテレグラムコミュニティでアヒルと鯨が押し問答をしている最中、あるTXのBSCScanリンクを投下したユーザーが即BANされました。アヒルは目敏いのでしっかりキャッチ。
TX内容は「WhaleSwapのMasterChefContractオーナーアドレスが、PancakeSwapからWHALE-USDC LPをリムーブした」という内容。調べてみるとたくさん出てきました。
20:49 運営によるRugpull開始
WHALE-USDC LPリムーブを皮切りに、
https://bscscan.com/tx/0x1488d05f4ebe17f3be4cefadb70847e7b61a9adbff84087d606c8f1d055fc7ea
WHALE-DAI LP、WHALE-USDT LPを繰り返しリムーブしています。
またWHALE単体もどんどんBUSDに変えていました。
ここでひとつ気付いたことが。
PancakeSwapもGoose FinanceもMasterChef ContractオーナーアドレスはTimelock Contractなのですが、WhaleSwapのMasterChef Contractオーナーアドレスはウォレットです。
WhaleSwapのMasterChefContract:
https://bscscan.com/address/0xd2217fe8b002248693f408546008287a98b188dd
MasterChef Contractオーナーアドレスは誰かのウォレット:
https://bscscan.com/address/0x05bb9d2610915069b03fae4ff96adafa2fe7d285
このウォレットがLPリムーブを繰り返しています。
このあたり全然詳しくないのですが「WhaleSwapにはTimelockがかかっていなかった」可能性があるのではないでしょうか。
3月7日の時点でMasterChef Contractオーナーアドレスのウォレットは67万WHALEと以下のステーブルコインを保持しています。
3月7日現在もWHALEをBUSDに交換中です。既に価値がないので、64000WHALEで8ドル、といったレートですが。

参考までに
🥚Goose FinanceのMasterChef Contract:
https://bscscan.com/address/0xe70e9185f5ea7ba3c5d63705784d8563017f2e57
🥚MasterChef ContractオーナーアドレスはTimelock Contract:
https://bscscan.com/address/0x2ef488de034567e9b8d312928fd52812a242ab3a
🥞PancakeSwapのMasterChef Contract:
https://bscscan.com/address/0x73feaa1ee314f8c655e354234017be2193c9e24e
🥞MasterChef ContractオーナーアドレスはTimelock Contract:https://bscscan.com/address/0xa1f482dc58145ba2210bc21878ca34000e2e8fe4
21:22 アヒルによるHidden Poolへの言及開始
この時運営はせっせとRugpull真っ最中だったので、別にHiddenPoolでファーミングしていたわけではなく、単純に粗い実装だった可能性もあります。
21:52 WHALEが上手く売買できないのはPCSのせい?
ユーザーからの「売買が思う数量でできない」という質問に「PancakeSwapのせいでーす」と答える鯨チーフ。ホワイトペーパーには自前のExchange・Liquidity Poolであると書いてあったのにもうめちゃくちゃです。
またこの時すでに運営は流動性を抜いていたため「どの口が言うかッ」て感じですね。

22:00 以降も買い煽りを続ける鯨
もうHidden Poolsの存在を隠すことはせず「今後リリースするやつだもん」と開き直って買い煽りを続ける鯨。この時既に$WHALE価格は地を這っていました。
23:30 ユーザーがチャートを投下
いつ取られたスクリーンショットか分からないので時間軸が良く分かりません。
このユーザーは「チャートの動きは健全に見える」と言っていますが、私には純度1000%のRugpullチャートに見えます。
3月6日 未明?鯨逃亡
具体的な時間は分かりませんが、私が起きた頃には既にウェブサイト、Twitter、テレグラム、Githubが削除されていました。逃亡寸前に「ハックされた」と言っていたという情報がありますが、本当に詐欺なら全消しで逃げる必要はありませんので十中八九詐欺でしょう。
私がテレグラムでHidden Poolについて発言したことで「Hidden Poolがあるの?じゃあ撤退する」という人もいたので、少しでも犠牲者の数を減らすことに貢献できていたら嬉しいです。
🐳WhaleSwapの2名のモデレーター
WhaleSwapには鯨運営ではない2名のmodがいました。
3月5日にRugpull、3月6日未明に鯨がExitした後、2人にテレグラムで話しかけてみました。
モデレーター1
この人はWhaleSwapテレグラムでそこまで活発ではなかった人です。
ユーザーの質問にたまに答えていたくらいの印象。
この人と私はテレグラム上において共通グループTRIO protocolに所属しています。
そちらでもmodメンバーなので、コミュニティ運営側に回るのが好きなんでしょうね。
なおTRIO protocolはラグっていませんが、プロジェクトに何の進捗も無いのでそういうタイプの詐欺だった可能性が無きにしも非ず…。
モデレーター2
この人はWhaleSwapテレグラムで非常に積極的に買い煽りをしていた人です。
この人はなんとなく怪しいです。
会話から誠実さが感じられない(訊いてないのに被害者ぶってくる)ですし、あれだけ過剰に煽っておいて自身は2BNBしか入れていない。本当に入れていたかも分かりません。面白半分に詐欺プロジェクトを煽る愉快犯の可能性があります。
2人に共通して怪しいのは、私との共通グループに稼働中プロジェクトがないことです。
たまーに他ユーザーとの共通グループをチェックしてみるのですが、Venus、PancakeSwap、Kebab、Panda、Goose、GemHuntなどなど、BSCで活動してるんだなぁと分かる共通項はあるものなんですよね。もしかしたら彼らは特攻用のサブアカウントなのかもしれません。
🐳WhaleSwap詐欺からの学び
- ホワイトペーパーがあっても信じるな
- 監査済みと運営が主張しても信じるな
- Hidden Poolsを疑え
- MasterChef ContractのオーナーアドレスがTimelock Contractかどうか確認しろ
- テレグラムで買い煽りする運営は疑え
- プロジェクト開始後のツイートやテレグラム発言がバーンばかりの運営は疑え
今回、鯨運営がHidden Poolでファーミングしていたかは確認していませんが、Hidden Poolがあるのは健全な状態ではありません。
大切なお金を預ける前にPoolチェックすると良いかもしれませんね。
ちなみに私は現在86のFarmを持つPancakeSwapに対してpid全数チェックしてます。
運営が好きな事と、プロダクトを盲目的に信じることはイコールではありません。
- PopcornSwap(Rugpull&Exit)

- WaffleFinance(プレセ後、ファーミング開始前逃亡)

- ShibDefi(Rugpull&EmergencyWIthdraw無効化)
