Binance Smart Chainでフラッシュローン体験 ~パンケーキアービトラージャーへの道~
Ethereumのガスやネットワーク混雑の問題によってBSC(Binance Smart Chain)へ移行もしくはその上へフォークをデプロイするDeFiプロトコルやサービスが増えています。パンケーキスワップはその中でも間違いなく成功しているといえるプロジェクトなのではないでしょうか(ほぼただのフォークだけど)。BSC自体がEthereumのフォークのようなものいうことなので、同じツールを使ってコントラクトをマイグレーションし放題・デプロイし放題といったところですかね。今回はBSC上でAaveのフォークプロジェクトを発見したため、BSCでフラッシュローンをテストしてみました。※実質ただのAave V1のフラッシュローンです
BSC上でもフラッシュローンができるということで、フラッシュローン→パンケーキスワップでアービトラージなどの取引を低コストで実施できるのではないでしょうか。少なくとも現在のEthereumのガス代よりは相当安くトレードができそうです。フラッシュローンについては過去のフラッシュローン記事を参照してください。
- Binance Smart Chainとは
- Multi-Chain Lend(MCL)とは
- フラッシュローンやってみる
Binance Smart Chainとは
Binance Smart Chain(BSC)はEthereumのフォーク?で、EVMとの互換性があるブロックチェーンであるという理解です(ちょっと詳細知りません)。異なる点はネイティブトークンにEthではなくBNBが採用されていること、コンセンサスはProof of Staked Authorityで3秒以内のブロック生成が可能となっていることなどです。Binance Chainとは独立して動作していますが、Binance ChainのBEP-2とBEP-8トークンは、BSCに導入されたBEP-20標準のトークンにスワップすることができます。BNBはブロック生成時に鋳造されず、むしろバーンされるためにその流通枚数は減少していくということだそうです。[1]
バイナンススマートチェーン(BSC)の説明としては、バイナンスチェーンと並行して動作するブロックチェーンが最も適しています。バイナンスチェーンとは違って、BSCはスマートコントラクト機能とイーサリウム仮想マシン(EVM)との互換性に特化しています。
Ethereumと同じコード資産、Truffleなどのツールを使いまわしてBSC上へコントラクトをデプロイできます。DeFi関連のサービスとしてはパンケーキスワップを始めとして数多くのDappsが既にデプロイされています。Binanceはブロックエクスプローラ上でパンケーキツールを提供するなどパンケーキスワップ押しのようです。https://bscscan.com/yieldfarmsではパンケーキスワップのようなDEXを始めとしたDeFi系サービスがリストアップされています。雨後の筍のように日々サービスがデプロイされ、既に200近くのプロジェクトが存在しています。BSCの黎明期のDeFiサービスとしてはパンケーキスワップ、バーガースワップ、ベーカリースワップなどが挙げられます。[2]
ブロックエクスプローラと指定されたRPCエンドポイントを設定してメタマスクによる接続が可能です。ブロックエクスプローラはetherscanに似たUIとなっていて使いやすいです。個人的にコンセンサスのバリデータ数が限定されていることが気になります。昨年はEthereumでMEVの問題が数多く取り上げられましたが、BSCではバリデータが集権的でありBSCで発生するトランザクションのコントロールはかなり容易であると考えられます。こちらの記事によるとBSCのバリデータになるには2.6億円ほどかかるとのこと。個人でバリデータになることは現実的ではなく実質はコミュニティに選ばれた21のノードへ集権しているというのが実情でしょう。[3]
事前準備としてメタマスクによるチェーンへの接続確認を行いウォレットへBNBを入れておきました。テストネットでは、Binance Smart Chain Faucetから無料でBNBをゲットできます。今回はメインネットでテストしています。
Multi-Chain Lend(MCL)とは
Multi-Chain Lend(MCL)はMultiplierが提供するBSC上のAaveフォークです。仕様としてはAaveとほぼ同じですが金利手数料やフラッシュローン手数料に違いがあります(※例えばフラッシュローン手数料は0.06%からスタートなどなど)。ガバナンストークンはbMXXで100 MXXが1 bMXXへコンバートできます。これはAaveで100 LENDが1 Aaveへ変換できることと同じですね。bMXXへ変換されたMXXはバーンされます。[4]
いま現在のTVL(Total Value Locked)サイズは2,000万ドルで5億ドルのAaveと比べると当然小さいですが、Binance Smart Chainの利用の増加によってまだまだ拡大の余地はあると考えられます。まず何よりこのサービスを知らないBSCユーザやDeFiユーザは多いのではないでしょうか。Mediumのローンチアナウンスを見てみると2月21日からなのでまだ日は浅いですね。[5]
流動性提供を行うことで金利手数料とフラッシュローン手数料の70%を得ることができます。bMMXをステーキングするユーザはプロトコルの20%の手数料収益が分配され、さらにステーキングユーザ全体のステーキング量の比率に対して400 bMXXが分配されます(日次です)。細かい計算はしていないですがbMXXステーキングへのインセンティブはAaveより強いかもしれません。名前がちょっと覚えづらいですね。
フラッシュローンやってみる
公式サイトの触れ込みではMCLはBSC上でフラッシュローンをサポートする最初のプロトコルであるとのことです。Mediumのページにメインネットのコントラクトアドレスは書いてあるのですが、テストネットのアドレスは分かりませんでした。ガス代は安いと思うので思い切ってメインネットでテストしてみることにします。Binanceアカウントあったのを思い出したのでメインネットへ接続したメタマスクへ少額を送金。Withdrawがなんとたったの$0.21でした。
MCL is the first to support flash loans on BSC, which allows users to borrow instantly and easily; no collateral required
MCL公式のデモのリポジトリをフォークして改良します。デモのコードを見る限りではAave V1のフラッシュローンが実装されているようです。なぜV2をデプロイしなかったのか謎ですが。コードの変更点は以下の通りで、こちらがフォークした側のリポジトリです。[6]
- ILendingPoolAddressesProviderのアドレスをハードコード
- demo.solをFlashloan.solにしてコードをシンプルに
BSCではInfuraでRPCエンドポイントが提供されていませんが公式からhttpsとwssのエンドポイントが提供されています。ただ HDWalletProvider
でコントラクトをデプロイしようとしましたができませんでした。ネット上のビデオではRemixを素直に使っているようだったのでRemixからBSCへデプロイしました。
※Ankr、NowNodes、QuickNodeというサービスではAPIエンドポイントが提供されているようです 。[7]
デプロイパーリィータイムです。とりあえずびっくりしたのはコントラクトのデプロイに0.008 BNB(約2.4ドル)ほどしかかからなかったことです。下手したら0.1 Eth(2万円)ぐらいかかっていたEthereumとは雲泥の差ですね(当たり前ではありますが)。トランザクションは以下のURLから確認できます。コントラクトのアドレスはこちらです。
0x6a6751ca15a96a779df3e5d8c0b1facf6b8195765144006248de599e511d9100
1 BNBを引数に渡して flashloanBnB
関数を呼びます。フラッシュローンの仕組みはAave V1と全く同じです。トランザクションは成功しました。トランザクションの内容は以下のURLから確認できます。
0xe8efc6927103f1021c9ac6de49bf1eed603692b0821a30312703bc15bf44c76d
トランザクション結果を確認してみると1 BNBがレンディングプールから貸し出され、手数料である0.0006 BNBを加算した1.006 BNBがレンディングプールへと単一のトランザクションで返却されていることが分かります。そこからさらに0.00042 BNB/0.00012 BNB/0.00008 BNBが別々のアドレスへ送信されています。これらは公式サイトで説明されている手数料の分配先となるコントラクトのアドレスです。かなり明瞭で分かりやすいですね。
1inchや雲丹と寿司でアービトラージをやろうとした回ではInfuraを使ってアービトラージの裁定機会を伺うスクリプトを書いていました。今回はそのようなスクリプトを書くには自力でノードを立てるか、Infuraと似たようなAnkr、NowNodes、QuickNode等のサービスを使う必要があります。次回はそこらへん調査してみます。
というわけでBSC上のAave V1フォークであるMCLを使ってフラッシュローンを実施することができました。MCLは流動性が少ないという制約はあるものの既存のフラッシュローンのコードやツール資産はそのまま使いまわせます。これでパンケーキアービトラージャーへの道が拓けるかもしれませんね。以上です。
まとめ
- Binance Smart ChainはEthereumのEVM互換のブロックチェーンでBNBがトークンであること、コンセンサスがProof of Staked Authorityであることなどが異なる
- Binance Smart ChainはEVM互換なのでメタマスクやTruffleなどのEthereum開発で使用していたツールを使いまわすことができる
- Multi-Chain Lend(MCL)はMultiplierが提供するAaveプロトコルのフォークで、金利手数料やフラッシュローン手数料に違いがある
- BSC上のフラッシュローンはできたのでパンケーキアービトラージャーへの道は近い