EOSIO

适用于:

  • EOS 主网
  • Worbli
  • CryptoKylin Testnet 测试网
  • Jungle 2.0 测试网
  • 你的专属网络

以太坊(内测版)

适用于:

  • Ethereum 主网
  • Ropsten

通过 dfuse 的 get_table_rows 端点获得 EOS 区块链的一致性数据

2019-5-13 16:45:18 / 作者 dfuse

Alex 讨论了 dfuse 的 `get_table_rows` 端点:在指定区块高度轻松查询任何表的状态,并给你真实的、一致的数据。 你还可以监听任何传入的表增量,让你的应用程序保持最新状态,不必担心错过任何东西

文字转录:

我刚刚注意到,我们都好几个月了没聊过了。好几个月都没发视频了,所以我现在想花一些时间录一个系列视频,聊聊我们正在做的事情,告诉你我们在给 dfuse 做的一些很给力的东西。
 
今天我想谈谈你可以用 dfuse 的一个功能:实时读取表的行、表的增量。我们 dfuse 团队了一个可以自定义的状态数据库,能够为您提供任何区块高度上的状态快照。举个例子,如果你需要的话,你可以查到一个 DEX 中,在某时间点开放的所有订单。您可以拿到快照,获取所有行的及时数据。这非常重要,因为 EOS 区块链移动速度非常快,0.5秒。那就是说表的行是会有变更的。所以如果你有一个有一千行的表,然后你一次查一百个行,你可能会发现你查询了一组又一组数据,然后它却变了,这有一行不一样了,但是你还在继续往下查,因为你是在区块之间查询的。因此很难获得及时的表格数据。但是如果你用 dfuse 的状态数据库,它会在你查询某个区块高度时为你冻结区块链,给你一个完整的列表;就算有十万个行也一样,它也会下载100MB的。如果你想查到表格在某个时间点的完整视图,dfuse 可以提供给你。
 
这是它的一个特点。然后你还可以拿到从那个时间点往后的 表的变化的快照。那你就是只在跟踪被改变那两三行,然后在初始快照之上覆盖它们。你可以在你那一端,在你的 Python 或其他代码上,有对链上正在发生什么的一致性视图了。
 
如果你收到一个 delta (变量),你就可以再计算一下,或者在内存里那个完整的表上跑一个操作什么的。这样你就会总跟区块链的最新更改同步上。不仅如此,用 “get_table_rows” 进行实时读取的话,它还能观测到微分叉。
 
如果你想看看关于微分叉的视频,我们也把链接加上。但基本上它就是说,有的时候有的操作或交易在链上通过了,但又因为BP节点的网络问题被逆回或重新覆盖了。那你就会收到一些不再真实的信息。刚才还是真实的,但现在被逆回了。那你得知道这个信息啊。如果它不再真实的话你就不用把它存在你的内存里了。dfuse 平台将为你提供被逆回的信息,以便你可以反过来应用它。然后你还会收到它出现的下一个更改。如果它是在经过两个节点的交替,没准还会是它被逆回了。但如果你继续跟随那个数据流,这个线性流,你就会始终与区块链上的内容保持实时同步。我希望你觉得这个是很酷的,能帮助到你的,我知道它是的,因为人们一般就认为数据库就是应该有这样一致的、及时的数据的。但是我觉得如果你没有使用 dfuse 的平台,你可能会撞到问题。
 
因此,请看看 “get_table_rows” 和我们的状态快照端点。你可以做 REST API 查询,或者直接在 WebSocket 数据流中获取完整快照,接着继续实时读取, 用我们的 Never Missing A Beat 功能 (文档中有描述)
 
好的。我们在下次的视频里见。

话题 Video, EOSIO, dfuse API, 开发者, 用例