EOSIO

适用于:

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

以太坊(内测版)

适用于:

  • Ethereum 主网
  • Ropsten

EOSIO 开发示例代码,帮你在几分钟内就上手

2019-9-9 21:57:01 / 作者 dfuse

在区块链上做开发的上手看似艰难,幸好网上有很多可以给你提供帮助和向导的资源。作为最受开发者欢迎的数据访问服务提供商,dfuse 想为大家提供些能够为你加速上手 EOSIO 开发示例代码。

使用 dfuse 的基本示例

注册了免费的 API key 后,我们建议你从我们的基本示例开始。这些示例都是用 TypeScript 编写的,一共有四个:

  1. REST 接口——检索帐户在指定区块高度的 EOS 代币余额,并返回当前余额
  2. REST 接口——查看帐户授权的最近10笔交易
  3. WebSocket 接口——建立一个 WebSocket 接口 连接,监听 `eosio` 的全局表状态更改,持续5秒,并关闭连接
  4. WebSocket 接口——建立一个 WebSocket 接口 连接,监听所有的 EOS 代币转账,持续5秒,并关闭连接

使用 dfuse 的高级示例

在你看完上面的基本示例后,你应该继续试试更高级的示例。同样,这些都是用 TypeScript编写的。

  1. WebSocket 接口——为特定连接事件设置监听,例如:“报错”、“关闭”、“重连” 或 “无效消息”。
  2. WebSocket 接口——配置实时串流读取并在断连时重连。此示例不考虑数据流关闭期间所错过的反馈。
  3. REST 接口——验证某账户是否在链上存在
  4. WebSocket 接口——体验建立两个独立的数据流,每个数据流都监听独立事件,而不是用单个数据流监听多个事件。
  5. WebSocket 接口——微分叉随时都可以发生,你的代码需要有一定的弹性去处理它,可以通过此示例了解如何利用 `undo` 和 `redo` 通知
  6. WebSocket 接口——记录数据流的进度,用于无缝重连,保证你不错过任何一个节拍
  7. WebSocket 接口——避免污染 JavaScript 运行时的全局 scope
  8. WebSocket 接口——仅反馈不可逆的操作
  9. WebSocket 接口——利用 cursor 对你的收到的反馈进行分页,并筛选出与你的查询匹配的操作,而不是交易中的所有操作。

参考代码示例

我们还有一个参考文件夹,包含近20个可用的简易调用样本,其中有:生成新的 JWT token,按 ID 获取务交易,以及实时读取链条前端的信息等操作,等等。这些都是可以直接部署在应用程序中的代码,可以在处理一些更简单的任务时节省你的时间。这些示例都会返回 JSON 格式的有效负载,让你可以轻松快速地看到未格式化的反馈,然后你可以按需转化你的反馈格式。

感受 GraphQL 的力量

当你掌握了上述的基本、高级和参考示例,就是时候迈进 GraphQL 的大门了。虽然许多开发者更熟悉 REST 接口和 WebSocket 接口,但我们已经被 GraphQL 的强大功能所震撼(并且知道你也一定会跟我们有同感)。你可以通过它进行查询(用法类似 REST 接口)或订阅查询(用法类似WebSocket 接口),如果将两种查询组合使用可以从链的任何点开始读取数据,赶上最新区块并继续进行监听。你还可以对反馈的有效负载进行定制,让你收到更简洁直接的反馈数据。

  1. 通过 Apollo 传输层建立连接——这里包含一个简单的示例——实时监听未来的10个转账操作;还有一个高级示例——用 `cursor` 标记进度。
  2. 获取各种的链数据统计信息——token.ts 可提供指定区块范围内的代币交易、操作和通知计数,account-creation.ts 提供指定区块范围的帐户创建统计数据。
  3. 通过 gRPC 建立连接——与 Apollo 传输层的简单示例相同,只不过这个示例通过gRPC 建立连接并使用 Golang。
  4. Python 示例——通过 gRPC 连接实时监听未来的10个 EOS 代币转账。如果 Python是你的首选开发语言,那你可以通过这个示例来起步。
  5. 在 React 应用程序中使用 dfuse GraphQL——实时读取的所有最新操作并按智能合约来对它们进行过滤。
  6. 监听 EOS/REX 价格——获取有关 EOS 主网的 REX 的实时数据。

通过各种编程语言使用 dfuse

我们已经为你提供了多种语言(例如 JavaScript、Golang 和 Python)的示例,而 dfuse 可以集成于任何语言。如果你创建了任何你觉得对其他开发人员有帮助的示例代码,请与我们联系,我们希望能将你的代码也加到库中。

继续深入 dfuse 示例

以上列出的是 dfuse GitHub 库中的部分示例。 一旦你把这些功能都了解了,你就算的上是个 dfuse 专家了! 通过我们的 dfuse 电报频道微信群与我们联系,让我们知道哪些例子对您有帮助,你还想看到什么其他的示例,也跟我们分享分享你正在开发的项目吧!

话题 EOSIO, 开发者, Client-JS, 用例, JS库