この章では、ペイメントチャネルをクローズする方法について紹介します。
ペイメントチャネルをクローズすることで、未使用の資金を回収し、チャネルの最終残高を確定させることができます。
事前準備
-
プロジェクトディレクトリにclosePaymentChannel.js
という新しいファイルを作成します。
-
以下のコードをclosePaymentChannel.js
に貼り付けます。
スクリプトの実行
-
コマンドラインで以下のコマンドを実行して、スクリプトを実行します。
-
成功すれば、コンソールに以下が表示されます。
チャネルクローズの仕様について
送金人であるボブからチャネルを閉じるフラグを設定しましたが、実は現時点でもチャネルは存在したままとなります。
ここで一度、createPaymentChannel.js
を確認してみましょう。
ここで、SettleDelay
に1日後
を指定していましたね。
仕様として、送金人からチャネルクローズを行った場合は、SettleDelay
が発生します。つまり、クローズフラグをセットしたタイミングから、1日後
にチャネルがクローズされることになります。
可能であれば、node checkChannelBalance.js
を実行し、以下がまだ表示されることを確認してください。
再開する場合
Flags
を変更することで、チャネルを再開することが可能です。支払いチャネルのソースアドレスのみがこのフラグを使用できます。
受領人(アリス)からチャネルを閉じる場合
受領人(アリス)からチャネルクローズを行う場合は、少し挙動が異なり、受領人がチャネルのFlags
を変更すると、チャネルが強制的に終了します。
スクリプトの実行
-
以下のように、closePaymentChannel.js
のコードを修正します。
-
コマンドラインで以下のコマンドを実行して、スクリプトを実行します。
-
成功すれば、コンソールに以下が表示されます。
-
コマンドラインで以下のコマンドを実行して、チャネルの状態を再確認します。
-
以下のような結果が出力されれば、完全にチャネルのクローズが完了したことになります。
ここでもう一度、アリスとボブのアドレスを、テストネット用のエクスプローラにて確認してみましょう。
ここまで手順通りに進めた場合となりますが、デポジットしたXRPがボブの元に返還され、以下の残高になっているかと思います。
- アリス: 約100 XRP
- ボブ: 約89 XRP
まとめ
この章では、ペイメントチャネルをクローズする方法について解説しました。
PaymentChannelClaim
トランザクションを使用してチャネルをクローズすることで、未使用の資金を回収し、チャネルの最終残高を確定させることができます。
ここまでガイドを完了することができれば、基本的なペイメントチャネルを使用した取引の流れを理解することができたといえるかと思います。
ペイメントチャネル(PaymentChannel)はXRPLの高度な支払い機能の中でも実装難易度が高い部類に入りますので、なかなかドキュメントベースだとイメージしづらいかと思います。
今後の開発やプロジェクトにおいて、この知識が役立つことを願っています。
※ 次章は作成中です。