不同类型的对象以不同的方式唯一标识:
例如,帐户由其地址标识"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59"
。地址始终以“r”开头。许多rippled
方法也接受十六进制表示。
事务由事务的二进制格式的哈希标识。您还可以通过发送账户和序列号来识别交易。
每个已关闭的分类帐都有一个分类帐索引和一个哈希值。当指定总帐实例,你可以使用一个。
XRP分类帐中的帐户由base58 XRP分类帐地址标识。该地址来源于账户的主公钥,而后者又是从一个密钥中派生出来的。地址在JSON中表示为一个字符串,并具有以下特征:
r
0
”大写字母“ O
”,大写字母“ I
”和小写字母“ l
”有关更多信息,请参阅帐户。
XRP分类帐中的许多对象,特别是交易和分类帐,都由256位散列值唯一标识。此值通常以“SHA-512Half”计算,该值从某些内容计算SHA-512哈希值,然后采用十六进制表示的前64个字符。由于对象的散列是以非常不可能产生冲突的方式从内容派生的,因此具有相同散列的两个对象可以被视为相同。
XRP分类帐哈希值具有以下特征:
注意:SHA-512Half与官方定义的SHA-512/256哈希函数具有相似的安全性。但是,XRP分类帐的使用早于SHA-512/256,并且在现有SHA-512功能的基础上也更容易实现。(截至撰写本文时,加密库中的SHA-512支持比SHA-512/256更普遍。)
序列号是一个32位无符号整数,用于标识相对于特定帐户的交易或优惠。
XRP分类帐中的每个科目对象都有一个序列号,从1开始。要将事务中继到网络并可能包含在验证分类帐中,它必须具有Sequence
与发送帐户的当前Sequence
号码匹配的字段。无论交易是成功还是失败,只要来自该账户的交易包含在验证分类账中,账户的序列字段就会增加。这保留了帐户提交的交易顺序,并区分了本来相同的交易。
XRP分类帐中的每个Offer节点都标有发送Account
地址和创建它Sequence
的OfferCreate事务的值。这两个字段一起唯一标识要约。
分类账索引是用于识别分类帐的32位无符号整数。分类账索引也被称为分类账的序列号。第一个分类账是分类账索引1,每个新分类账的分类账索引1都高于其之前的分类账索引。
分类账索引表示分类帐的顺序; 的散列值识别分类账的确切内容。具有相同散列的两个分类总是相同的。对于经过验证的分类账,哈希值和序列号同样有效且相关性为1:1。但是,对于正在进行的分类账,这不是真实的:
rippled
由于在整个网络中传播交易的延迟,两个不同的服务器对于具有相同分类帐索引的当前分类帐可能具有不同的内容。许多API方法要求您指定分类帐的实例,并将检索的数据视为该特定版本的共享分类帐的最新数据。接受分类帐版本的命令全部以相同的方式工作。有三种方法可以指定您要使用哪个分类帐:
ledger_index
。每个封闭式分类帐的识别序号比先前验证过的分类帐高1。(创世记账编号为0)ledger_hash
。ledger_index
参数中通过以下快捷键之一指定分类帐:
validated
为整个网络验证的最新分类账closed
对于已经关闭进行修改并提出验证的最新分类账current
为服务器的当前工作版本的分类帐。还有一个不赞成使用的ledger
参数,它接受上述三种格式中的任何一种。不要使用这个参数; 它可能会被删除,恕不另行通知。
如果您未指定分类帐,则current
默认选择(进行中)分类帐。如果您提供多个指定分类帐的ledger
字段,则如果已弃用的字段存在,则会先使用该字段,并返回至ledger_hash
。ledger_index
除非另外两个都不存在,否则该字段将被忽略。
注意:不要依赖此默认行为来指定分类帐; 它可能会改变。如果可以,请始终在请求中指定分类帐版本。
XRP分类账中有两种货币:XRP和其他所有货币。两者之间有很多不同之处:
XRP |
发行货币 |
---|---|
没有发行人。 | 始终由XRP帐户发行 |
指定为一个字符串 | 指定为一个对象 |
在账户中跟踪 | 在信任线跟踪 |
永远不能创建; 只能被破坏 | 可以自由发行或赎回 |
最大值100000000000 (1e11 ) |
最大值 9999999999999999e80 |
精确到最近的“下降”(0.000001 XRP) | 15位精度十进制数字,最小非零绝对值为 1000000000000000e-96 |
警告:XRP分类帐使用与典型浮点数不同的精度的十进制数学运算,因此货币金额始终以字符串形式呈现。
某些API方法要求您指定一定数量的货币。取决于您是在处理网络的本地XRP货币还是其他货币单位(称为发行),用于指定它的样式非常不同。
XRP的数量被表示为字符串。(XRP的精度等于64位整数,但JSON整数限制为32位,因此如果以JSON整数表示XRP可能会溢出。)XRP在“drops”中正式指定,相当于0.000001(one 1每百万分之一)的XRP。因此,要在JSON文档中表示1.0 XRP,您应该写:
"1000000"
不要将XRP指定为对象。
允许单元测试提交带有小数点的XRP值(非丢弃) - 例如,“1.23”表示1.23 XRP。所有其他情况下,应始终指定XRP,无小数点:例如“1230000”表示1.23 XRP。
如果您指定非XRP货币(包括法定货币,贵金属,加密货币或其他自定义货币),则必须将其指定为货币规格对象。这是一个包含三个字段的JSON对象:
Field |
类型 | 描述 |
---|---|---|
currency |
字符串 - 货币代码 | 货币发行的任意代码。不能XRP 。 |
value |
串 | 引用货币数量的十进制表示。这可以包括科学记数法,如1.23e11 含义1230亿。二者e 并E 可以被使用。 |
issuer |
串 | 发行货币的实体的唯一帐户地址。换句话说,货币可以兑换的人或企业。 |
小心:这些字段名称区分大小写。
例如,为了代表账户发行153.75美元r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59
,您需要指定:
{
"currency": "USD",
"value": "153.75",
"issuer": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59" }
允许单元测试在格式中以非斜杠分隔的字符串形式提交大量的非XRP货币"amount/currency/issuer"
。所有其他情况应使用上面的JSON对象格式。
如果您指定的是没有金额的非XRP币种(通常用于定义货币兑换优惠的订单),您应该如上所述指定它,但省略该value
字段。
如果您指定的XRP没有金额(通常用于定义订单),则应将其指定为仅包含currency
字段的JSON对象。切勿issuer
为XRP 包含一个字段。
最后,如果付款的收款人帐户信任多个发行人的货币,您可以指出付款应该以收款人接受的任何发行人组合进行。为此,请将收件人帐户的地址指定为issuer
JSON对象中的值。
XRP分类帐中有两种货币代码:
?
,!
,@
,#
,$
,%
,^
,&
,*
,<
,>
,(
,)
,{
,}
,[
,]
,和|
。货币代码XRP
(全部大写)为XRP保留,不能被发行货币使用。0158415500000000C1F76FF6ECB0BAC600000000
根据XRP分类帐的内部货币格式。这种表示并不常见。在rippled
服务器和它的API表示时间为无符号整数。这个数字用于衡量自2000年1月1日(00:00 UTC)的“Ripple Epoch”以来的秒数。这就像Unix时代的工作方式一样,除了Ripple Epoch在Unix Epoch之后946684800秒。
不要将Ripple Epoch时间转换为32位变量中的UNIX Epoch时间:这可能会导致整数溢出。
根据rippled
服务器的配置方式,运行时间以及其他因素,服务器可能会在不同程度上参与全局XRP分类帐对等网络。这被表示为server_state
对server_info
和server_state
命令的响应中的字段。可能的反应遵循一系列递增的相互作用,每个后来的值取代前一个值。他们的定义如下(按优先级顺序排列):
Value |
描述 |
---|---|
disconnected |
服务器没有连接到XRP分类帐对等网络。它可能在离线模式下运行,或者出于任何原因可能无法访问网络。 |
connected |
服务器认为它已连接到网络。 |
syncing |
该服务器目前落后于账本版本。(服务器启动后花几分钟追赶是正常的。) |
tracking |
服务器与网络一致 |
full |
服务器完全被网络捕获并可以参与验证,但并未这么做(可能因为它尚未配置为验证器)。 |
validating |
服务器当前正在参与验证分类帐 |
proposing |
服务器正在参与验证分类帐,目前正在提出自己的版本。 |
注:之间的区别full
,validating
以及proposing
基于与全球网络的其余部分同步,这是正常的服务器,以这些国家之间的一般操作的过程中波动。
某些方法返回的数据比可以有效地放入一个响应的数据要多 当包含的结果多于此结果时,响应包含一个marker
字段。您可以使用它在多个呼叫中检索更多数据页面。在每个请求中,传递marker
前一个响应的值,以便从您停止的位置继续。如果marker
从响应中忽略,则您已达到数据集的末尾。
该marker
字段的格式是故意未定义的。每个服务器都可以marker
根据需要定义一个字段,因此它可以采用字符串,嵌套对象或其他类型的形式。不同的服务器和同一服务器提供的不同方法可以有不同的marker
定义。每个marker
都是短暂的,10分钟后可能无法按预期工作。
博主QQ: 122209017