ソースコード解読:人気の二舅コインは本当に逃げたのか?

十四君
2022-07-31 19:15:01
コレクション
二舅コインのスマートコントラクトのソースコードを解読し、オンチェーンの取引記録をもとに逆証明することで、プロジェクト側のオンチェーン操作を分析し、本件の経緯を明らかにする。

著者:十四君

概要

二舅コインが登場し、二舅は逃げたと言われていますが、今日はそのようなニュースが溢れています。本当に彼は逃げたのでしょうか?

結論として、Twitter上の安全専門家が発信し、多くのメディアが拡散した二舅コインは、実際には逃げておらず、31日にプロジェクト管理者特権を自発的に放棄しました。

噂を否定するには証拠が必要です。筆者は二舅コインのスマートコントラクトのソースコードを解読し、オンチェーンの取引記録を遡って、プロジェクト側のオンチェーン操作を反証し、本件の経緯を分析します。

まず声明しておきますが、私はプロジェクト側ではなく、二舅コインを一切保有していません。本記事は技術研究の観点からの解釈です。

背景

このニュースの拡散は、Twitter上のある安全専門家のツイートから始まり、無数のメディアに拡散されました。最初の原文は以下の通りです:

image

出典:Twitter、リンクは付録参照

実際、噂の観点から見ると、確かにこのような文章は非常にリアルで、専門的な数値が驚異的であり、Tornado Cashは確かにマネーロンダリングの一般的な手段ですが、本当にそうなのでしょうか?130万ドルの損失はどのように算出されたのでしょうか。

プロジェクト側も何らかの反応を示しています:

最初、プロジェクト側はエアドロップを通じてTwitterのフォロワーに報酬を与え、フォロワーを増やそうとしました。

image

出典:Twitter、リンクは付録参照

こう見ると、確かに逃げる準備をしているように見えます。

分析

このコインはBSC(バイナンススマートチェーン)上に展開されており、オープンソースの検証が行われています。以下のアドレスからいくつかの証拠を確認できます。

ブロックチェーンブラウザの使い方については前文を参照:

私たちがEtherscanを見ているとき、実際に何を見ているのか?

プロジェクト側のアドレス:

0x469de2c6357666c69156722e83136ad1919a70aa

二舅コインのコントラクトアドレス1

0x6e7ad49f67a9fa80d50f9659c3fc938296d68b58

二舅コインのコントラクトアドレス2

0xe67cff48da0156e7978bc5a9a44d516a48d2a1d6

筆者は7月31日午後3時から本記事を執筆し、取得した二舅コインのオンチェーン取引は合計1686件です。

最初のデプロイ操作の初期化段階で、プロジェクト側は自分自身に1,000,000,000,000,000個の二舅コインを送信しました。

画像image

初期化デプロイ、出典:bscscan、リンクは付録参照

そのデプロイ時の初期化関数には大きな変更があり、大部分は取引プールの構築に関するインタラクションメソッドに関連していますが、資産を生成して移転するコア部分は以下のコードの中の_mintにあり、つまりデプロイした者に一度にmintされることになります。

説明:constructorはコントラクトの初期化関数であり、コントラクトがデプロイされるときに一度だけ呼び出され、以降は実行できません。


最初から全て自分に与えられ、見れば見るほどRugの前兆のように見え、他の人が噂を立てるのも無理はありません。

しかし、コインを発行するには、取引所の取引プールが必要で、異なる通貨と交換し、他の資金に転換する必要があります。ブロックチェーン上でコインを発行するのは難しくなく、5行のコードでコインを発行できます。100億個のトークンを発行するのも簡単で、最大で10の後に78個の0を付けたトークンを自分に発行できます。なぜなら、標準ERC20の残高の保存タイプはuint256であり、最大値は2**256乗だからです。

では、このトークンは直接交換可能なのでしょうか?

ソースコードは合計3000行で、標準ERC20や多くの一般的なプラグインが含まれており、取引プールとの交換コードも内蔵されています。

逃げるには、資金のやり取りが必要です。

  • 他のアドレスがコントラクトに取引を行うか

  • プロジェクト側が自ら取引所のプールから交換するか

筆者は二舅コインの全てのコントラクト取引を読み取ったところ、valueにBNBを含む取引は1件のみで、注入されたのは0.126BNBだけでした。

image

出典:bscscanのコントラクト取引記録の一括ダウンロード

二舅コインは取引所で既に大量の取引移動記録(8000件)があり、その結果、現在二舅コインを保有するアドレスは1600以上に達しています。

しかし、逃げたかどうかを判断するには、プロジェクト側が発行時に自分が保有しているトークンのうち、どれだけがプールを通じて他のトークンに変換されたかを見る必要があります。

