1.介绍
StreamAPI是STM Ledger的官方客户端库。目前,StreamAPI仅适用于JavaScript。使用StreamAPI,您可以:
- 从STM分类帐历史中查询交易
- 无需连接任何服务器即可安全签署交易
- 将交易提交到STM分类帐,包括付款,订单,设置更改和其他类型
- 生成新的STM分类帐地址
- … 等等。
StreamAPI只提供接入验证,确定的交易数据。
1.1.样板
使用以下样板代码使用StreamAPI封装您的自定义代码。
StreamAPI被设计为在Node.js中使用,本文档中的所有代码片段假定您已经用这个样板包围了它们。
2.基本类型
2.1.地址
"vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr"
每个STM分类帐帐户都有一个地址,该地址是该帐户公钥的散列的base58编码。STM分类帐地址始终以小写字母v
开头。
2.2.账户序列号
每个STM分类帐帐户都有一个序号,用于保持交易顺序。每笔交易都必须有一个序列号。只有在发送它的账户中具有下一个序列号时才能执行交易。这可以防止一次事务执行两次,并且事务执行不按顺序执行。序列号从1
账户开始的每个交易开始并递增。
2.3.货币
货币表示为3个字符的货币代码或40个字符的大写十六进制字符串。我们建议仅使用大写的ISO 4217货币代码。信任线上不允许使用字符串“STM”,因为它是为STM分类帐本币设置的。以下字符:所有大写字母和小写字母,数字,以及符号?
,!
,@
,#
,$
,%
,^
,&
,*
,<
,>
,(
,)
,{
,}
,[
,]
,和|
。
2.4.Value
Value是表示为一个十进制字符串的货币的量。注意:JavaScript的原生数字格式没有足够的精度来表示所有值。STM与其他货币的精度不同。
STM在小数点后有6位有效数字。换句话说,STM不能被分成小于0.000001
(1e-6)的正值。STM的最大值为100000000000
(1e11)。
非STM值有16位精度的十进制数字,最大值为9999999999999999e80
。最小的正非STM值是1e-81
。
2.5.Amount
示例:
{ "currency": "USD", "counterparty": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "value": "100" }
STM amount示例:
{ "currency": "STM", "value": "400" }
Amount是表示货币,对该货币的量,并在持有该值的trustline对方的数据结构。对于STM,没有交易对手。
一个宽松的amount允许所有货币将被省略的对手。如果交易对手未在交易规格内指定金额,则任何交易对手均可用于该金额。
一个宽松的amount允许使用或将被省略的这两个交易对方和值。
余额可具有负值的量。
Name | Type | Description |
---|---|---|
currency | currency | 用于表示货币的三字符代码或十六进制字符串 |
counterparty | address | 可选项 欠款或欠款的帐户的STM地址(如果currency 是“STM”则省略) |
value | value | 可选 货币数量,表示为保留浮点精度的字符串 |
3.交易概览
3.1.交易类型
交易类型由下表第一列中的字符串指定。
Type | Description |
---|---|
payment | 一个payment交易代表的值从一个帐户转移到另一个。根据所采取的路径,可能会自动进行额外的价值交换,以方便付款。 |
order | 一个order 交易创建了一个限价订单。它定义了交换货币的意图,并在STM分类帐的订单簿中创建了一个订单,如果放置时未完全满足订单。订单可以部分实现。 |
orderCancellation | 一个orderCancellation 类型取消在STM的一个订单。 |
trustline | 一个trustline 交易创建或修改两个账户之间的信任线。 |
settings | 一个settings 修改交易的STM总帐帐户的设置。 |
escrowCreation | 一个escrowCreation 交易在分类账上创建一个托管,这个分支锁定STM,直到满足一个加密条件或到期。这就像STM Ledger充当托管代理的托管服务。 |
escrowCancellation | 一个escrowCancellation 交易解锁资金托管,并将其发送回代管的创造者,但托管期满后,它才有效。 |
escrowExecution | 一个escrowExecution 交易解锁资金托管,并将它们发送到中介的目的地,但如果提供的加密条件的用户才能使用。 |
checkCreate | 一个checkCreate 交易创建的分类帐,这是一种延期支付,可以通过其预定目标兑现的支票。 |
checkCancel | 一个checkCancel 交易取消的unreedemed检查,从台账不发送任何钱取出。 |
checkCash | 一个checkCash 交易兑换的支票最高可获得由相应的授权量checkCreate 交易。只有destination 支票的地址可以兑现。 |
3.2.交易流程
执行StreamAPI
需要以下四个步骤:
- 准备 – 根据规范和说明创建未签名的事务。有一种方法来准备每种类型的交易:
- preparePayment
- prepareTrustline
- prepareOrder
- prepareOrderCancellation
- prepareSettings
- prepareEscrowCreation
- prepareEscrowCancellation
- prepareEscrowExecution
- prepareCheckCreate
- prepareCheckCancel
- prepareCheckCash
- 签名 – 在本地对交易进行密码签名并保存交易ID。签名是账户所有者授权交易发生的方式。对于多重签名交易,必须收集
signedTransaction
返回的字段sign
并将其传递给组合方法。 - 提交 – 将交易提交到连接的服务器。
- 验证 – 通过使用getTransaction查询验证事务是否已验证。这是必要的,因为即使交易成功提交,交易也可能失败。
3.3.交易费用
每笔交易都必须销毁少量的STM作为发送交易的费用。这也被称为交易费用。交易成本被设计为随着STM分类帐的负载而增加,这使得故意或无意中过载支持STM分类帐的对等网络非常昂贵。
您可以选择想要支付的费用的大小或者使用默认值。您可以通过getFee方法得到关于下一个总帐所需费用的估算值。
3.4.交易说明
交易指令指示如何执行交易,与交易规范互补。
Name | Type | Description |
---|---|---|
fee | value | 可选 精确的费用为交易支付。请参阅交易费用了解更多信息。 |
maxFee | value | 可选 交易支付的最高费用。请参阅交易费用了解更多信息。 |
maxLedgerVersion | integer,null | 可选 事务可包含的最高分类帐版本。如果maxLedgerVersionOffset 省略此选项,则该maxLedgerVersion 选项将默认为比当前经验证的分类帐版本(等同于maxLedgerVersionOffset=3 )大3。使用null 不设置最高总账版本。 |
maxLedgerVersionOffset | integer | 可选 从当前经验证的分类帐版本到交易可包含的最高分类账版本的抵销。 |
sequence | sequence | 可选 该交易的初始帐户序号。 |
signersCount | integer | 可选 签署者的数目将签署此交易。 |
我们建议您指定一个,maxLedgerVersion
以便您可以快速确定失败的事务将来永远不会成功。在STM分类账的经过共识验证的分类帐版本超过交易记录后,交易不可能成功maxLedgerVersion
。如果省略maxLedgerVersion
,“准备”方法会自动提供一个maxLedgerVersion
等于当前分类帐加3的值,它包含在“准备 ”方法的返回值中。
3.5.交易ID
"F4AB442A6D4CBB935D66E1DA7309A5FC71C7143ED4049053EC14E3875B0CF9BF"
事务ID是唯一标识事务的64位十六进制字符串。事务ID是使用强大的散列函数从事务指令和规范派生而来的。
您可以使用getTransaction方法通过ID查找事务。
3.6.交易Memos
每个事务可以有选择地为用户应用程序提供一个备忘录数组。memos
每个事务规范中的字段都是具有以下结构的对象数组:
Name | Type | Description |
---|---|---|
data | string | 可选 任意字符串,通常包含备忘录的内容。 |
format | string | 可选 通常包含有关备忘录如何编码的信息,例如作为MIME类型。只允许URL中允许使用的字符。 |
type | string | 可选 通常,定义此备忘录格式的唯一关系(根据RFC 5988)。只允许URL中允许使用的字符。 |
4.交易规格
一个交易规范指定事务应该做的事情。每种交易类型都有其自己的规格类型。
4.1.付款
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
source | object | 资金的来源将被发送。 |
source. address | address | 要发送的地址。 |
source. amount | laxAmount | 确切的金额发送。如果未指定交易对手,则可以使用任何交易对手的金额。(这个字段是独立于source.maxAmount的) |
source. tag | integer | 可选 任意无符号的32位整数,用于标识付款原因或非STM帐户。 |
source. maxAmount | laxAmount | 最大发送金额。(这个字段是独立于source.amount的) |
destination | object | 要发送的资金的目的地。 |
destination. address | address | 要收到的地址。 |
destination. amount | laxAmount | 确切数额交付给收件人。如果未指定交易对手,则可以使用任何交易对手的金额。(该字段与destination.minAmount独占)。 |
destination. tag | integer | 可选 任意无符号的32位整数,用于标识付款原因或非STM帐户。 |
destination. address | address | 要发送到的地址。 |
destination.minAmount | laxAmount | 最低交付金额。(这个字段是唯一的destination.amount) |
allowPartialPayment | boolean | 可选 如果为真,即使由于流动性缺乏或源帐户资金不足而导致无法交付全部金额,也应继续执行此付款。 |
invoiceID | string | 可选 可以用来识别特定付款的256位散列。 |
limitQuality | boolean | 可选 仅在所有转换的输入:输出比率等于或优于destination.amount:source.maxAmount的比率时采用路径。 |
memos | memos | 可选 的备忘录数组附加到事务。 |
noDirectStream | boolean | 可选 如果指定了true和路径,发件人希望STM分类帐忽略从源帐户到目标帐户的任何直接路径。这可以用来利用套利机会或者希望从热钱包向错误地将信任线直接设置到热钱包的用户发布余额的网关。 |
paths | string | 可选 用于执行付款的信任线和订单的路径。 |
示例:
{ "source": { "address": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "maxAmount": { "value": "0.01", "currency": "USD", "counterparty": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa" } }, "destination": { "address": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "amount": { "value": "0.01", "currency": "USD", "counterparty": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa" } } }
4.2.Trustline
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
currency | currency | 此信任线适用的货币。 |
counterparty | address | 此信任线将信任扩展到的帐户的地址。 |
limit | value | 信任线的所有者可通过信任线承担的最大金额。 |
authorized | boolean | 可选 如果为true,则授权交易对手从该账户持有发行。 |
frozen | boolean | 可选 如果为true,则信任线会被冻结,这意味着资金只能发送给所有者。 |
memos | memos | 可选 附加到交易备忘录数组。 |
qualityIn | number | 可选 此信任线上的收款余额按此比率计价。 |
qualityOut | number | 可选 此信任线上的余额按此比率估值。 |
示例:
{ "currency": "USD", "counterparty": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "limit": "10000", "qualityIn": 0.91, "qualityOut": 0.87, "ripplingDisabled": true, "frozen": false, "memos": [ { "type": "test", "format": "plain/text", "data": "texted data" } ] }
4.3.Order
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
direction | string | 等于购买订单的“买入”和卖出订单的“卖出”。 |
quantity | amount | 买或卖的货币数量。 |
totalPrice | amount | quantity 要购买或出售的总价格。 |
expirationTime | date-time string | 可选 作为ISO 8601日期时间之后,此优惠不再有效的时间。 |
fillOrKill | boolean | 可选 将报价视为填写或填写订单。只尝试匹配分类帐中的现有优惠,并且只有在可以交换全部数量的情况下才这样做。 |
immediateOrCancel | boolean | 可选 将该报价视为立即订单或取消订单。如果启用,报价将永远不会成为分类账节点:它只会尝试匹配分类帐中的现有报价。 |
memos | memos | 可选 附加到交易的备忘录数组。 |
orderToReplace | sequence | 可选 在创建新订单之前取消的订单的科目序号,有效替换旧订单。 |
passive | boolean | 可选如果启用,报价不会使用与其完全匹配的报价,而是成为分类帐中的报价节点。它仍然会使用跨越它的优惠。 |
示例:
{ "direction": "buy", "quantity": { "currency": "USD", "counterparty": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "value": "10.1" }, "totalPrice": { "currency": "STM", "value": "2" }, "passive": true, "fillOrKill": true }
4.4.Order Cancellation
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
orderSequence | sequence | 要取消的订单的序列号。 |
memos | memos | 可选 附加到交易的备忘录数组。 |
示例:
{ "orderSequence": 17 }
4.5.Settings
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
depositAuth | boolean | 可选 此帐户启用存款授权。如果设置,则交易无法将任何类型的价值发送到此帐户,除非这些交易的发件人是帐户本身。(需要DepositAuth修正) |
disableMasterKey | boolean | 可选 不允许使用主密钥为此帐户签署交易。 |
disallowIncomingSTM | boolean | 可选 指示客户端应用程序不应将STM发送到此帐户。 |
domain | string | 可选 拥有此帐户的域,以十六进制字符串表示以小写字母表示的域的ASCII。 |
emailHash | string,null | 可选 用于生成化身图像的电子邮件地址的哈希。通常,客户使用Gravatar来显示该图像。使用null 清除。 |
enableTransactionIDTracking | boolean | 可选 跟踪此帐户最近一次交易的ID。 |
globalFreeze | boolean | 可选 冻结由此帐户发布的所有资产。 |
memos | memos | 可选 附加到交易的备忘录数组。 |
messageKey | string | 可选 公钥,用于将加密邮件发送到此帐户。通常,它应该是一个secp256k1密钥,与Stream其余部分使用的加密相同。 |
noFreeze | boolean | 可选 永久放弃冻结个人信任额度的能力。启用后,此标志永远不会被禁用。 |
passwordSpent | boolean | 可选 指示帐户已使用其免费的SetRegularKey事务。 |
regularKey | address,null | 可选 新密钥对的公钥,用作此帐户的常规密钥,作为与帐户地址相同格式的基本58编码字符串。使用null 去除正规钥匙。 |
requireAuthorization | boolean | 可选 如果设置,此帐户必须单独批准其他用户,以便这些用户持有此帐户的发行。 |
requireDestinationTag | boolean | 可选 需要传入付款才能指定目的地代码。 |
signers | object | 可选 设置,用于确定可使用多个帐户代表该帐户使用哪些帐户组签署交易。 |
signers. threshold | integer | 可选 目标号码的签名者权重。只有提供的签名的总和权重等于或大于此值时,此列表中的多重签名才有效。要删除签名者设置,请使用该值0 。 |
signers. weights | array | 可选 每个签名者的签名权重。 |
signers. weights[] | object | 地址和权重的关联。 |
signers.weights[]. address | address | 一个Stream帐户地址 |
signers.weights[]. weight | integer | 这个账户的签名算作门槛权重。 |
transferRate | number,null | 可选 用户转移此账户的发行时收取的费用,作为发送1个单位必须发送的十进制金额。精确度最高可达9位数,超过小数点。使用null 设置不收取任何费用。 |
示例:
{ "domain": "labs.stream", "memos": [ { "type": "test", "format": "plain/text", "data": "texted data" } ] }
4.6.托管创建
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
amount | value | 发件人托管的STM金额。 |
destination | address | 地址以接收托管的STM。 |
allowCancelAfter | date-time string | 可选 如果存在,此次托管可能会在此时间后取消。 |
allowExecuteAfter | date-time string | 可选 如果存在,在此时间之前不能执行托管。 |
condition | string | 可选一个表示PREIMAGE-SHA-256密码条件的十六进制值。如果存在,fulfillment 在执行时需要。 |
destinationTag | integer | 可选 目标标记。 |
memos | memos | 可选的备忘录数组附加到交易。 |
sourceTag | integer | 可选 源标签。 |
示例:
{ "destination": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "amount": "0.01", "allowExecuteAfter": "2017-09-24T21:21:50.000Z", "allowCancelAfter": "2018-01-01T00:00:00.000Z" }
4.7.托管取消
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
owner | address | 要取消的托管所有者的地址。 |
escrowSequence | sequence | 托管创建交易的账户序列号,用于取消托管。 |
memos | memos | 可选的备忘录数组附加到交易。 |
示例:
{ "owner": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "escrowSequence": 163 }
4.8.托管执行
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
owner | address | 要执行的托管所有者的地址。 |
escrowSequence | sequence | 托管执行的托管创建交易的序列号。 |
condition | string | 可选 一个表示PREIMAGE-SHA-256密码条件的十六进制值。这必须与condition 托管创建交易中的原件相匹配。 |
fulfillment | string | 可选 用于表示PREIMAGE-SHA-256密码条件满足的十六进制值condition 。 |
memos | memos | 可选的备忘录数组附加到交易。 |
示例:
{ "owner": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "escrowSequence": 163, "condition": "A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100", "fulfillment": "A0028000" }
4.9.支票创建
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
destination | address | 可以兑现支票的账户地址。 |
sendMax | laxAmount | 允许支票支付发件人的源货币金额,包括非STM货币的转账费用。 |
destinationTag | integer | 可选的 目的地标记,标识检查的原因或托管收件人付款。 |
expiration | date-time string | 可选 时间过后,支票不再有效。 |
invoiceID | string | 可选的 256位散列,作为64个字符的十六进制字符串,表示此检查的具体原因或标识符。 |
示例:
{ "destination": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "sendMax": { "currency": "STM", "value": "1" } }
4.10.支票取消
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
checkID | string | 作为一个64个字符的十六进制字符串取消检查分类帐对象的ID。 |
示例:
{ "checkID": "49647F0D748DC3FE26BDACBC57F251AADEFFF391403EC9BF87C97F67E9977FB0" }
4.11.兑现支票
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
checkID | string | 将支票分类帐对象的ID设置为现金,作为64个字符的十六进制字符串。 |
amount | laxAmount | 可选 兑换检查确切金额,如果可能的话。货币必须与相应的CheckCreate交易的sendMax相匹配。您必须提供此字段或deliverMin。 |
deliverMin | laxAmount | 可选 兑换检查至少这个数量和尽可能多。货币必须与相应的CheckCreate交易的sendMax相匹配。您必须提供此字段或金额。 |
示例:
{ "amount": { "currency": "STM", "value": "1" }, "checkID": "838766BA2B995C00744175F69A1B11E32C3DBC40E64801A4056FCBD657F57334" }
4.12.支付通道创建
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
amount | value | 发送者在此通道留出的STM数量。 |
destination | address | 收到STM针对此通道的声明地址。 |
settleDelay | number | 如果源地址具有未声明的STM,则在关闭通道之前必须等待的秒数。 |
publicKey | string | 该来源将用于签署针对此频道的版权声明的密钥对的公钥。 |
cancelAfter | date-time string | 可选 此频道到期的时间。 |
destinationTag | integer | 可选的 目标标记。 |
sourceTag | integer | 可选的 源标签。 |
示例:
{ "amount": "1", "destination": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "settleDelay": 86400, "publicKey": "32D2471DB72B27E3310F355BB33E339BF26F8392D5A93D3BC0FC3B566612DA0F0A" }
4.13.支付通道基金
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
amount | value | STM用于为通道提供资金的数量。 |
channel | string | 256位十六进制通道标识符。 |
expiration | date-time string | 可选此通道的新到期日期。 |
示例:
{ "channel": "C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198", "amount": "1" }
4.14.付款通道索赔
有关说明,请参阅交易类型。
Name | Type | Description |
---|---|---|
channel | string | 256位十六进制通道标识符。 |
amount | value | 可选 处理索赔后,此通道的 STM余额。 |
balance | value | 可选 通过签名授权的STM数量。 |
close | boolean | 可选 请求关闭通道。 |
publicKey | string | 可选 频道发件人的公钥 |
renew | boolean | 可选 清除通道的到期时间。 |
signature | string | 可选 此索赔的签名。 |
示例:
{ "channel": "C1AE6DDDEEC05CF2978C0BAD6FE302948E9533691DC749DCDD3B9E5992CA6198" }
5.API方法
5.1.connect
connect(): Promise
告诉StreamAPI实例连接到它的服务器。
参数:
此方法没有参数。
返回值:
无返回值,建立一个连接。
5.2.disconnect
disconnect(): Promise
告诉StreamAPI实例从其Stream的服务器断开连接。
参数:
此方法没有参数。
返回值:
无返回,销毁一个连接。
5.3.isConnected
isConnected(): boolean
检查StreamAPI实例是否连接到Stream的服务器。
参数:
此方法没有参数。
返回值:
true
已成功连接
false
未连接
示例:
return remote.isConnected();
true
5.4.requestServerInfo
requestServerInfo(): Promise
获取有关StreamAPI实例连接到的服务器的状态信息。
参数:
此方法没有参数。
Name | Type | Description |
---|---|---|
buildVersion | string | 正在运行的Stream版本的版本号。 |
completeLedgers | string | 范围表达式,指示数据库中本地STM的分类帐版本的序列号。可能是不相交的序列,例如“2500-5000,32570-7695432”。 |
hostID | string | 在管理请求上,返回运行streamd实例的服务器的主机名; 否则,返回一个唯一的四个字母的单词。 |
ioLatencyMs | number | 等待执行I / O操作的时间量(以毫秒为单位)。如果这个数字不是很低,那么Stream的服务器可能有严重的负载问题。 |
lastClose | object | 有关上次服务器关闭分类帐的信息。 |
lastClose.convergeTimeS | number | 花费在几秒钟内达成最后一个分类帐的共识所需的时间。 |
lastClose. proposers | integer | 参与分类账结算的可信验证人数。 |
loadFactor | number | 服务器当前执行的加载因子,作为基本事务处理费用的乘数。负载因子由单个服务器的负载因子,簇的负载因子和整个网络的负载因子中的最高者决定。 |
peers | integer | 该节点当前连接到多少个其他Stream服务器。 |
pubkeyNode | string | 用于验证此节点以进行内部通信的公钥; 该密钥由服务器第一次启动时自动生成。(如果删除,节点可以创建一对新的密钥。) |
serverState | string | 指示服务器参与网络的程度的字符串。有关更多信息,请参阅可能的服务器状态 |
validatedLedger | object | 关于序号最高的完整验证分类帐的信息(最新)。 |
validatedLedger. age | integer | 自分类帐关闭以来的时间,以秒为单位。 |
validatedLedger.baseFeeSTM | value | 基本费用,在STM。这可能以科学记数法表示,如1e-05为0.00005。 |
validatedLedger.hash | string | 分类帐的唯一散列,作为大写十六进制字符串。 |
validatedLedger.reserve_base_stm | value | 每个账户需要保留的最小STM金额。 |
validatedLedger.reserve_inc_stm | value | 为账户在分类帐中负责的每个对象添加的STM金额。 |
validation_Quorum | number | 验证分类帐版本所需的可信验证的最小数量。有些情况可能会导致服务器需要更多验证。 |
示例:
return remote.requestServerInfo()
{ "info": { "build_version": "0.1.0", "complete_ledgers": "2-471008", "hostid": "GALE", "io_latency_ms": 1, "last_close": { "converge_time_s": 2.001, "proposers": 4 }, "load_factor": 1, "peers": 4, "pubkey_node": "n9KBjT9uvPfjHmNaMpDKgRZhFTghK7beHEDJcrTNhowJyiGvvgUw", "server_state": "proposing", "validated_ledger": { "age": 9, "base_fee_stm": 0.00001, "hash": "2DDA1371CC8BA00F31CBAC7A1BA6E037BD3275CCA00921ACB02A818FCB335A98", "reserve_base_stm": 1, "reserve_inc_stm": 0.1, "seq": 471008 }, "validation_quorum": 3 } }
5.5.requestAccountCurrencies
该requestAccountCurrencies
命令根据其信任线检索帐户可以发送或接收的货币列表。(这不是一个彻底确认的列表,但它可以用来填充用户界面。)
请求格式示例:
remote.connect(function() { remote.requestAccountCurrencies({ account: 'vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr' }, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求包含以下参数:
Field |
类型 | 描述 |
---|---|---|
account |
String | 该帐户的唯一标识符,通常是帐户的地址。 |
响应格式实例:
{ "ledger_current_index": 474260, "receive_currencies": [ "BTC", "CNY", "ETH" ], "send_currencies": [ "CNY" ], "validated": true }
5.6.requestAccountInfo
该requestAccountInfo
命令将检索有关帐户,其活动和STM余额的信息。所有检索到的信息都与分类账的特定版本有关。
requestAccountInfo请求的示例:
remote.connect(function() { remote.requestAccountInfo({ account: 'vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr' }, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求包含以下参数:
Field |
类型 | 描述 |
---|---|---|
account |
String | 该帐户的唯一标识符,通常是帐户的地址。 |
一个成功回应的例子:
{ "account_data": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Balance": "999999988", "Flags": 0, "LedgerEntryType": "AccountRoot", "OwnerCount": 0, "PreviousTxnID": "0D4E960BC9E517077EAF90F487F3A3D5F6D3029BA7FF68A31E3B2DFCD78EB3F6", "PreviousTxnLgrSeq": 269696, "Sequence": 2, "index": "EF9FA3DDA9E716BFF74DA790342FA08894FECB9F60005DA0971EB0D01E376C7C" }, "ledger_current_index": 474339, "validated": true }
结果包含请求的帐户,其数据以及它所应用的分类帐,如下所示:
Field |
类型 | 描述 |
---|---|---|
account_data |
Object | 该AccountRoot ledger object 与此帐户的信息,存储在总账。 |
signer_lists |
Array | (除非指定的请求signer_lists 和至少一个SignerList与帐户相关联,否则省略。)与此帐户关联的SignerList分类帐对象的数组进行多重签名。由于帐户最多只能拥有一个SignerList,因此如果该数组存在,该数组必须只有一个成员。 |
ledger_current_index |
Integer | (如果ledger_index 提供,则省略)检索此信息时使用的最新分类帐的序列号。这些信息不包含任何比这个更新的分类账更改。 |
ledger_index |
Integer | (如果ledger_current_index 提供,则省略)检索此信息时使用的分类帐的序列号。这些信息不包含任何比这个更新的分类账的更改。 |
queue_data |
Object | (除非queue 指定为true 和查询当前开立的分类帐,否则省略。)有关此帐户发送的排队交易的信息。该信息描述本地streamd 服务器的状态,该状态可能与共识网络中的其他服务器不同。有些字段可能会被忽略,因为这些值是由排队机制“懒散地”计算的。 |
validated |
Boolean | 如果此数据来自经过验证的分类账版本,则为真; 如果省略或设置为false,则此数据不是最终的。 |
该queue_data
参数(如果存在)包含以下字段:
Field |
类型 | 描述 |
---|---|---|
txn_count |
Integer | 此地址的排队交易数量。 |
auth_change_queued |
Boolean | (可以省略)队列中的交易是否更改此地址授权交易的方式。如果true ,该地址可以在该交易已经被执行或从队列中删除之前不进行进一步的交易处理。 |
lowest_sequence |
Integer | (可以省略)这个地址交易队列中最低序列号。 |
highest_sequence |
Integer | (可以省略)这个地址交易队列中最高序列号。 |
max_spend_drops_total |
String | (可省略)如果队列中的每个交易消耗尽可能多的STM,则可以从该地址中扣除整数的drops of STM。 |
transactions |
Array | (可省略)关于此地址中每个排队交易的信息。 |
transactions
数组中的每个对象(如果存在)都可以包含以下任何或全部字段:
Field |
类型 | 描述 |
---|---|---|
auth_change |
Boolean | 此交易是否更改此地址授权交易的方式。 |
fee |
String | 此交易的交易成本,以STM为单位。 |
fee_level |
String | 这笔交易的交易成本,相对于此类交易的最低成本,按fee levels计算。 |
max_spend_drops |
String | STM的最高金额, in drops,此交易可以发送或销毁。 |
seq |
Integer | 此事务的序列号。 |
5.7.requestAccountOffers
该requestAccountOffers
方法检索由特定帐户作为特定分类账版本的优惠清单。
请求格式的示例:
remote.connect(function() { remote.requestAccountOffers({ account: 'vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr', ledger: 'current' }, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
请求可以包含以下参数:
Field |
类型 | 描述 |
---|---|---|
account |
String | 该帐户的唯一标识符,通常是帐户的地址。 |
ledger |
Unsigned integer, or String | (不推荐使用,可选)要使用的分类帐版本的唯一标识符,例如分类帐序列号,散列或诸如“已验证”的快捷方式。 |
ledger_index |
(可选) Ledger Index | (可选,默认为current )要使用的分类帐的序列号,或“current ”,“closed ”或“validated ”以动态选择分类帐。(请参阅指定分类帐) |
一个成功回应的例子:
{ "id": 2, "result": { "account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "ledger_current_index": 474401, "offers": [{ "flags": 0, "seq": 234, "taker_gets": { "currency": "CNY", "issuer": "vJqt7ir44V6RyWwxxEgD87sEfStdwCahZz", "value": "1" }, "taker_pays": "1000000" },{ "flags": 0, "seq": 275, "taker_gets": { "currency": "CNY", "issuer": "vJqt7ir44V6RyWwxxEgD87sEfStdwCahZz", "value": "1.85" }, "taker_pays": "1000000" }], "validated": false } }
成功结果包含以下字段:
Field |
类型 | 描述 |
---|---|---|
account |
String | 唯一地址标识提供商品的帐户 |
offers |
Array | 对象数组,其中每个对象都表示此帐户所提供的优惠,与请求的帐本版本相同。如果报价数量很大,则一次只能返回limit 。 |
ledger_current_index |
Integer | (如果ledger_hash 或ledger_index 提供,则省略)检索此数据时使用的分类帐版本的序号。 |
ledger_index |
Integer | (如果ledger_current_index 改为提供,则省略)请求中提供的序列号,用于检索此数据时使用的分类帐版本。 |
ledger_hash |
String | (可以省略)请求中提供的Hex哈希检索此数据时使用的分类帐版本。 |
marker |
(Not Specified) | (可以省略)服务器定义的值,表示响应是分页的。将此传递给下一个调用以恢复此调用停止的位置。在此之后没有信息页面时省略。 |
每个商品对象都包含以下字段:
Field |
类型 | 描述 |
---|---|---|
flags |
Unsigned integer | 此优惠条目的选项设置为位标志。 |
seq |
Unsigned integer | 创建此条目的事务的序列号。(交易序列号与账户相关。) |
taker_gets |
String or Object | 接受报价的帐户接收的金额,作为表示STM中金额的字符串或货币规格对象。(请参阅指定货币金额) |
taker_pays |
String or Object | 接受报价的账户所提供的金额,作为表示STM中金额的字符串或货币规格对象。(请参阅指定货币金额) |
quality |
String | 报价的汇率,按原来的比例taker_pays 除以原始报价taker_gets 。执行报价时,最优质(最低)质量的报价首先被消耗; 提供具有相同质量的产品将从最旧到最新执行。 |
expiration |
Unsigned integer | (可能会被忽略)之后,此优惠被视为无资金支持,因为自Stream Epoch以来的秒数。另请参阅:优惠到期。 |
5.8.requestAccountTx
该requestAccountTx
方法检索涉及指定帐户的交易列表。
请求格式的示例:
remote.connect(function() { remote.requestAccountTx({ account: 'vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr', ledger: 'current', ledger_index_min: -1, ledger_index_max: -1, limit: 2 }, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求包含以下参数:
Field |
类型 | 描述 |
---|---|---|
account |
String | 账户的唯一标识符,通常是账户的地址。 |
ledger_index_min |
Integer | (可选)用于指定最早的分类帐以包含交易。的值-1 指示使用可用的最早的验证台账版本的服务器。 |
ledger_index_max |
Integer | (可选)用于指定最近的分类帐以包含来自的交易。的值-1 指示使用可用的最新验证台账版本的服务器。 |
ledger_hash |
String | (可选)仅用于查找单个分类帐中的交易。(请参阅指定分类帐。) |
ledger_index |
String or Unsigned Integer | (可选)仅用于查找单个分类帐中的交易。(请参阅指定分类帐。) |
binary |
Boolean | (可选)默认为false 。如果设置为true ,则将事务作为十六进制字符串而不是JSON返回。 |
forward |
Boolean | (可选)默认为false 。如果设置为true ,则首先返回使用最旧的分类帐索引的值。否则,结果将首先与最新的分类帐编入索引。(结果的每页可能不是内部排序的,但页面总体排序。) |
limit |
Integer | (可选)默认值有所不同。限制要检索的事务数量。服务器不需要遵守这个值。 |
marker |
(Not Specified) | 来自之前分页响应的价值。在该响应停止的情况下继续检索数据。即使服务器的可用分类账范围发生变化,该值也是稳定的。 |
与其他分页方法一样,您可以使用该marker
字段返回多页数据。
在请求之间的时间,"ledger_index_min": -1
并且"ledger_index_max": -1
可能会更改为指除他们以前做不同的分类帐的版本。marker
只要标记未指示请求中指定的分类范围之外的某个点,即使请求中的分类帐范围发生更改,该字段也可以安全分页。
一个成功回应的例子:
{ "account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "ledger_index_max": 474440, "ledger_index_min": 2, "limit": 2, "transactions": [ { "meta": { "AffectedNodes": [ { "CreatedNode": { "LedgerEntryType": "AccountRoot", "LedgerIndex": "25CD24C151EB51100BB7A5C239F70405746EDF7C0295B8374347518F5918662B", "NewFields": { "Account": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa", "Balance": "3000000000", "Sequence": 1 } } }, { "ModifiedNode": { "FinalFields": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Balance": "999999988", "Flags": 0, "OwnerCount": 0, "Sequence": 2 }, "LedgerEntryType": "AccountRoot", "LedgerIndex": "EF9FA3DDA9E716BFF74DA790342FA08894FECB9F60005DA0971EB0D01E376C7C", "PreviousFields": { "Balance": "4000000000", "Sequence": 1 }, "PreviousTxnID": "ED1915F0F4293F57D0A5376FFF9B1047CB7B01ED1686EBA4C96B9123880FC600", "PreviousTxnLgrSeq": 199583 } } ], "TransactionIndex": 0, "TransactionResult": "tesSUCCESS", "delivered_amount": "3000000000" }, "tx": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Amount": "3000000000", "Destination": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 269699, "Sequence": 1, "SigningPubKey": "027B3201436842B04147A3651239DA5223EF8C8CB821853691A231626338A0A183", "TransactionType": "Payment", "TxnSignature": "3045022100EA01E47A11835878E74B4C5AE2340D7BBE9231DB974C6F80ADB92DD9FA94392D022004FF0BE81FBA60452E4027A487085DEA351C53B6A80FA7AD648D9D185582753D", "date": 582976790, "hash": "0D4E960BC9E517077EAF90F487F3A3D5F6D3029BA7FF68A31E3B2DFCD78EB3F6", "inLedger": 269696, "ledger_index": 269696 }, "validated": true }, { "meta": { "AffectedNodes": [ { "ModifiedNode": { "FinalFields": { "Account": "vpgedsRGPuSrqMekwD8cAEahdLL1HaJf2P", "Balance": "44639962097312", "Flags": 0, "OwnerCount": 0, "Sequence": 200 }, "LedgerEntryType": "AccountRoot", "LedgerIndex": "3352A7D02FFE55AB131B41C1930ACE3B253D12A1E3E6687DCAB186EC4B6729A4", "PreviousFields": { "Balance": "44643962097324", "Sequence": 199 }, "PreviousTxnID": "4DDEBE3D7A422F0178AF210EEE2318C89ADA421DF0B0336F5CFA8C5A6A4419C3", "PreviousTxnLgrSeq": 199582 } }, { "CreatedNode": { "LedgerEntryType": "AccountRoot", "LedgerIndex": "EF9FA3DDA9E716BFF74DA790342FA08894FECB9F60005DA0971EB0D01E376C7C", "NewFields": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Balance": "4000000000", "Sequence": 1 } } } ], "TransactionIndex": 0, "TransactionResult": "tesSUCCESS", "delivered_amount": "4000000000" }, "tx": { "Account": "vpgedsRGPuSrqMekwD8cAEahdLL1HaJf2P", "Amount": "4000000000", "Destination": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 199591, "Memos": [ { "Memo": { "MemoData": "6769766561776179", "MemoType": "6D656D6F" } } ], "Sequence": 199, "SigningPubKey": "03681CB7F2FD82FB8F0B4C6962DE3D8AF8C4B86D8BD6D0B3C12AA2C218DA16973B", "TransactionType": "Payment", "TxnSignature": "304402207DF2976B6D1F287B93962C6699F2F598BACD15F1F56ED498A418544A58C782A802201F160E2FF2616A8C1C5636D75BCE3B07C0C5642D49275E0DC00134CD4DD3807C", "date": 581599830, "hash": "ED1915F0F4293F57D0A5376FFF9B1047CB7B01ED1686EBA4C96B9123880FC600", "inLedger": 199583, "ledger_index": 199583 }, "validated": true } ] }
5.9.requestLedger
检索关于公共分类帐的信息。
请求格式的示例:
remote.connect(function() { remote.requestLedger({ ledger_index: 'validated', expand: false, transactions: false }, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求可以包含以下参数:
Field |
Type | Description |
---|---|---|
ledger_hash |
String | (可选)要使用的分类帐版本的20字节十六进制字符串。(请参阅指定分类帐) |
ledger_index |
String or Unsigned Integer | (可选)要使用的分类帐的序号或快捷字符串自动选择分类帐。(请参阅指定分类帐) |
full |
Boolean | (可选) 需要管理员。如果true 返回整个分类帐的完整信息。如果您未指定分类账版本,则忽略。默认为false 。(相当于启用transactions ,accounts 和expand )注意:这是一个非常大量的数据 – 数百兆字节! |
accounts |
Boolean | (可选) 需要管理员。如果true ,返回账簿中的账户信息。如果您未指定分类账版本,则忽略。默认为false 。警告:这会返回大量的数据! |
transactions |
Boolean | (可选)如果true 返回指定分类帐版本中的交易信息。默认为false 。如果您未指定分类账版本,则忽略。 |
expand |
Boolean | (可选)为交易/帐户信息提供完整的JSON格式信息,而不仅仅是散列。默认为false 。除非您请求交易或帐户,否则将被忽略。 |
一个成功回应的例子:
{ "ledger": { "accepted": true, "account_hash": "EC0E29536BF74A49CF6938E0015E46D29E37A4B6318DF393715DD560A6707BDB", "close_time": 587029830, "close_time_human": "2018-Aug-08 07:50:30", "close_time_resolution": 10, "closed": true, "hash": "FD1367C2EF594179512C8ED5BCF40281FF3759C558095151A755466EF2A2E4B7", "ledger_hash": "FD1367C2EF594179512C8ED5BCF40281FF3759C558095151A755466EF2A2E4B7", "ledger_index": "475543", "parent_hash": "DA7FFEF0608CCB575A16C18705F831439F1DA52BA7C0F1848100F51F23A6F7C6", "seqNum": "475543", "totalCoins": "99999999999874996", "total_coins": "99999999999874996", "transaction_hash": "0000000000000000000000000000000000000000000000000000000000000000", "transactions": [ ] }, "ledger_index": 475543, "validated": true }
成功结果包含有关分类账的信息,包括以下字段:
Field |
Type | Description |
---|---|---|
ledger |
Object | 此分类帐的完整标题数据。 |
ledger.account_hash |
String | 以十六进制格式显示此分类帐中所有帐户状态信息的散列 |
ledger.accountState |
Array | (除非有请求,则省略)此分类帐中的所有帐户状态信息。 |
ledger.close_time |
Integer | 这个分类帐的时间在Stream Epoch以后几秒钟内关闭 |
ledger.close_time_human |
String | 这个分类帐的时间以可读的格式关闭 |
ledger.close_time_resolution |
Integer | 总帐关闭时间在这几秒钟内四舍五入。 |
ledger.closed |
Boolean | 这个分类帐是否已经关闭 |
ledger.ledger_hash |
String | 唯一标识整个分类帐的散列。 |
ledger.ledger_index |
String | 该分类帐的总帐索引,作为引用的整数 |
ledger.parent_hash |
String | 唯一标识在此之前出现的分类帐的散列。 |
ledger.total_coins |
String | 作为引用的整数,网络中的STM下降总数。(这会随着交易成本销毁STM而降低。) |
ledger.transaction_hash |
String | 包含在此分类帐中的交易信息散列,如十六进制 |
ledger.transactions |
Array | (未请求时省略)在此分类帐版本中应用的交易。默认情况下,成员是交易’识别哈希字符串。如果请求指定expand 为true,则成员完全是交易的表示形式,而不是JSON或二进制形式,具体取决于请求是否指定binary 为true。 |
ledger_hash |
String | 唯一标识整个分类帐的散列。 |
ledger_index |
Number | 该分类帐的总帐索引。 |
queue_data |
Array | (除非使用queue 参数请求,否则忽略)按照与队列相同的顺序描述排队事务的对象数组。如果请求指定expand 为true,则成员包含事务的完整表示,可以采用JSON或二进制形式,具体取决于请求是否指定binary 为true。需要费用修正。 |
queue_data
数组的每个成员表示队列中的一个事务。此对象的某些字段可能会因为尚未计算而被忽略。该对象的字段如下所示:
Field | Value | Description |
---|---|---|
account |
String | 该地址发送此排队交易。 |
tx |
String or Object | 默认情况下,这是一个包含事务标识哈希的字符串。如果事务以二进制格式扩展,那么这是一个对象,它的唯一字段是tx_blob ,以十进制字符串形式包含事务的二进制形式。如果事务以JSON格式扩展,则这是一个包含事务对象的对象,包括事务在该hash 字段中标识的散列。 |
retries_remaining |
Number | 此次交易在被投放前可以重试多少次。 |
preflight_result |
String | 初步交易检查的初步结果。这总是tesSUCCESS 。 |
last_result |
String | (可以省略)如果这个事务在得到retriable(ter )结果后留在队列中,这就是ter 它得到的确切结果代码。 |
auth_change |
Boolean | (可以省略)此事务是否更改此地址授权事务的方式。 |
fee |
String | (可能省略)此交易的交易成本,以STM为单位。 |
fee_level |
String | (可以省略)此交易的交易成本,相对于此类交易的最低成本,以费用级别表示。 |
max_spend_drops |
String | (也可以省略) STM的最大量,in drops,该交易可能发送或破坏。 |
5.10.requestLedgerHash
该requestLedgerHash
方法返回最近关闭的分类帐的唯一标识符。(这个分类账不一定是有效的和不可变的。)
请求格式的示例:
remote.connect(function() { remote.requestLedgerHash( function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } }) });
该方法不接受任何参数。
一个成功回应的例子:
{"ledger_hash":"62C0102B55FBCCF268297E099EFF468206F92C5A19B7A96457CCD9253C26CAC6","ledger_index":475556}
成功结果包含以下字段:
Field |
类型 | 描述 |
---|---|---|
ledger_hash |
String | 20字节的十六进制字符串,带有分类帐的唯一散列 |
ledger_index |
Unsigned Integer | 此分类帐的序号 |
5.11.requestLedgerCurrent
该requestLedgerCurrent
方法返回当前正在进行的分类帐的唯一标识符。该命令对于测试非常有用,因为返回的分类账仍然不断变化。
请求格式的示例:
remote.connect(function() { remote.requestLedgerCurrent( function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } }) });
该请求不包含参数。
一个成功回应的例子:
{"ledger_current_index":478835}
5.12.requestTx
该requestTx
方法检索单个事务的信息。
requestTx(hash, callback)
请求格式的示例:
remote.connect(function() { remote.requestTx("0D4E960BC9E517077EAF90F487F3A3D5F6D3029BA7FF68A31E3B2DFCD78EB3F6", function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求包含以下参数:
Field |
Type | Description |
---|---|---|
hash |
String | 交易的256位散列,十六进制表示。 |
一个成功回应的例子:
{ "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Amount": "3000000000", "Destination": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 269699, "Sequence": 1, "SigningPubKey": "027B3201436842B04147A3651239DA5223EF8C8CB821853691A231626338A0A183", "TransactionType": "Payment", "TxnSignature": "3045022100EA01E47A11835878E74B4C5AE2340D7BBE9231DB974C6F80ADB92DD9FA94392D022004FF0BE81FBA60452E4027A487085DEA351C53B6A80FA7AD648D9D185582753D", "date": 582976790, "hash": "0D4E960BC9E517077EAF90F487F3A3D5F6D3029BA7FF68A31E3B2DFCD78EB3F6", "inLedger": 269696, "ledger_index": 269696, "meta": { "AffectedNodes": [ { "CreatedNode": { "LedgerEntryType": "AccountRoot", "LedgerIndex": "25CD24C151EB51100BB7A5C239F70405746EDF7C0295B8374347518F5918662B", "NewFields": { "Account": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa", "Balance": "3000000000", "Sequence": 1 } } }, { "ModifiedNode": { "FinalFields": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Balance": "999999988", "Flags": 0, "OwnerCount": 0, "Sequence": 2 }, "LedgerEntryType": "AccountRoot", "LedgerIndex": "EF9FA3DDA9E716BFF74DA790342FA08894FECB9F60005DA0971EB0D01E376C7C", "PreviousFields": { "Balance": "4000000000", "Sequence": 1 }, "PreviousTxnID": "ED1915F0F4293F57D0A5376FFF9B1047CB7B01ED1686EBA4C96B9123880FC600", "PreviousTxnLgrSeq": 199583 } } ], "TransactionIndex": 0, "TransactionResult": "tesSUCCESS", "delivered_amount": "3000000000" }, "validated": true }
5.13.requestTransactionEntry
该requestTransactionEntry
方法从特定分类帐版本检索单个事务的信息。(tx相比之下,该命令将搜索指定事务的所有分类帐,我们建议使用该方法。)
requestTransactionEntry(hash, ledgerHash, callback)
请求格式的示例:
remote.connect(function() { remote.requestTransactionEntry("0D4E960BC9E517077EAF90F487F3A3D5F6D3029BA7FF68A31E3B2DFCD78EB3F6",269696, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求包含以下参数:
Field |
Type | Description |
---|---|---|
ledgerhash |
String | (可选)要使用的分类帐版本的20字节十六进制字符串。(请参阅指定分类帐) |
hash |
String | 您正在查找的交易的唯一散列 |
一个成功回应的例子:
{ "ledger_index": 269696, "metadata": { "AffectedNodes": [ { "CreatedNode": { "LedgerEntryType": "AccountRoot", "LedgerIndex": "25CD24C151EB51100BB7A5C239F70405746EDF7C0295B8374347518F5918662B", "NewFields": { "Account": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa", "Balance": "3000000000", "Sequence": 1 } } }, { "ModifiedNode": { "FinalFields": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Balance": "999999988", "Flags": 0, "OwnerCount": 0, "Sequence": 2 }, "LedgerEntryType": "AccountRoot", "LedgerIndex": "EF9FA3DDA9E716BFF74DA790342FA08894FECB9F60005DA0971EB0D01E376C7C", "PreviousFields": { "Balance": "4000000000", "Sequence": 1 }, "PreviousTxnID": "ED1915F0F4293F57D0A5376FFF9B1047CB7B01ED1686EBA4C96B9123880FC600", "PreviousTxnLgrSeq": 199583 } } ], "TransactionIndex": 0, "TransactionResult": "tesSUCCESS" }, "tx_json": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Amount": "3000000000", "Destination": "vGuHMY2tAZ2WJWRFVuKVyngPdZjMvr5HBa", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 269699, "Sequence": 1, "SigningPubKey": "027B3201436842B04147A3651239DA5223EF8C8CB821853691A231626338A0A183", "TransactionType": "Payment", "TxnSignature": "3045022100EA01E47A11835878E74B4C5AE2340D7BBE9231DB974C6F80ADB92DD9FA94392D022004FF0BE81FBA60452E4027A487085DEA351C53B6A80FA7AD648D9D185582753D", "hash": "0D4E960BC9E517077EAF90F487F3A3D5F6D3029BA7FF68A31E3B2DFCD78EB3F6", "inLedger": 269696, "ledger_index": 269696 }, "validated": false }
5.14.requestTxHistory
该requestTxHistory
方法检索一些最近进行的交易。
requestTxHistory(start, callback)
请求格式的示例:
remote.connect(function() { remote.requestTxHistory(0, function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
该请求包含以下参数:
Field |
类型 | 描述 |
---|---|---|
start |
Unsigned Integer | 要跳过的交易数量。 |
一个成功回应的例子:
{ "index": 0, "txs": [ { "Account": "v33pARkvXFH3znGMxnD6VnbMViJPkKYB8d", "Amount": "83330000000", "Destination": "v3Rhnd3xQTLpDMAtLvLkAHPDq34tPVcFAE", "DestinationTag": 97, "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 479048, "Sequence": 15, "SigningPubKey": "02FD504BCB9EFCB7B049C41A5A9B10EBBA32094B99EC14AFE006CFECE099E6F794", "TransactionType": "Payment", "TxnSignature": "3045022100F3C87E64663BAA02A529518EEB5644AEB14DFC290683263E340386C9488300210220139BDE61544D82FD5A48AE3598F7C412A6FBD99D4FED2FAACC44B1C57B1D8223", "hash": "9B7E0BDD51CFE50C1C2FE9F44719636E880C3378689E77ECED044DFA370609B0", "inLedger": 479045, "ledger_index": 479045 }, { "Account": "vn4K541zh3vNHHJJaos2Poc4z3RiMHLHcK", "Amount": "83326995000", "Destination": "v33pARkvXFH3znGMxnD6VnbMViJPkKYB8d", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 479043, "Memos": [ { "Memo": { "MemoData": "34383831344336423635413834304442434546434130463744313436314441344533443739334343393833443944413636313344323343303433374337373837", "MemoType": "6D656D6F" } } ], "Sequence": 78, "SigningPubKey": "028D1C021B4F6C02965A66B370D94140863D21D88808F1AC363D2A3C94D6C15C21", "TransactionType": "Payment", "TxnSignature": "30450221009727CECB318C06DB01FC1BED2E11F3A4DA51F0290B039307BBF536E818951476022034278CB17FD158A9F9B4157C938FFBD38CD0CD90D76CAF3924D47E218ED8D149", "hash": "56D79F1A6E3C012D2156BBCD549F4ABD86447E70D6B0BEC60E7EE719CD095CE7", "inLedger": 479040, "ledger_index": 479040 }, { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Amount": "5990000", "Destination": "vnJdXznPHnFumWjJVVQHVMtnNbeYEHBkin", "DestinationTag": 2017, "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 478950, "Memos": [ { "Memo": { "MemoData": "787878", "MemoType": "6D656D6F" } } ], "Sequence": 2, "SigningPubKey": "027B3201436842B04147A3651239DA5223EF8C8CB821853691A231626338A0A183", "TransactionType": "Payment", "TxnSignature": "3045022100BF06D150574CF55C2A37683C729F61B18BE3F5F99B962F963CC82DA3BA3A644F022016FEBA58616031C1B02CD0495DFD94F830E80ED32FB9F56917F1249EC11318E4", "hash": "95092F6F65F448581E145B5DFDF04C11CAA95D5614F890F3E563C33CB49EDE51", "inLedger": 478947, "ledger_index": 478947 }, { "Account": "vNYxPfTcYWUkYRRipLyEW8N6bsg5fTrgVB", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 476734, "Sequence": 493, "SigningPubKey": "03040FD87BB705B2F133385DA7460BEDEFEE99E58F9EA5EC7855088E157C4F8D76", "TakerGets": { "currency": "CNY", "issuer": "vw92NVCxjrprk5oaMPcVA81xsXVYYzy66a", "value": "700" }, "TakerPays": { "currency": "PHC", "issuer": "vGQXtCirab4CiFpV4d5jHfjL9AC5PKNcSE", "value": "10000" }, "TransactionType": "OfferCreate", "TxnSignature": "3045022100F275BC47B605F8779CBC6FBD1798022B4CCD9230FC590795F618C4ADEDC4EF950220755DD81975635D930A12DAA4450A4FEF7BF53370C5C94DD77B839CC039A4463B", "hash": "993D388B0183105DFAB3D4E9878DD92ADBA7998D018DB0C37825EE195E93D4F3", "inLedger": 476727, "ledger_index": 476727 }, { "Account": "vNYxPfTcYWUkYRRipLyEW8N6bsg5fTrgVB", "Fee": "12", "Flags": 2147483648, "LastLedgerSequence": 476733, "Sequence": 492, "SigningPubKey": "03040FD87BB705B2F133385DA7460BEDEFEE99E58F9EA5EC7855088E157C4F8D76", "TakerGets": { "currency": "CNY", "issuer": "vw92NVCxjrprk5oaMPcVA81xsXVYYzy66a", "value": "910" }, "TakerPays": { "currency": "PHC", "issuer": "vGQXtCirab4CiFpV4d5jHfjL9AC5PKNcSE", "value": "13000" }, "TransactionType": "OfferCreate", "TxnSignature": "3045022100F38C35C62E92F515F948E0CF91E97521FB8D9AE1084D501588BF046BC9F38E8202201C58D4713DF746D59269DE16111BB89E2A2615385F9DC7653634B95F38BDE201", "hash": "DCB7CDD865415422802D09098F648E815739A52B1014A5AEC4B04474FF374750", "inLedger": 476725, "ledger_index": 476725 } ] }
5.15.requestPathFind
该requestPathFind
方法搜索可能进行交易的路径,并在路径随时间变化时定期发送更新。对于在STM中严格执行的付款,没有必要找到路径,因为STM可以直接发送到任何账户。
有三种不同的path_find命令的模式或子命令。用subcommand
参数指定你想要的一个:
create
– 开始发送寻路信息close
– 停止发送寻路信息status
– 获取当前打开的寻路请求的信息
尽管streamd
服务器试图找到最便宜的路径或用于付款的路径组合,但不能保证此方法返回的路径实际上是最佳路径。由于服务器负载,寻路可能无法找到最佳结果。此外,您应该小心来自不受信任的服务器的寻路结果。服务器可以被修改为返回比最佳路径更少的运营商收入。如果您没有自己可以信任的服务器,那么您应该比较来自不同方运行的多个服务器的寻路结果,以最大限度地降低单个服务器返回不良结果的风险。(注意:返回低于最优结果的服务器不一定是恶意行为的证据; 它也可能是服务器负载过重的症状。)
5.16.requestPathFindCreate
该create
子命令requestPathFindCreate
会创建一个持续请求,以查找可从一个指定帐户进行支付交易的可能路径,以便另一个帐户接收所需数量的某种货币。初始响应包含两个地址之间建议的路径,这会导致收到所需的数量。之后,服务器将发送附加消息"type": "path_find"
,并更新潜在路径。更新的频率取决于服务器的判断,但通常意味着当有新的分类账版本时,每隔几秒就会有一次更新。
客户端一次只能打开一个寻路请求。如果另一个寻路请求已经在同一连接上打开,则旧请求会自动关闭并替换为新请求。
requestPathFindCreate(src_account, dst_account, dst_amount, src_currencies, callback)
请求格式的示例:
remote.connect(function () { remote.requestPathFindCreate('vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr', 'vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr', { "value": "0.001", "currency": "USD", "issuer": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr" }, [{ "currency": "USD", "issuer": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr" } ], function (err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } else { document.getElementById('text').innerHTML = JSON.stringify(err); } }) });
该请求包含以下参数:
Field |
Type | Description |
---|---|---|
subcommand |
String | 使用"create" 发送创建命令 |
source_account |
String | 从中找到路径的帐户的唯一地址。(换句话说,将发送付款的帐户。) |
destination_account |
String | 帐户的唯一地址以查找路径。(换句话说,将收到付款的帐户。) |
destination_amount |
String or Object | 目标帐户在交易中收到的货币金额。特殊情况: 您可以指定"-1" (对于STM)或提供-1作为该value 字段的内容(对于非STM货币)。这要求尽可能多的交付路径,同时花费不超过send_max (如果提供)指定的金额。 |
send_max |
String or Object | (可选) 将在交易中花费的货币金额。不兼容source_currencies |
paths |
Array | (可选)表示要检查的付款路径的对象数组数组。您可以使用它来随时更新您已知的特定路径的更改,或检查沿特定路径进行支付的总体成本。 |
一个成功回应的例子:
{ "alternatives": [], "destination_account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "destination_amount": { "currency": "USD", "issuer": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "value": "0.001" }, "id": 1, "source_account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr" }
成功的结果包含以下字段:
Field |
Type | Description |
---|---|---|
alternatives |
Array | 具有建议路径的对象数组,如下所述。如果为空,则找不到连接源帐户和目标帐户的路径。 |
destination_account |
String | 将接收交易的帐户的唯一地址 |
destination_amount |
String or Object | 目标在交易中收到的货币金额 |
id |
(Various) | (仅限WebSocket)WebSocket请求中提供的ID再次包含在此级别。 |
source_account |
String | 将发送交易的唯一地址 |
full_reply |
Boolean | 如果false ,这是不完整搜索的结果。以后的答复可能有更好的路径。如果true ,那么这是找到的最佳路径。(理论上可能存在更好的路径,但streamd 不会找到它。)在关闭寻路请求之前,streamd 每当新分类账关闭时继续发送更新。 |
alternatives
数组中的每个元素都是一个对象,表示从一种可能的源货币(由初始帐户持有)到目标帐户和货币的路径。该对象具有以下字段:
Field |
Type | Description |
---|---|---|
paths_computed |
Array | 定义支付路径的对象数组数组 |
source_amount |
String or Object | 货币金额,源必须沿着此路径发送,以便目的地接收所需金额 |
5.17.requestPathFindClose
requestPathFindClose
指示服务器停止发送有关当前打开的寻路请求的信息。
请求格式的示例:
remote.connect(function() { remote.requestPathFindClose( function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } }) });
如果寻路请求成功关闭,则响应采用与初始响应相同的格式requestPathFindCreate
,并加上以下字段:
Field |
类型 | 描述 |
---|---|---|
closed |
Boolean | 该值true 表示该回复是对path_find close 命令的回应。 |
如果没有出色的寻路请求,则返回错误。
5.18.requestStreamPathFind
该requestStreamPathFind
方法是requestpathfind的一个简化版本,可以立即使用以及提供支付路径单一响应。然而,随着时间的推移,结果往往会过时。不要让多个调用保持更新,您应该尽可能地使用requestpathfind
。
尽管streamd
服务器试图找到最便宜的路径或用于付款的路径组合,但不能保证此方法返回的路径实际上是最佳路径。
requestStreamPathFind(src_account, dst_account, dst_amount, src_currencies, callback)
警告:小心不受信任的服务器的路径查找结果。服务器可以被修改为返回比最佳路径更少的运营商收入。服务器在重负载时也可能返回不良结果。如果您没有自己可以信任的服务器,那么您应该比较来自不同方运行的多个服务器的寻路结果,以最大限度地降低单个服务器返回不良结果的风险。
请求格式的示例:
remote.connect(function () { remote.requestPathFindCreate('vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr', 'vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr', { "value": "0.001", "currency": "USD", "issuer": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr" }, [{ "currency": "USD", "issuer": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr" } ], function (err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } else { document.getElementById('text').innerHTML = JSON.stringify(err); } }) });
该请求包含以下参数:
Field |
Type | Description |
---|---|---|
source_account |
String | 将在交易中发送资金的帐户的唯一地址 |
destination_account |
String | 将在交易中获得资金的帐户的唯一地址 |
destination_amount |
String or Object | 目标帐户在交易中收到的货币金额。特殊情况: 您可以指定"-1" (对于STM)或提供-1作为该value 字段的内容(对于非STM货币)。这要求尽可能多的交付路径,同时花费不超过send_max (如果提供)指定的金额。 |
send_max |
String or Object | (可选) 将在交易中花费的货币金额。不能用于source_currencies 。 |
source_currencies |
Array | (可选)源帐户可能要花费的货币数组。数组中的每个条目应该是带有必填currency 字段和可选issuer 字段的JSON对象,例如指定货币金额的方式。不能包含超过18种来源货币。默认情况下,使用最多88种不同货币/发行商对可用的所有来源货币。 |
ledger_hash |
String | (可选)要使用的分类帐版本的20字节十六进制字符串。(请参阅指定分类帐) |
ledger_index |
String or Unsigned Integer | (可选)要使用的分类帐的序号或快捷字符串自动选择分类帐。(请参阅指定分类帐) |
一个成功回应的例子:
{ "alternatives": [], "destination_account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "destination_amount": { "currency": "USD", "issuer": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "value": "0.001" }, "id": 1, "source_account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr" }
成功结果包含以下字段:
Field |
Type | Description |
---|---|---|
alternatives |
Array | 具有可能路径的对象数组,如下所述。如果为空,则没有连接源帐户和目标帐户的路径。 |
destination_account |
String | 将接收付款交易的帐户的唯一地址 |
destination_currencies |
Array | 作为代表目标接受的货币的字符串数组,例如3个字母的代码"USD" 或40个字符的十六进制等"015841551A748AD2C1F76FF6ECB0CCCD00000000" |
alternatives
数组中的每个元素都是一个对象,表示从一种可能的源货币(由初始帐户持有)到目标帐户和货币的路径。该对象具有以下字段:
Field |
Type | Description |
---|---|---|
paths_computed |
Array | 定义支付路径的对象数组数组 |
source_amount |
String or Object | 货币金额,源必须沿着此路径发送,以便目的地接收所需金额 |
5.19.requestSign
requestSign
方法采用JSON格式的交易和密钥,并返回交易的带符号二进制表示。结果总是不同,即使您提供相同的交易JSON和密钥。
requestSign(secret, tx_json, callback)
请求格式的示例:
remote.connect(function() { remote.requestSign( "s████████████████████████████",", { "TransactionType" : "Payment", "Account" : "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Destination" : "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV", "Amount" : { "currency" : "USD", "value" : "1", "issuer" : "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV" } },function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } } ) });
要签署交易,您必须提供可授权交易的密钥。您可以通过几种方式来完成此操作:
- 提供一个
secret
值并忽略该key_type
字段。该值可以格式化为base58种子,RFC-1751,十六进制或字符串密码。(仅限secp256k1键) - 提供一个
key_type
值和中只有一个seed
,seed_hex
或passphrase
。省略该secret
字段。(不受命令行语法支持)。
该请求包含以下参数:
Field |
Type | Description |
---|---|---|
tx_json |
Object | JSON格式的交易定义 |
secret |
String | (可选)提供交易的帐户的密钥,用于对其进行签名。不要将您的秘密发送给不受信任的服务器或通过不安全的网络连接。不能与使用key_type ,seed ,seed_hex ,或passphrase 。 |
seed |
String | (可选)提供交易的帐户的密钥,用于对其进行签名。必须采用base58格式。如果提供,您还必须指定key_type 。不能与使用secret ,seed_hex 或passphrase 。 |
seed_hex |
String | (可选)提供交易的帐户的密钥,用于对其进行签名。必须采用十六进制格式。如果提供,您还必须指定key_type 。不能与使用secret ,seed 或passphrase 。 |
passphrase |
String | (可选)提供事务的帐户的密钥,用于对其进行签名,作为字符串密码。如果提供,您还必须指定key_type 。不能与使用secret ,seed 或seed_hex 。 |
key_type |
String | (可选)此请求中提供的加密密钥的类型。有效类型是secp256k1 或ed25519 。默认为secp256k1 。不能用于secret 。小心: Ed25519支持是实验性的。 |
offline |
Boolean | (可选,默认为false)如果为true,则在构建事务时,不要尝试自动填入或验证值。 |
build_path |
Boolean | (可选)如果为付款类型的交易提供,则Paths 在签名前自动填写该字段。警告:服务器查找是否存在此字段,而不是其值。此行为可能会更改。 |
fee_mult_max |
Integer | (可选,默认值为10;建议值1000)限制自动提供的Fee 字段的数量。rpcHIGH_FEE 如果交易成本上的当前负荷乘数大于(fee_mult_max ÷ fee_div_max ),则签署失败并显示错误。如果您指定Fee 交易字段(交易成本),则忽略。 |
fee_div_max |
Integer | (可选,默认为1)rpcHIGH_FEE 如果交易成本上的当前负荷乘数大于(fee_mult_max ÷fee_div_max ),则签署失败并显示错误。如果您指定Fee 交易字段(交易成本),则忽略。 |
自动填充字段
如果您忽略它们,服务器将自动尝试自动填写tx_json
(交易对象)中的某些字段。服务器在签名之前提供以下字段,除非请求指定offline
为true
:
Sequence
– 服务器自动使用发件人帐户信息中的下一个序列号。Fee
– 如果您省略Fee
参数,则服务器会自动尝试填写适当的交易成本。在生产Stream分类帐中,rpcHIGH_FEE
除非您提供适当的fee_mult_max
值,否则将失败。- 根据应用于参考交易成本的负荷定标乘数,参数
fee_mult_max
和fee_div_max
参数限制了自动提供的交易成本可以达到多高。如果自动提供的值使用大于10倍的乘数,则默认设置会返回错误。但是,生产Stream分类帐通常具有1000倍的负荷乘数。 - 命令行语法不支持
fee_mult_max
和fee_div_max
。对于生产Stream分类帐,您必须提供一个Fee
值。 Paths
– 对于付款类型的交易(不包括STM到STM的转账),路径字段可以自动填充。只有build_path
提供时才填写。
一个成功回应的例子:
{ "tx_blob": "1200002280000000240000000461D4838D7EA4C6800000000000000000000000000055534400000000008B17262A312E4FF5BE1138A85301428C74628BB868400000000000000A7321027B3201436842B04147A3651239DA5223EF8C8CB821853691A231626338A0A1837446304402205E74789E90DA99E2553C6367A9039DBDADDCC2E29D2219BCE09CA052F14ADF4602207E2FFB5205F4488B5A0340852A78C8F3B1A15A746AE953B7FB0484CDCB8EF0BE8114336873538F7144E4124D9F1F2B3B202505C58FDB83148B17262A312E4FF5BE1138A85301428C74628BB8", "tx_json": { "Account": "vngFb3bKpGyocUfUR3VYjn9osaE6wXaZsr", "Amount": { "currency": "USD", "issuer": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV", "value": "1" }, "Destination": "vDgSCaGS3iih9iKvfvRULrK7gurJjdDnUV", "Fee": "10", "Flags": 2147483648, "Sequence": 4, "SigningPubKey": "027B3201436842B04147A3651239DA5223EF8C8CB821853691A231626338A0A183", "TransactionType": "Payment", "TxnSignature": "304402205E74789E90DA99E2553C6367A9039DBDADDCC2E29D2219BCE09CA052F14ADF4602207E2FFB5205F4488B5A0340852A78C8F3B1A15A746AE953B7FB0484CDCB8EF0BE", "hash": "EB977DDC1F063F1B7B3573656E9BF931AEDB2E876CC42FDFDDF08096E5D472D1" } }
成功结果包含以下字段:
Field |
Type | Description |
---|---|---|
tx_blob |
String | 完全合格的签名交易的二进制表示,如十六进制 |
tx_json |
Object | 完整交易的 JSON规范为已签名的,包括自动填入的所有字段 |
警告:如果此命令导致错误消息,则消息可以包含请求中的密钥。确保这些错误对其他人不可见。
5.20.requestSubscribe
该 subscribe方法在发生某些事件时请求服务器定期发出通知。
requestSubscribe(streams, callback)
请求格式的示例:
remote.connect(function() { remote.requestSubscribe(["ledger"],function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } }) });
该请求包含以下参数:
Field |
Type | Description |
---|---|---|
streams |
Array | (可选)要订阅的通用流的字符串名称数组,如下所述 |
该streams
参数提供对以下默认信息流的访问权限:
server
– 每当streamd
服务器的状态(例如网络连接)发生变化时发送消息ledger
– 每当共识流程声明新的验证分类账时发送消息transactions
– 每当交易包含在封闭式分类帐中时发送消息transactions_proposed
– 每当交易包含在封闭式分类帐中时发送消息,以及一些尚未包含在验证分类帐中的交易,并且可能永远不会。并非所有建议的交易在验证之前出现 注意: 即使一些不成功的交易也包含在验证的分类帐中,因为它们会收取反垃圾邮件交易费用。validations
– 每当服务器收到来自其信任的服务器的验证消息时发送消息。(streamd
当服务器收到来自至少一个信任验证器的法定数量的验证消息时,个人声明验证分类帐。)peer_status
– (仅限管理员)关于连接的对等streamd
服务器的信息,特别是关于共识流程的信息。
books
数组的每个成员(如果提供)都是包含以下字段的对象:
Field |
Type | Description |
---|---|---|
taker_gets |
Object | 指定接受报价的账户将接收哪种货币作为没有金额的货币对象。 |
taker_pays |
Object | 作为没有金额的货币对象,指定接受报价的账户将支付哪种货币。 |
taker |
String | 独特的base58帐户地址,用作查看优惠的透视图。(这会影响资金状态和优惠费用。) |
snapshot |
Boolean | (可选,默认为false)如果为true,则在发送更新之前订阅订单时返回当前状态 |
both |
Boolean | (可选,默认为false)如果为true,则返回订单的双方。 |
一个成功回应的例子:
{ "fee_base": 10, "fee_ref": 10, "ledger_hash": "52F1443F8864CF2A61ECFA9CEF5B215A01B279E3AB68E8440DE9960C7EF98110", "ledger_index": 492282, "ledger_time": 587363290, "reserve_base": 1000000, "reserve_inc": 100000, "validated_ledgers": "2-492282" }
响应中包含的字段取决于请求中包含的订阅内容。
accounts
和accounts_proposed
-无场返回- 流:服务器 – 有关服务器状态的信息,例如
load_base
(服务器的当前负载级别),random
(随机生成的值)等等,可能会发生更改。 - 流:事务,流:transactions_proposed和流:验证 – 没有字段返回
- 流:分类账 – 有关分类账和现行收费表的信息,例如
fee_base
(当前STM交易的基本费用),fee_ref
(收费单位交易的当前基本费用),ledger_hash
(最新验证分类账的散列),reserve_base
(最低储备金为帐户),等等。 books
– 没有字段默认返回。如果"snapshot": true
在请求中设置,返回offers
(定义订单簿的商品定义对象数组)
5.21.requestUnsubscribe
该requestUnsubscribe
命令会通知服务器停止发送特定订阅或订阅集的消息。
requestUnsubscribe(streams, callback)
请求格式的示例:
remote.connect(function() { remote.requestUnsubscribe(["ledger"],function(err, res) { if (!err) { document.getElementById('text').innerHTML = JSON.stringify(res); } }) });
请求中的参数与参数几乎完全相同subscribe
,除了它们用于定义要结束的订阅。参数是:
Field |
Type | Description |
---|---|---|
streams |
Array | (可选)通用流的字符串名称的数组从,包括退订ledger ,server ,transactions ,和transactions_proposed 。 |
成功的返回结果不包含字段。