PancakeSwap直コンで上場戦に勝つ方法
納豆男爵です。今回はプログラミングの話はしません。ちょっとした工夫でPancakeSwapでの取引を一足早く実行する方法を紹介します。仕組みがわかればPancakeSwapに限らず様々なDeFiで自由度の高い取引ができるようになります。そして何より新しいコインが上場するタイミングでPancakeSwapのサイトをリロードすることなく無理矢理Swapすることができるのです。
ちゃんと準備すれば明らかに素人ユーザよりも早く買うことができますので上場戦に勝つには必須のテクニックとなります。
(もちろんbotの方がさらに早いのですが…)
今回は例題としてPancakeSwapでBUSDとCAKEを交換することを試みます。PancakeSwapのサイトに行けば誰でも簡単にできるのですが、あえてPancakeSwapには行かずにこれをやってみましょう。具体的には以下のステップで実現します。ウォレットとしてMetaMaskを設定済みとします。
① BSCScanでPancakeSwap Routerコントラクトを開く
② MetaMaskをConnectする
③ Write Contract の SwapExactTokensForTokens 関数を開く
④ BUSDとCAKEを交換するよう引数を指定する
⑤ トランザクションを投げる(MetaMaskで承認する)
恐らくやったことのない人にはちんぷんかんぷんだと思います。順を追って解説していきましょう。
※この記事に書かれていることを実施することによって資産を失う恐れがあります。この記事によって生じた損失について当方では一切の保証をいたしません。各自の責任によってお試しいただくようお願いいたします。
①BSCScanでPancakeSwap Routerコントラクトを開く
PancakeSwapにはTokenの取引をするためのRouterコントラクトなるものがあります。以下がPancakeSwapのRouter v2のコントラクトアドレスです。
0x10ED43C718714eb63d5aA57B78B54704E256024E
これをBSCScanに入力してみましょう。コントラクト情報が見れます。
開いてすぐのページ下部にはTransaction情報がずらーっと並んでいるかと思います。PancakeSwapでの取引情報なのでかなりの高頻度にTransactionが発生しています。
② MetaMaskをConnectする
さて、今回はこのRouterコントラクトを使って取引をしようというわけです。このBSCScanではコントラクトに用意された関数を呼び出して実行することができます。
まずはMetaMaskを接続しましょう。上の図につけた番号の順に「Contract」「Write Contract」と開くと、「Connected to Web3」というボタンが現れます。これを押すとMetaMaskとつなげることができます。
③ Write Contract の SwapExactTokensForTokens 関数を開く
次に、Write Contractの中身を見ていきましょう。下の方にずーっと見ていくと「14. swapExactTokensForTokens」という関数が見つかります。
この関数は「あるTokenをあるTokenに一定量Swapする」というものです。ちなみに10番目にswapExactETHForTokensという関数がありますが、これは「BNBをあるTokenに一定量Swapする」というものです。BNBだけはTokenでないため特別扱いとなります。
④ BUSDとCAKEを交換するよう引数を指定する
では、上の図でそれぞれの枠に必要なデータを埋めていきましょう。各引数の意味は以下の通りです。
amountIn
支払うTokenの量です。気を付けなければいけないのはここで指定するのは最小分割単位の量です。BUSDであれば最小単位は10^(-18)なので1BUSDを支払うには1000000000000000000(0が18個)を入力することになります。
amountOutMin
これはSwap後に返ってくるTokenの許容する最小の量です。PancakeSwapにおけるスリッページのようなものです。Swap後にこれよりも少量のTokenしか得られないとSwap失敗となります。相場の変動が大きい時に安全策のために使いますが、上場戦のような相場がどうであろうと何が何でも買うという場合には0を指定しておけばよいです。
path
ここでSwapするTokenを指定します。どのTokenからどのTokenへSwapするか経路を指定します。LiquidityのないPairを経路として指定するとSwapに失敗します。多くのTokenはWBNBあるいはBUSDとペアを組んでいますので、WBNBかBUSDを経由すれば間違いないでしょう。
今回はBUSDとCAKEを交換したいので、BUSD->CAKEの順にコントラクトアドレスを記載します。
BUSD:0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56
CAKE:0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82
なので、pathへの入力は以下の通り。
0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56, 0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82
to
SwapしたTokenの送付先です。当然自分のウォレットのアドレスを指定しましょう。
deadline
トランザクションを完了するまでの時間制限です。締め切りとなる時間をunix時間で指定する必要があります。unix時間を調べるには以下のようなサイトを使うと良いです。同じようなサイトはいっぱいあります。
Unixtime相互変換ツール
この画像を取得した時間が2021/8/31 22:47:10なわけですが、これをunix時間では1630417630と表します。今現在のunix時間がわかればそこから制限時間を秒単位で足せば良いです。例えば今現在の時間が1630417630ならばそこに5分(300秒)足して1630417930をdeadlineとして入力します。
⑤ トランザクションを投げる
各引数をおさらいしておきましょう。自分のウォレットにある10BUSDを何が何でもCAKEに変えたいとします。設定は以下の通りです。
amountIn: 10000000000000000000
amountOutMin: 0
path: 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56, 0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82
to: ***自分のウォレットアドレス***
deadline: ***現在のunix時間+300***
それぞれ入力できたら「Write」ボタンを押しましょう。MetaMaskが現れて承認したらトランザクションが投げられます。ガス代等問題なければ無事にCAKEがウォレットに入っているでしょう。
おまけ:上場戦への心構え
PancakeSwapのWebサイトで上場戦を戦えないのか。それは主にスリッページのせいです。Webサイトではなぜかスリッページなしを指定できないため、価格変動が激しすぎるTokenは買えません。BSCScanからのコントラクト呼び出し(巷では直コンと呼ばれている)では、この制約がないため好きなタイミングでTokenを買えるのです。
ただし、以下のようなデメリットもあるので十分に精査して使ってください。この記事によって発生した損失について責任は負いかねます。
・数字を間違えて想定外の規模の取引をしてしまうことがある
・価格変動が激しすぎて壮絶な高値掴みをしてしまう
・スワップ経路等設定を間違えてトランザクションが処理されない
・ウォレットアドレスを間違えて買ったTokenがどこかに消える
・などなど
ちなみに、直コンが使いこなせるようになるとPython+Web3.pyでのbot作りも簡単にできます。プログラミング経験のある人は是非挑戦してみてください。
この記事が気に入ったらサポートをしてみませんか?