プロジェクト側が自分に大量に発行したトークンの記録を追跡すると、デプロイ時に自分に1,000,000,000,000,000を与えた以外には、上の図の第二行の移転操作のみで、プロジェクト側は自分の990,000,000,000,000個のトークンを0アドレスに転送しました。

image

99%のトークンを焼却、出典:bscscan、リンクは付録参照

さらに、プロジェクト側のアドレスの全取引を計算すると、プロジェクト側はpancakeSwapV2を通じて二舅コインを使って1.3BNBを交換しただけで、転出されたのはその1.3BNBのみです。説明:現在のBNBのドル価格は271ドルです。

数百ドルのために逃げるのでしょうか?

image画像

出典:bscscanのコントラクト取引記録の一括ダウンロード

では、なぜ130万ドルの話が出たのでしょうか?

推測ですが、この安全専門家は転出したのが1.3Bのドルだと思い込み、あまりにも非現実的だと感じて「B」はbillion(十億)ではなくmillion(百万)だと思ったのかもしれません。

もちろん、現在の取引プールのトークンの総量は全体の0.55%しかないのは正しいです。なぜなら、プロジェクト側が99%のトークンを焼却したからです。そして、その焼却はtotalSupplyを変更していません(これは確かにすべきではなく、焼却は標準のBurnメソッドを呼び出すべきです)。

今のところ、確かに言えるのは、プロジェクト側は悪意を持って多くの利益を得ていないということです。

さらに、プロジェクト側は噂を発信した者に対して反論しましたが、返答は得られませんでした。

image画像

出典:Twitter、リンクは付録参照

管理権の放棄

31日の午後、プロジェクト側は噂が広がる中で、決定的な操作を行い、プロジェクト側の管理者権限を放棄しました。

image

上の図から見ると、プロジェクト側のアドレスの最後の2件の取引操作は、二舅コインの2つのコントラクトアドレスの所有権を0にする操作を行いました。

これで本当に新しいMint権を放棄できるのでしょうか?

確かに可能です。

所有権を放棄するのはrenounceOwnershipメソッドで、_ownerを0アドレスに設定します。こうなると、コントラクト内でonlyOwnerで修飾されたメソッドはすべて呼び出せなくなります。 image

使用できなくなる関数は約20個あり、管理者権限を削除する最も重要な点は、新しいトークンをMintするメソッドを削除することです。3000行のコードの中で、唯一_setBalanceがMint権限を調整するもので、もちろんonlyOwnerで修飾されていないのは、internalメソッドだからです。このメソッドは外部から呼び出すことができず、コントラクト内で既に定義されたメソッドからのみ呼び出すことができます。

image

対応する2つの関数は以下の通りで、明らかにonlyOwnerで修飾されているため、今後は使用できなくなります。

![image](/upload/image/20220731/1659265908806147.jpg)

私はさらに、残高を保存する_balances変数に他の名前でバックドアが残されていないか分析しましたが、確かに発見できませんでした。他のバックドアがあるかどうかは、高度なコントラクト監査の専門家に頼るしかありません。

まとめ

プロジェクト側は確かに逃げていません。噂を立てた者が悪意を持っているか、彼の編集者が下落を見て、プロジェクト側が1.3BNBを転送したのを見て1.3Millionだと思ったのかもしれません。

しかし、オンチェーンの取引記録は嘘をつかず、コントラクトコードも嘘をつきません。コードに定義された通りに変わることはありません。

引用:

安全専門家の発表:

https://twitter.com/WhoCares_News/status/1552659993530609665

プロジェクト側の返信:

https://twitter.com/SecondUncle_Dao/status/1553621587697381376

二舅コインのコントラクトデプロイ取引:

https://bscscan.com/tx/0xe51cf68ec605bbbce8f2784109faff98be9272824db8ebf5ad426fcfa1bca395

プロジェクト側が得た1.3BNB:

https://bscscan.com/tx/0x5c22ce9f185ad0907c08b60a9d36add51deed9b2b629527c48190bba0b2a5cdb

プロジェクト側が転送した1.3BNB:

https://bscscan.com/tx/0xc3adb38d93c4b11b47f70a8af498dc114582392da80be8c6e7ee6783bd69b637

ChainCatcherは、広大な読者の皆様に対し、ブロックチェーンを理性的に見るよう呼びかけ、リスク意識を向上させ、各種仮想トークンの発行や投機に注意することを提唱します。当サイト内の全てのコンテンツは市場情報や関係者の見解であり、何らかの投資助言として扱われるものではありません。万が一不適切な内容が含まれていた場合は「通報」することができます。私たちは迅速に対処いたします。
チェーンキャッチャー イノベーターとともにWeb3の世界を構築する