Ripple(瑞波)基本数据类型

不同类型的对象以不同的方式唯一标识:

例如,帐户由其地址标识"r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59"地址始终以“r”开头。许多rippled方法也接受十六进制表示。

事务事务的二进制格式哈希标识您还可以通过发送账户和序列号来识别交易

每个已关闭的分类帐都有一个分类帐索引和一个哈希值。指定总帐实例,你可以使用一个。

地址

XRP分类帐中的帐户由base58 XRP分类帐地址标识。该地址来源于账户的主公钥,而后者又是从一个密钥中派生出来的。地址在JSON中表示为一个字符串,并具有以下特征:

  • 长度在25到35个字符之间
  • 从角色开始 r
  • 使用字母数字字符,不包括数字“ 0”大写字母“ O”,大写字母“ I”和小写字母“ l
  • 区分大小写
  • 包含一个4字节校验和,以便从随机字符生成有效地址的概率约为1 ^ 2 ^ 32

有关更多信息,请参阅帐户

哈希

XRP分类帐中的许多对象,特别是交易和分类帐,都由256位散列值唯一标识。此值通常以“SHA-512Half”计算,该值从某些内容计算SHA-512哈希值,然后采用十六进制表示的前64个字符。由于对象的散列是以非常不可能产生冲突的方式从内容派生的,因此具有相同散列的两个对象可以被视为相同。

XRP分类帐哈希值具有以下特征:

  • 长度恰好为64个字符
  • 十六进制字符集:0-9和AF。
  • 通常用大写字母书写。

注意:SHA-512Half与官方定义的SHA-512/256哈希函数具有相似的安全性。但是,XRP分类帐的使用早于SHA-512/256,并且在现有SHA-512功能的基础上也更容易实现。(截至撰写本文时,加密库中的SHA-512支持比SHA-512/256更普遍。)

账户序列

序列号是一个32位无符号整数,用于标识相对于特定帐户的交易或优惠。

XRP分类帐中的每个科目对象都有一个序列号,从1开始。要将事务中继到网络并可能包含在验证分类帐中,它必须具有Sequence与发送帐户的当前Sequence号码匹配的字段无论交易是成功还是失败,只要来自该账户的交易包含在验证分类账中,账户的序列字段就会增加。这保留了帐户提交的交易顺序,并区分了本来相同的交易。

XRP分类帐中的每个Offer节点都标有发送Account 地址创建它SequenceOfferCreate事务这两个字段一起唯一标识要约。

总帐索引

分类账索引是用于识别分类帐的32位无符号整数。分类账索引也被称为分类账的序列号。第一个分类账是分类账索引1,每个新分类账的分类账索引1都高于其之前的分类账索引。

分类账索引表示分类帐的顺序; 散列值识别分类账的确切内容。具有相同散列的两个分类总是相同的。对于经过验证的分类账,哈希值和序列号同样有效且相关性为1:1。但是,对于正在进行的分类账,这不是真实的:

  • rippled由于在整个网络中传播交易的延迟,两个不同的服务器对于具有相同分类帐索引的当前分类帐可能具有不同的内容。
  • 可能会有多个封闭式账本竞争以协商一致的方式进行验证。这些分类帐版本具有相同的序列号但内容不同(以及不同的散列)。只有其中一个已关闭的分类帐可以通过验证。
  • 当前分类账的内容会随时间而改变,这会导致其散列值发生变化,即使其分类账索引号保持不变。分类账的散列值在分类账关闭之前不计算。

指定分类帐

许多API方法要求您指定分类帐的实例,并将检索的数据视为该特定版本的共享分类帐的最新数据。接受分类帐版本的命令全部以相同的方式工作。有三种方法可以指定您要使用哪个分类帐:

  1. 根据参数中的分类帐索引指定分类ledger_index每个封闭式分类帐的识别序号比先前验证过的分类帐高1。(创世记账编号为0)
  2. 通过参数中的哈希指定分类帐ledger_hash
  3. ledger_index参数中通过以下快捷键之一指定分类帐
    • validated 为整个网络验证的最新分类账
    • closed 对于已经关闭进行修改并提出验证的最新分类账
    • current 为服务器的当前工作版本的分类帐。

还有一个不赞成使用的ledger参数,它接受上述三种格式中的任何一种。不要使用这个参数; 它可能会被删除,恕不另行通知。

