XRPL:如何获取帐户余额的历史记录?

XRPL: How to get the history of the balance of an account?

我想用新的WebSocket查询XRPL账户余额的历史记录API。

例如,我如何查看特定日期的帐户余额?

我知道 v2 api,可以查询 balance_changes。但这似乎不是新版本的一部分。

例如:

https://data.ripple.com/v2/accounts/rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn/balance_changes?start=2018-01-01T00:00:00Z

新的 Websocket API 是如何完成的?

没有方便的 API 调用 WebSocket API 可以做到这一点。我假设您想要 XRP 余额,而不是 token/issued 货币余额,它们在不同的地方。

一种解决方法是制作一个 account_tx call and then iterate through the metadata. Many, but not all, transactions will have a ModifiedNode entry of type AccountRoot—if that transaction changed the account's XRP balance, you can see the difference in the PreviousFields vs. FinalFields for that entry. The Look Up Transaction Results tutorial 有一些关于如何以这种方式解析元数据的细节。这里有一些棘手的边缘情况:例如,如果您发送一笔交易,在交易所购买 10 滴 XRP,但作为交易成本销毁 10 滴 XRP,那么元数据将不会显示余额变化,因为净变化为零(+10,-10)。

另一种方法可能是估计 ledger_index 在给定时间最近关闭的内容,然后使用 account_info 查找该时间的帐户余额。困难的部分是弄清楚给定时间的最新分类帐索引是什么。这是 Data API 比 WebSocket API 更方便的地方之一——在 WebSocket 中无法按日期查找,因此您必须尝试分类帐索引,看看收盘价如何分类帐的时间是,尝试另一个分类帐索引,查看日期等