瑞波Ripple概念解析-XRP账本业务(官方文档不完全翻译)

XRP上到交易所

本文档描述了交换所需列出XRP的步骤。

Alpha Exchange

为了便于说明,本文档使用名为Alpha Exchange的虚构业务来解释列出XRP所需的高级步骤。为了本文档的目的,Alpha Exchange

  • 目前专注于上市BTC / USD
  • 想加入BTC / XRP和XRP / USD交易对
  • 维护所有客户的余额
  • 维护每种支持货币的余额

用户利益

Alpha Exchange希望部分列出BTC / XRPXRP / USD交易对,因为列出这些对有益于其用户。具体而言,该支持希望使其用户能够:

  • 将XRP存储到alpha交易所
  •  Alpha Exchange中提取XRP  XRP账本
  • 将XRP与其他货币进行贸易,例如BTC,USD等

支持XRP的先决条件

为了支持XRPAlpha Exchange必须:

也可以看看:

部分付款

在整合之前,交易所应该了解部分支付功能。此功能允许XRP 账本用户成功发送减少接收方的金额而不是增加发送方的金额SendMax付款。此功能可用于返回付款,而不会产生发送方的额外费用。

部分付款警告

tfPartialPayment标志启用,该Amount字段不保证是收到的金额。该支付的元数据的delivered_amount字段表示货币由目标帐户实际收到的金额。收到付款后,请使用delivered_amount金额字段来确定您的帐户收到的金额。

警告:请注意恶意节点可以利用这个作恶。有关更多信息,请参阅部分付款

帐号

XRP金额存放在XRP账本户的账户中(也称为钱包地址)。XRP账本上的账户不同与其他区块链账本中的账户,比如账户几乎没有开销的比特币。在XRP账本中,帐户永远不能被删除,并且每个帐户都必须保存XRP的单独储备,这些储备无法发送给其他人。由于这些原因,Ripple建议机构不要创建过多或不必要的账户。

要遵循Ripple建议的最佳实践,Alpha Exchange应在XRP账本上创建至少两个新帐户。为了最大限度地降低与泄密密钥相关的风险,Ripple建议创建账户(这些账户有时分别称为冷,热和温钱包)。热//冷模式旨在余额安全性和便利性。交易所上市XRP应创建以下帐户:

  • 一个冷钱包可以安全地占有大部分XRP和客户的资金。对于交易所来说,这也是其用户发送存款的地址。为了提供最佳安全性,此帐户的密钥应该处于脱机状态。

如果恶意行为者损害交易所的冷钱包,可能的后果是:

    • 恶意角色可以完全访问冷钱包中的所有XRP。
    • 如果主密钥遭到破坏,恶意行为人可以永久控制冷钱包(通过禁用主密钥并设置新的常规密钥或签名者列表),永不可撼动。这也会让恶意行为者控制冷钱包收到的所有未来XRP。
      • 如果发生这种情况,交易所必须制作一个新的冷钱包地址,并告知其客户新的地址。
    • 如果常规密钥或签名者列表遭到破坏,交易所可以重新控制冷钱包。但是,有些恶意行为者的行为不容易被撤销:
      • 恶意行为人可以通过使用冷钱包在XRP账本中发行货币,但该货币不应该被任何人重视(除非交易所明确声明它也是网关)。
      • 如果恶意行为者为该帐户设置asfRequireAuth标志,该标志不能被取消设置,尽管这只涉及发行货币并且不应该影响不是网关的交换。任何其他恶意行为者设置或取消设置主密钥的设置都可以恢复。
  • 一个或多个热钱包负责管理客户XRP取款和存款的日常业务。例如,对于热钱包,交易所可以安全地支持这些类型的自动XRP传输。热钱包需要在线才能提供即时提款请求。

有关受损热钱包可能产生的后果的更多信息,请参阅操作账户妥协

  • 可选地,一个或多个温暖的钱包在冷钱包和热钱包之间提供额外的安全层。与热钱包不同,温钱包的秘密钥匙不需要在线。此外,您可以将暖钱包的密钥分发给不同的人,并实施多重签名以提高安全性。

有关受损保险钱包可能产生的后果的更多信息,请参阅待机账户妥协

也可以看看:

资产负债表

为了管理其客户的XRPAlpha Exchange必须跟踪每个客户的XRP余额和自己的持股。为此,Alpha Exchange必须创建并维护额外的资产负债表或会计系统。下表说明了这张资产负债表的外观。

