3MIKAN
DeFi直コン

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】

今回は直接コントラクトからLPを解体する方法について画像付きで解説していきます。 この記事は「【DeFi】直接コントラクトからLPを作成する方法を解説します。」の続きの内容となっています。 まずは大きく1〜4項目に分けて各操作の流れや「なぜこの操作をするのか?」を解説し、5項目目で内容の復習も兼ねて実際にL…

直コン解体

今回は直接コントラクトからLPを解体する方法について画像付きで解説していきます。

この記事は「【DeFi】直接コントラクトからLPを作成する方法を解説します。」の続きの内容となっています。

まずは大きく1〜4項目に分けて各操作の流れや「なぜこの操作をするのか?」を解説し、5項目目で内容の復習も兼ねて実際にLPを解体する時の操作手順を解説していきたいと思います。

難しく感じる方は、5項目目の操作手順のところだけでもぜひ見てもらえたらと思います。

https://youtu.be/zDo9QINL87c

1. Router(ルーター)を探す

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

DEXというのはRouterとFactoryと各LPのコントラクトから構成されていて、この3つのおかげでSwapやLiquidityの提供がされるようになっています。

ユーザーはRouterを介して操作することになるので、まずはRouterを探す必要があります。

2. RemoveLiquidityを探す

次にRouterの中からRemoveLiquidityという機能を探す必要があります。今回は題材としてPancakeSwapを扱うのですが、下の画像(Pancakeのコード)で赤枠の部分(removeLiquidity)を探す必要があります。

実際は、このままコードを貼り付ける必要はなくBscScanから見つければ大丈夫です。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

仮に片方がネットワークトークンの場合、例えばバイナンススマートチェーンであればBNB、ファントムネットワークであればFTM、ポリゴンネットワークであればMATICなどの場合は、先ほどのコードのすぐ下にある部分を使います。(removeLiquidityETH)

片方のトークンがネットワークトークンの場合はこっちのコードを使うんだな〜ということだけ覚えておいてください。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

そしてひとつ分かりにくいところがあるのですが「RemoveLiquidity」と「RemoveLiquidityWithPermit」という2つの似ている機能(関数)があります。基本的にDeFiをやっている人が無意識に使ってるのは「RemoveLiquidityWithPermit」になります。

ここでは何をやっているかというと、LPの解体をするためにはRouterにLPの使用をApproveしなければいけませんが、それを省略することができます。

LP解体操作をやったことがある人は分かると思いますが、LPの解体をするときにApproveボタンを押してRemoveボタンを押すと思いますが、Approveの時にトランザクションを実行していないはずなんです。(DEXによっては実行しているところもありますが、基本的には実行しなくてもそのままできます。)

この際「Permit」がポイントになるのですが、イメージとしては「鍵のようなものを用意して、結果的にApproveをしているのと同じように扱える」という感じになっています。

ここはプログラムを書ける人からしたら簡単に解決できるのですが、scan上からトランザクションを発行したい直コン組には難しいポイントです。

今回は「RemoveLiquidityWithPermit」を直コンでScanからやる場合は「Permit」の処理をするのが難しいので、今回は「RemoveLiquidity」を選びました。

3. LPをRouterに向けてApprove

これはMasterChefに向けてApproveする時と同じです。

解体する時にはRouterに解体の許可をして、その後RouterがFactoryに送ったりいろいろ工程があるのですが、その時にユーザーのLPを扱うことになるのでApproveしないといけません。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

Approveの処理はいつもどおり、LPのコントラクトに行きApproveでRouterのコントラクトアドレスと数量を入れるだけですので画像は省略します。

もしわからない方は記事冒頭の動画を確認してください。

4. MinとDeadlineを入れて実行

コードを見ると「Min」と「Deadline」と書かれているのがわかります。ここにタイムスタンプを入れる必要があります。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像
埋めるべき項目
  • tokenA / tokenB
    各トークンのコントラクト
  • liquidity
    LPの数量(Wei単位)
  • amountAMin / amountBMin
    LP解体を中断させるための各トークンの最低使用量(普段はスリッページに基づいて設定される)
  • to
    作成したLPの送付先。自分のアドレスを入力すればよい。
  • deadline
    強制終了させる時間のタイムスタンプ

コントラクトの実行の仕方を記事で紹介する場合、0から説明しておかないと後から訳がわからなくなるので一応ここで丁寧に説明しておくと、コード部分に「tokenA」「tokenB」と書かれていますが、これがLPを構成する各トークンのコントラクトになります。

この「tokenA」「tokenB」がネットワークトークン(BSCならBNB、PolygonNetworkならMATICなど)だった場合は「RemoveLiquidityETH」になります。(下記画像参照)

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いて「unit liquidity」の部分についてですが、これはLiquidityのamount(数量)になります。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

ちなみに数量はユニットコンバーターの単位です。下の画像の一番上にある「Wei」という単位になります。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いて「amountAMin」「amountBMin」はそれぞれAとBのトークンを「最小どれくらい受け取りたいか?」を意味しています。なのでここに書き込まれた数字以下であれば強制終了にになり、実行しなかったことにしたい。という数量になります。

