この記事のまとめ
DEXで最良レートで即時取引するには
Step 1: レート比較サービスで比較
Step 2: スリッページを考慮
Step 3: (取引額次第で)ガス代を考慮
※本記事では主にEthereumを利用したDEXを想定しています。
Decentralized (Open) Financeの略称について、dopefiがDeFiに敗れてしばらく経ちます。私はdopefi推しでした、、、などということはさておき、略称も徐々に定着してきたくらいなので、分散型取引所(DEX)も沢山登場しました。
各DEXの仕組みや特徴を知るのはともかく、トレーダーとして知りたいのは「最良レート」を提供してくれるDEXです。そんな要望に応えるべく、価格比較のできるプロダクトが最近出そろってきています(DEX以外も含みます):
特にDEX.AGは最近のアップデートで「価格検索 -> 即取引」が可能になり[注1]便利さが増したところです。
[注1]対応取引所は2019年7月23日現在、Uniswap、KyberSwap、RadarRelay、Bancor、Eth2Dai(oasis)です。検索結果の表示だけならその他複数の取引所にも対応しています。
1inch.exchangeは取引額が大きくなると、複数の取引所を使用することでスリッページを軽減してくれます。この取引は1inch.exchangeのスマートコントラクトで1度に処理してくれます。
DexIndexはETHペアとの価格検索しかできませんが、対応取引所が多く、Airswapも検索に含まれているのが特徴です*。
(*2019年7月23日現在、DEX.AG, 1inch.exchangeにはAirswapは含まれていません。)
(*2019年10月5日追記:1inch.exchangeにAirswapが含まれました。)
DEX.AGの情報は公開されているので、それを利用して私もひとつ重箱の隅をつつくようなツールを作ってみました。題してDexDetourで、取引に経由点を追加したほうが得するかどうかを調べることができます。
基本はレート比較した結果を採用すれば良いでしょう。次の段階の細かい効果として、取引完了までの間の価格変動(スリッページ)があります。
Ethereumネットワークを利用している以上、取引完了までには数十秒から数分の時間がかかります。この間のスリッページをどこまで許容するか、という設定はDEXにより異なります。
例えば、Kyberでは3%、Bancorでは2%が初期設定となっています。せっかく前述のレート比較をした身からすると、この値は大きいです。
幸いなことにKyber、Bancorにはスリッページ許容値を変更するUIがあるので、調整しておくと良いでしょう。
価格変動は真に相場が騰落するほかに、フロントランニング行為(後出しじゃんけん)によっても引き起こされます。現状で私が明確にこの被害を受けていることを確認しているのはUniswapです。
Uniswapにはオーダーブックがありません。取引レートは在庫量(プールサイズ)によって変動します。つまり、プールサイズに影響を与えるくらいの取引を実行するとレートが変わります。
スリッページは2%に設定されており、今のところこれを変更するUIはありません*。ですので、この範囲でフロントランニングが行われています。
(*2019年8月7日追記: スリッページ設定つきのUIがベータ版で公開されました https://beta.uniswap.exchange/ )
(*2019年10月5日追記: 公式版にもスリッページ設定UIが追加されました。)
以下の画像はUniswapのLOOM取引コントラクト( https://etherscan.io/address/0x417cb32bc991fbbdcae230c7c4771cc0d69daa6b#tokentxns )でフロントランニング被害の出た例です。
2,605 LOOMの取引が通常のユーザーのトランザクションで、それを挟みこむかたちでフロントランニングが行われています。
※一応、該当トランザクションの直接のリンク記載は避けておきます。
フロントランナーの先発取引は
0.0002978 ETH/LOOM
であったのに対し、ユーザーは
0.0003046 ETH/LOOM
という損なレートでLOOMを買うはめになっています。
また、ユーザー設定のgas priceが
34Gwei
なのに対し、フロントランナーの先発取引は
34.000000002Gwei
であり、巧妙に追い越されています。
一番良い対策といえば、Uniswapがスリッページを設定できるようにしてくれることなのですが、それまで個人でできる対策を挙げてみます:
- 取引履歴を見てフロントランニング被害の有無を確認する。Uniswap info ( https://uniswap.info )で各トークンの取引用コントラクトを取得できるので、取引履歴を見て前述のような挟み込み構造が無いか確認する。
- プールサイズの小さいトークンの取引ではUniswapを活用しない。(逆に、大きくなるとKyberがリザーブを共有したりして、Kyberからスリッページを設定できることになる。Kyber対応トークンの一覧はこちらから確認できる。)
- スリッページを覚悟する。
*2019年8月7日追記:
スリッページ設定つきのUIがベータ版で公開されました。
*2019年10月5日追記:
スリッページ設定つきのUIが公式版にも追加されました。
上図のExpected price slippageはこれから行おうとしている取引が必ず引き起こすスリッページで、既に掲示価格 6176.7に織り込まれています。additional price slippageの設定によって、自分が生成したトランザクションが承認されるまでの間に他人の取引によって価格が変わった際の許容スリッページを設定することができます。
スリッページよりさらに細かい話になりますが、1 ETH以下の取引ではガス代も無視できない要素です。例えばgas price 10Gweiでgas amount 500,000のトランザクションを行えば、0.005 ETHが消費されます。
主要DEXごとにgas amountで並べると、
Uniswap ~50,000
Airswap ~ 100,000
Kyber, Bancor, RadarRelay ~ 500,000
※DexIndexとDEX.AGで検索されるDDEXのレートはガス代込みかも?(確認していません。)
といった具合で、Uniswapがお得です。詳しくは bloxy の DEX contract 一覧からコントラクトを選択し、"Smart Contract Statistics"タブから各コントラクトコールの平均ガス消費量を確認できます。
gas price は etherscanのガストラッカー か ETH Gas Station で確認できます。
DEXでの即時取引は、レート比較サービスの登場でかなり楽になりました。真に最良なレートへありつくには、もう一工夫してスリッページやガス代への配慮が必要です。
DEX.AGにスリッページ設定項目とガス代概算までつくと、個人的には理想的ですが、UXが分かりにくくなる恐れはありますね。
著者 kyoronut