新的XRP账本帐户(Alpha HotAlpha WarmAlpha Cold位于XRP账本XRP余额用户列中。

Alpha交易所XRP余额表是新的,额外的资产负债表。Alpha Exchange的软件在这个会计系统上管理用户的XRP余额。

XRP Balances on XRP Ledger

Alpha Exchange XRP Balances

User

Balance

Acct #

User

Balance

Dave

25,000

123

Alice

0

Edward

45,000

456

Bob

0

Charlie

50,000

789

Charlie

0

...

XRP金额

XRP数量在XRP账本中被表示为一个无符号的Drop整数计数,其中一个XRP1,000,000Drop点。Ripple建议软件商店XRP余额为整数个drop,并对这些值执行整数运算。但是,用户界面应以XRP为单位提供余额。

一滴(0.000001 XRP)不能再细分。在计算和显示XRP与其他资产之间的汇率时请记住这一点。

有关更多信息,请参阅指定货币金额

在线账本和离线账本

通过像Alpha Exchange这样的交易所XRP可以实现在线账本离线账本

  • 在线账本的XRP:可以通过指定XRP持有者的公开地址通过公共XRP账本查询的XRP。这些余额的对手是XRP账本。有关更多信息,请参阅XRP
  • 离线账本 XRP:由交易所的会计系统持有的XRP,可通过交易所接口进行查询。账本XRP余额是基于信用的。交易对手是持有XRP的交易所。

账本XRP余额在交易所参与者之间进行交易。为了支持这些交易,交易所必须保持总账XRP的余额等于其可用于交易的总账XRP的总量。

资金流量

其余部分描述资金如何通过Alpha Exchange管理的账户流动,因为其用户开始存入,交易和兑换XRP余额。为了说明资金流向,本文件使用资产负债表部分介绍的表格

交易所的典型资金流向涉及四个主要步骤:

  1. XRP存入Exchange
  2. 更新 XRP余额
  3. Exchange中提取XRP
  4. 在交易所交易XRP

此列表不包括交换所需的先决条件

此时,Alpha Exchange已经在XRP账本上创建了热的,温暖的和冷的钱包,并将它们添加到其资产负债表中,但未接受其用户的任何存款。

XRP Balances on XRP Ledger

Alpha Exchange XRP Balances

User

Balance

Acct #

User

Balance

Dave

25,000

123

Alice

0

Edward

45,000

456

Bob

0

Charlie

50,000

789

Charlie

0

Alpha Hot

0

...

Alpha Warm

0

Alpha Cold

0

...

XRP存入Exchange

为了追踪账本XRP余额,交易所需要创建新的资产负债表(或类似的会计系统)。下表说明用户开始存入XRP时在Alpha Exchange的新资产负债表上发生的余额变化。

名为Charlie的用户想要将50,000XRP存入Alpha Exchange。这样做涉及以下步骤:

  1. Charlie 向Alpha Exchange的冷钱包提交50,000 XRP(通过使用RippleAPI或类似软件)。

A.   Charlie 在付款中添加了一个标识符789以便将其与Alpha Exchange中的帐户相关联。这被称为目的地标签。(要使用此功能,Alpha Exchange应该在其所有帐户上设置asfRequireDest标志,以要求所有收款都要具有类似于Charlie's填写的目标标签。有关详细信息,请参阅AccountSet标志)。

  1. Alpha Exchange的软件会检测收到的付款,并将其识别789为Charlie帐户的目标标签。
  2. 当它检测到收款时,Alpha Exchange的软件会更新其资产负债表以表明收到的50,000 XRP由Charlie控制。

查理现在可以在交易所上使用多达50,000XRP。例如,他可以创建与BTCAlpha Exchange支持的任何其他货币交易XRP的挂单。

XRP Balances on XRP Ledger

Alpha Exchange XRP Balances

User

Balance

Acct #

User

Balance

Dave

25,000

123

Alice

0

Edward

45,000

456

Bob

0

Charlie

100,000 
50,000

789

Charlie

0 
50,000

Alpha Hot

0

...

Alpha Warm

0

Alpha Cold

0 
50,000

在交易所交易XRP

Alpha Exchange用户(如Charlie)可以在Alpha Exchange上交易信用余额。在交易完成后,Alpha Exchange应该跟踪新的资产负债表上的用户余额。这些交易是线下账本的,与从XRP独立的,所以余额的变化不会被记录在XRP账本。

在自己的XRP账户中持有XRP的客户也可以使用XRP账本中内置的分布式交易所来交易由网关发行的货币。有关在XRP账本进行交易的更多信息,请参阅优惠的生命周期

更新XRP余额

交易所可以随时调整热钱包和冷钱包之间的余额。每笔余额调整都会消耗一笔交易成本,但不会影响所有帐户的总余额。总账本总额应始终超过交易所可用于交易的总余额。(超出部分应足以支付XRP账本的交易成本。)

下表显示了Alpha Exchange的冷钱包与其热钱包之间的80,000 XRP(通过XRP账本上的付款交易)的余额调整,其中冷钱包被借出并且热钱包被记入。如果付款被逆转(借记热钱包并记入冷钱包),热钱包余额将减少。像这样的余额调整允许交易所限制与在线热钱包中持有XRP相关的风险。

Alpha Exchange XRP Off-Ledger Balances

Alpha Exchange XRP On-Ledger Balances

Acct #

User

Balance

XRP Ledger Account

Balance

123

Alice

80,000

Hot

0 
80,000

456

Bob

50,000

Warm

0

….

….

789

Charlie

50,000

Cold

180,000 
100,000

Exchange中提取XRP

取款允许交易所的用户将XRP从交易所的账本资产负债表移动到XRP账本上的一个账户。

在这个例子中,CharlieAlpha Exchange中撤出了25,000XRP。这涉及以下步骤:

  1. 查理在Alpha Exchange的网站上启动了这个过程。他提供了将25,000个XRP转移到XRP账本(下表中名为“Charlie XRP 账本”)上的特定账户的说明。
  2. 为了回应查理的指示,Alpha Exchange做了以下工作:

A.Charlie账户的账本资产负债表中扣除金额(25,000 XRP

B. Alpha Exchange的热钱包到CharlieXRP账本户,在XRP账本上提交相同金额(25,000 XRP)的付款

XRP Ledger On-Ledger XRP Balances

Alpha Exchange XRP Off-Ledger Balances

Alpha Exchange XRP On-Ledger Balances

User

Balance

Acct #

User

Balance

XRP Ledger Account

Balance

Dave

25,000

123

Alice

80,000

Hot

80,000 
55,000

Edward

45,000

456

Bob

50,000

Warm

0

….

….

….

Charlie XRP Ledger

50,000 
75,000

789

Charlie

50,000 
25,000

Cold

100,000

...

...

...

 

 

 

 

成为XRP账本网关

网关是将XRP账本与世界其他地区联系起来的企业。现有的在线金融机构可以扩展为XRP账本的门户。通过成为XRP账户网关,金融服务业务可以获得几项优势:

  • 通过使客户能够在XRP账本中发送和接收价值,该业务增加了客户的价值主张。
  • 通过接受XRP账本的付款,该业务增加了客户在其业务(甚至是国际业务)上资助账户的方式数量。
  • 企业可以使用XRP 账本相关服务作为新的收入来源。

本文档介绍了成为XRP账本网关所需的概念和步骤。在本文中,我们使用名为“ACME”的虚拟在线货币兑换商及其客户作为示例,以展示ACME如何扩展其业务以包括成为XRP账本网关。

联系信息

你不是你自己的。Ripple希望网关取得成功,所以我们在这里提供帮助。如果您需要帮助建立和发展您的网关,请联系我们。

  • 请联系[email protected]了解企业级集成,基础架构建议和其他业务开发需求。
  • 有关技术问题,说明,错误报告和功能请求,请联系[email protected]

网关解释

网关是提供金钱和其他形式价值的方式进出XRP账本的企业。网关可以遵循三种主要模式,具有不同的目的和操作模式。

  • 一个发行网关是负责从XRP账本外部接受钱(或其他有价值的资产),并会在XRP账本发行货币。这为客户提供了直接获取XRP账本的资金的方式。XRP账簿中的所有货币(XRP除外)均采用与特定发行网关相关的发行形式。
  • 一个私人交易所持有XRP,让客户在自己的系统购买和销售XRP。大多数加密货币都依赖私人交易来为加密货币提供市场,XRP账本拥有内置于协议本身中的货币兑换。
  • 商家接受XRP 账本内的付款以换取外界的商品和服务。目前,Ripple(该公司)确实使用XRP账本为商家运营提供支持。

本指南着重介绍如何运行发行网关

信任线和发行

XRP账本所有资产(除了内置加密货币XRP)都表示为发行,这是代表货币或由发行方持有的资产数字余额。在XRP总账中,交易对手可以发送和交易发行,而无需发行人的干预。通常情况下,当网关在XRP账本之外的系统和账本中收到款项时,网关会向客户发送发行的货币;而在XRP账本中交易所收到了发行货币,其承诺向外部系统的客户汇款。发行从网关的协议中获得价值,以履行发行代表的义务。没有计算机系统可以强制XRP账本网关履行该义务。

XRP账本拥有定向会计关系系统,称为信任线,以确保用户仅持有他们信任的交易对手的发行。

信任线XRP账本中两个地址之间的链接。信任线表示愿意持有网关债务义务的明确声明。当客户将资金汇入XRP账本时,网关将对Ripple以外的资产进行保管,并将XRP账本中的发行货币发送至客户的地址。当客户从XRP账本中汇出资金时,她会向网关进行XRP账本付款,并且网关将客户记入自己的记录系统或其他帐户中。

XRP

XRPXRP账本的本地加密货币。和发行一样,XRP可以在XRP账本地址之间自由发送和交换。与发行不同,XRP不与会计关系挂钩。XRP可以直接从任何XRP账本地址发送到任何其他地址,而无需通过网关或流动性提供商。这有助于使XRP成为便捷的桥梁货币。有关XRP的更多信息,请参阅XRP门户

XRP还用于XRP账本中的其他目的,特别是作为防范垃圾邮件的保护措施。所有XRP账本地址都需要少量的XRP来支付维护XRP账本的成本。的交易成本储备是表示在XRP并没有支付任何一方中性费用。

发布网关不需要累积或交换XRP。他们只能持有XRP的小余额才能通过网络发送交易。相当于10美元的XRP应该足够用于繁忙网关至少一年的交易成本。

私人交易所和流动性提供者可以选择持有额外的XRP进行交易。Ripple(该公司)推动XRP作为投机性投资。

流动性和货币兑换

XRP账本包含货币兑换,任何用户都可以放置和实现以任何组合交换XRP发行的标的。交易货币支付自动使用货币兑换在交易执行时自动转换货币。通过这种方式,在分布式交易所中选择提供报价的用户可以提供使XRP账本有用的流动性。

持有网关发行的货币交易商可以向其他流行货币提供流动性,而不需要网关以各种目的货币浮动大量储备。网关也不需要承担金融交换的风险。然而,网关可能仍然希望以基准利率向XRP或其他流行货币提供流动性,特别是当网关对交易所不熟悉时。如果您确实提供流动性,请使用与您的发行地址不同的地址进行交易。

第三方流动性提供商可以使用rippledAPIRippleAPI JavaScript或第三方客户端应用程序访问分布式交换机。某些客户端应用程序使用ripple.txt查找与网关关联的地址,因此发布ripple.txt文件可能会有帮助。

请联系[email protected]以获取帮助确定网关和其他人之间的流动性。

建议的商业行为

XRP账本中网关发行的价值直接源于客户可以在需要时使用网关将其兑换的信任。我们建议采取以下预防措施以降低业务中断的风险:

热钱包和冷钱包

XRP账本中,金融机构通常使用多个XRP账本地址来最大限度降低与受损密钥相关的风险。Ripple强烈建议以下角色分离:

  • 一个发行地址,也被称为“冷钱包”。该地址是账本中金融机构会计关系的中心,但发送的交易尽可能少。
  • 一个或多个操作地址,也称为“热钱包”。自动化的互联网连接系统使用这些地址的密钥来进行日常业务,例如传输给客户和合作伙伴。
  • 可选的备用地址,也称为“温暖的钱包”。值得信赖的人类操作员使用这些地址将资金转移到操作地址。

有关更多信息,请参阅颁发和操作地址

费用和收入来源

网关可以通过几种方式寻求从XRP 账本集成中获利。这些可以包括:

  • 取款和存款费用。网关通常会收取少量费用(例如1%),用于向XRP账本添加或移除资金。您有权决定您在通过网关将资金转入或转出XRP账本时所授予的利率。
  • 转让费用。您可以设置一个百分比费用,以在客户发送由您的发行地址创建的其他发行时自动收费。这笔金额从XRP账户中扣除,每次换手时减少您的义务。有关详细信息,请参阅TransferRate
  • 来自附加值的间接收入。XRP 账本集成可为您的客户提供有价值的功能,从而将您的业务与竞争对手区分开来。
  • 对XRP 账本支持的基金的兴趣。您可以将您在XRP账本中发行的资金的抵押品保留在收益较高的银行账户中。确保您始终可以获得足够的资金来服务客户提款。
  • 金融交易所。网关还可以提供购买和出售XRP账簿中其他发行的发行,为跨货币支付提供流动性并可能获利。(和所有的金融交易一样,利润也得不到保证。)

选择费率

网关收取的费用是可选的。使用网关服务时,收费越高,收入越多。另一方面,高额费用会阻碍客户使用您的服务。考虑其他网关收取的费用,特别是发行类似货币的网关,以及XRP账簿之外的传统支付系统(如电汇费)。选择正确的费用结构是一个余额你的定价与市场愿意支付的问题。

网关合规性

网关负责遵守当地法规并向有关机构报告。法规因国家和州而异,但可能包括以下各节中所述的报告和合规性要求。

了解你的客户(KYC

了解你的客户(KYC)是指由金融机构进行的尽职调查活动,以确定和验证其客户的身份,以防止使用该机构进行犯罪活动。财务方面的犯罪活动可能包括洗钱,恐怖融资,金融诈骗和身份盗窃。客户可能是个人,中介或企业。

KYC流程通常旨在:

  • 识别客户(对于组织和企业来说,任何受益所有者)
  • 了解业务关系的目的和预期性质
  • 了解预期的交易活动。

KYC对金融机构和相关企业来说至关重要,可以降低风险,特别是法律和声誉风险。KYC计划不足或不存在可能会导致对该机构或个人雇员的民事和刑事处罚。

也可以看看:

打击洗钱和打击资助恐怖主义(CFT

洗钱是指通过掩盖资金来源,性质或所有权来转移非法资金的过程,以便通过合法的财务渠道和可信的机构合法获取或分配资金。简而言之,它将脏钱转化为清洁钱。反洗钱(AML)是指旨在制止洗钱发生的法律和程序。

恐怖主义融资是向参与恐怖主义活动的组织或支持恐怖主义及其扩散的组织征集,收集或提供资金。打击资助恐怖主义(CFT)是指识别,报告和阻止用于资助恐怖主义的资金流动的过程。

也可以看看:

资金来源

为防止非法资金通过其系统,金融机构必须能够在合理范围内确定客户资金来源是否与犯罪活动相关。

确定每个客户的确切资金来源可能在行政上不可行。因此,一些监管机构可能不会为所有账户提供具体的监管或指导。然而,在具体情况下,当局可能会要求金融机构确定并报告资金来源。特别组织的指引建议,在洗钱或恐怖份子融资风险较高的情况下(通常称为基于风险的做法),金融机构会进行加强尽职调查,包括但不限于确定客户的资金来源。

可疑活动报告

如果金融机构怀疑资金可能与犯罪活动有关,该机构必须向适当的监管机构提交可疑活动报告(SAR)。未报告可疑活动可能会导致对该机构的处罚。

也可以看看:

旅行规则

旅游规则是一项银行保密法(BSA)规则,要求资金转移金融机构将某些信息转发给下一个金融机构,如果资金转账等于或超过3,000美元等值美元。传送命令中必须包含以下信息:

  • 发射机的名称,
  • 发射机的帐号(如果使用的话)
  • 发射机的地址,
  • 发送者的金融机构的身份,
  • 传送指令的数量,
  • 传递订单的执行日期,以及
  • 收款人的金融机构的身份。

也可以看看:

费用披露和追踪资金

  • 在美国,多德弗兰克1073电子资金转账法(E条例)要求银行提供关于源自美国的国际支付的成本和交付条件的信息,包括汇率,费用以及指定收款人将收到的金额外国。在请求国际电子支付时向消费者提供“预付款披露”,并且在消费者授权转账时向消费者提供“收据披露”。

也可以看看:

  • 在欧盟,欧盟资金转移条例要求发起人的银行,受益人的银行和任何中介银行在交易详情中包含付款人和收款人的某些细节,以检测,调查和防止洗钱和恐怖融资。

也可以看看:

    • 欧盟法规(ECNo 1781/2006的说明
    • 2017626日生效:有关资金转移信息的2015/847号法规

外国资产管理办公室(OFAC

外国资产管理办公室(OFAC)是美国财政部的一个机构,负责管理和执行经济和贸易制裁以支持美国的外交政策和国家安全目标。所有美国人和美国注册实体及其外国分支机构都必须遵守OFAC规定。根据OFAC的规定,美国金融机构除OFAC授权或明文规定豁免外,不得与OFAC管理和实施的制裁或禁运项目中的个人,实体或国家进行交易和其他交易。

也可以看看:

虚拟货币和金融服务业务指南

XRP账本集成

整合之前

我们的示例交易所ACME已经接受使用现有系统的客户提款和存款,并使用自己的记录系统来跟踪每个用户与交易所的余额程度。这样的系统可以用资产负债表来模拟,并跟踪每个用户使用ACME的货币数量。

在下面的图表中,ACME Exchange5欧元开始,其中包括属于鲍勃的1欧元,属于查理的2欧元以及属于ACME本身的额外2欧元的权益。爱丽丝存款5欧元,因此ACME将她加入资产负债表,最终以10欧元结束。

假设:为了与XRP账本集成,我们假设像ACME这样的交易所满足以下假设:

  • ACME已经有一个系统可以接受某些外部支付来源的存款和提款。
  • ACME在将其存入ACME的记录系统之前等待存款清理。
  • ACME始终保留足够的资金,根据他们的条款和条件按需支付提款。
    • ACME可以根据他们的商业模式要求设置费用,最低提款和存款和提款的延迟时间。

从网关发送到XRP账本

XRP账本支付可以自动在货币之间进行桥接,但发行网关通常只发送直接发送给客户的单币种支付。这意味着在客户系统中扣除客户当前的余额,然后将XRP账本中等价的发行金额发送到客户的XRP账本地址。

XRP账本中付款的示例流程:

  1. Alice要求将3欧元的ACME余额发送到XRP账本。
  2. 在其记录系统中,ACME将爱丽丝的余额记入3欧元。
  3. ACME提交一份XRP账本交易,向Alice的XRP账本地址发送€3。3欧元在XRP账本中标记为由ACME“发行”(3欧元.ACME)。

假设:

  • Alice在她的ACME帐户中已经有一个XRP账本中的地址。Alice使用第三方客户端应用程序管理她的XRP账本地址。

发送到XRP账本的要求

ACME必须满足以下几个先决条件:

  • ACME拨出XRP账本中发行的货币。ACME可以查询XRP账本以查看谁在任何时候持有其发行。ACME可以采取以下几种方法:
    • ACME可以在ACME的记录系统中创建一个XRP 账本担保账户。
    • ACME可以将分配给XRP账本的资金存储在单独的银行账户中。
    • 如果ACME是一个加密货币交易所,ACME可以创建一个单独的钱包来存放分配给XRP账本的资金,作为客户证明网关具有偿付能力的公开验证证据。
  • ACME必须控制XRP账本中的地址。Ripple的最佳实践建议使用单独的发布地址和操作地址。有关详细信息,请参阅颁发和操作地址
    • ACME must enable the DefaultRipple Flag on its issuing address for customers to send and receive its issuances.
  • Alice must create an accounting relationship (trust line) from her XRP 账本 address to ACME's issuing address. She can do this from any XRP 账本 client application as long as she knows ACME's issuing address.
    • ACME should publicize its issuing address on its website where customers can find it. It can also use ripple.txt to publish the issuing address to automated systems.
  • ACME must create a user interface for Alice to send funds from ACME into the XRP 账本.
    • ACME needs to know Alice's XRP 账本 address. ACME can have Alice input her XRP 账本 addresss as part of the interface, or ACME can require Alice to input and verify her XRP 账本 address in advance.

有关如何将付款发送到XRP账本的示例,请参阅向客户发送付款。

XRP账本发送到网关

XRP账本中支付意味着网关在XRP账本中收到一笔付款,并在网关的记录系统中扣除用户的金额。

XRP账本中支付的示例流程:

  1. Bob向ACME的发行地址发送1欧元的XRP账本交易。
  2. 在ACME的记录系统中,ACME将Bob的余额记为1欧元。

XRP账本到网关的付款可以是单币种或跨币种付款。网关的发行地址只能接收它创建的发行(或XRP)。

XRP账本接收的要求

除了发送到XRP账本要求外,ACME必须满足几个先决条件来处理来自XRP账本的付款:

  • ACME必须监控其XRP账本地址以收取付款。
  • ACME必须知道哪个用户要在其记录系统中记入收款。

注意事项

处理往来于XRP账本的付款自然会带来一些风险,因此门户网站应该确保在实施这些流程时小心谨慎。我们建议采取以下预防措施:

  • 保护自己免受可逆的存款。XRP账本付款是不可逆转的,但许多电子货币系统如信用卡或PayPal不是。诈骗者可以滥用这一点,通过收到Ripple发行后取消存款来拿回他们的法定货币。
  • 发送到XRP账本时,请指定发行地址作为货币的发行人。否则,您可能会意外地使用传递由其他地址发布的相同货币的路径。
  • 在向XRP账本发送付款之前,请仔细检查付款的成本。从您的运营地址向客户支付的费用不应超过目标金额加上您设定的任何转账费用
  • 在从Ripple处理付款之前,请确保您知道客户的身份。这使得匿名攻击者更难以欺骗你。无论如何,大多数反洗钱法规都要求这样做。这一点尤其重要,因为从XRP账本中汇款的用户可能与最初在XRP账本中收到款项的用户不同。
  • 在发送XRP账本交易时遵循可靠交易提交的准则。
  • 可靠地监控收款,并阅读正确的金额。如果他们只发送了部分款项,请不要错误地将全部金额记入其中。
  • 跟踪您在XRP账本中的义务和余额,并与抵押账户中的资产进行比较。如果他们不匹配,请停止处理提款和存款,直到您解决差异。
  • 避免模​​棱两可的情况。我们建议如下:
    • 为发行地址和所有操作地址启用DisallowXRP标志,以便客户不会意外地向您发送XRP。(私下交易应该设置此标志,因为他们交易XRP正常。)
    • 启用发行地址和所有运营地址的RequireDest标志,以便客户不会意外发送没有目的地标签的付款,以指示应该记入哪些人。
    • 在所有运营地址上启用该RequireAuth标志,以免他们无意发布货币。
  • 监控可疑或滥用行为。例如,用户可以重复地将资金转入和转出XRP账本,作为拒绝服务攻击,有效清空操作地址的余额。通过不处理其XRP账本付款,暂停其地址涉及可疑行为的客户。

Ripple中交易

XRP账本创建发行后,它们可以由XRP账本用户自由转移和交易。这种情况有几个后果:

  • 任何人都可以在Ripple上买卖EUR.ACME。如果ACME在Ripple上发行多种货币,则需要单独的信任线。
    • 这包括在ACME Exchange系统中没有账户的XRP账户用户。要从ACME中成功提取资金,用户仍需向ACME注册。
    • 或者,ACME使用授权信任线功能来限制谁可以在XRP账本中持有EUR.ACME。
    • 如果ACME确定客户的行为是恶意的,则ACME可以将该用户的会计关系冻结在XRP账本中的ACME中,以便用户不再交易网关的发行。
  • XRP 账本用户交易并将EUR.ACME发送给彼此不需要ACME的干预。
  • XRP账本中的所有交换和余额都是公开查看的。

下图描述了从AliceCharlie发送2EUR.ACMEXRP账本付款。ACME可以查询XRP账本,以便在交易发生后的任何时候查看其余额的更新:

冻结

网关可以冻结XRP账本中的会计关系以满足监管要求:

  • 如果客户地址显示可疑活动或违反网关的使用条款,网关可以冻结个人会计关系。
  • 网关可以冻结与其发行地址的所有会计关系,以防重大安全隐患或迁移到新的发行地址。
  • 此外,网关可以永久停止冻结会计关系的能力。这使得网关可以向客户保证它将继续提供“物有所值”的服务。

有关更多信息,请参阅Freeze文章

授权信任线

XRP账本的授权信任行功能(以前称为授权账户)使网关能够限制谁可以持有该网关的发行,以便未知的XRP账本地址不能拥有网关发行的货币。Ripple认为这在大多数情况下是不必要的,因为网关可以完全控制在外部世界中获得价值的纹波余额过程。(您可以在此阶段收集客户信息并对提款进行限制,而不用担心XRP账本内发生的情况。)

有关更多信息,请参阅授权信任线

源和目标标签

目的地标签XRP的一项功能支付可用于指示付款的受益人或目的地。例如,到网关的XRP账本支付可能包括目的地标记,以指示哪个客户应该记入该支付。网关应该在网关的记录系统中保留目标标签到帐户的映射。

同样,源标签指明付款的来源或来源。最常见的是,包含一个来源标签,以便付款的接收方知道在哪里退款。当您退回收款时,请使用传入付款中的来源代码作为传出(反弹)付款的目标代码。

我们建议为不同目的提供几种目标标签:

  • 直接映射到客户帐户
  • 匹配传出付款的来源标签(以防您的付款被退回)
  • 引号标签,过期
  • 其他一次性目标标签,客户可以生成。

请参阅生成源标签和目标标签,以获取有关制作和使用源标签和目标标签的技术细节的建议。

网关公告

历史上,Ripple(该公司)发布网关公告来介绍新功能或讨论与合规性和风险相关的主题。网关公告按逆时间顺序排列。

技术细节

基础设施

对于网关自身的安全以及网络的稳定性,Ripple建议每个网关运行自己的rippled服务器。Ripple为有意开展重大XRP业务的企业提供详细和个性化的建议。

联系[email protected]以了解Ripple如何提供帮助。

API和中间件

根据您的需求和现有软件,您可以使用几种界面连接到XRP账本。

  • rippled provides JSON-RPC and WebSocket APIs that can be used as a low-level interface to all core XRP 账本 functionality.
  • RippleAPI provides a simplified API for JavaScript applications.

Tool Security

Any time you submit an XRP 账本 transaction, it must be signed usingyour secret key. The secret key gives full control over your XRP 账本 address. Neversend yoursecret key to a server operated by someone else. Either use your own rippled server, or sign the transactionslocally before sending them to a rippled server.

本文档中的示例显示了包含密钥的API方法。如果您rippled自己控制服务器,并且您通过与外部侦听器保持安全的连接进行连接,则这只是安全的。(例如,您可以通过环回(本地主机)网络,专用子网或加密VPN进行连接。)或者,您可以使用RippleAPI在将交易提交到第三方服务器之前在本地签署交易。

DefaultRipple

DefaultRipple标志控制默认情况下会计关系中的余额是否允许波动Ripple允许客户交易发行,因此网关必须允许所有会计关系与其发行地址Ripple

在要求客户创建与其发行地址的会计关系之前,网关应在该地址上启用DefaultRipple标志。否则,网关必须单独禁用其他地址创建的每个会计关系的NoRipple标志。

以下是使用本地托管rippled提交方法发送AccountSet交易以启用DefaultRipple标志的示例:

请求:

POSThttp://localhost:8088/

{

    "method": "submit",

    "params": [

        {

            "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

            "tx_json": {

                "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

                "Fee": "15000",

                "Flags": 0,

                "SetFlag": 8,

                "TransactionType": "AccountSet"

            }

        }

    ]

}

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

响应:

{

    "result": {

        "engine_result": "tesSUCCESS",

        "engine_result_code": 0,

        "engine_result_message": "The transactionwas applied. Only final in a validated 账本.",

        "status": "success",

        "tx_blob": "1200032200000000240000003E202100000008684000000000003A98732103AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB74473045022100D8F2DEF27DE313E3F0D1E189BF5AC8879F591045950E2A33787C3051169038C80220728A548F188F882EA40A416CCAF2AC52F3ED679563BBE1BAC014BB9E773A333581144B4E9C06F24296074F7BC48F92A97916C6DC5EA9",

        "tx_json": {

            "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

            "Fee": "15000",

            "Flags": 0,

            "Sequence": 62,

            "SetFlag": 8,

            "SigningPubKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB",

            "TransactionType": "AccountSet",

            "TxnSignature": "3045022100D8F2DEF27DE313E3F0D1E189BF5AC8879F591045950E2A33787C3051169038C80220728A548F188F882EA40A416CCAF2AC52F3ED679563BBE1BAC014BB9E773A3335",

            "hash": "665B27B64CE658704FFD326A4FE2F5F5B5E67EACA61DE08258A59D35B883E1D5"

        }

    }

}

要确认地址已启用DefaultRipple,请使用account_info方法查找地址,并指定验证的账本版本。使用按位AND运算符Flags字段与0x00800000账本标志lsfDefaultRipple)进行比较。如果按位运算的结果不为零,那么地址将启用DefaultRipple

生成源标签和目标标签

您需要一个计划来为您的客户和付款创建源代码和目标代码。(请参阅源和目标标签以获取有关源和目标标签的解释。)

为了获得更大的隐私和安全性,我们建议不要将单调增加的数字用作与客户11相关的目标标签。相反,我们建议使用方便的内部ID,但使用快速散列或密码功能(如Hasty Pudding将它们映射到目标标签。您应该为目标标签的不同用途留出内部编号的范围。

在通过散列函数传递内部数字之后,可以将结果用作目标标记。为了安全起见,你应该检查碰撞。除非他们有明确的截止日期(如引号和客户生成的标签),否则不要重复使用目标标签。

我们建议让用户界面在客户有意向网关汇款时按需生成目标标签。然后,请考虑目标代码仅对有预期金额的付款有效。稍后,退回所有其他重复使用相同目标代码的交易。

在您的发行和运营地址上启用RequireDest标志,以便客户在向您的网关发送XRP账本付款时必须使用目的地标签来指示资金的去向。

DisallowXRP

DisallowXRP设置(disallowIncomingXRPRippleAPI中)旨在阻止XRP账本用户无意中将XRP发送到地址。如果您的网关不交易XRP,这可以降低反弹意外支付的成本和工作量。DisallowXRP标志没有严格执行,因为这样做可能会导致地址在XRP用完时永久无法使用。客户端应用程序应默认遵守DisallowXRP标志。

不交易XRP的发布网关应该在网关的发布和操作地址上启用DisallowXRP标志。在XRP中进行交易的专用交易所应仅在不希望接收XRP的地址上启用DisallowXRP标志。

以下是使用本地托管rippled提交方法发送AccountSet交易以启用DisallowXRP标志的示例:

请求:

POSThttp://localhost:8088/

{

    "method": "submit",

    "params": [

        {

            "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

            "tx_json": {

                "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

                "Fee": "10000",

                "Flags": 0,

                "SetFlag": 3,

                "TransactionType": "AccountSet"

            }

        }

    ]

}

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

响应:

{

    "result": {

        "engine_result": "tesSUCCESS",

        "engine_result_code": 0,

        "engine_result_message": "The transactionwas applied. Only final in a validated 账本.",

        "status": "success",

        "tx_blob": "12000322000000002400000164202100000003684000000000002710732103AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB74473045022100C2E38177E92C3998EB2C22978595784BC4CABCF7D57DE71FCF6CF162FB683A1D02205942D42C440D860B4CF7BB0DF77E4F2C529695854835B2F76DC2D09644FCBB2D81144B4E9C06F24296074F7BC48F92A97916C6DC5EA9",

        "tx_json": {

            "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

            "Fee": "10000",

            "Flags": 0,

            "Sequence": 356,

            "SetFlag": 3,

            "SigningPubKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB",

            "TransactionType": "AccountSet",

            "TxnSignature": "3045022100C2E38177E92C3998EB2C22978595784BC4CABCF7D57DE71FCF6CF162FB683A1D02205942D42C440D860B4CF7BB0DF77E4F2C529695854835B2F76DC2D09644FCBB2D",

            "hash": "096A89DA55A6A1C8C9EE1BCD15A8CADCC52E6D2591393F680243ECEB93161B33"

        }

    }

}

RequireDest

RequireDest设置(requireDestinationTagRippleAPI中)旨在防止客户向您的地址发送付款,同时意外忘记了目标标签,该标签标识谁应该记入付款。启用后,XRP账本拒绝向您的地址付款,但没有指定目的地代码。

我们建议RequireDest在所有网关发行和运营地址上启用该标志。

以下是使用本地托管rippled提交方法发送AccountSet交易以启用RequireDest标志的示例:

请求:

POSThttp://localhost:5005/

Content-Type:application/json

{

    "method": "submit",

    "params": [

        {

            "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

            "tx_json": {

                "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

                "Fee": "15000",

                "Flags": 0,

                "SetFlag": 1,

                "TransactionType": "AccountSet"

            }

        }

    ]

}

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

响应:

200 OK

{

    "result": {

        "engine_result": "tesSUCCESS",

        "engine_result_code": 0,

        "engine_result_message": "The transactionwas applied. Only final in a validated 账本.",

        "status": "success",

        "tx_blob": "12000322000000002400000161202100000003684000000000003A98732103AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB74473045022100CD9A87890ADFAC49B8F69EDEC4A0DB99C86667883D7579289B06DAA4B81BF87E02207AC3FEEA518060AB2B538D330614D2594F432901F7C011D7EB92F74383E5340F81144B4E9C06F24296074F7BC48F92A97916C6DC5EA9",

        "tx_json": {

            "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

            "Fee": "15000",

            "Flags": 0,

            "Sequence": 353,

            "SetFlag": 3,

            "SigningPubKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB",

            "TransactionType": "AccountSet",

            "TxnSignature": "3045022100CD9A87890ADFAC49B8F69EDEC4A0DB99C86667883D7579289B06DAA4B81BF87E02207AC3FEEA518060AB2B538D330614D2594F432901F7C011D7EB92F74383E5340F",

            "hash": "59025DD6C9848679BA433448A1DD95833F2F4B64B03E214D074C7A5B6E3E3E70"

        }

    }

}

RequireAuth

RequireAuth设置可防止所有交易对手持有地址发行的余额,除非该地址已明确批准与该交易对手之间的会计关系。有关更多信息,请参阅授权信任线

启用RequireAuth

以下是使用本地托管rippled提交方法发送AccountSet交易以启用RequireAuth标志的示例:(无论地址是发布地址,操作地址还是备用地址,此方法的工作方式都是相同的。

请求:

POSThttp://localhost:5005/

{

    "method": "submit",

    "params": [

        {

            "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

            "tx_json": {

                "Account": "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",

                "Fee": "15000",

                "Flags": 0,

                "SetFlag": 2,

                "TransactionType": "AccountSet"

            }

        }

    ]

}

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

授权信任线

如果您正在使用授权信任额行功能,除非您首先在XRP账本中向您授予其会计关系,否则客户无法持有您发行的余额。

授权会计的关系,从您的发行地址提交TrustSet交易,与用户的信任作为issuerLimitAmount。将value(信任它们的金额)保留为0,并为交易启用tfSetfAuth标志。

以下是使用本地托管rippled提交方法发送TrustSet交易的一个示例,该交易授权客户地址rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn从发行地址rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW持有USD的发行:

请求:

POSThttp://localhost:8088/

{

    "method": "submit",

    "params": [

        {

            "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

            "tx_json": {

                "Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",

                "Fee": "15000",

                "TransactionType": "TrustSet",

                "LimitAmount": {

                    "currency": "USD",

                    "issuer": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

                    "value": 0

                },

                "Flags": 65536

            }

        }

    ]

}

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

强大监控付款

要有效检查收到的付款,网关应该执行以下操作:

  • 记录最近处理的交易和账本。这样,如果你暂时失去连接,你知道还有多远。
  • 检查每笔收款的结果代码。一些付款进入账本,即使它们失败,也会收取反垃圾邮件费用。只有结果代码的交易tesSUCCESS才能更改非XRP余额。只有来自验证账本的交易才是最终的。
  • 注意部分付款。支付部分支付标志的支付可以被视为“成功”,如果有任何非零金额的交付,甚至微乎其微的金额。
    • rippled,检查交易meta.delivered_amount字段。如果存在,该字段表示实际获得的Destination地址数量。
    • 在RippleAPI中,您可以搜索该outcome.BalanceChanges字段以查看收到目标地址的数量。在某些情况下,这可以在不同的信任线上分为多个部分。
  • 有些交易会更改您的余额,而不会直接向您的某个地址付款或从其中一个地址付款 例如,如果ACME设置非零TransferRate,那么每次Bob和Charlie交换ACME发行时,ACME的发行地址的未付债务就会减少。有关更多信息,请参阅TransferRate

为了让您的客户更简单,我们建议您接受对运营地址和发布地址的付款。

作为额外的预防措施,我们建议在每个新的XRP账本账本版本中,将您的发行地址余额与内部会计系统中的抵押资金进行比较。发行地址的负余额应与您在网络外分配给XRP账本的资产相匹配。如果两者不匹配,那么您应该暂停处理进出XRP账本的付款,直到您解决了差异。

  • 使用rippledgateway_balances方法RippleAPIgetTrustlines方法来检查您的余额。
  • 如果您有TransferRate集合,则每当其他XRP账本地址在他们之间传输您的发行时,您在XRP账本中的义务就会略有减少。

TRANSFERRATE

TRANSFERRATE设置(transferRateRippleAPI)限定费用用于从一个XRP账本地址传送发行到另一个充电。请参阅转账费用了解更多信息。

以下是使用本地托管rippled提交方法为发送地址rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW发送AccountSet交易的示例,将TransferRate设置为收取0.5%的费用。

请求:

 

{

    "method": "submit",

    "params": [

        {

            "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

            "tx_json": {

                "Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",

                "Fee": "10000",

                "Flags": 0,

                "TransferRate": 1005000000,

                "TransactionType": "AccountSet"

            }

        }

    ]

}

响应:

{

    "result": {

        "engine_result": "tesSUCCESS",

        "engine_result_code": 0,

        "engine_result_message": "The transactionwas applied. Only final in a validated 账本.",

        "status": "success",

        "tx_blob": "1200032200000000240000000F2B3BE71540684000000000002710732102B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF74473045022100AAFC3360BE151299523A93F445D5F6EB58AF5A4F8586C8B7818D6C6069660B40022022F46BCDA8FEE256AEB0BA2E92947EF4571F92354AB703E3E6D77FEF7ECBF64E8114204288D2E47F8EF6C99BCC457966320D12409711",

        "tx_json": {

            "Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",

            "Fee": "10000",

            "Flags": 0,

            "Sequence": 15,

            "SigningPubKey": "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",

            "TransactionType": "AccountSet",

            "TransferRate": 1005000000,

            "TxnSignature": "3045022100AAFC3360BE151299523A93F445D5F6EB58AF5A4F8586C8B7818D6C6069660B40022022F46BCDA8FEE256AEB0BA2E92947EF4571F92354AB703E3E6D77FEF7ECBF64E",

            "hash": "24360352FBF5597F313E5985C1766BB4A0D277CE63219AC0C0D81014C1E663BB"

        }

    }

}

TransferRate带有操作和备用地址

所有XRP账本地址(包括运营地址和备用地址)都需支付转账费用。如果您设置非零转账费用,则您必须在从您的运营地址或备用地址进行付款时发送额外费用(支付TransferRate)。换句话说,每次付款时,您的地址都必须偿还您发行地址的一小部分余额。

  • rippledAPI中,您应该设置SendMax交易参数高于目标Amount参数。
  • 在RippleAPI中,应该设置source.maxAmount参数高于destination.amount参数; 或者,设置source.amount参数高于destination.minAmount参数。

注意:TransferRate不适用于将直接发送到发行地址的情况。发行地址必须始终接受其在XRP账本中的面值发行。这意味着,如果客户直接向付款地址发送付款,则客户无需支付TransferRate,但是在发送至营业地址时,他们可以付款。如果您在两个地址都接受付款,则当客户将付款发送到营业地址时,您可能需要调整记入系统中的客户贷记金额,以补偿客户付款的TransferRate

例如:如果ACME设置1%的转账费用,则从客户地址向ACME发行地址交付5欧元.ACMEXRP账本付款将花费5欧元.ACME。但是,客户需要发送5.05 EUR.ACMEACME的运营地址交付5欧元.ACME。(发行地址在XRP账本中的总责任减少0.05 EUR.ACME。)当ACME将客户付款给ACME的运营地址时,ACME将客户的交付金额记入运营地址转账费用,并给予客户ACME的系统中5,05

向客户发送付款

当您建立一个自动化系统以将支付款项发送到客户的XRP账本时,您必须确保它仔细地构建付款。恶意行为者不断尝试设法欺骗系统为他们支付比应该多的钱。

在发送付款给XRP账本中的客户之前,一个常见的缺陷是执行寻路。如果您正确指定发行人,则默认路径可以按预期交付货币。

以下是使用本地托管rippled提交方法将付款从运营地址rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn发送到客户地址raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n,发送和交付由发行地址rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW发出的资金的示例。

请求:

{

    "method": "submit",

    "params": [{

        "secret": "sn3nxiW7v8KXzPzAqzyHXbSSKNuN9",

        "tx_json": {

            "TransactionType": "Payment",

            "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

            "Destination": "raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n",

            "Amount": {

                "currency": "USD",

                "value": "0.13",

                "issuer": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW"

            },

            "SendMax": {

                "currency": "USD",

                "value": "0.13065",

                "issuer": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW"

            },

            "Fee": "10000"

        }

    }]

}

提醒:不要将您的秘密发送给您不受控制的服务器。

响应:

{

    "result": {

        "engine_result": "tesSUCCESS",

        "engine_result_code": 0,

        "engine_result_message": "The transactionwas applied. Only final in a validated 账本.",

        "status": "success",

        "tx_blob": "1200002280000000240000016561D4449E57D63540000000000000000000000000005553440000000000204288D2E47F8EF6C99BCC457966320D1240971168400000000000271069D444A4413C6628000000000000000000000000005553440000000000204288D2E47F8EF6C99BCC457966320D12409711732103AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB7446304402207B75D91DC0EEE613A94E05FD5D031568D8A763E99697FF6328745BD226DA7D4E022005C75D7215FD62CB8E46C55B29FCA8E3FC62FDC55DF300597089DD29863BD3CD81144B4E9C06F24296074F7BC48F92A97916C6DC5EA983143A4C02EA95AD6AC3BED92FA036E0BBFB712C030C",

        "tx_json": {

            "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",

            "Amount": {

                "currency": "USD",

                "issuer": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",

                "value": "0.13"

            },

            "Destination": "raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n",

           "Fee": "10000",

            "Flags": 2147483648,

            "SendMax": {

                "currency": "USD",

                "issuer": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",

                "value": "0.13065"

            },

            "Sequence": 357,

            "SigningPubKey": "03AB40A0490F9B7ED8DF29D246BF2D6269820A0EE7742ACDD457BEA7C7D0931EDB",

            "TransactionType": "Payment",

            "TxnSignature": "304402207B75D91DC0EEE613A94E05FD5D031568D8A763E99697FF6328745BD226DA7D4E022005C75D7215FD62CB8E46C55B29FCA8E3FC62FDC55DF300597089DD29863BD3CD",

            "hash": "37B4AA5C77A8EB889164CA012E6F064A46B6B7B51677003FC3617F614608C60B"

        }

    }

}

尤其要注意支付交易的以下功能:

  • 没有Paths领域。付款只有在可以使用默认路径时才会成功,这是更可取的。使用较少的直接路径会变得更加昂贵。
  • issuer两者的SendMaxAmount是发证地址。这可以确保交易从发布地址发送和发送发布,而不是从其他网关发送发布。
  • value所述的SendMax量大于目的地略高Amount,以补偿所述传输费用。在这种情况下,转账费用为0.5%,因此SendMax金额恰好是目的地的1.005倍Amount

回退付款

当您的某个地址收到目的不明的付款时,我们建议您尝试将款项退还给其发送方。虽然这比赚钱更有效,但它表现出对客户的诚意。您可以手动让运营商退回付款,或自动创建一个系统来执行此操作。

反弹支付的第一个要求是稳健地监控收款。您不想意外退款超过他们寄给您的客户!(如果您的退回流程是自动执行的,这一点尤其重要。)部分支付标志网关公告(PDF解释了如何避免常见问题。

其次,您应该将退回的付款作为部分付款。由于第三方可以操纵地址之间的路径成本,因此部分支付允许您放弃全部数额,而不用担心XRP账本内的汇率问题。您应该公布您的退款付款政策,作为使用条款的一部分。从运营地址或备用地址发送退回的付款。

  • 要使用此功能发送部分付款rippled,请在交易上启用tfPartialPayment标志。将Amount字段设置为您收到的金额并省略该SendMax字段。
  • 要使用RippleAPI发送部分付款,请将付款对象allowPartialPayment字段设置为。设置和等于您收到的金额。truesource.maxAmountdestination.amount

您应该使用的SourceTag值(source.tag从收款为在RippleAPIDestinationTag值(destination.tagRippleAPI)的返回付款。

为防止两个系统无限期地来回支付款项,您可以设置一个新的来源标签作为即期退货支付。如果您收到意外付款,其目标标签与您发送的退货的来源标签相匹配,则不要再次将其退回。

可靠的交易提交

可靠地提交交易的目标是在有限的时间内实现以下两个属性:

  • 幂等性 - 交易应该只处理一次,或者根本不处理。
  • 可验证性 - 应用程序可以确定交易的最终结果。

要可靠地提交交易,请遵循以下准则:

  • 在提交之前坚持交易细节。
  • 使用Last账本Sequence参数。(RippleAPI默认是这样做的。)
  • 如果交易未出现在序号小于或等于交易Last账本Sequence参数的验证账本中,请重新提交。

有关更多信息,请参阅可靠交易提交

ripple.txt

ripple.txt标准提供了一种方式来发布你的网关信息,以便自动化工具和应用程序可以阅读和理解它。

例如,如果您运行验证rippled服务器,则可以使用ripple.txt发布验证服务器的公钥。您还可以发布有关您的网关发行的货币以及您控制的XRP账本地址的信息,以防止冒名顶替者或混淆。


今天北京 下雨了~~~不总结了,赶紧撤!


猜你喜欢

转载自blog.csdn.net/vohyeah/article/details/80868313
今日推荐