本帖最后由 trump 于 2020-7-27 10:18 编辑
XAG在技术上源自于瑞波,因此可以复用瑞波应用代码或使用RippleAPI进行签名操作。假设交易所名字叫Alpha。那么集成XAG后,它将可以上线XAG/BTC,XAG/USD等交易对。为了集成,Alpha交易所必须: - 在瑞波基因网络上创建XAG钱包。
- 对充值的钱包进行监控。
- 对用户的提现进行签名并发送XAG。
部分付款(Partial Payments)在整合之前,交易所应了解部分付款功能。 此功能使XAG Ledger用户可以发送部分成功的付款,从而使收到的金额比SendMax更少。 此功能对于退回付款很有用,但对交易所而言却有巨大的风险。
部分付款警告启用tfPartialPayment标志时,不能保证Amount字段是接收到的金额。 付款里的metadata的delivery_amount字段才是目标帐户实际收到的货币数量。 收到付款时,请使用Delivery_amount而不是Amount字段来确定您的帐户收到了多少XAG。 警告: 请注意,恶意行为者可以利用此漏洞。 更多信息,请参见部分付款。
用户进行XAG充值当用户Charlie充值50000 XAG到Alpha交易所时,步骤如下: - Charlie发送50000 XAG(通过钱包,RippleAPI或其他交易所)到Alpha交易所。Alpha交易所必须提供一个用于身份识别的标签号(destination tag),比如789。
- Alpha交易所的监控程序发现了收到了XAG,并识别到了标签号789,认可是充值到Charlie的账号。
- Alpha交易所给Charlie入账50000 XAG,然后Charlie就可以在交易所交易了。
最佳实践- 设上一次检查时间为t1,记录下t1的XAG数量。
- 当前检查时间为t2,记录下t2的XAG数量和t1到t2之间发生的N个payments。
- 对每个payment里的meta.delivered_amount进行检查,与tx.Amount进行对比。如果不一致,说明是有人使用部分付款进行攻击。
- 将N个payments里的meta.delivered_amount进行加总,并与t1,t2的XAG数量差值进行对比。加总数量应当于差值一致。
用户进行XAG提现当用户Charlie提现50000 XAG时,步骤如下: - Charlie发起50000 XAG提现,需提供提现的地址和标签(提到用户自己钱包时无需标签或随意填数字)。
- Alpha交易所的使用程序发送XAG,并附上标签号。
交易所可以参考发送XAG。或者采用发送XRP的代码,连接到XAG的网络进行发送。
最佳实践- 无论是否发送成功,都校验一下HASH是否出现在总账中。
- 和充值流程类似,隔一段时间,对发送的总和,与钱包的差值进行对比。多一重保护。
|