查找 spl-token-lending 程序中的所有义务
Finding all obligations in spl-token-lending program
如果一个Obligation
变得不健康,可以通过调用LiquidateObligation
instruction来清算它,但是,如果我不知道它存在,我无法清算它,并且这个过程我仍然不清楚如何找到它们。
我找到所有当前“正在工作”的 Obligation
的预期方式是什么?
获取所有 Obligation
帐户的唯一方法是使用带有过滤器的 getProgramAccounts
RPC 端点,该过滤器获取借贷程序拥有的每个具有特定大小的帐户。由于根据代码 Obligation
的大小为 916:https://github.com/solana-labs/solana-program-library/blob/9123a80a6a5b5f8a378a56c4501f99df7debda55/token-lending/program/src/state/obligation.rs#L329,您可以这样做:
curl YOUR_RPC_ENDPOINT_HERE -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getProgramAccounts",
"params": [
"LENDING_PROGRAM_PUBKEY_IN_BASE_58",
{
"filters": [
{
"dataSize": 916
}
]
}
]
}
'
改编自https://docs.solana.com/developing/clients/jsonrpc-api#example-35
如果一个Obligation
变得不健康,可以通过调用LiquidateObligation
instruction来清算它,但是,如果我不知道它存在,我无法清算它,并且这个过程我仍然不清楚如何找到它们。
我找到所有当前“正在工作”的 Obligation
的预期方式是什么?
获取所有 Obligation
帐户的唯一方法是使用带有过滤器的 getProgramAccounts
RPC 端点,该过滤器获取借贷程序拥有的每个具有特定大小的帐户。由于根据代码 Obligation
的大小为 916:https://github.com/solana-labs/solana-program-library/blob/9123a80a6a5b5f8a378a56c4501f99df7debda55/token-lending/program/src/state/obligation.rs#L329,您可以这样做:
curl YOUR_RPC_ENDPOINT_HERE -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getProgramAccounts",
"params": [
"LENDING_PROGRAM_PUBKEY_IN_BASE_58",
{
"filters": [
{
"dataSize": 916
}
]
}
]
}
'
改编自https://docs.solana.com/developing/clients/jsonrpc-api#example-35