将XRP上到交易所
本文档描述了交换所需列出XRP的步骤。
Alpha Exchange
为了便于说明,本文档使用名为Alpha Exchange的虚构业务来解释列出XRP所需的高级步骤。为了本文档的目的,Alpha Exchange:
用户利益
Alpha Exchange希望部分列出BTC / XRP和XRP / USD交易对,因为列出这些对有益于其用户。具体而言,该支持希望使其用户能够:
支持XRP的先决条件
为了支持XRP,Alpha Exchange必须:
也可以看看:
部分付款
在整合之前,交易所应该了解部分支付功能。此功能允许XRP 账本用户成功发送减少接收方的金额而不是增加发送方的金额SendMax付款。此功能可用于返回付款,而不会产生发送方的额外费用。
部分付款警告
当tfPartialPayment标志启用时,该Amount字段不保证是收到的金额。该支付的元数据的delivered_amount字段表示货币由目标帐户实际收到的金额。收到付款后,请使用delivered_amount金额字段来确定您的帐户收到的金额。
警告:请注意恶意节点可以利用这个作恶。有关更多信息,请参阅部分付款。
帐号
XRP金额存放在XRP账本户的账户中(也称为钱包或地址)。XRP账本上的账户不同与其他区块链账本中的账户,比如账户几乎没有开销的比特币。在XRP账本中,帐户永远不能被删除,并且每个帐户都必须保存XRP的单独储备,这些储备无法发送给其他人。由于这些原因,Ripple建议机构不要创建过多或不必要的账户。
要遵循Ripple建议的最佳实践,Alpha Exchange应在XRP账本上创建至少两个新帐户。为了最大限度地降低与泄密密钥相关的风险,Ripple建议创建冷,热和热账户(这些账户有时分别称为冷,热和温钱包)。热/冷/冷模式旨在余额安全性和便利性。交易所上市XRP应创建以下帐户:
如果恶意行为者损害交易所的冷钱包,可能的后果是:
有关受损热钱包可能产生的后果的更多信息,请参阅操作账户妥协。
有关受损保险钱包可能产生的后果的更多信息,请参阅待机账户妥协。
也可以看看:
资产负债表
为了管理其客户的XRP,Alpha Exchange必须跟踪每个客户的XRP余额和自己的持股。为此,Alpha Exchange必须创建并维护额外的资产负债表或会计系统。下表说明了这张资产负债表的外观。
新的XRP账本帐户(Alpha Hot,Alpha Warm,Alpha 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整数计数,其中一个XRP是1,000,000个Drop点。Ripple建议软件商店XRP余额为整数个drop,并对这些值执行整数运算。但是,用户界面应以XRP为单位提供余额。
一滴(0.000001 XRP)不能再细分。在计算和显示XRP与其他资产之间的汇率时请记住这一点。
有关更多信息,请参阅指定货币金额。
在线账本和离线账本
通过像Alpha Exchange这样的交易所,XRP可以实现“在线账本”或“离线账本”:
账本XRP余额在交易所参与者之间进行交易。为了支持这些交易,交易所必须保持总账XRP的余额等于其可用于交易的总账XRP的总量。
资金流量
其余部分描述资金如何通过Alpha Exchange管理的账户流动,因为其用户开始存入,交易和兑换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,000个XRP存入Alpha Exchange。这样做涉及以下步骤:
A. Charlie 在付款中添加了一个标识符789以便将其与Alpha Exchange中的帐户相关联。这被称为目的地标签。(要使用此功能,Alpha Exchange应该在其所有帐户上设置asfRequireDest标志,以要求所有收款都要具有类似于Charlie's填写的目标标签。有关详细信息,请参阅AccountSet标志)。
查理现在可以在交易所上使用多达50,000个XRP。例如,他可以创建与BTC或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 |
|
789 |
Charlie |
|
Alpha Hot |
0 |
... |
||
Alpha Warm |
0 |
|||
Alpha Cold |
|
在交易所交易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 |
|
456 |
Bob |
50,000 |
Warm |
0 |
…. |
…. |
|||
789 |
Charlie |
50,000 |
Cold |
|
从Exchange中提取XRP
取款允许交易所的用户将XRP从交易所的账本资产负债表移动到XRP账本上的一个账户。
在这个例子中,Charlie从Alpha Exchange中撤出了25,000个XRP。这涉及以下步骤:
A.从Charlie账户的账本资产负债表中扣除金额(25,000 XRP)
B. 从Alpha Exchange的热钱包到Charlie的XRP账本户,在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 |
|
Edward |
45,000 |
456 |
Bob |
50,000 |
Warm |
0 |
…. |
…. |
…. |
||||
Charlie XRP Ledger |
|
789 |
Charlie |
|
Cold |
100,000 |
... |
... |
... |
成为XRP账本网关
网关是将XRP账本与世界其他地区联系起来的企业。现有的在线金融机构可以扩展为XRP账本的门户。通过成为XRP账户网关,金融服务业务可以获得几项优势:
本文档介绍了成为XRP账本网关所需的概念和步骤。在本文中,我们使用名为“ACME”的虚拟在线货币兑换商及其客户作为示例,以展示ACME如何扩展其业务以包括成为XRP账本网关。
联系信息
你不是你自己的。Ripple希望网关取得成功,所以我们在这里提供帮助。如果您需要帮助建立和发展您的网关,请联系我们。
网关解释
网关是提供金钱和其他形式价值的方式进出XRP账本的企业。网关可以遵循三种主要模式,具有不同的目的和操作模式。
本指南着重介绍如何运行发行网关。
信任线和发行
在XRP账本所有资产(除了内置加密货币XRP)都表示为发行,这是代表货币或由发行方持有的资产数字余额。在XRP总账中,交易对手可以发送和交易发行,而无需发行人的干预。通常情况下,当网关在XRP账本之外的系统和账本中收到款项时,网关会向客户发送发行的货币;而在XRP账本中交易所收到了发行货币,其承诺向外部系统的客户汇款。发行从网关的协议中获得价值,以履行发行代表的义务。没有计算机系统可以强制XRP账本网关履行该义务。
XRP账本拥有定向会计关系系统,称为信任线,以确保用户仅持有他们信任的交易对手的发行。
“信任线”是XRP账本中两个地址之间的链接。信任线表示愿意持有网关债务义务的明确声明。当客户将资金汇入XRP账本时,网关将对Ripple以外的资产进行保管,并将XRP账本中的发行货币发送至客户的地址。当客户从XRP账本中汇出资金时,她会向网关进行XRP账本付款,并且网关将客户记入自己的记录系统或其他帐户中。
XRP
XRP是XRP账本的本地加密货币。和发行一样,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或其他流行货币提供流动性,特别是当网关对交易所不熟悉时。如果您确实提供流动性,请使用与您的发行地址不同的地址进行交易。
第三方流动性提供商可以使用rippledAPI,RippleAPI JavaScript库或第三方客户端应用程序访问分布式交换机。某些客户端应用程序使用ripple.txt查找与网关关联的地址,因此发布ripple.txt文件可能会有帮助。
请联系[email protected]以获取帮助确定网关和其他人之间的流动性。
建议的商业行为
XRP账本中网关发行的价值直接源于客户可以在需要时使用网关将其兑换的信任。我们建议采取以下预防措施以降低业务中断的风险:
热钱包和冷钱包
在XRP账本中,金融机构通常使用多个XRP账本地址来最大限度降低与受损密钥相关的风险。Ripple强烈建议以下角色分离:
有关更多信息,请参阅颁发和操作地址
费用和收入来源
网关可以通过几种方式寻求从XRP 账本集成中获利。这些可以包括:
选择费率
网关收取的费用是可选的。使用网关服务时,收费越高,收入越多。另一方面,高额费用会阻碍客户使用您的服务。考虑其他网关收取的费用,特别是发行类似货币的网关,以及XRP账簿之外的传统支付系统(如电汇费)。选择正确的费用结构是一个余额你的定价与市场愿意支付的问题。
网关合规性
网关负责遵守当地法规并向有关机构报告。法规因国家和州而异,但可能包括以下各节中所述的报告和合规性要求。
了解你的客户(KYC)
了解你的客户(KYC)是指由金融机构进行的尽职调查活动,以确定和验证其客户的身份,以防止使用该机构进行犯罪活动。财务方面的犯罪活动可能包括洗钱,恐怖融资,金融诈骗和身份盗窃。客户可能是个人,中介或企业。
KYC流程通常旨在:
KYC对金融机构和相关企业来说至关重要,可以降低风险,特别是法律和声誉风险。KYC计划不足或不存在可能会导致对该机构或个人雇员的民事和刑事处罚。
也可以看看:
打击洗钱和打击资助恐怖主义(CFT)
洗钱是指通过掩盖资金来源,性质或所有权来转移非法资金的过程,以便通过合法的财务渠道和可信的机构合法获取或分配资金。简而言之,它将“脏钱”转化为“清洁钱”。反洗钱(AML)是指旨在制止洗钱发生的法律和程序。
恐怖主义融资是向参与恐怖主义活动的组织或支持恐怖主义及其扩散的组织征集,收集或提供资金。打击资助恐怖主义(CFT)是指识别,报告和阻止用于资助恐怖主义的资金流动的过程。
也可以看看:
资金来源
为防止非法资金通过其系统,金融机构必须能够在合理范围内确定客户资金来源是否与犯罪活动相关。
确定每个客户的确切资金来源可能在行政上不可行。因此,一些监管机构可能不会为所有账户提供具体的监管或指导。然而,在具体情况下,当局可能会要求金融机构确定并报告资金来源。特别组织的指引建议,在洗钱或恐怖份子融资风险较高的情况下(通常称为“基于风险的做法”),金融机构会进行加强尽职调查,包括但不限于确定客户的资金来源。
可疑活动报告
如果金融机构怀疑资金可能与犯罪活动有关,该机构必须向适当的监管机构提交可疑活动报告(SAR)。未报告可疑活动可能会导致对该机构的处罚。
也可以看看:
旅行规则
旅游规则是一项银行保密法(BSA)规则,要求资金转移金融机构将某些信息转发给下一个金融机构,如果资金转账等于或超过3,000美元等值美元。传送命令中必须包含以下信息:
也可以看看:
费用披露和追踪资金
也可以看看:
也可以看看:
外国资产管理办公室(OFAC)
外国资产管理办公室(OFAC)是美国财政部的一个机构,负责管理和执行经济和贸易制裁以支持美国的外交政策和国家安全目标。所有美国人和美国注册实体及其外国分支机构都必须遵守OFAC规定。根据OFAC的规定,美国金融机构除OFAC授权或明文规定豁免外,不得与OFAC管理和实施的制裁或禁运项目中的个人,实体或国家进行交易和其他交易。
也可以看看:
虚拟货币和金融服务业务指南
XRP账本集成
整合之前
我们的示例交易所ACME已经接受使用现有系统的客户提款和存款,并使用自己的记录系统来跟踪每个用户与交易所的余额程度。这样的系统可以用资产负债表来模拟,并跟踪每个用户使用ACME的货币数量。
在下面的图表中,ACME Exchange以5欧元开始,其中包括属于鲍勃的1欧元,属于查理的2欧元以及属于ACME本身的额外2欧元的权益。爱丽丝存款5欧元,因此ACME将她加入资产负债表,最终以10欧元结束。
假设:为了与XRP账本集成,我们假设像ACME这样的交易所满足以下假设:
从网关发送到XRP账本
XRP账本支付可以自动在货币之间进行桥接,但发行网关通常只发送直接发送给客户的单币种支付。这意味着在客户系统中扣除客户当前的余额,然后将XRP账本中等价的发行金额发送到客户的XRP账本地址。
XRP账本中付款的示例流程:
假设:
发送到XRP账本的要求
ACME必须满足以下几个先决条件:
有关如何将付款发送到XRP账本的示例,请参阅向客户发送付款。
从XRP账本发送到网关
从XRP账本中支付意味着网关在XRP账本中收到一笔付款,并在网关的记录系统中扣除用户的金额。
从XRP账本中支付的示例流程:
从XRP账本到网关的付款可以是单币种或跨币种付款。网关的发行地址只能接收它创建的发行(或XRP)。
从XRP账本接收的要求
除了发送到XRP账本的要求外,ACME必须满足几个先决条件来处理来自XRP账本的付款:
注意事项
处理往来于XRP账本的付款自然会带来一些风险,因此门户网站应该确保在实施这些流程时小心谨慎。我们建议采取以下预防措施:
在Ripple中交易
在XRP账本创建发行后,它们可以由XRP账本用户自由转移和交易。这种情况有几个后果:
下图描述了从Alice到Charlie发送2EUR.ACME的XRP账本付款。ACME可以查询XRP账本,以便在交易发生后的任何时候查看其余额的更新:
冻结
网关可以冻结XRP账本中的会计关系以满足监管要求:
有关更多信息,请参阅Freeze文章。
授权信任线
XRP账本的授权信任行功能(以前称为“授权账户”)使网关能够限制谁可以持有该网关的发行,以便未知的XRP账本地址不能拥有网关发行的货币。Ripple认为这在大多数情况下是不必要的,因为网关可以完全控制在外部世界中获得价值的纹波余额过程。(您可以在此阶段收集客户信息并对提款进行限制,而不用担心XRP账本内发生的情况。)
有关更多信息,请参阅授权信任线。
源和目标标签
目的地标签是XRP的一项功能支付可用于指示付款的受益人或目的地。例如,到网关的XRP账本支付可能包括目的地标记,以指示哪个客户应该记入该支付。网关应该在网关的记录系统中保留目标标签到帐户的映射。
同样,源标签指明付款的来源或来源。最常见的是,包含一个来源标签,以便付款的接收方知道在哪里退款。当您退回收款时,请使用传入付款中的来源代码作为传出(反弹)付款的目标代码。
我们建议为不同目的提供几种目标标签:
请参阅生成源标签和目标标签,以获取有关制作和使用源标签和目标标签的技术细节的建议。
网关公告
历史上,Ripple(该公司)发布网关公告来介绍新功能或讨论与合规性和风险相关的主题。网关公告按逆时间顺序排列。
技术细节
基础设施
对于网关自身的安全以及网络的稳定性,Ripple建议每个网关运行自己的rippled服务器。Ripple为有意开展重大XRP业务的企业提供详细和个性化的建议。
联系[email protected]以了解Ripple如何提供帮助。
API和中间件
根据您的需求和现有软件,您可以使用几种界面连接到XRP账本。
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。
生成源标签和目标标签
您需要一个计划来为您的客户和付款创建源代码和目标代码。(请参阅源和目标标签以获取有关源和目标标签的解释。)
为了获得更大的隐私和安全性,我们建议不要将单调增加的数字用作与客户1:1相关的目标标签。相反,我们建议使用方便的内部ID,但使用快速散列或密码功能(如Hasty Pudding)将它们映射到目标标签。您应该为目标标签的不同用途留出内部编号的范围。
在通过散列函数传递内部数字之后,可以将结果用作目标标记。为了安全起见,你应该检查碰撞。除非他们有明确的截止日期(如引号和客户生成的标签),否则不要重复使用目标标签。
我们建议让用户界面在客户有意向网关汇款时按需生成目标标签。然后,请考虑目标代码仅对有预期金额的付款有效。稍后,退回所有其他重复使用相同目标代码的交易。
在您的发行和运营地址上启用RequireDest标志,以便客户在向您的网关发送XRP账本付款时必须使用目的地标签来指示资金的去向。
DisallowXRP
DisallowXRP设置(disallowIncomingXRP在RippleAPI中)旨在阻止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设置(requireDestinationTag在RippleAPI中)旨在防止客户向您的地址发送付款,同时意外忘记了目标标签,该标签标识谁应该记入付款。启用后,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交易,与用户的信任作为issuer的LimitAmount。将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
}
}
]
}
警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。
强大监控付款
要有效检查收到的付款,网关应该执行以下操作:
为了让您的客户更简单,我们建议您接受对运营地址和发布地址的付款。
作为额外的预防措施,我们建议在每个新的XRP账本账本版本中,将您的发行地址余额与内部会计系统中的抵押资金进行比较。发行地址的负余额应与您在网络外分配给XRP账本的资产相匹配。如果两者不匹配,那么您应该暂停处理进出XRP账本的付款,直到您解决了差异。
TRANSFERRATE
的TRANSFERRATE设置(transferRate在RippleAPI)限定费用用于从一个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)。换句话说,每次付款时,您的地址都必须偿还您发行地址的一小部分余额。
注意:TransferRate不适用于将直接发送到发行地址的情况。发行地址必须始终接受其在XRP账本中的面值发行。这意味着,如果客户直接向付款地址发送付款,则客户无需支付TransferRate,但是在发送至营业地址时,他们可以付款。如果您在两个地址都接受付款,则当客户将付款发送到营业地址时,您可能需要调整记入系统中的客户贷记金额,以补偿客户付款的TransferRate。
例如:如果ACME设置1%的转账费用,则从客户地址向ACME发行地址交付5欧元.ACME的XRP账本付款将花费5欧元.ACME。但是,客户需要发送5.05 EUR.ACME向ACME的运营地址交付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"
}
}
}
尤其要注意支付交易的以下功能:
回退付款
当您的某个地址收到目的不明的付款时,我们建议您尝试将款项退还给其发送方。虽然这比赚钱更有效,但它表现出对客户的诚意。您可以手动让运营商退回付款,或自动创建一个系统来执行此操作。
反弹支付的第一个要求是稳健地监控收款。您不想意外退款超过他们寄给您的客户!(如果您的退回流程是自动执行的,这一点尤其重要。)部分支付标志网关公告(PDF)解释了如何避免常见问题。
其次,您应该将退回的付款作为部分付款。由于第三方可以操纵地址之间的路径成本,因此部分支付允许您放弃全部数额,而不用担心XRP账本内的汇率问题。您应该公布您的退款付款政策,作为使用条款的一部分。从运营地址或备用地址发送退回的付款。
您应该使用的SourceTag值(source.tag从收款为在RippleAPI)DestinationTag值(destination.tag在RippleAPI)的返回付款。
为防止两个系统无限期地来回支付款项,您可以设置一个新的来源标签作为即期退货支付。如果您收到意外付款,其目标标签与您发送的退货的来源标签相匹配,则不要再次将其退回。
可靠的交易提交
可靠地提交交易的目标是在有限的时间内实现以下两个属性:
要可靠地提交交易,请遵循以下准则:
有关更多信息,请参阅可靠交易提交。
ripple.txt
该ripple.txt标准提供了一种方式来发布你的网关信息,以便自动化工具和应用程序可以阅读和理解它。
例如,如果您运行验证rippled服务器,则可以使用ripple.txt发布验证服务器的公钥。您还可以发布有关您的网关发行的货币以及您控制的XRP账本地址的信息,以防止冒名顶替者或混淆。
今天北京 下雨了~~~不总结了,赶紧撤!