【スリップページの設定は必須!】JPYCに起こったサンドイッチ攻撃について解説。

はい、ほしけんです。

 

以前、JPYCにおいて事件が起こりました。それがこの画像の通り。

JPYC Info Unofficial (jpyc-info.netlify.app)

このVolumeというのは、取引量のことを意味するのですが、7月23日だけ異様に突出しているのがお分かりいただけるかなと。

ちなみに、この日の取引金額は$2.83m(3億円超)で、普段の日は800万円くらいですから、ものすごい金額が取引されました。

 

で、この日なにが起こったかというとJPYCが絡むサンドイッチ事件が起こっていたのです。。。

スポンサーリンク

7月23日 13:59:12(日本時間)に事件は起こった。

サンドイッチ???どいうこと?と思いますので、先にお話ししておきます。サンドイッチ攻撃というのは、大量の取引をすることで、価格を吊り上げて儲ける手法とでも言えばいいでしょうか。まぁ、そういった取引方法と考えてください。

 

ちょっと具体的に言えば、あるひと(被害者)が大量の取引の注文をしようとします。例えれば、Aという仮想通貨をBに交換するようなものです。

 

で、このとき、別の人(攻撃者)がこの大量取引をしようとしているのを嗅ぎ付けます。これは人間によるものではなく、Botと呼ばれる機械やシステムのことのようで、こやつが被害者の大量注文を承認される前に、自身の注文を入れます。

攻撃者の注文により、大量のAがBに交換されます。その結果、AとBのプール内には、Aが増え、Bが減ります。

つまり、Aの価格は下落、Bの価格は上昇になります。

 

そして、攻撃者の注文が承認された後、被害者の注文が承認されます。このとき、Aの価格は下落、Bの価値は上昇していますから、被害者が受け取れるBは本来の取引よりも少ない量になります。なぜなら、Bの値段は上がっているから。

 

さらに、攻撃者は手に入れたBをAに戻します。この時には、普通の価格付近まで戻り、Aを最初よりも多く手に入れているということなのです。

まとめればこんな感じ。

1、攻撃者が被害者の大量注文を感知し、先周って大量注文をする

⇒プール内の価格に大きな変動が起こる

2、被害者の注文が承認される

⇒価格が変化している結果、悪いレートで交換が完了する

3、攻撃者は再度買戻す

⇒買戻しにより、利益が得られる

まぁ、このように攻撃者が挟んで取引していることから、サンドイッチ攻撃っていうんじゃないですかね。。。

 

難しいので実際に起こった、ETHとJPYCの物語で解説していきましょう。

プール内に通貨が大量流入すると、プール内の価格が変化するのかについてはこちらの記事から。完全に合致してはいませんが、似たような考え方です。

【知ってないとヤバい!?】インパーマネントロスについて、素人でもわかるよう簡単にしました。
はい、ほしけんです。 先日、USDC-JPYCの流動性を供給して、手数料が手に入りましたという話をしました。 じゃあ、自分も余っている通貨と組み合わせて流動性を供給すれば、手数料めっちゃ入るじゃん!ラッキーと思わ...

 

1、攻撃者がETH⇒JPYCを大量買い付け

Ethereum Transaction Hash (Txhash) Details | Etherscan

まず、最初です。この攻撃者の取引内容がこちらになります。

時間は7/23 13:59:12で、ユニスワップという仮想通貨取引所での出来事です。先ほど解説したように、被害者が大量注文しようとするのを検知し、先駆けて大量注文をします。

 

この攻撃者の取引では、111.6082ETH(≒2600万円)分を、2,252,836JPYCに交換しています(1ETH=20,186JPYCで取引)

当然ながらこの取引はかなりの金額であることが明らかで、当時1ETH=2125ドル(≒23万円)ですから、ETHの大量流入により、JPYCの価格が上昇した結果、このような取引価格になっています。

現状のETH-JPYCの流動性が5万ドル(≒550万円)で、同じように取引をしようとすると、提供されている流動性のほとんどが利用されてます。その結果、価格に大きな影響が及ぼされます。

2、被害者の大量注文が承認されるが、、、

Ethereum Transaction Hash (Txhash) Details | Etherscan

続いて、大量注文しようとしていた被害者に移ります。

この人は0.2ETHをJPYCに交換しようとしていました。先ほどの攻撃者がETHの価格を下落、JPYCの価格を上昇させていますので、注文が承認された結果、0.2ETHが336JPYCの取引になりました。

0.2ETHは、1ETH=2125ドルですから、425ドル(≒47000円)くらいの価値があります。

 

ですが、この取引では上述の通り、たった336JPYCしか手に入っていません。これは攻撃者による価格が操作されたことに起因します。

 

ちなみに、どうしてこうなったかというのは、後述します。

3、攻撃者はJPYC⇒ETHにして、利益をゲット。

Ethereum Transaction Hash (Txhash) Details | Etherscan

最後に、攻撃者は手に入れたJPYCをETHに戻します。

取引内容的には、2,252,836JPYCを111.75ETHにしています(1ETH=20,159JPYC)

 

この攻撃者は、最初111.6082ETHで、JPYCにして、最終的に111.75ETHを手に入れています。つまり、+0.14ETH(≒3万円)の利益でした。

まとめるとこんな感じ。取引時刻を見ると、実はこの取引一瞬なんですね。すべて13:59:12に起こっていました。

