Whirlpool でオープンしたポジションの一覧を取得しましょう。
ポジションをクローズしたり、流動性を増減させたり、手数料やリワードを回収するにも、ポジションの一覧を取得することは必要となります。
Orca のサイトで Portfolio タブを開くと、オープンしているポジションの一覧を確認できます。
今回はこれと同じことをプログラムで実装します(ただし Devnet で行います)。
ポジションの一覧の取得方法は下記で説明されています。
複数のアカウントが関係するため図示します。
NFT も単なるトークンの 1 つであるため、トークンアカウントをリストアップすることで、NFT をリストアップすることができます。このうち、トークンの量(amount)が 1 ではないものは無視できます(NFTのため1個か0個かしかないため)。
次いで、そのトークンアカウントからミントアドレスを取得し、PDAUtil
クラスの getPosition
メソッドにより Whirlpool のポジション情報が記録されたアカウントのアドレスを導出します。この導出されるアドレスを PDA (Program Derived Address) と呼びます。