【完全保存版】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」関数を実行します。
所有者以外が実行しているので、エラーになることを確認しています。
今回は以上です。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