开发文档

vstream_path_find

此篇内容尚无原站英文对应版本;切换语言后可浏览英文资料库。

该vstream_path_find方法是path_find的一个简化版本,可以立即使用以及提供支付路径单一响应。它可以在WebSocket和JSON-RPC API中使用。然而,随着时间的推移,结果往往会过时。不要让多个调用保持更新,您应该尽可能地使用path_find。

尽管streamd服务器试图找到最便宜的路径或用于付款的路径组合,但不能保证此方法返回的路径实际上是最佳路径。

警告:小心不受信任的服务器的路径查找结果。服务器可以被修改为返回比最佳路径更少的运营商收入。服务器在重负载时也可能返回不良结果。如果您没有自己可以信任的服务器,那么您应该比较来自不同方运行的多个服务器的寻路结果,以最大限度地降低单个服务器返回不良结果的风险。

请求格式的示例:

 

{
    "id": 8,
    "command": "vstream_path_find",
    "source_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
    "source_currencies": [
        {
            "currency": "STM"
        },
        {
            "currency": "USD"
        }
    ],
    "destination_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
    "destination_amount": {
        "value": "0.001",
        "currency": "USD",
        "issuer": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV"
    }
}
{
    "method": "vstream_path_find",
    "params": [
        {
            "destination_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
            "destination_amount": {
                "currency": "USD",
                "issuer": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
                "value": "0.001"
            },
            "source_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
            "source_currencies": [
                {
                    "currency": "STM"
                },
                {
                    "currency": "USD"
                }
            ]
        }
    ]
}
#Syntax vstream_path_find json ledger_index|ledger_hash
streamd vstream_path_find '{"source_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV", "source_currencies": [ { "currency": "STM" }, { "currency": "USD" } ], "destination_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV", "destination_amount": { "value": "0.001", "currency": "USD", "issuer": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV" } }'

该请求包含以下参数:

FieldTypeDescription
source_accountString将在交易中发送资金的帐户的唯一地址
destination_accountString将在交易中获得资金的帐户的唯一地址
destination_amountString or Object目标帐户在交易中收到的货币金额。特殊情况: 您可以指定"-1"(对于STM)或提供-1作为该value字段的内容(对于非STM货币)。这要求尽可能多的交付路径,同时花费不超过send_max(如果提供)指定的金额。
send_maxString or Object(可选) 将在交易中花费的货币金额。不能用于source_currencies。
source_currenciesArray(可选)源帐户可能要花费的货币数组。数组中的每个条目应该是带有必填currency字段和可选issuer字段的JSON对象,例如指定货币金额的方式。不能包含超过18种来源货币。默认情况下,使用最多88种不同货币/发行商对可用的所有来源货币。
ledger_hashString(可选)要使用的分类帐版本的20字节十六进制字符串。(请参阅指定分类帐)
ledger_indexString or Unsigned Integer(可选)要使用的分类帐的序号或快捷字符串自动选择分类帐。(请参阅指定分类帐)

一个成功回应的例子:

{
  "id": 8,
  "result": {
    "alternatives": [],
    "destination_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
    "destination_currencies": ["ETH", "BTC", "CNY", "STM"]
  },
  "status": "success",
  "type": "response"
}
200 OK
{
  "result": {
    "alternatives": [],
    "destination_account": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV",
    "destination_currencies": ["ETH", "BTC", "CNY", "STM"]
  },
  "status": "success",
  "type": "response"
}

响应遵循标准格式,成功结果包含以下字段:

FieldTypeDescription
alternativesArray具有可能路径的对象数组,如下所述。如果为空,则没有连接源帐户和目标帐户的路径。
destination_accountString将接收付款交易的帐户的唯一地址
destination_currenciesArray作为代表目标接受的货币的字符串数组,例如3个字母的代码"USD"或40个字符的十六进制等"015841551A748AD2C1F76FF6ECB0CCCD00000000"

alternatives数组中的每个元素都是一个对象,表示从一种可能的源货币(由初始帐户持有)到目标帐户和货币的路径。该对象具有以下字段:

FieldTypeDescription
paths_computedArray定义支付路径的对象数组数组
source_amountString or Object货币金额,源必须沿着此路径发送,以便目的地接收所需金额

以下字段已弃用,可能会被忽略:paths_canonical,和paths_expanded。如果它们出现,你应该忽视它们。

可能的错误:

  • 任何通用错误类型。
  • tooBusy - 服务器负载过重,无法计算路径。如果您作为管理员连接,则不会返回。
  • invalidParams - 一个或多个字段指定不正确,或缺少一个或多个必填字段。
  • srcActMissing- source_account请求中忽略该字段。
  • srcActMalformed- source_account请求中的字段格式不正确。
  • dstActMissing- destination_account请求中忽略该字段。
  • dstActMalformed- destination_account请求中的字段格式不正确。
  • srcCurMalformed- 该source_currencies字段格式不正确。
  • srcIsrMalformed- issuer请求中一个或多个货币对象的字段无效。
THE NEXT CONNECTION

下一次连接,从这里开始。

加入 Stream 社区,一起探索价值互联。

联系我们