ちなみに、なにがなんでも実行したいという場合は両方とも「0」「0」を入力するといけます。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いて「address to」は、自分のアドレスを入れる箇所になります。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

次に「unit Deadline」は、タイムスタンプになります。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

タイムスタンプと検索すると下の画像のようなサイトが出ます。この表示されているタイムスタンプが現在時刻です。そしてこれを未来の時間にすれば良いということになります。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

以上で、項目1〜4の解説を終わります。では実際に操作していきます。

5. 操作の流れ

いろんなページを行ったり来たりするので、一度開いたページは閉じないほうが便利です。

開くことになるページまとめ

  • Routerのコントラクトページ
  • LPペアのコントラクトページ
  • tokenAのコントラクトページ
  • tokenBのコントラクトページ
  • timestampの取得用のサイトのページ

この方法を覚えておくと、仮にDEXを自作しているラグプルがあった場合にもLPを解体することができます。

基本的にラグプルするパターンというのは、大体PacakeのDEX(いわゆるCAKE LP)でずっとやっていたり、他のところで裏ではDEXを使っているというパターンが多いです。今のところ他のサイトがラグってもPancakeRouterで処理できるので、Pancake上でインポートすれば解体ができるようになっています。

今回は、作ったばかりの「BUSD-LINK LP」を解体していきたいと思います。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

まずは項目①で解説した通り、DEXのRouterを探していきます。今回の場合だとPancakeRouterを探します。探すときは「Docs」「Github」「LPを作成した時のトランザクションのログ」のどれかから探すことができます。今回はトランザクションのログからいきます。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

右上のMetaMaskのアイコンをタップして、トランザクションのログをタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

「↗︎」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

「Overview」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

下にスクロールすると自分が作ったLP一覧が記載されています。「Pancake LPs(Cake-L...)」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

次に「Write Contract」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

「Contract to Web3」をタップしてウォレットを繋げていきます。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

接続したいウォレットをタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

ウォレットが接続できたら「spender(Routerのコントラクト)」と「value」に入力します。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

まずは「spender」にRouterのコントラクトを入力する方法から解説します。先ほど5個前の操作(画像)で開いたページに戻り「Logs」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

下にスクロールして今回解体するのに必要なRouterアドレスを探します。(ページを開けばコントラクト名を確認できます。)

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

するとこのように表示されているのですが、上部にあるアドレスをコピーします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

再びウォレットを接続した時のページ(4つ前の画像)に戻りペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

次に「value」に入力する方法を解説していきます。9個前の操作(画像)で開いたページに戻り、赤枠の部分をコピーします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

次に、プログラム用の単位(Wei)に変換して「value」に入力しなければいけないのでBscScanの「Unit Converter」というページを開きます。([Unite Converter BscScan] でググってください。)

このようなページが出ます。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

次に「1」の欄に先ほどコピーした数値をペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

そして一番上の「Wei」という単位の欄に表示された数値をコピーします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

再び、5つ前のページ(画像)に戻り「value」の欄にペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

「Write」をタップして「確認」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いて、8個前の操作(画像)で開いたページに戻ります。

「Contract」「Write Contract」「Connect toWeb3」 の順でタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

ウォレットを接続するので、接続したいウォレットをタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

接続されたら下にスクロールして「3.Remove Liquidity」の欄を入力していきます。まずはtokenAからいきます。

8個前の操作(画像)で開いたページに戻り、赤枠をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

トークンアドレスをコピーします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

再びこのページに戻りtokenAの欄にペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

再び3つ前の画面に戻り赤枠をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

同じようにトークンアドレスをコピーします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

そして下のページに戻りtokenBにペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いてLiquidityの欄には11個前の操作でやった「Wei」の数値をコピー&ペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像
【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いて「amountAMin」「amountBMin」は両方とも0と入力します。(ここは解体した後に手に入るトークンの最小量になります。)

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像
【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

続いてウォレットのアイコンをタップしてアドレスをコピーし、「to(address)」にペーストします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

次にGoogleで[Timestamp]と検索して赤枠のサイトをタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

「現在時刻を取得」をタップします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

Timesatampが表示されるのでコピーします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

↓(途中の数字を適当に増やして未来の時間にします。)

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

再び4つ前の操作(画面)に戻り「Deadline(unit256)」にペーストします。

そして、このままWrite」をタップしても現在時刻が過ぎていれば通らないので、数字を少し増やします。

【DeFi】直コンでLPを解体する方法を徹底解説します。Rugpull回避方法【仮想通貨】の説明画像

その後「Write」をタップすると通ります。

以上で解体の操作が完了です。

6.まとめ

ページを行ったり来たりするので難しく感じた方もいらっしゃるともいますが、少しずつ覚えていただくと今後他の部分で役に立つかもしれないので実際にやってもらえたらと思います。

文章だとわかりづらい方はYoutube動画でも解説しているのでそちらも見てもらえたらと思います。

参考:【DeFi】直接コントラクトからLPを解体する方法

最後まで読んでいただきありがとうございました。