見出し画像

【完全保存版】LayerZeroでトークンのチェーン間やり取りの停止処理を行おう!

0 はじめに

今回は、LayerZeroトークンチェーン間やり取りの停止処理を見ていきます。

1 前回の復習

前回、トークンチェーン間やり取りについて記事を書きました。

しばらくはこちらの記事に書いてあることと同様です。

ほぼ同じ箇所については、簡単に進めていきます。

なお、実施するコマンドは、こちらになります。

npx hardhat test test/contracts/oft/PausableOFT.test.js

本日は、こちらのテストを実施していきます。

1 初期設定について

まず、こちらで初期設定を行っています。

adapterParamではバージョン使用するガス代を指定しています。

また、sendQtyでは送付する量を指定しています。

2 コントラクトファクトリーの作成

次に、今回使用するコントラクトのコントラクトファクトリーを作成しています。

3 エンドポイントコントラクトのデプロイ

続いて、エンドポイントコントラクトデプロイしています。

今回は、このようになります。

4 トークンコントラクトのデプロイ

次に、トークンコントラクトデプロイしています。

このようになりました。

5 目的先エンドポイントの設定

次に、エンドポイントに、目的先のエンドポイントを設定しています。

このようになりました。

6 信頼できるコントラクトの設定

次に、トークンコントラクト信頼できるコントラクトを設定します。

このようになりました。

7 最小ガス量の設定

次に、「setMinDstGas」関数最小ガス量を設定します。

8 setUseCustomAdapterParams関数の設定

次に、「setUseCustomAdapterParams」「true」にして、「adapterParam」設定できるようにします。

9 残高の確認

では、テスト部分を見てみましょう。

まずは、残高があっているかを確認しています。

現在、このような状況です。

10 推定ガス量の取得

次に、推定されるガス量を取得します。

11 トークンの送付

必要なものが揃ったので、「sendFrom」関数で送付を行います。

このようになりました。

12 残高の確認

最後に、残高の変更正しく反映されているかを確認しています。

2 停止処理の確認

ここからが新しい箇所になります。

1 停止状態の設定

まず、「pauseSendTokens」関数を「true」に設定します。

これでトークンの送付ができなくなりました。

このような状態です。

なお、「pauseSendTokens」関数の中身はこのようになっています。

2 手数料の取得

次に、先ほどと同様、推定される手数料を取得します。

3 停止されていないコントラクトからの送付

その上で、停止になっていない方から、まずは送付を行います。

こちらは停止されていないので、問題なく送れます。

このようになりました。

4 停止されているコントラクトからの送付

一方、停止されている方から送ろうとすると、エラーになることを確認しています。

このようになりました。

そして、実際に送られていない(変化していない)ことを確認しています。

3 停止解除後の処理について

1 停止状態の解除

次に、停止状態を解除します。

2 停止解除コントラクトからの送付

再び送ってみます。

このような状態です

3 残高の確認

残高を確認すると、送れていることが確認できました。

4 所有者以外の停止処理(エラーが出ることの確認)

最後に、所有者以外が「pauseSendTokens」関数を実行します。

所有者以外が実行しているので、エラーになることを確認しています。

今回は以上です。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