我需要执行事件吗?
如果您从其他 EVM 区块链转向 Monad,您可能会发现您的数据处理”跟不上” Monad 上生成数据的速率。这是因为 Monad 是一个快速的区块链,体现在两个维度:- 每 300 毫秒提议一个新区块,等同于每分钟约 200 个区块。
- 与其他区块链相比,单个区块可以包含更多的交易;在峰值处理速率下,Monad 可以执行包含数千笔交易的区块,其设计目标是维持接近 10,000 TPS(每秒交易数)的执行速率。
- 自己构建更复杂的处理 - 您可以使用执行事件 SDK 构建可能的最低延迟、最高吞吐量的数据消费者。
- 使用第三方数据服务 - 如果您不熟悉系统编程(用 C、C++ 或 Rust 编程语言进行低级后端编程)或没有时间或兴趣,有许多第三方提供商为 Monad 提供数据服务。通常这些服务会自己使用执行事件 SDK,然后以某种方式对数据进行过滤、汇总或增强,让您能够比传统 JSON-RPC 更高效地获取所需数据。请查看工具和基础设施页面获取流行提供商的链接,特别是索引器部分,尽管其他服务如区块浏览器有时也提供可能满足您需求的数据访问 API。
什么是”执行事件”?
Category Labs 的执行层守护进程包含一个共享内存通信系统,它发布关于交易执行期间 EVM 采取的大多数操作的数据。这些 EVM 操作的原始二进制记录称为”执行事件”。 需要最高性能的第三方应用可以在与节点软件相同的主机上运行,并直接从共享内存中消费执行事件记录。要读取这些数据,您的第三方应用需要调用执行事件 SDK(我们的实时数据库)中的函数。执行事件文档
- 发布说明 - 查看 SDK 最新版本中的新内容
- 开始使用 - 描述如何构建并运行一个简单的示例程序
- 事件概述 - 解释执行事件系统中的核心概念
- event ring 详解 - 记录 event ring 文件和协议版本控制
- API 文档 - 我们的编程库概述,为多种编程语言提供
- 共识事件 - 执行发布一些来自共识的信息,这对理解实时数据至关重要
- 高级主题 - 面向高级用户和为执行源代码做贡献的软件开发者的文档
执行事件的替代方案
Category Labs 的节点软件包括一个 RPC 服务器组件。RPC 服务器支持两种更简单的方式读取区块链数据:- 大多数 EVM 兼容区块链节点(例如 Geth)支持的典型 JSON RPC 端点
- 也支持 Geth 的实时事件 WebSocket 协议(即
eth_subscribe),以及一些用于更好性能的 Monad 特定扩展;详见 WebSocket 指南
与其他数据系统的比较
与其他区块链软件中低延迟系统的简要比较:- Geth Live Tracing (链接) - 基于”钩子”的 API:您的代码作为插件加载到 Geth 节点中,并在执行期间通过回调同步运行
- Reth ExEx (链接) 和 (链接) - 基于异步函数的 API:您的代码被加载到 Reth 节点中;执行事后而不是同步看到事件
- Solana Geyser (链接) - 基于”钩子”的 API,运行在 Solana 验证者内部并在执行期间调用回调的插件
- 您像在 Geth Live Tracer 和 Solana Geyser 中一样”随事件发生”看到事件。与这些方法不同,您的代码不是作为插件运行在执行引擎内部,而是在单独的进程中并行运行(大约一微秒之后)
- 与 Geth Live Tracer 相同(但不同于 Reth 的 ExEx),您以单独事件的形式看到交易的每一”部分” —— 每条日志、每次余额变化等
- 与 Geth Live Tracer 或 Geyser 不同,您不安装”钩子”并接收回调;相反,您持续轮询新事件记录,遍历返回给您的任何新事件(并忽略您不感兴趣的事件)
- 由于系统基于共享内存 ring buffer,如果您的消费者太慢,您可能会丢失数据 —— 您必须跟上!

