
【完全保存版】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」関数を実行します。
所有者以外が実行しているので、エラーになることを確認しています。

今回は以上です。
いいなと思ったら応援しよう!