如果您未指定分类帐,则current默认选择(进行中)分类帐。如果您提供多个指定分类帐的ledger字段,则如果已弃用的字段存在,则会先使用字段,并返回至ledger_hashledger_index除非另外两个都不存在,否则字段将被忽略。

注意:不要依赖此默认行为来指定分类帐; 它可能会改变。如果可以,请始终在请求中指定分类帐版本。

货币

XRP分类账中有两种货币:XRP和其他所有货币。两者之间有很多不同之处:

XRP发行货币
没有发行人。始终由XRP帐户发行
指定为一个字符串指定为一个对象
账户中跟踪信任线跟踪
永远不能创建; 只能被破坏可以自由发行或赎回
最大值1000000000001e11最大值 9999999999999999e80
精确到最近的“下降”(0.000001 XRP)15位精度十进制数字,最小非零绝对值为 1000000000000000e-96

警告:XRP分类帐使用与典型浮点数不同的精度的十进制数学运算,因此货币金额始终以字符串形式呈现。

指定货币金额

某些API方法要求您指定一定数量的货币。取决于您是在处理网络的本地XRP货币还是其他货币单位(称为发行),用于指定它的样式非常不同。

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

如果您指定非XRP货币(包括法定货币,贵金属,加密货币或其他自定义货币),则必须将其指定为货币规格对象。这是一个包含三个字段的JSON对象:

Field类型描述
currency字符串 - 货币代码货币发行的任意代码。不能XRP
value引用货币数量的十进制表示。这可以包括科学记数法,如1.23e11含义1230亿。二者eE可以被使用。
issuer发行货币的实体的唯一帐户地址。换句话说,货币可以兑换的人或企业。

小心:这些字段名称区分大小写。

例如,为了代表账户发行153.75美元r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59,您需要指定:

{
    "currency": "USD",
    "value": "153.75",
    "issuer": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59"
}

允许单元测试在格式中以非斜杠分隔的字符串形式提交大量的非XRP货币"amount/currency/issuer"所有其他情况应使用上面的JSON对象格式。

没有金额指定货币

如果您指定的是没有金额的非XRP币种(通常用于定义货币兑换优惠的订单),您应该如上所述指定它,但省略该value字段。

如果您指定的XRP没有金额(通常用于定义订单),则应将其指定为包含currency字段的JSON对象切勿issuer为XRP 包含一个字段。

最后,如果付款的收款人帐户信任多个发行人的货币,您可以指出付款应该以收款人接受的任何发行人组合进行。为此,请将收件人帐户的地址指定为issuerJSON对象中值。

货币代码

XRP分类帐中有两种货币代码:

  • 三字符货币代码。我们建议使用全大写的ISO 4217货币代码然而,下面的字符的任意组合被允许:所有大写字母和小写字母,数字,以及符号?!@#$%^&*<>(){}[],和|货币代码XRP(全部大写)为XRP保留,不能被发行货币使用。
  • 160位十六进制值,例如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_stateserver_infoserver_state命令的响应中字段可能的反应遵循一系列递增的相互作用,每个后来的值取代前一个值。他们的定义如下(按优先级顺序排列):

Value描述
disconnected服务器没有连接到XRP分类帐对等网络。它可能在离线模式下运行,或者出于任何原因可能无法访问网络。
connected服务器认为它已连接到网络。
syncing该服务器目前落后于账本版本。(服务器启动后花几分钟追赶是正常的。)
tracking服务器与网络一致
full服务器完全被网络捕获并可以参与验证,但并未这么做(可能因为它尚未配置为验证器)。
validating服务器当前正在参与验证分类帐
proposing服务器正在参与验证分类帐,目前正在提出自己的版本。

注:之间的区别fullvalidating以及proposing基于与全球网络的其余部分同步,这是正常的服务器,以这些国家之间的一般操作的过程中波动。

标记和分页

某些方法返回的数据比可以有效地放入一个响应的数据要多 当包含的结果多于此结果时,响应包含一个marker字段。您可以使用它在多个呼叫中检索更多数据页面。在每个请求中,传递marker前一个响应值,以便从您停止的位置继续。如果marker从响应中忽略,则您已达到数据集的末尾。

marker字段的格式是故意未定义的。每个服务器都可以marker根据需要定义一个字段,因此它可以采用字符串,嵌套对象或其他类型的形式。不同的服务器和同一服务器提供的不同方法可以有不同的marker定义。每个marker都是短暂的,10分钟后可能无法按预期工作。

博主QQ: 122209017

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值