今回の記事では、流動性について解説していきたいと思います。
流動性はDEXのAMMに必要な知識になります。Defiの中でDEXはかなり重要なポイントであることは、前回の記事(DEXの基礎知識)で紹介していますので、わからない場合は先にそちらの把握をした上で今回の解説を見ていただくとより重要性が分かると思います。
流動性を理解することで、トークン価格が何で決まっているか動きを理解することができます。それに加えて、エラー内容の意味とその解決方法が分かります。よりDEXについて理解を深めたい方は、是非最後まで読んでみてください。
この記事では一通り前提知識を説明した後、Q&A形式でよくある質問に回答していきます。
流動性とは?DEXとの関係性
DEXの記事でお伝えしたように、ユーザーが取引できる場所がDEXになります。
通貨と通貨のペアを流動性といい、そのペアを提供してもらう事でユーザーはトレードが可能になります。
ユーザーが2BTCをスワップした場合、120,000USDTが返ってきます。これが可能な理由は、BTC-USDTの流動性を提供してくれるユーザーがいた為スワップが可能になります。
もし、流動性提供者がいなかった場合。『Insufficient Liquidity』という表示がでます。
この表記が出た場合、流動性が無いことが分かるのでトレードができない事になります。
Swapの流れ
スワップは3つの流れになります。
BSCSCANなどで、トランザクションcheckが可能のため是非一度確認してみて欲しいです。
- 送金(Transfer):ユーザー▶DEX・Router
- 送金(Transfer):DEX▶ユーザー
- Sync(同期)▶トークン比率からレートを計算する
※Transferすると中のトークンの数量が変わり、このタイミングでSyncを行うことでトークンの交換レートが調整されます。
Sync(同期)の詳細
送金処理が終わった後、Syncを行った際にレートが調整されます。ここが重要なポイントです。
例:1BTC=60,000USDT。現状100BTCと6,000,000USDTの流動性プールがあるとします。
10BTC入れて600,000USDT出すというユーザーが来た場合。
中のUSDTとBTCの数が変動する為110BTCと5,400,000USDTになります。
この後、Syncというレート調整が行われます。
そのため、1BTC ≒ 49090USDTというレートになります。
※各自計算して頂ければと思います。
プライスインパクト(Price Impact)・『Price impact too high』
『Price impact too high』というエラーメッセージに関連する内容です。
【左側のユーザーの場合】
現状100BTC:6,000,000USDT分の流動性プールがあるとします。
総量の2%に当たるのでこの場合は、スワップが可能になります。
【右のユーザーの場合】
現状5BTC:300,00USDT分の流動性プールがあります。
そこに先程と同じ2BTC交換したいとすると、総量の40%に当たるのでレートの変動が大きくなります。この場合は、スワップは不可能になります。
これが『Price impact too high』になります。
これは実際の例の画像ですが、Price impactが19.94%でできません。
※実際のUniswapの表示になります。
スリッページ(Slippage)・フロントラン(frontrun)
スワップ注文を入れてからのレートのズレをスリッページ(Slippage)と言います。
DEXアグリゲーターなどは「フロントラン防止機能」などをメリットとして提示していますが、その「フロントラン」という用語を理解する上で重要な概念です。
自分がSwapする際にレートが提示された後に自分より先に他の誰かがSwapするとレートが変動します。
『その際のズレを何%まで許容するか?』のことがスリッページとなります。
DEXのSwapページから「Slippage tolerance」という項目で実際に設定できることが多いです。
Slippage tolerance(スリッページ許容範囲)を高く設定すると『Your transaction may be frontrun』(フロントランになるかも)という表示がでます。
ここで分かることは、「スリッページを上げるとフロントランになりやすい」ということです。
では、フロントランとは何なのでしょうか。
上の画像の通り10BTCを交換したいというユーザー(Aさん)がいたとします。
Aさんは10BTC→600,000USDTのSwapを行う予定ですが、このトランザクションを感知して自分がこの人の前に割り込みできるとしたらと考えて見てください。
- Aさんより先に1BTC売って、Aさんのスワップ後に1BTC買い戻すとします。
- Aさんが10BTCを売るため、プールのBTC価格が下がります。
- なのでAさんより先にBTCを売り、Aさんのスワップ後に買い戻しをすると差益がでます。
これを、フロントランと言います。これはスリッページ許容範囲がある程度大きい場合に成り立ちます。
逆にこの時Aさんのスリッページ許容範囲が低く設定されていると、自分がスワップをしたことでレートが変動するため、Aさんがスワップ注文を入れた瞬間と実際のレートでスリッページ許容範囲を超えてしまい、Aさんのトランザクションが実行されません。
Aさんのトランザクションが実行されないということは、ただ自分が1BTC売って買っただけになります。すると差益はでません。
一番効率よくトレードするには
DEXによって流動性プールやレートが違います。それを一番良いところとマッチングしてトレードしてくれるのが、DEXアグリゲーターと言います。今回はその中の、1inchを説明に用いています。
※最近1inchがウォレットを出したので、スマホでも簡単にスワップが可能になり利用しやすいと思います。
1inchの詳しい利用法方や解説については、上記を参考してください。
流動性に関するQ&A一覧
この記事で扱っている内容は、DEXでスワップする際にエラーメッセージなどで出ることが多く、キーワードで調べている方が多いのでQ&A形式にまとめました。
それぞれの意味と、その対策方法について記載していきます。
Q.Slippageを上げると取引できるので、高ければ高いほどいいのですか?
スリッページは「フロントラン(frontrun)」の問題と非常に関係しています。
スリッページは「今の表示されているレートとどれくらい違っていても大丈夫か」を意味する数値です。
極端な例を言うと、スリッページを100%(全許容)にした場合、スワップ先のトークンをほとんど受け取れないという可能性があります。
あなたがスワップ操作を行っている間(DEXのスワップ入力欄に数字を入力→ウォレットの確認ボタンを押す)に、当然他の人もDEXを利用しています。
つまり、あなたが見ていたレートは1秒単位で考えると古いレートになります。その古いレートと実際のレートのズレをどれくらい許容するかの数字がスリッページです。
例)スリッページを10%に設定した場合
スワップして受け取る予定のトークン数が100と表示されていても、最悪の場合90しか受け取れない可能性があります。
※90未満の場合はスリッページの設定により強制終了され、スワップは実行されません。
これは、トランザクションごとに手数料が発生する仕組みのトークンの場合にも適用されます。
スワップする際のスリッページ下限を指定しているトークンもあるので、新規トークンを売買する場合にはドキュメントを確認しましょう。
Q.「your transaction may be frontrun」とはどういう意味ですか?
一つ前のスリッページに関する質問に類似していますが、「あなたのトランザクションはフロントランを受ける可能性があります」というメッセージです。
これは「あなたは取引直前に割り込まれる可能性があります」という意味になります。取引直前なのでフロントランなわけですね。
「とにかく今回のスワップが早く行いたい!」という場合には無視して構わないメッセージです。
フロントランは他人のスワップ直前に割り込み、他人のスワップ直後に逆方向のスワップをすることで差益を出す際に利用されます。
詳しくは上記のフロントランに関する見出しをご確認ください。
Q.「price impact too high」と表示が出てスワップできません。なぜですか?
上図のように、プールのサイズに対して大量のトークンをスワップしようとしている場合に表示されます。
仮にスワップをすると、スワップ直前直後でプールのトークン比率が大きく変わり、レートが大きく変わってしまうのでスワップできなくなります。
この表示が出た場合には、一度にスワップするトークン数を少なく小分けにする必要があります。
Q.「Insufficient Liquidity」と表示が出てスワップできません。なぜですか?
これは、「流動性が十分にありません」という表示です。
スワップするためには、流動性が提供されている必要がありますが、あなたが扱おうとしているトークンの流動性が少ない場合にこのエラーが表示されます。
基本的に、この「Insufficient Liquidity」が出た場合にはそのDEXでスワップするのは無理です。他のDEXと間違えているのが原因なことが多いです。
稀に、トークン開発者が意図的に流動性を提供していない場合があります(ラグ含む)。
Q.エラーメッセージが出てスワップできません。なぜですか?
その他にもエラーメッセージが出てスワップできないパターンがかなり多くあります。
これには「DEXの仕様 or バグ」だけでなく「トークンの仕様 or バグ」も含まれています。
例えばトランザクションごとに手数料をとる形式のトークンがいい例で、スリッページを正しく設定しないとDEX側に関係なくエラーが出ます。
現状よく起きているエラーの原因をまとめておきます。悪質なものもありますので確実にチェックしてください。
DEXでエラーメッセージが出る例
- そもそも詐欺トークンで売ることができないトークンである。
(売るためにトークンのオーナー権限が必要) - 必要なスリッページ数値以下でスワップしようとしている。
- 流動性が提供されておらず、少ない。
- 利用すべきDEXを間違えている。もしくは、バージョン違い(v1,v2など)を利用している。
- トランザクションが混雑していて、実行に時間がかかっている。
(そして、時間経過で自動的にキャンセルされる)
流動性のまとめ
- 流動性が低いとSyncした時、レートが変動しやすい。
- 流動性が薄いと『Price impact too high』になり、一気にスワップができない。
- スリッページを大きくするとフロントランのリスクがある。
- DEXアグリゲーターを使うと深く考えなくてもスワップが可能になる。
今回の記事で流動性というものが、DEXがの中で重要な概念であることを理解できたと思います。そのためDEXアグリゲーターに関しては、普段から利用することを個人的にはおすすめします。