查找 spl-token-lending 程序中的所有义务

Finding all obligations in spl-token-lending program

如果一个Obligation变得不健康,可以通过调用LiquidateObligationinstruction来清算它,但是,如果我不知道它存在,我无法清算它,并且这个过程我仍然不清楚如何找到它们。

我找到所有当前“正在工作”的 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