攻撃者は0.14ETHを手に入れ、被害者は0.2ETHを使い、たった336JPYCを手に入れたというのが事の顛末です。

 

ただ自分はここまでの金額を取引したことがないのでわかりませんので、一瞬で、どうしてここまでJPYC→ETHの価格が戻ったのかというのがわかりません。。。

どうやったらこのサンドイッチから回避できるのか。

1、スリップページを無制限にしない。

まず1つ目に、スリップページを無制限にしないということです。

被害者の取引を確認すると”amountOutMin=0”になっているのがわかります。これはスリップページが無制限であるということです。

 

スリップページとはなにかというと、下記の通り

スリッページとは、ストリーミング注文や逆指値注文を発注する際に生じる、注文を発注したときのレートと、実際に注文が約定するときのレートの差(ズレ)をいいます。スリッページとはなんですか? – DMM FX

 

以前、仮想通貨の取引においては、株式投資で言う”成行”注文のみとなっているという話をしました。そのため、スリップページというのが発生することがあります。

 

世の中で多くの人が取引しているのですから、タイミングによっては自分が注文した表示価格と、時にズレが発生するということですね。上の画像では、現状だと111,439JPYCを1000USDCで交換できる見積もりですって書いてあります。ただ、“Minimum received”の110,800JPYCとなっています。これが最低でも手に入りますよ、でもそれ以下になったら交換は中止しますってことですね。

そのため、急な変動の場合に備え、スリップページに制限をすることで対策をします。制限してしまえば、もしスリップページの制限を超えた場合、取引は成立しません。

 

ですが、この被害者の注文を見ると、スリップページが”0”。つまり、どんな価格になっても注文を成立させてOKってことを意味します。

その結果、0.2ETH(≒47000円)と336JPYCの交換が成り立ってしまったのです。。。だって、どんな価格でも交換するんで、といっているので。

スリップページを設定する。

今回は、2つの取引所でのスリップページを設定する方法をお伝えします。

1つ目にParaSwapです。

こちらはシンプルで、注文の度に、スリップページを設定することができます。一応初期設定で、0.5%だったので下手にいじる必要はないでしょう。また、初期設定を変更して、0.1%などに変更することも可能です。

2つ目に、QuickSwapです。

右上に、歯車マークがあります。これをクリックするとスリップページを設定する画面が出ます。

 

ただ、一応スリップページを設定する方法を紹介しましたが、初期設定ではスリップページは0になっていないはずなので、この方は自分で0に設定したから起こった問題でもあります。

 

Polygonで仮想通貨取引するなら、ParaSwapが最強な3つの理由!
はい、ほしけんです。 以前から、日本円をUSDC(Polygon)にして、JPYCを交換して、利益を得ようという話をしてきました。 この記事を読めば、だれでもJPYCを手に入れることができるのですが、どこで手に入れたUS...

2、多額の取引をしない。

今回のサンドイッチ攻撃には、大量の注文がありそうだということがきっかけでした。

金額にして、0.2ETHなので、5万円程度とそこまで高額ではありません。が、この程度でもそういうことは起こりうるということですね。

特に、ETH-JPYCというペアはそこまで流動性は高くないでしょう。そのため、5万円だとしても大量注文として判断される可能性があるのでしょう。

なので、特にメジャーではない取引をする場合は、高額の取引をしないようにすることも1つの対策でしょう。

 

流動性の低い通貨を高額の取引をすると、必然とレートも悪くなるのでオススメはしません。

ETH-JPYCを襲ったサンドイッチ攻撃についてのまとめ

ということで、まとめです。

サンドイッチ攻撃とは、大量注文しようとする人に先駆け、注文し価格を操り、利益を得る攻撃方法。

<対処方法>

スリップページの制限をしっかり設定しておくこと。

ということで、こちらが今回起こったサンドイッチ攻撃についての概要になります。

 

よく考えれば、悪意の有無にかかわらずサンドイッチ攻撃が悪いというわけではなく、被害者のスリップページが0であったことが原因ではないかと思うんです。ここさえしっかりしておけば、問題なかったはずなので。。。

 

ということで、JPYCはまだ市場規模としては小さいので、こういったことがほかの通貨以上に起こりえます。なので、しっかり対策しておこうねって話でした。

【完全版】日本円ステーブルコインJPYCを”お得”に手に入れて、一歩先の未来を体感しよう!!
はい、ほしけんです。 これまで銀行にある日本円をUSDC(Polygon)に交換して、お得にJPYCを手に入れる方法について解説してきました。 流れをまとめておくと、この通り 1、日本の仮想通貨取引所に...

 

SushiSwapでJPYCをKashi(貸し)てみた!
はい、ほしけんです。 今回は、SushiSwapにて、JPYCをKashi(貸し)て、利益が手に入りましたというお話をしたいと思います。 このKashiというのは、仮想通貨の貸し借りができるプラットフォームです。具体的に...

 

USDC-JPYCの流動性を供給したとき、どれくらいインパーマネントロスが起こるか見積もってみる!!
はい、ほしけんです。 前回と前々回で、インパーマネントロスについてお話していきました。 で、前回の結論で『インパーマネントロスを避けるなら、ステーブルコイン同士』の運用をするのがいいという...
タイトルとURLをコピーしました