Whirlpool でオープンしたポジションの一覧を取得しましょう。

ポジションをクローズしたり、流動性を増減させたり、手数料やリワードを回収するにも、ポジションの一覧を取得することは必要となります。

プログラムで実現すること

Orca のサイトで Portfolio タブを開くと、オープンしているポジションの一覧を確認できます。

今回はこれと同じことをプログラムで実装します(ただし Devnet で行います)。

スクリーンショット 2022-06-15 1.49.08.png

ポジションの一覧取得

ポジションの一覧の取得方法は下記で説明されています。

Identifying Whirlpool Tokens

複数のアカウントが関係するため図示します。

position.svg

NFT も単なるトークンの 1 つであるため、トークンアカウントをリストアップすることで、NFT をリストアップすることができます。このうち、トークンの量(amount)が 1 ではないものは無視できます(NFTのため1個か0個かしかないため)。

次いで、そのトークンアカウントからミントアドレスを取得し、PDAUtil クラスの getPosition メソッドにより Whirlpool のポジション情報が記録されたアカウントのアドレスを導出します。この導出されるアドレスを PDA (Program Derived Address) と呼びます。